单片机直流电机控制器(附电路图和部分程序)Word文档下载推荐.doc
- 文档编号:15502904
- 上传时间:2022-11-02
- 格式:DOC
- 页数:6
- 大小:84KB
单片机直流电机控制器(附电路图和部分程序)Word文档下载推荐.doc
《单片机直流电机控制器(附电路图和部分程序)Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《单片机直流电机控制器(附电路图和部分程序)Word文档下载推荐.doc(6页珍藏版)》请在冰豆网上搜索。
利用LED数码管实时显示电机速度。
(6)
电机能进行正反转控制。
控制方面,本设计是采用定时器控制I/O口输出PWM信号驱动斩波电路控制电机运转和调速;
利用单片机外部中断引脚的捕获功能、电机同轴带缺口的圆盘、光电耦合器来测量转速;
并将测得转速和设定转速进行PI运算后输出,实现闭环控制;
转向调节则是用的桥式电路。
显示是利用8位LED数码管,用按键进行设定。
下面简单介绍下硬件组成和一些软件原理:
一、硬件电路。
1、单片机选用的是STC的89C52,20MHz晶振。
2、显示部分比较简单,用的8位7段数码管同时显示设定速度和实时速度。
采用74LS164串行移位输出,只占用单片机3个I/O口,刷新频率100Hz。
3、PWM驱动电路。
使用了9012和8050两个三极管来驱动,相信网上很多的,也不用我多说,只是别忘了加上续流二极管和两个三极管之间的限流电阻就是。
4、测速电路。
测速电路用的是光耦测量转动圆盘引起的脉冲宽度,从而可得单片机的实时速度,精度很高,可达千分之一。
用的是外部中断的。
。
好像是捕获模式,忘记了~呵呵!
5、转向调节电路。
转向调节,由于是后来加上去的,所以就没有使用单片机控制,直接用硬件实现,但其实原理是一样的。
原理是利用开关控制继电器,然后控制桥路对电机实施转向控制。
另外用一个同轴电机按正反方向接2个LED用来指示方向。
PS:
因为这是小功率电机,所以就算没有制动电路,强制转向,也不会对电机造成损坏。
二、软件方面
中断方面,本程序一共用了3个中断源:
定时器0,定时器2以及外部中断1,它们的优先级分别为:
定时器0、外部中断1为高优先级,定时器2为低优先级。
另外还用了计数器1,用做计算脉冲宽度,与外部中断1一起构成测速系统。
显示部分程序不多说,按键消抖动什么的也是街知巷闻的了。
本设计中,重点是3个,PWM调速和测速,还有PI运算。
1、PWM的调速原理是通过调节一个斩波周期中的脉冲占空比来调节电机功率而达到调速目的。
本设计中,PWM的斩波周期为1ms,那也就是说斩波频率为1KHz,在理论上能达到1‰线性可调,也就是能以0.1%的调节精度来调节PWM占空比。
程序如下:
(放中断中进行)
voidtime0_int(void)interrupt1
{ TH0=(time0_tmp/256);
TL0=(time0_tmp%256);
if(cut==1)
{
time0_tmp=65536-time0_set*20/12;
cut=0;
}
else
time0_tmp=65536-(time0-time0_set)*20/12;
cut=1;
}
}
2、测速系统的工作原理为:
利用电机轴上带的圆盘的缺口,引起光电开关产生高电平脉冲,单片机就采集此脉冲的宽度,加以计算,得出其实时速度。
获取脉冲宽度值子函数如下:
voidgetwidth_1()
{
TH1=0;
TL1=0;
n=0;
n1=n;
while(INT1==1&
&
((n-n1)<
30))//n为每1MS+2
{}
if(INT1==0)
TR1=1;
//计数器1打开
else
gotoout;
//IE1=0;
//中断请求标志
EX1=1;
//外部中断1启动
while(m==0&
30))
if(m==0)//M=1,则已经进入out_int1中断,若等于0,则说明30MS延时已过
{
TH1_1=0;
TL1_1=0;
}
out:
IE1=0;
m=0;
EX1=0;
//外部中断允许位
TR1=0;
width_1=(TH1_1*256+TL1_1);
//timepr=脉冲宽度/μS
另外为了稳定测得的转速值,在程序中加了一个取平均值的函数(几乎在整个程序中都有感觉,程序写得不精炼,有点累赘,呵呵,但总算功能是能实现嘛~反正毕业设计对程序执行效率没要求。
)
voidgetwidth()
intgw,gw1;
width=0;
gw1=0;
for(gw=0;
gw<
6;
gw++)
GG:
getwidth_1();
if(width_1!
=0)
widthbuf[gw]=width_1;
gotoGG;
width=(widthbuf[0]+widthbuf[1]+widthbuf[2]+widthbuf[3]+widthbuf[4]+widthbuf[5])/6;
将测得的连续6个不为零的脉冲宽度取平均值,以消除偶然的不稳定因素,使转速显示更加稳定
3、PI调节
PI调节计算公式如下[5]:
YK=KP*EK+KI*EK2
YK:
要输出的数据增量
EK:
设定值和实测值的差值
EK1:
上次的EK值
EK2:
EK-EK1的差值
KP:
比例系数(本程序中设KP=1.6)经反复凑试的结果
KI:
积分系数(本程序中设KI=1.5)经反复凑试的结果
当KP和KI为以上值时,系统处于最佳运行状态,实验中表现为:
电机原来速度为2000,当设置为4500转时,可以在2秒之内迅速上升并稳定于4500±
20,而超调量也仅为+300转/分,出现在第一次上升的时候,下来之后便稳定了。
速度变化曲线:
实物图:
嘿嘿,希望对广大单片机初学者有那么点帮助~顺便再做做广告,有兴趣购买的
可以+QQ:
54281963(注明毕业设计),或者发邮件至:
upssure@
或者,本人也可代做51单片机系列的设计,详谈。
没学其他,呵呵,能把一样做精也很不错了,反正现在51系列单片机功能已经是今非昔比了,什么看门狗,PWM,AD,EEPROM,双串口,N外部中断口的,一应俱全。
STC刚出一款速度号称是经典51速度的480倍的单指令周期单片机呢。
对研究啊,创新啊什么的,当然是AVR,DSP好,但是对于做产品来说,就当然是价格低廉的51系列好啦~只要51能实现的,就尽量用51,对产品来说,成品很重要啊~^_^!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 直流电机 控制器 电路图 部分 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)