步进电机控制器总结

来源:互联网 发布:朝韩统一 知乎 编辑:程序博客网 时间:2024/05/17 01:13
 

 步进电机控制器总结

一、整体框架:

系统在通信方式时支持主从控制

二、系统原理

1 控制信号模块

电机控制信号

EN——>电机使能信号,只有当该信号有效的时候,步进电机才会工作

DIR/CP+——>此信号接到单片机的外部中断0引脚,当选择“方向加脉冲”的方式时,此信号对应为方向信号,若为0是顺时针转,那么为1就是逆时针转,当选择“正负脉冲”的方式时,此信号对应正脉冲,一但该信号有效(低电平触发)就进入中断0,电机顺时针(并不一定,根据程序及电机而定)转一步。

CP/CP-——>此信号接到单片机的外部中断1引脚,当选择“方向加脉冲”的方式时,此信号对应为脉冲信号,用户给一个脉冲,电机就按确定好的方向转一步,当选择“正负脉冲” 的方式时,此信号对应负脉冲,一但该信号有效(低电平触发)就进入中断1,电机逆时针(并不一定,根据程序及电机而定)转一步。

控制方式选择:

 串口通信方式——> S_DC=1;由单片机串口进行通信,按约定发送控制信号,通信协议如下:

      ;上位机发给下位机

      ; AA A5 55 ID CMD RC SPEED CP1_Z CP2_F SUM            

      ;ID:本机地址  

         ;CMD:指令  F0---发数据   F1-----询问是否可以发数据

         ;RC:接收数据长度  RC->SUM (5)

         ;SPEED:最高位可代表方向,也可代表单位 (依据K3的值而定)

         ;CP1_ZCP1 /CP+     (依据K3的值而定)

         ;CP2_F: CP2 /CP-        (依据K3的值而定)

         ;--------------------------------------------------

         ;|k3          |         0       |        1           |

         ;|            |   unit_speed      |   dir_speed         |

         ;|            |    cp+         |       cph           |

         ;|            |    cp-          |       cpl           |

         ;--------------------------------------------------

         ;AA A5 55 FF F0 05 80 02 06 7D

         ;AA A5 55 FF F1 00 F1

 

;下位机回送的数据

      ;55 A5 AA ID CMD TC SUM

         ;CMD:  F0---正在走   F1----可发数据

         ;TC=0

 直接脉冲控制方式:S_DC=0;该方式下若dir_cp=1则代表“方向脉冲”方式,否则就是“正负脉冲方式”

电机工作方式选择:

;  0       0     0              单三

;  0       0     1              双三

;  0       1     0              六拍

;  0       1     1              单五

;  1       0     0              单四

;  1       0     1              双四

;  1       1     0              八拍1

;  1       1     1              八拍2

2、电源系统

单片机电源:

 

步进电机由外部供电

 

3、串口通信模块

MAX232实现单片机与串行接口的电平转换,并为步进电机的驱动电路提供+10v电压

4、步进电机驱动模块

驱动电路原理:由单片机的输出引脚(p1.0~p1.4)输出控制信号,针对此图,当p1.4输出低电平时,晶体管截止,n沟道场效应管的GS两端有电压,于是场效应管DS两端产生电流,该电流流经步进电机的一个线圈。通过给步进电机的每相送相应电流来驱动步进电机。途中的二极管是续流用的,由于电感电流不能突变,当外部给线圈断流时,线圈上仍有电流,二极管就是用来消耗这些电流!

三、软件设计

主程序:

外部中断模块

 

 

 

 

 

 

 

 

 

 

 

 


定时器0中断模块:

使用定时器0来计时,每当定时器溢出,进入定时器0的中断服务程序,在中断服务程序中,改变步进电机的状态,一次溢出步进电机走一步,所以通过改变定时器的初值可以控制步进电机的速度。改变发送给步进电机的脉冲数来控制步进电机走动的距离!详细说明见通信协议。

以下是定时器0的流程图

 

 

 

 

 

tcp_dir子模块

串口通信模块:

发送:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接收:

四、调试过程记录:

1、复位后先按k3,相当于开放了两个中断,所以如果k1没用到,就算k3松开以后(只开放中断k2),第一次按下k1还是会进中断。

    解决:当K31时,CLR EX0

2、先按K1,再按K3P1,0对应的灯会亮

    解决:尚未找到原因

3S_DCFIRST定义在同一个位

   已解决

4、定时器0方式没有设置成16

   已解决

5、发送程序的跳转错了,导致一次只能收到一个数据

   已解决

6、在步进电机走动的过程中如果改变方式将导致状态不可预测

   解决:规定方式的设置只能在控制器上电以前,这样连同第二个问题一起解决

7、调试过程中用到的数据

   AA A5 55 FF F0 05 0F 02 FF 05

   AA A5 55 FF F0 05 00 01 16 0C

   AA A5 55 FF F0 05 00 36 16 41

   AA A5 55 FF F0 85 00 36 16 C1

   AA A5 55 FF F0 05 80 02 06 7D

   AA A5 55 FF F1 00 F1

五、系统说明

1、方式的设置必须在系统上电以前

2、通信方式时,一次通信能走的最大距离65535个步距角