打印

单片机对步进电机的动态控制

[复制链接]
3133|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ruidi1|  楼主 | 2007-12-25 10:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
 请问各位高手,如何实现51单片机对步进电机的可编程控制?我做了实验发现直接用I/O口做频率输出端,频率输出根本不成线性。比如我要转1转/M和2转/M时,在程序里面无法控制。请问有没有好的方法?

相关帖子

来自 2楼
tyw| | 2007-12-25 19:15 | 只看该作者

参考一下

本帖最后由 tyw 于 2013-10-16 08:16 编辑

<br />               <font color=#0040FF>步进电机的单片机控制  </font>   <br />                作者:李通 刘志垠 <br /><br />摘要: 本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。<br /><br />关键词 步进电机 单片机 数码管<br /><br /><font color=#FF0040>一、 方案论证与比较<br /></font>    1、 本设计的重点在于对步进电机的控制和驱动,设计中受控电机为四相六线制的步进电机(内阻33欧,步进1.8度,额定电压12V)<br />    方案一:使用多个功率放大器件驱动电机<br />    通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。<br />    方案二:使用L298N芯片驱动电机<br />    L298N芯片可以驱动两个二相电机(如图1-1),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便
    通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用L298N驱动电机。而使用L298N时,可以用L297来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。<br />    2、 数码管显示电路的设计<br />    方案一:串行接法<br />    设计中要显示4位数字,用74LS164作为显示驱动,其中带锁存,使用串行接法可以节约IO口资源,但要使用SIO,发送数据时容易控制。 <br />    方案二:并行接法<br />    使用并行接法时要对每个数码管用IO口单独输入数据,占用资源较多。<br />    由于设计中用一块单片机进行控制,资源有限,选择了方案一。另外,使用锁存也起到节约资源的作用。<br /><br />   <font color=#FF0040> 二、步进电机控制原理<br /></font>    步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。<br />    步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。<br />    步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:<br />    (1)控制换相顺序<br />    通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。<br />    (2)控制步进电机的转向<br />    如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。<br />    (3)控制步进电机的速度<br />    如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。<br /><br />   <font color=#FF0040> 三、理论设计<br /></font>    综和以上选取的方案,总的流程如图3-2所示

   1、步进电机驱动电路<br />    通过L298N构成步进电机的驱动电路,电路图如图3-2所示。<br />    通过单片机SPCE061A的IOB8~IOB13对L298N的IN1~IN4口和ENA、ENB口发送方波脉冲信号,起时序图如图3-3所示



  2、数码管显示电路的设计<br />    数码管的显示驱动使用74LS164,通过SPCE061A的IOB0和IOB1口对DATA和CLK发送数据。<br /><br /><img src="https://bbs.21ic.com/upfiles/img/200712/2007122519144447.gif"><br />    3、4x4键盘电路<br />    在设计中,使用了标准的4x4键盘,其电路图如图3-5所示。单片机的A口低8位为键盘的接口。尽管设计要求中只需要4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,我们使用了4x4的键盘

<font color=#FF0040>   四、程序设计</font><br />    在进行程序设计的过程中,主要分为五个部分:双机通讯、语音报数、数字显示、步进电机驱动、键盘;其中双机通讯的实现和语音报时比较有特点,将其流程简要介绍如下,其他部分见附的程序。<br />    1、双机通讯<br /
  我们在实现双机通讯的过程中使用了“三次握手”的方式,这是Intle网中成用的数据通讯确认协议,其流程图如图4-1所示。<br />    2、语音报数<br />    程序设计中语音报数使用的是SACM-A2000,考虑到程序比较简单,首先使用了自动报数方式,但发现不能进行连续报数,于是使用了非自动方式,流程图如图4-2所示


<font color=#FF0040> 五、结果分析与总结<br /></font>    应该说这次课程设计还是基本达到了设计的要求,但是也存在着未能解决的问题,由于在执行语音程序时对资源的消耗比较大,在语音报数的时候会中断步进电机驱动信号的输出,导致电机停转。为此,我们修改了方案,使用了两块单片机,通过双机通讯来传递信号,遗憾的是问题仍然没有得到解决。<br />    这次步进电机的综合实验我们学到了步进电机、数码管、4*4键盘、语音报数和双机通讯的使用,更重要的是学会了程序出问题时调试的方法,并养成了Debug的习惯,学到了程序出问题后怎样去解决的基本方法。<br />    参考文献:<br />    [1]谢自美《电子线路设计、实验、测试(第二版)》 武汉:华中理工大学出版社,2000.<br />    [2]薛钧义,张彦斌,樊波等《凌阳十六位单片机原理及应用》北京:北京航空航天大学出版社,2003.

使用特权

评论回复
板凳
ruidi1|  楼主 | 2007-12-25 17:54 | 只看该作者

单片机对步进电机的动态控制

请大家发表哈意见三

使用特权

评论回复
地板
杨真人| | 2007-12-25 20:19 | 只看该作者

51似乎比Z80先进吧?Z80也能控制4个轴

早期的第二代线切割机控制平台就用Z80单板机.不见得不行啊.

不太明白你说的动态控制是什么回事.“1转/M和2转/M”是不明单位.

使用特权

评论回复
5
john1986| | 2007-12-25 22:27 | 只看该作者

加一片L297就简单多了

使用特权

评论回复
6
AIRWILL| | 2007-12-25 23:59 | 只看该作者

用好定时器呀

使用特权

评论回复
7
半路青春| | 2013-10-15 20:18 | 只看该作者
貌似图片看不了,我想照着练练手330618752@qq.com

使用特权

评论回复
8
tyw| | 2013-10-16 08:17 | 只看该作者
半路青春 发表于 2013-10-15 20:18
貌似图片看不了,我想照着练练手

图片补好了,晕,这个也给泥挖出来了,哈哈

http://www.51c51.com/mada/mada22.htm

使用特权

评论回复
9
半路青春| | 2013-10-29 16:19 | 只看该作者
谢谢你

使用特权

评论回复
10
dong00520| | 2013-10-30 10:11 | 只看该作者
图片 好多啊  详细啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

85

帖子

0

粉丝