基于单片机的直流电机控制系统的设计(5)

2019-03-28 19:42

Void lcd init表示让LCD开始工作,并且处于输入状态,将数据输入,再进行下一项。LCD_RS表示将要对内部进行置换,并不是显示数据,因为输入的是配置数据。

4.3 PWM发生程序设计

PWM波的发生利用单片机定时器功能实现。其基本原理是设置好单片机的定时器功能,然后根据设定的电机转速,调整不同的PWM占空比,即输出高电平的脉宽,从而模拟出PWM波形。在本系统中,设置PWM波的频率为2000HZ,即每个周期为0.5ms,将电机转速分为五个等级,分别对应0%、20%、40%、60%、80%和100%的占空比。下面是电机控制的程序。

if(sys_dir == 1) {

dianjif =0;

if(time >= sys_speed)

dianjiz = 0;

else if(time < sys_speed)

dianjiz = 1;

} else { dianjiz =0; } time++; if(time==5) time=0;

if(time >= sys_speed)

dianjif = 0;

else if(time < sys_speed)

dianjif = 1;

15

程序中定时器计数周期设置为0.1ms,每0.1ms触发一次中断服务函数。Time变量自加1。当time小于Sys_speed时,dianjiz引脚给高电平。当time达到5时,time又重新置零,这样便形成了一个周期,sys_speed从而表示占空比。而sys_dir用于表示电机转动方向。当sys_dir为1时,dianjiz引脚输出PWM波形,dianjif引脚常为低电平;当sys_dir为0时,dianjif输出PWM波形,dianjiz引脚常为低电平。

4.4按键控制程序

系统中一共设计了三个按键,分别控制电机转速和方向。在程序中用key0、key1和key2表示。当key0被按下时,与单片机相连的管脚检测的低电平发生,于是执行if(key0 == 0)语句。在该语句中,首先进行延时delay_ms(100)操作,此操作是软件消抖。由于按键按下后,程序执行很快,可能会反复多次执行if语句,因此需要进行延时操作。Key0按键的作用是降低电机转速,因此接下来执行sys_speed = sys_speed – 1语句。Sys_speed表示电机转速,执行完该语句,则将电机转速降低一个等级。Key1的原理与key0类似,用于提高电机转速,不再赘述。

Key2是控制电机转动方向的按键。因此当该按键被按下后,执行sys_dir = !sys_dir;语句。sys_dir表示电机转动方向,执行完该语句,在完成了电机方向的转换。

if(key0 == 0){ }

if(key1 == 0){

delay_ms(100);

sys_speed = sys_speed - 1; if(sys_speed < 0)

sys_speed = 0;

delay_ms(100);

sys_speed = sys_speed + 1;

16

if(sys_speed > 5)

sys_speed = 5;

}

if(key2 == 0){ delay_ms(100); sys_dir = !sys_dir;

} 17

4.5系统仿真

图4.2 系统电路图

18

图4.3 速度为2方向为顺时针

19


基于单片机的直流电机控制系统的设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ABAQUS学习零碎笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: