电机PWM调速,程序里面有一段程序不懂,程序在下面,求懂得大神讲解一下beep();有什么作用。

电机PWM调速,程序里面有一段程序不懂,程序在下面,求懂得大神讲解一下beep();有什么作用。,第1张

先解释下此函数的功能

void beep(void)

{

uchar t;

for(t=0;t<100;t++)//循环,共输出50个脉冲

{

delaynms(1);//延时,即两个脉冲的间隔时间

FMQ=!FMQ; //产生脉冲,此句貌似有错误,应该写成 FMQ = ~FMQ;

}

FMQ=1; //关闭脉冲,即循环后,不管结果如何,必须让此端口置 1

delaynms(300);//延时,此句有没有都可以

}

程序的开头 sbit FMQ = P3^6; 可知,这是一个输出端口,至于连接的什么不得而知

但从函数本身看,这只是一个简单的利用延时函数来输出脉冲的函数,其精度不高

程序开头有四句

sbit PWM11 = P1^0;

sbit PWM12 = P1^1;

sbit PWM13 = P1^2;

sbit PWM14 = P1^3;

并且在中断函数中进行控制,初步可以断定,这是一个利用L298N 控制的两相步进电机

但此程序的可读性太差,除了当时编程的时候可以理解其内容,等过段时间就会忘记流程啦

此程序有待改进!

在初始化子程序中:

1、将16#C3(或16#CB)送入SMW67(SMW77)。

2、向SMW68(SMW78)写入所希望的周期值。

3、向SMW7(SMW80)写入所希望的脉宽值。

4、执行PLS *** 作。

5、子程序返回。

扩展资料:

PWM输出实验步骤

1、使能定时器3和相关IO口时钟。

使能定时器3时钟:RCC_APB1PeriphClockCmd();

使能GPIOB时钟:RCC_APB2PeriphClockCmd();

2、初始化IO口为复用功能输出。函数:GPIO_Init();

GPIO_InitStructureGPIO_Mode = GPIO_Mode_AF_PP;

3、要把PB5用作定时器的PWM输出引脚,所以要重映射配置,

所以需要开启AFIO时钟。同时设置重映射。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

4、初始化定时器:ARR,PSC等:TIM_TimeBaseInit();

5、初始化输出比较参数:TIM_OC2Init();

6、使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

7、使能定时器。TIM_Cmd();

8、不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

PWM波是控制直流电机的

通俗的说,5V直流电机在5V的情况下肯定速度最快,在0V的情况下肯定不转了

这样电源0~5V就对应了不同的速度。

用PWM波控制mos管来给直流电机供电。PWM就是一个矩形波,通过控制高电平和低电平的时间来控制MOS管导通的时间。MOS管在高电平的时候导通,就相当于5V电源直接加到电机上;MOS管在低电平的时候截止,就相当于0V电源加到电机上。

PWM又叫脉宽调制,就是控制高电平占一个周期的比例。而这个PWM波就是控制5V电源加到电机上的时间,从而控制了电机。

include <stdioh>

#define N 3

void zz(int x[N][N])

{ int i,j,t;

for(i=0;i<N;i++)

for(j=0;j<i;j++)

{ t=x[i][j]; x[i][j]=x[j][i]; x[j][i]=t; }

}

void main()

{ int str[N][N]={1,2,3,4,5,6,7,8,9}, i,j;

zz(str);

for(i=0;i<N;i++)

{ for(j=0;j<N;j++) printf(“%3d”,str[i][j]) ;

printf("\n") ;

}

}

上桥臂PWM输出,下桥臂常闭。你要是做电机的话这个就会好理解了。

用库函数不是有个TIM_CCxN配置的函数。给TIM_CCx配置一个CCR的值。把互补通道这个关掉就好了。

脉冲宽度调制(PWM),是对脉冲宽度的控制。

STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出!

本实验是利用 TIM3 的通道 2,把通道 2 重映射到 PB5, 产生 PWM 来控制 DS0 的亮度。

TIM3_CH2 默认是接在 PA7上面的,而我们的 DS0 接在 PB5 上面,可以通过重映射功能,把 TIM3_CH2映射到 PB5 上。

以上就是关于电机PWM调速,程序里面有一段程序不懂,程序在下面,求懂得大神讲解一下beep();有什么作用。全部的内容,包括:电机PWM调速,程序里面有一段程序不懂,程序在下面,求懂得大神讲解一下beep();有什么作用。、PWM输出的初始化的步骤是什么、pwm编程控制电机转速程序和原理图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10085487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存