搞了一晚上TB6560都没用成功驱动步进电机,昨天数电实验做了脉冲分配器忽然有了信心,并成功完成调试。
上面就是TB6560的图,底部有一块很大的散热片,上面还有接线头和一些拨码开关。TB6560有A+、A-、B+、B-两路的输出,还有CLK(CP时钟)、CW(方向)、EN(使能)三个输入(算上正负两极一共有6条接线),另外还有电源VCC与GND的输入端。
以上是TB6560的两种接法。本人用Arduino作为控制器,直接将各个输入引脚的阴极短接后接地,CLK+、CW+、EN+作为输入端接Arduino的IO口。
这是TB6560拨码开关的具体作用,该表刻于TB6560中央。
步进电机一般的接线方法如下:
我使用的是四出线的步进电机,步进电机的线有不同颜色,按照下图的方法接线。
注意:切不可随意接线,否则步进电机时序错误会导致旋转混乱!比如,我第一次调试就按照四根线的排列顺序分别与A+、A-、B+、B-相连,最后证实这一接法是错误的,步进电机会不停地“摇头”,无法正常工作。
以上是实物连接图
这里步进电机额定电流为1.4A,因此SW1 SW2 SW3 S1 为:0110,选择停止电流为50%,细分步数为1步,衰减方式为50%。
总体拨码开关的值为(从SW1~S6):011000001
代码如下:
int CLK=7;
int CW=6;
int EN=5;
void setup() {
pinMode(CLK,OUTPUT);
pinMode(CW,OUTPUT);
pinMode(EN,OUTPUT);
digitalWrite(EN,LOW);//低电平有效
}
void loop() {
rotate(5,0);
delay(1000);
rotate(10,1);
while(1);
}
void cycle(void){
for(int i=0;i
digitalWrite(CLK,HIGH);
delayMicroseconds(500);
digitalWrite(CLK,LOW);
delayMicroseconds(500);
}
}
//direct=0,顺时针转;direct=1,逆时针转
void rotate(int n ,int direct){
if(direct==0){
digitalWrite(CW,LOW);
for(int i=0;i
cycle();
}
}
else{
digitalWrite(CW,HIGH);
for(int i=0;i
cycle();
}
}
}
控制步进电机的CP脉冲是人为给定的:
digitalWrite(CLK,HIGH);
delayMicroseconds(500);
digitalWrite(CLK,LOW);
delayMicroseconds(500);
注意控制其周期,我将其设置为500us高电平+500us低电平,CP脉冲(CLK)的周期为1KHz,发现此时步进电机的噪音最小,旋转最稳定!
如果将周期改为0.8ms或者1.2ms,会发现步进电机转速发生改变,同时自身会抖动并发出一定的噪音。
脉冲的最适占空比和装负载后最适频率尚未测定。
200个CP脉冲可以使步进电机转一圈。
TB6560也可硬直接用analogWrite()来作为CLK输入,但是实测噪音较大,仅仅是用起来方便,还是建议自己写函数控制。