单片机课程设计用89C52单片机设计一个步进电机控制器.docx
《单片机课程设计用89C52单片机设计一个步进电机控制器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计用89C52单片机设计一个步进电机控制器.docx(11页珍藏版)》请在冰豆网上搜索。
单片机课程设计用89C52单片机设计一个步进电机控制器
单片机课程设计一用89C52单片机设计一个步进电机控
制器
安庆师范学院
单片机课程设讣
课程名称单片机课程设计
题訂名称步进电机
学院物理与电气工程学院
专业班级
姓名
学号
指导教师忖录
一、设计要求3
二、设计总体方案3
1、51单片机功能3
2、步进电机工作原理4
3、方案比较与选择4
方案14
方案25
三、电路分析7
2、步进电机方向与步距角的控制7
3、步进电机的驱动电路及状态显示8
驱动电路8
状态显示9
步进电机时序表9
四、程序设计10
流程图10
主程序10
五、讨论及进一步研究建议14
六、课程设计心得体会15
参考文献15
单片机课程设计任务书
一、设计要求设计内容:
用89C52单片机设计一个步进电机控制器
设计要求:
用AT89C52控制一个四相步进电机
(2)可控制步进电机的启动与停止、正转与反转、加速与减速
(3)2档速度调节(4)可显示电机运行参数
二、设计总体方案
51单片机功能:
51系列单片机中典型芯片AT89C51釆用40引脚双列直插封装DIP形式,内部由CPU,4kB的ROM,256B的RAM,2个16b的定时/计数器TO和Tl,4个8b
的工/0端I:
IPO,P1,P2,P3,—个全双功串行通信口等组成。
特别是该系列单片机片内的Flash可编程、可擦除只读存储器E>ROM,使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。
该系列单片机引脚与封装如图1所示。
51系列单片机提供以下功能:
4kB存储器;256BRAH;32条工/0线;2个16b定时/计数器;5个2级中断源;1个全双向的串行口以及时钟电路。
51系列单片机为许多控制提供了高度灵活和低成本的解决办法。
充分利用它的片内资源,即可在较少外围电路的情况下让步进电机实现功能。
图151系列单片机封装图
步进电机工作原理:
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的LI的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的LI的。
28byj48是最普通的减速步进电机,最大转速大概是14圈/分钟。
该电机要是节拍太快的话,就不动了,而且还有一点异响。
这个型号的电机最适合用于学习,真正现实中用处不太大,无论是转速、扭曲都不太理想,唯一有点就是价格便宜。
ULN2003是达林顿阵列,能用这个驱动的步进电机很少,而且受到电流限制,性能不理想。
该减速比为64的,都适合精密旋转,但要速度不可观。
要想提高转速可以考虑以L298N驱动,然后用28或者35步进电机(不带减速),稍微大一些,这样达到30或60转/分钟比较容易。
方案比较与选择
方案1:
图2方案1原理图用到的元器件主要有:
STC89C52芯片、ULN2003驱动芯片、LED发光二极管、四相五线制步进电动机。
一、此方案的优点:
电路简单,能够实现对电机的正转、反转、加速、减速、停止的控制。
此方案通过LED灯可以反映电机工作状态。
二、此方案的缺点:
此方案程序未采取中断的方式来实现对电动机的控制,CPU的利用率不高
无法直接显示电机转速。
方案2:
图3方案2原理图
用到的元器件主要有:
STC89C52芯片、ULN2003驱动芯片、四相五线制步进电动机、数字数码管、三极管(驱动),LED灯,蜂鸣器。
一、此方案的优点:
1、此电路加入了LED灯、蜂鸣器、数码管,能够通过LED灯直观的观察电机
的正反转,在加减速的时候可以有提示音,并且数码管可以直观显示电机转速。
2、元件比较齐全,能够实现对电机的正转、反转、加速、减速、停止的控制,此方案在加速、减速的基础上增加了两个加速档和三个减速档。
3、此方案程序釆取中断的方式来实现对电动机的控制,因此CPU的利用率很高,在程序编写时步进电机的转速非常稳定,不会受其他程序的影响。
二、此方案的缺点:
1、山于程序采用中断,数码管显示在中断外,因此显示很不稳定。
三、电路分析
1、步进电动机脉冲序列信号与转速控制
要步进电机可以“步进”就得产生下图所示的脉冲序列。
此脉冲序列是用周期、脉冲高度、通断时间来表征的。
数字电路中,脉冲高度由元件电平决定,如TTL电平为0〜5V,C0MS电平为0〜10V。
步进电机的每一步的响应。
都需要一定的时间,即一个高脉冲要保留一定的时间,以便电机完全达到一定的位置。
通断的时间可以利用延时在软件中实现,这决定了步进电机的实际工作速率。
图4脉冲序列
2、步进电机方向与步距角的控制
步进电动机的励磁方式可分为全部励磁及半步励磁,其中全步励磁乂有1相励磁及2相励磁之分,而半步励磁乂称1?
2相励磁。
每输出一个脉冲信号,步进电动机只走一步。
因此,依序不断送出脉冲信号,步进电动机即可连续转动。
本设讣选择半步励磁(1?
2相励磁):
1?
2相励磁法为1相与2相轮流交替导通。
因分辨率提高,且运转平滑,每送一励磁信号可走9度。
若以1?
2相励磁法控制步进电动机正转,其励磁顺序如下所示若励磁信号反向传送,则步进电动机反转:
励磁顺序:
A?
AB?
B?
BC?
C?
CD?
D?
DA
通常步进电机步距角B的一般讣算按下式计算。
B360。
/(Z?
m?
K)
式中B—步进电机的步距角;
Z—转子齿数;
m—步进电动机的相数;
K—控制系数,是拍数与相数的比例系数
3、步进电机的驱动电路及状态显示
驱动电路:
其中IB、2B、3B、4B分别与P1.0、P1.1、P1.2、P1.3相接。
图5驱动图
状态显示:
通过三位数码管显示转速。
步进电机时序表:
03HAB02HB06HBC04HC
OCHCD08HD09HDA
8000101HA
四、程序设计
流程图:
主程序:
^include//51芯片管脚定义头文件
^defineucharunsignedchar
#defineuintunsignedint
ucharFFW[8]0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09;
〃正反转编码
uchar
duan[10]0xc0,0xf9,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90;//0^9
//PO、数码管段选,P广电机控制信号,P2~数码管位选
sb辻rollP3"0;//正转
sbitrollbackP31;//反转
sbitadd_speedP3"2;//加速
sbitdec_speedP3"3;//减速
sbitroll_ledP3"5;//正转灯
sbitrollback_ledP3"6;//反转灯
sbitbeepP3"7;//蜂鸣器
intj,zfz;
uintshift2100,run_speed0;
ucharbb;whileaa——forbbO;bblOO;bb++;
voidBeep//蜂鸣器响一声函数
beepO;
delaylO;
beepl;
voiddisplay〃显示速度
P0duan[run_speed%10]\//t\分位
P20x7f;delayl;P0duan[run_speed/10%10];//十分位P2Oxbf;delayl;
POduan[run_speed/100]&0x7f;//个位
P20xdf;delayl;
voidinit//中断初始化
TM0D0X01;//定时器0工作在方式1
IP0X02;//设定TO优先级最高
TH065536-shift/256;TL065536-shift%256;
EA1;
EX01;〃外部中断0
EX11;〃外部中断1
ET01;//定时器0
IT11;
IT01;
TROO;
TR01;〃启动定时器,电机转动
zfzjn;//电机正反转选择
辻mO
roll_ledO;〃正转灯亮
else
rollback_ledO;//反转灯亮
whilel
run_speedint24414.0625/shift;//il•算转速(取两位小数)
display;//显示转速
辻mO
ifrollO〃停止
run_speedO;
shift2100;
while〜roll;//消抖
break;
else
ifrollbackO//停止
run_speedO;
shift2100;
while^rollback;//消抖
break;
maininit;
whilel
TROO;//关闭定时器,电机不转display;//显示转速roll_ledl;
rollback_ledl;
ifrollO〃正转
while^roll;//消抖
runO,0;
ifrollbackO〃反转
while^rollback;//消抖
run7,1;
voidtimeOinterrupt1
TH065536-shift/256;
TL065536-shift%256;
ifzfzO〃正转
ifj7j0;
PlFFW[j++];
else//反转
ifjOjY;
PlFFW[j—];
if'add_speed
delaylO;
if^add_speed
sh辻t-500;
ifshiftllOO
Beep;else
sh辻tllOO;
while'add_speed;
delay5;
while^add_speed;
voidINTT1interrupt2//减速
辻、dec_speed
delaylO;
辻、dec_speed
shift+500;
ifshift3600
Beep;else
shift3600;
while'dec_speed;
delay5;while'dec_speed;
五、讨论及进一步研究建议
1、我们的作品只有具备基本功能,我们采取的是中断的方式,数码管显示
转速的时候闪烁,并不稳定,所以这方面的拓展功能还有待提高。
2、编程时候需要注意步进电机的步距角,才能较清楚的看得出电机的转
动。
3、电路焊接方面考虑有小小的缺陷,在电机线插槽那部分山于空间考虑不足。
所以电机插槽无法完全插进,不过未影响电路的运行。
4、线路有部分接触不良,所以焊接时候还不是足够完善.
六、课程设计心得体会此次课程设讣也许我们小组的每一位成员都收获了许多。
我们利用网络查找了很多资料,并且学着用ISIS7及Ke订uVision4软件去进行仿真分析,在刚开始的进行设讣的时候,我们使用汇编语言来进行程序设计,因为阅读性不强,他人看的并不明白,所以我们改用C语言来编写,并且用ISIS7把电路图画出来再进行仿真分析,最终获得成功。
刚开始山于我们对步进电机的知识掌握的不足,只知道送给电机一个脉冲信号就可以让它转动起来,结果始终转动不起来。
持续了好儿天的时间都没有成功的让它运转,所以我们决定去请教老师,老师给我们清晰讲述了电机的工作原理,再结合着网上别人的程序,我们终于成功的让它运转起来。
知道原理的我们很容易的就实现的它的加速,因为只要让脉冲信号的频率更高,就可以让内部转子转动的速度更快,从而实现电机的加速转动。
通过本次实验,我们小组受益匪浅。
一方面,我们将课堂上的理论知识应用到了实际,加强巩固了理论知识,也提高了实际动手能力,通过实践反馈,了解到我们自身知识面的不足。
另一方面,在实验过程中,遇到问题时候,我们小组列出可能问题,一一进行排查,找出问题的所在,队员之间分工明确,团结合作,本次实验正是通过队员之间的合作实现的。
学了这么久终于能够让自己奁套欲动的手得到满足了,更能激发我们对单片机的兴趣,也感受到久攻不下,柳暗花明的惊喜。
参考文献:
李全利《单片机原理及接口技术》高等教育出版社
郭天祥《新概念51单片机C语言教程》电子工业出版社
周荷琴吴秀清《微型计算机原理与接口技术》第四版中国科学技术大学出版社
顾绳谷《电机及拖动基础》笫四版机械工业岀版社
李建兵周长林《EDA技术基础教程》国防工业出版社