⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机控制步进电机驱动器工作原理 - panjun_316 - 网易博客.htm

📁 步近电机控制代码
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<P style="TEXT-INDENT: 2em"><FONT size=3>  3.软件设计</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  方式1为中断方式:P3.5(INT1)为步进脉冲输入端,P3.7为正反转脉冲输入端。上位机(PC机或<NOBR>单片机</NOBR>)与驱动器仅以2条线相连。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  方式2为串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  方式3为拨码开关控制方式:通过K1~K5的不同组合,直接控制步进电机。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 
的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>   </FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3><IMG 
src="单片机控制步进电机驱动器工作原理 - panjun_316 - 网易博客.files/234.jpg" border=0></FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  图4 方式1程序框图</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  方式1源程序:</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#00H 
;20H单元置初值,电机正转位置指针</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#00H 
;21H单元置初值,电机反转位置指针</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV&nbsp;&nbsp; P1,#0C0H 
;P1口置初值,防止电机上电短路</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV TMOD,#60H 
;T1计数器置初值,开中断</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV TL1,#0FFH</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV TH1,#0FFH</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  SETB ET1</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  SETB EA</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  SETB TR1</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  SJMP $</FONT> </P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>;***********计数器1中断程序************</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  IT1P: JB P3.7,FAN 
;电机正、反转指针</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  ;*************电机正转*****************</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 00H,LOOP0</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 01H,LOOP1</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 02H,LOOP2</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 03H,LOOP3</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 04H,LOOP4</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 05H,LOOP5</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 06H,LOOP6</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 07H,LOOP7</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP0: MOV P1,#0D0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#02H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#40H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP1: MOV P1,#090H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#04H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#20H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP2: MOV P1,#0B0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#08H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#10H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP3: MOV P1,#030H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#10H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#08H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP4: MOV P1,#070H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#20H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#04H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP5: MOV P1,#060H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#40H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#02H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP6: MOV P1,#0E0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#80H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#01H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOP7: MOV P1,#0C0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV ; 20H,#01H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#80H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  ;***************电机反转*****************</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  FAN: JB 08H,LOOQ0</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 09H,LOOQ1</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0AH,LOOQ2</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0BH,LOOQ3</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0CH,LOOQ4</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0DH,LOOQ5</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0EH,LOOQ6</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  JB 0FH,LOOQ7</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ0: MOV P1,#0A0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#02H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#40H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ1: MOV P1,#0E0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#04H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#20H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ2: MOV P1,#0C0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#08H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#10H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ3: MOV P1,#0D0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#10H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#08H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ4: MOV P1,#050H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#20H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#04H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ5: MOV P1,#070H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#40H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#02H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ6: MOV P1,#030H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#80H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#01H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  AJMP QUIT</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  LOOQ7: MOV P1,#0B0H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 21H,#01H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  MOV 20H,#80H</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  QUIT: RETI</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  END</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>  4.结论</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT 
size=3>  该驱动器经实验验证能驱动0.5N.m的步进电机。将驱动部分的电阻、电容及续流二极管的有关参数加以调整,可驱动1.2N.m的步进电机。该驱动器电路简单可靠,结构紧凑,对于I/O口线与单片机资源紧张的系统来说特别适用。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3></FONT></P></DIV>
<DIV class=g_p_center style="WIDTH: 760px">
<DIV class="g_blog_circle g_circle_perm g_t_hide" 
id=relateBlogCircle_fks_084066081084082067080081083095087083081070093082094075 
style="MARGIN-LEFT: 25px"></DIV></DIV>
<DIV class=g_p_center style="WIDTH: 760px">
<DIV class="g_recent_read g_t_hide" 
id=blogReader_fks_084066081084082067080081083095087083081070093082094075 
style="MARGIN-LEFT: 25px"></DIV></DIV></DIV>
<DIV class=g_tab_btn00 
id=cssTabBar_fks_084066081084082067080081083095087083081070093082094075>
<DIV class=bdl 
id=ShareDiv_fks_084066081084082067080081083095087083081070093082094075><A 
class=c05 
onclick="NEBlog.gPermaLinkPage.updownMenu.upDownShare('fks_084066081084082067080081083095087083081070093082094075','blog/3505948820082894550575.track','blog/static/3505948820082894550575');return false;" 
href="http://blog.163.com/panjun_316/blog/static/3505948820082894550575/#">分享(<NOBR 
id=tbCount_fks_084066081084082067080081083095087083081070093082094075>?</NOBR>)<SPAN 
class="n_ n32 g_p_none">&nbsp;</SPAN></A></DIV>
<DIV class="bdl bdr" 
id=ComDiv_fks_084066081084082067080081083095087083081070093082094075><A 
class=c05 
onclick="NEBlog.gPermaLinkPage.updownMenu.upDownComments('fks_084066081084082067080081083095087083081070093082094075', '单片机控制步进电机驱动器工作原理', 'blog/static/3505948820082894550575');return false;" 
href="http://blog.163.com/panjun_316/blog/static/3505948820082894550575/#">评论(<NOBR 
id=comCount_fks_084066081084082067080081083095087083081070093082094075>?</NOBR>)<SPAN 
class="n_ n32 g_p_none">&nbsp;</SPAN></A></DIV>
<DIV class="bdl bdr c09">分类:<A class=c05 
id=aBelongClsfks_084066081084082067080081083095087083081070093082094075 
onclick="NEBlog.gPermaLinkPage.updownMenu.openSameClass('fks_081068083081084065080095074064081086084074080094094', '电机');" 
href="http://blog.163.com/panjun_316/blog/static/3505948820082894550575/#">电机</A></DIV>
<DIV class=c08><NOBR 
id=accessCount_fks_084066081084082067080081083095087083081070093082094075>?</NOBR>次阅读</DIV>
<DIV class=c09> 2008-03-08 09:45</DIV><INPUT 
id=openCom_fks_084066081084082067080081083095087083081070093082094075 
type=hidden value=-1> <INPUT 
id=openShare_fks_084066081084082067080081083095087083081070093082094075 
type=hidden value=-1> </DIV>
<DIV class="g_p_clear g_t_space"></DIV>
<DIV class="g_p_relative g_h_1" 
id=com_fks_084066081084082067080081083095087083081070093082094075>
<DIV 
id=comShow_fks_084066081084082067080081083095087083081070093082094075></DIV>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -