用51单片机控制直流电机
时间:2023-08-27 20:07:00
如图3所示:
①PWM脉宽控制:本设计采用软件延迟控制脉冲宽度,延迟程序函数如下:
void delay(unsigned char dlylevel){
int i=50*dlylevel;
while(--i);}
该函数为带参数DLYLEVEL,约产生DLYLEVEL*400us因此,脉冲周期可以由高电平持续hlt和低电平持续时间系数llt本设计中使用的脉冲频率为25Hz,可得hlt llt=100,占空比为hlt/(hlt llt),因此,要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt子程序流程图如图4所示。
②键盘中断处理子程序:中断按钮,单片机P3.2脚产生负跳边,响应中断处理程序,完成延迟抖动、键码识别、按键功能执行。
调速档,连续加/减速:调速档通过(0-6)共七档固定占空比,即相应档位相应变化hlt,llt为了实现调速档的实现。为了实现恒加或恒减速,直到按下加/减速键停止,需要判断是否松开按钮,每次增加/减少1%的空比(即hlt /--;llt--/ ),其程序流程图如图5所示。
③显示子程序:显示缓存区由数组定义,缓存区有8个,每个缓存区分别存储LED管道要显示的值。显示子程序一带参子程序,参数是显示缓存的数组名,通过for(i=0;i<8;i )方位选码添加到每个人身上的方式P0口延迟一两毫秒。
显示子程序只针对每个程序LED管道分别点亮一次,因此在运行过程中,每秒执行次数不得低于每秒24次。
④定期中断处理程序:由于单片机使用12,采用定时方法1M晶体振动可产生65.5ms的延时。对定时器设备值3CB0H可定时50ms,即使系统时钟精度达到0.05s。当50ms定时到达时,定时器溢出响应定时中断处理程序,完成定时器的再赋值,并对全局变量进行调整time加1,通过变量time计算系统的运行时间。
对于一个数字的显示,应首先转换为BCD代码,即取出每个位置,分别送到显示缓存区BCD算法,应对一个数循环除10取模,直至0,程序如下:
do{dispbuff[bcd_p]=bechange;//dispbuff数组显示缓冲区
bcd_p ;}while(bechange/=10) //disp_p为数组指针
软件设计的特点:
1、对于电机的启停,在PWM渐变脉宽调整用于控制,即开启后,由于当前速度逐渐降至零,从停止均匀加速到默认速度。这有利于保护电机。例如,如果电机用于汽车,也可以提高启动速度,防止打滑。
2、计算和显示运行时间。传感器技术可用于计算距离、速度等重要运行数据。
3、中断键盘处理,不需要反复扫描键盘,提高程序效率。
三、测试结果及分析:
结束语
基于硬件的设计PWMH型桥式驱动电路的技术解决了电机马驱动的效率问题。软件还采用了更合理的系统结构和算法,提高了单片机的使用效率,具有一定的防飞能力。然而,该设计也有一些缺点,主要是在速度反馈方面,不能提供更直观的速度表。因此,有必要引入传感器技术来反馈速度rpm或rps显示当前的转速。
[1] [2]
本网站转载的所有文章、图片、音频、视频文件的版权均属于版权所有人。本网站使用的非本网站原创文章和图片不能逐一联系确认版权所有者。如果本网站选定的作者和编辑认为其作品不应公开、自由传播或免费使用,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。