总线技术|接口技术
400万+工程师在用
华为|鸿蒙开发者日
直播报名
400万+工程师在用
华为|鸿蒙开发者日
直播报名

电子发烧友网工程师

17年用户 16436经验值
擅长:可编程逻辑 MEMS/传感技术 测量仪表 模拟技术 控制/MCU RF/无线
私信 关注

基于AT89C2051的四相步进电机驱动器电路设计

2008-10-21 00:38

<p><font face="Verdana">步进电机驱动器的工作原理</font></p>
<p> 步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。 </p>
<p>  有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用,一般需自己设计驱动器。本文介绍的就是为从一日本产旧式打印机上拆下的步进电机而设计的驱动器。本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。</p>
<p>  1. 步进电机的工作原理</p>
<p>  该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四相反应式步进电机工作原理示意图。</p>
<p>  图1 <a href="https://www.elecfans.com/article/88/131/194/2008/200805239380.html">四相步进电机</a>步进示意图</p>
<p>  
<center><img height="288" src="https://www.elecfans.com/article/UploadPic/2008-10/2008102103220179.jpg" width="407" border="0"/>
<center></center><br/>
<p>  开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。</p>
<p>  当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极
<table align="left">
<tbody>
<tr>
<td id="Adimg"></td></tr></tbody></table>产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。</p>
<p>  四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。</p>
<p>  单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:</p>
<p>  图2.步进电机工作时序波形图   </p>
<p align="center"><img height="139" src="https://www.elecfans.com/article/UploadPic/2008-10/2008102103221309.jpg" width="516" border="0"/>
<p>
<div align="left">  2.基于at89c2051的步进电机驱动器系统电路原理</div>
<p>  图3 步进电机驱动器系统电路原理图   </p>
<center><img height="337" src="https://www.elecfans.com/article/UploadPic/2008-10/2008102103221211.jpg" width="500" border="0"/>
<center></center>
<p>
<p>  <a href="https://www.elecfans.com/soft/78/223/2008/200803252650.html">AT89c2051</a>将控制脉冲从P1口的P1.4~P1.7输出,经<a href="https://www.elecfans.com/soft/78/223/2008/200803222581.html">74LS14</a>反相后进入9014,经9014放大后控制光电开关光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。图中L1为步进电机的一相绕组。AT89C2051选用频率22MHz的晶振,选用较高晶振的目的是为了在方式2下尽量减小AT89C2051对上位机脉冲信号周期的影响。</p>
<p>  图3中的RL1~RL4为绕组内阻,50Ω电阻是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。D1~D4为续流二极管,使电机绕组产生的反电动势通过续流二极管(D1~D4)而衰减掉,从而保护了功率管TIP122不受损坏。</p>
<p>  在50Ω外接电阻上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。与续流二极管串联的200Ω电阻可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。</p>
<p>  3.软件设计</p>
<p>  该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:</p>
<p>  方式1为中断方式:P3.5(INT1)为步进脉冲输入端,P3.7为正反转脉冲输入端。上位机(PC机或单片机)与驱动器仅以2条线相连。</p>
<p>  方式2为串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。</p>
<p>  方式3为拨码开关控制方式:通过K1~K5的不同组合,直接控制步进电机。</p>
<p>  当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。</p>
<p>  在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步。</p>
<p>  图4 方式1程序框图</p>
<p>  
<center><img height="335" src="https://www.elecfans.com/article/UploadPic/2008-10/2008102103221687.jpg" width="278" border="0"/>
<center></center>
<p>
<p>  方式1源程序:</p>
<p>  MOV 20H,#00H ;20H单元置初值,电机正转位置指针</p>
<p>  MOV 21H,#00H ;21H单元置初值,电机反转位置指针</p>
<p>  MOV P1,#0C0H ;P1口置初值,防止电机上电短路</p>
<p>  MOV TMOD,#60H ;T1计数器置初值,开中断</p>
<p>  MOV TL1,#0FFH</p>
<p>  MOV TH1,#0FFH</p>
<p>  SETB ET1</p>
<p>  SETB EA</p>
<p>  SETB TR1</p>
<p>  SJMP $</p>
<p>  ;***********计数器1中断程序************ </p></center></center></center>
<p>
<p>  IT1P: JB P3.7,FAN ;电机正、反转指针</p>
<p>  ;*************电机正转*****************</p>
<p>  JB 00H,LOOP0</p>
<p>  JB 01H,LOOP1</p>
<p>  JB 02H,LOOP2</p>
<p>  JB 03H,LOOP3</p>
<p>  JB 04H,LOOP4</p>
<p>  JB 05H,LOOP5</p>
<p>  JB 06H,LOOP6</p>
<p>  JB 07H,LOOP7</p>
<p>  LOOP0: MOV P1,#0D0H</p>
<p>  MOV 20H,#02H</p>
<p>  MOV 21H,#40H</p>
<p>  AJMP QUIT</p>
<p>  LOOP1: MOV P1,#090H</p>
<p>  MOV 20H,#04H</p>
<p>  MOV 21H,#20H</p>
<p>  AJMP QUIT</p>
<p>  LOOP2: MOV P1,#0B0H</p>
<p>  MOV 20H,#08H</p>
<p>  MOV 21H,#10H</p>
<p>  AJMP QUIT</p>
<p>  LOOP3: MOV P1,#030H</p>
<p>  MOV 20H,#10H</p>
<p>  MOV 21H,#08H</p>
<p>  AJMP QUIT</p>
<p>  LOOP4: MOV P1
<table align="left">
<tbody>
<tr>
<td id="Adimg"></td></tr></tbody></table>,#070H</p>
<p>  MOV 20H,#20H</p>
<p>  MOV 21H,#04H</p>
<p>  AJMP QUIT</p>
<p>  LOOP5: MOV P1,#060H</p>
<p>  MOV 20H,#40H</p>
<p>  MOV 21H,#02H</p>
<p>  AJMP QUIT</p>
<p>  LOOP6: MOV P1,#0E0H</p>
<p>  MOV 20H,#80H</p>
<p>  MOV 21H,#01H</p>
<p>  AJMP QUIT</p>
<p>  LOOP7: MOV P1,#0C0H</p>
<p>  MOV 20H,#01H</p>
<p>  MOV 21H,#80H</p>
<p>  AJMP QUIT</p>
<p>  ;***************电机反转*****************</p>
<p>  FAN: JB 08H,LOOQ0</p>
<p>  JB 09H,LOOQ1</p>
<p>  JB 0AH,LOOQ2</p>
<p>  JB 0BH,LOOQ3</p>
<p>  JB 0CH,LOOQ4</p>
<p>  JB 0DH,LOOQ5</p>
<p>  JB 0EH,LOOQ6</p>
<p>  JB 0FH,LOOQ7</p>
<p>  LOOQ0: MOV P1,#0A0H</p>
<p>  MOV 21H,#02H</p>
<p>  MOV 20H,#40H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ1: MOV P1,#0E0H</p>
<p>  MOV 21H,#04H</p>
<p>  MOV 20H,#20H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ2: MOV P1,#0C0H</p>
<p>  MOV 21H,#08H</p>
<p>  MOV 20H,#10H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ3: MOV P1,#0D0H</p>
<p>  MOV 21H,#10H</p>
<p>  MOV 20H,#08H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ4: MOV P1,#050H</p>
<p>  MOV 21H,#20H</p>
<p>  MOV 20H,#04H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ5: MOV P1,#070H</p>
<p>  MOV 21H,#40H</p>
<p>  MOV 20H,#02H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ6: MOV P1,#030H</p>
<p>  MOV 21H,#80H</p>
<p>  MOV 20H,#01H</p>
<p>  AJMP QUIT</p>
<p>  LOOQ7: MOV P1,#0B0H</p>
<p>  MOV 21H,#01H</p>
<p>  MOV 20H,#80H</p>
<p>  QUIT: RETI</p>
<p>  END</p>
<p>  4.结论</p>
<p>  该驱动器经实验验证能驱动0.5N.m的步进电机。将驱动部分的电阻、电容及续流二极管的有关参数加以调整,可驱动1.2N.m的步进电机。该驱动器电路简单可靠,结构紧凑,对于I/O口线与单片机资源紧张的系统来说特别适用。</p>

回帖(9)

easyFPGA

2009-2-11 22:48:12
本帖最后由 eehome 于 2013-1-5 10:08 编辑

不错






yoyoma

2009-5-1 08:59:36
这个很不错的啊。呵呵。

任风逍遥

2012-6-6 06:22:10
相当不错!!!!!!!!!

Finlay

2012-6-26 16:03:02
这个很不错的啊。呵呵

悠闲散人

2012-9-13 20:02:39
有没有C的。。。对汇编不了解

cwhdianzi

2013-1-5 16:15:32
我也是要C的哦

张祥

2013-1-9 08:33:15

15337238408

2013-6-21 17:01:30
顶一个。。。。。。

younglife

2013-7-30 00:50:23
{:23:}

更多回帖

打开APP