robotdiy -
来自「详细介绍了步进电机」· 代码 · 共 382 行 · 第 1/2 页
TXT
382 行
onclick="javascript:window.external.addfavorite('http://www.robotdiy.com','机器人发烧友天地--ROBOTDIY')"
href="http://www.robotdiy.com/#">加入收藏夹 </A>| <A
href="http://www.robotdiy.com/phpbb2/"
target=_blank>机器人技术论坛</A> | <A
href="http://www.robotdiy.com/help.htm" target=_blank>帮助</A>
|<A href="http://www.robotdiy.com/aboutus.htm"
target=_blank>关于我们</A> |<A
href="http://www.robotdiy.com/aboutus_e.htm"
target=_blank>About Us</A>|</B> </TD></TR></TBODY></TABLE>
<HR>
</TD></TR>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=4 cellPadding=6 width="100%"
summary="Data for Introduction" border=0>
<TBODY>
<TR>
<TD><!-- End of header.php file -->
<TABLE style="TEXT-ALIGN: left" cellSpacing=5 cellPadding=4
width="100%" border=0>
<TBODY>
<TR>
<TD class=article-top style="BACKGROUND-COLOR: #e0e0e0"
width="99%">步进电机的单片机控制<BR><SPAN class=smalltype>写于: 星期五
13 八月 @ 06:21:59 </SPAN></TD></TR>
<TR>
<TD><A
href="http://www.robotdiy.com/topics.php?op=viewtopic&topic=12"><IMG
height=66 alt=传感器与驱动器 hspace=4
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/robot_sensor_driver.gif"
width=69 align=right border=0></A><I>本设计采用凌阳16
位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。</I>
<BR><BR>
<DIV align=center><FONT size=+2><B>步进电机的单片机控制
</B></FONT></DIV>
<P align=center><B>作者:李通 刘志垠</B></P>
<P><B>摘要:</B>本设计采用凌阳16
位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用
4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。</P>
<P></P>
<P><B>关键词:</B> 步进电机 单片机 数码管</P>
<P></P>
<P></P>
<P><FONT size=+1><B>一、 方案论证与比较</B></FONT></P>
<P>1、
本设计的重点在于对步进电机的控制和驱动,设计中受控电机为四相六线制的步进电机(内阻33欧,步进1.8度,额定电压12V)</P>
<P></P>
<P>方案一:使用多个功率放大器件驱动电机</P>
<P>通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。</P>
<P></P>
<P>方案二:使用L298N芯片驱动电机</P>
<P>L298N芯片可以驱动两个二相电机(如图1-1),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。</P>
<P align=center><IMG height=268
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_01.gif"
width=497> </P>
<P align=center>图1-1</P>
<P>通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用L298N驱动电机。而使用L298N时,可以用L297来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。</P>
<P></P>
<P>2、 数码管显示电路的设计</P>
<P></P>
<P>方案一:串行接法</P>
<P>设计中要显示4位数字,用74LS164作为显示驱动,其中带锁存,使用串行接法可以节约IO口资源,但要使用SIO,发送数据时容易控制。
</P>
<P></P>
<P>方案二:并行接法</P>
<P>使用并行接法时要对每个数码管用IO口单独输入数据,占用资源较多。</P>
<P></P>
<P>由于设计中用一块单片机进行控制,资源有限,选择了方案一。另外,使用锁存也起到节约资源的作用。</P>
<P></P>
<P><B><FONT size=+1>二、步进电机控制原理</FONT></B></P>
<P>步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。</P>
<P>步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。</P>
<P>步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:</P>
<P>(1)控制换相顺序</P>
<P>通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。</P>
<P>(2)控制步进电机的转向</P>
<P>如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。</P>
<P>(3)控制步进电机的速度</P>
<P>如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。</P>
<P></P>
<P><FONT size=+1><B>三、理论设计</B></FONT></P>
<P>综和以上选取的方案,总的流程如图3-2所示。</P>
<P align=center><IMG height=283
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_02.gif"
width=396> </P>
<P align=center>图3-1</P>
<P>1、步进电机驱动电路</P>
<P>通过L298N构成步进电机的驱动电路,电路图如图3-2所示。</P>
<P></P>
<P>通过单片机SPCE061A的IOB8~IOB13对L298N的IN1~IN4口和ENA、ENB口发送方波脉冲信号,起时序图如图3-3所示。</P>
<P align=center><IMG height=344
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_03.gif"
width=410> </P>
<P align=center>图3-2</P>
<P align=center><IMG height=235
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_04.gif"
width=575> </P>
<P align=center>图3-3</P>
<P></P>
<P>2、数码管显示电路的设计</P>
<P>数码管的显示驱动使用74LS164,通过SPCE061A的IOB0和IOB1口对DATA和CLK发送数据。</P>
<P align=center><IMG height=307
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_05.gif"
width=505></P>
<P align=center>图3-4</P>
<P></P>
<P></P>
<P>3、4x4键盘电路</P>
<P>在设计中,使用了标准的4x4键盘,其电路图如图3-5所示。单片机的A口低8位为键盘的接口。尽管设计要求中只需要4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,我们使用了4x4的键盘。</P>
<P align=center><IMG height=295
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_06.gif"
width=565> </P>
<P align=center></P>
<P align=center>图3-5</P>
<P><FONT size=+1><B>四、程序设计</B></FONT></P>
<P>在进行程序设计的过程中,主要分为五个部分:双机通讯、语音报数、数字显示、步进电机驱动、键盘;其中双机通讯的实现和语音报时比较有特点,将其流程简要介绍如下,其他部分见附的程序。</P>
<P>1、双机通讯</P>
<P align=center><IMG height=520
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_07.gif"
width=557></P>
<P align=center>图4-1</P>
<P></P>
<P>我们在实现双机通讯的过程中使用了“三次握手”的方式,这是Intle网中成用的数据通讯确认协议,其流程图如图4-1所示。</P>
<P></P>
<P>2、语音报数</P>
<P>程序设计中语音报数使用的是SACM-A2000,考虑到程序比较简单,首先使用了自动报数方式,但发现不能进行连续报数,于是使用了非自动方式,流程图如图4-2所示。</P>
<P align=center><IMG height=729
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/steppermotor_08.gif"
width=452></P>
<P align=center>图4-2</P>
<P><B><FONT size=+1>五、结果分析与总结</FONT></B></P>
<P>应该说这次课程设计还是基本达到了设计的要求,但是也存在着未能解决的问题,由于在执行语音程序时对资源的消耗比较大,在语音报数的时候会中断步进电机驱动信号的输出,导致电机停转。为此,我们修改了方案,使用了两块单片机,通过双机通讯来传递信号,遗憾的是问题仍然没有得到解决。</P>
<P>这次步进电机的综合实验我们学到了步进电机、数码管、4*4键盘、语音报数和双机通讯的使用,更重要的是学会了程序出问题时调试的方法,并养成了Debug的习惯,学到了程序出问题后怎样去解决的基本方法。</P>
<P></P>
<P></P>
<P></P>
<P><FONT size=+1><B>参考文献:</B></FONT></P>
<P>[1]谢自美《电子线路设计、实验、测试(第二版)》[M]武汉:华中理工大学出版社,2000.</P>
<P>[2]薛钧义,张彦斌,樊波等《凌阳十六位单片机原理及应用》[M]北京:北京航空航天大学出版社,2003.</P>
<P>[EB/01] <A href="http://www.sunplus.com/"
target=_blank>http://www.sunplus.com/</A>.</P>
<P>[EB/02] <A href="http://www.21ic.com/"
target=_blank>http://www.21ic.com/</A><BR></P></TD></TR>
<TR>
<TD class=type4 align=right>
<DIV align=right><A
href="http://www.robotdiy.com/friend.php?op=FriendSend&sid=173"><IMG
alt="Send this announcement to a friend"
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/friend.gif"
align=middle border=0></A> | <A
href="http://www.robotdiy.com/article.php?op=Print&sid=173"><IMG
alt="Printable Version"
src="ROBOTDIY - 机器人发烧友天地----中国最大的机器人网站.files/print.gif"
align=middle
border=0></A> </DIV></TD></TR></TD></TR></TBODY></TABLE><BR><BR>
<TABLE style="TEXT-ALIGN: left" cellSpacing=2 cellPadding=4
width="100%" border=0>
<TBODY>
<TR>
<TD class=article-top
style="BACKGROUND-COLOR: #e0e0e0">评论 - <A
href="http://www.robotdiy.com/mod.php?mod=comments&op=reply&cmt_cid=a">张贴你的评论</A></TD></TR>
<TR>
<TD class=white>
<DIV align=center>所有的评论属于张贴者,本网站不对任何内容负责。
<FORM action=mod.php method=post>定制显示方式:显示 <SELECT
name=cmt_new_thold><OPTION value=-1>-1 :
0</OPTION><OPTION value=0 selected>0 :
0</OPTION><OPTION value=1>1 : 0</OPTION><OPTION
value=2>2 : 0</OPTION><OPTION value=3>3 :
0</OPTION><OPTION value=4>4 : 0</OPTION><OPTION
value=5>5 : 0</OPTION></SELECT> <SELECT
name=cmt_new_mode> <OPTION value=nocomments>NO
Comments</OPTION> <OPTION value=nested
selected>Nested</OPTION> <OPTION
value=threaded>Threaded</OPTION> <OPTION
value=flat>Flat</OPTION></SELECT> <SELECT
name=cmt_new_order> <OPTION value=4 selected>Oldest
First</OPTION> <OPTION value=1>Newest First</OPTION>
<OPTION value=3>Lowest Scores First</OPTION> <OPTION
value=2>Highest Scores First</OPTION></SELECT> <INPUT
type=hidden value=comments name=mod> <INPUT type=hidden
value=refresh name=op> <BR><BR><INPUT type=submit value=刷新> </FORM>
<HR width="50%" SIZE=1>
<SPAN class=onebiggerred>还没有任何评论,马上添加你的评论!
</SPAN><BR></DIV></TD></TR></TBODY></TABLE><BR><!-- BEGIN: File: themes/foo/footer.php --></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<DIV class=smalltextatbottom style="TEXT-ALIGN: center">版权所有,2002-2004。<A
href="http://www.robotdiy.com/">中国机器人社区(机器人发烧友天地) </A>及<A
href="http://www.robotdiy.com/phpbb2/"> 机器人技术论坛</A><BR>Email:
webmaster[at]robotdiy[dot]com </DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?