步进电机控制器总结
当系统通信时,支持主控
:
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_Z:CP1 /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 F 1
;下位机回送的数据
; 55 A 5 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
单片机电源:
步进电机由外部供电
由MAX232实现单片机与串行接口的电平转换,并为步进电机的驱动电路提供+10v电压
驱动电路原理:由单片机的输出引脚(p1.0~p1.4)输出控制信号,针对此图,当p1.4输出低电平时,晶体管截止,n沟道场效应管的GS两端有电压,于是场效应管DS两端产生电流,该电流流经步进电机的一个线圈。通过给步进电机的每相送相应电流来驱动步进电机。途中的二极管是续流用的,由于电感电流不能突变,当外部给线圈断流时,线圈上仍有电流,二极管就是用来消耗这些电流!
使用定时器0来计时,每当定时器溢出,进入定时器0的中断服务程序,在中断服务程序中,改变步进电机的状态,一次溢出步进电机走一步,所以通过改变定时器的初值可以控制步进电机的速度。改变发送给步进电机的脉冲数来控制步进电机走动的距离!详细说明见通信协议。
以下是定时器0的流程图
接收:
1、复位后先按k3,相当于开放了两个中断,所以如果k1没用到,就算k3松开以后(只开放中断k2),第一次按下k1还是会进中断。
解决:当K3为1时,CLR EX0
2、先按K1,再按K3,P1,0对应的灯会亮
解决:尚未找到原因
3、S_DC与FIRST定义在同一个位
已解决
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个步距角