土木在线论坛 \ 电气工程 \ 电气工程原创版块 \ 制作步进电机控制模块

制作步进电机控制模块

发布于:2023-02-28 14:46:28 来自:电气工程/电气工程原创版块 [复制转发]

知识点:电机控制模块

前一期发表了《步进电机使用介绍》,介绍步进电机的组成结构、工作原理和驱动电路。通过那篇文章,我们知道要控制步进电机旋转就需要时刻给步进电机发送脉冲。这带来了些问题,比如需要步进电机一直旋转,单片机就只能一直给它发送脉冲了,就很难去做其他事情了。还有步进电机相位越多需要控制引脚也就越多,如果步进电机数量多了单片机引脚根本不够用,那么有没有解决方法呢?


为了解决步进电机脉冲控制和引脚使用问题,我设计了一个简单的步进电机控制模块,使用两个引脚就能控制步进电机转动了。



模块时序图

下图是控制模块的时序图。


图片


通信使用了两根线,时钟SCL、数据SDA。


时序解释:

1、SDA数据只能在SCL低电平时改变,SCL上升沿对SDA采样。

2、当SCL被拉低2ms到5ms时,模块复位开始下一次控制数据接收。

3、数据传播时间不能大于1000ms。

4、传播完数据后SCL要置为高电平,SDA置为低电平。


数据解释:

1、数据总共有24位。

2、第一位到第八位为控制命令,第九位到第二十四位为步进电机脉冲个数。

3、第一位需为1,第八位需为0。

4、D:0-顺时针旋转,1-逆时针旋转。

5、TY1,TY0:0,0-PWM模式,0,1-脉冲模式,1,0-一直旋转模式。

6、TM2,TM1,TM0:脉冲宽度(0~7ms)。

7、TS15,······,TS0:脉冲个数(0~2^16-1)。



步进电机工作模式:PWM模式、脉冲模式、一直旋转模式。


1、PWM模式:控制位TY1,TY0设置为0,0。步进电机旋转时间和速度由SDA上的PWM信号控制。在该模式下,TM2,TM1,TM0以及TS15,······,TS0位无效。


2、脉冲模式:控制位TY1,TY0设置为0,1。步进电机旋转时间由TS15,······,TS0位的脉冲个数控制,旋转速度由脉冲宽度TM2,TM1,TM0位控制。如果TS15,······,TS0都被设置为0,则步进电机会切换到一直旋转模式下工作。


3、一直旋转模式:控制位TY1,TY0设置为1,0。步进电机会一直旋转下去,直到重新接收到控制命令旋转速度由脉冲宽度TM2,TM1,TM0位控制。在该模式下TS15,······,TS0位无效。


为什么要选择这种双线控制方法呢?大家有没有觉得它有点像IIC通信,一开始我本来打算用UART通信方式控制,可后来发现单片机的UART接口一般只有一个,也就是说只能控制一个步进电机了。后来想过IIC、SPI协议,最后根据步进电机的控制特征,就在IIC协议上做了些改进,去除了IIC麻烦的起始、回馈、停止位。


本文设计的模块没有设置从机地址匹配位,所以每添加一个步进电机就需要添加单片机的两个引脚控制,有兴趣的可以参考IIC协议添加地址匹配位。



模块电路设计

协议时序设计好了,接下来就来设计模块的电路部分了。


图片


电路中使用了STC15F104E单片机,它有六个IO口,刚好够用,四个负责四相步进电机驱动,两个负责接收控制数据。电路驱动使用了4个9013三极管,大家也可以使用ULN2003芯片来驱动,具体设计方法可参考步进电机使用介绍》。


准备电子元器件按照电路图焊接电路板。


图片


图片


电路部分还是比较简单的,重点还是在通信协议时序设计部分。


由于步进电机工作时需要的电流比较大,可能会拉低电源电压导致单片机不能正常工作,那么步进电机就不能按照控制信号正常工作了,为了避免这种情况发生,可以给单片机单独供电或者在单片机电源端加大电容,比如100uF的电解电容。


模块上的SCL、SDA引脚也是单片机串口的Rx、Tx引脚,所以非常方便模块程序升级。



程序实现

上文接收的控制协议时序是主机发送的,模块是个从机,它的任务就是解析主机发过来的数据。模块一直在监听SCL的电平变化,当SCL低电平持续时间超过2ms,模块重新复位,当SCL由低电平变为高电平模块采集SDA的电平。模块总共会接收由SDA发出的24个电平数据,前8个为控制命令,后16个为脉冲个数数据。


SCL引脚上的复位低电平监听是通过定时器0实现的,定时器0会每隔1ms检测一次SCL的电平,如果连续两次检测到SCL都为低电平,则单片机复位。定时器0是在接收到24位数据后启动的,也就是它是用来监听下一次控制数据。


当模块开始接收数据时看门狗就会开启,看门狗的复位时间大约为1s,如果模块在1s内没有接收到24位数据,则模块复位。这样做的目的是防止外部主机发生异常不能发送完24位数据,从而导致模块一直处于死循环状态。有了看门狗,如果外部主机发生异常,模块也能及时复位,进入下一次控制数据接收状态。


为了能使模块能更快速准确的采集SDA数据,模块上的单片机工作时钟要尽量高些,可选用30MHz。

相关推荐:

1、GB5226.1-2008 机械电气安全

2、GB19517-2009国家电气设备安全技术规范



  • 土木小唐
    土木小唐 沙发

    文章很有用,收藏一下

    2023-03-30 10:00:30

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

电气工程原创版块

返回版块

2.19 万条内容 · 578 人订阅

猜你喜欢

阅读下一篇

立体车库电机常见故障及解决办法!

知识点:立体车库电机 电机作为立体车库中驱动载车板升降、横移的动力来源,长时间暴露在恶劣的环境就容易暴露出一些不正常的问题,因此电机外部环境管理和正常使用维护是很有必要的。今天主要讲一下电机使用方面常见故障及解决办法,以供参考! 1、电动机接通电源起动,电动机不转但有嗡嗡声音原因分析:  ①由于电源的接通问题,造成单相运转。  ②电动机的运载量超载。  ③被拖动机械卡住。

回帖成功

经验值 +10