附带测试视频:
UNO5128驱动步进电机正反转测试视频.zip
(4.52 MB)
视频中看到电机正反转和指示灯的变化。
另外,在程序看到TQ端也会相应操作,这个可以改变输出电流。选择输出100%设定的电流,或者输出50%设定的电流
主循环中的代码:
void loop() // put your main code here, to run repeatedly:
{
if(c>0) // 通过软件延时来取反端口电平,实现脉冲输出
{
digitalWrite(RUN_ON,LOW); // 开启LED指示灯 // 2a
digitalWrite(CLK,HIGH);
delayMicroseconds(CLK_F); // 适合8细分或更高细分 转动 // 参考宏定义说明
digitalWrite(CLK,LOW);
delayMicroseconds(CLK_F); // CLK_F 延时值的大于影响输出脉冲的频率
c--; // 每次计数,CLK端输出一个完整的脉冲
digitalWrite(RUN_ON,HIGH); // 关闭LED指示灯 // 2a
}
else // c = 20480; // 输出脉冲数量达到设定值后,重新设定脉冲数量,并改变电机方向
{
c = 32000; // C=(200*M)*N; M为设定的细分数,括号内是每圈的脉冲数量。 N=转动的圈数
if(a>0)
{
a=0x00;
digitalWrite(EN,LOW); // 非必要操作 // EN端清零,关闭TB5128功率级 //会影响电机锁相,进入脱机状态
digitalWrite(DIR,HIGH); // 切换电机转动方向
delayMicroseconds(5); // 改变方向后,延时一段时间再发脉冲
digitalWrite(EN,HIGH); // Set Enable HIGH // 开启TB5128功率输出 // *
//digitalWrite(RUN_ON,HIGH); // 关闭LED指示灯 // 1a
TQ_HIGH; // 50% 的设定电流
hc595Write(data_595); // 把数据写入到HC595 // 数据更改后,必须要调用hc595Write(data_595)来刷新输出
delay(2000); // 半流锁相2秒左右 // 方便观察电源端电流的变化
TQ_LOW; // 输出电流为设定值的 100% // 恢复设定电流输出
hc595Write(data_595); // 把数据写入到HC595
//digitalWrite(RUN_ON,LOW); // 开启LED指示灯 // 1a
}
else
{
a=0x01;
digitalWrite(EN,LOW); // 非必要操作 // EN端清零,关闭TB5128功率级 //会影响电机锁相,进入脱机状态
digitalWrite(DIR,LOW); // 切换电机转动方向
delayMicroseconds(5); // 改变方向后,延时一段时间再发脉冲
digitalWrite(EN,HIGH); // Set Enable HIGH // 开启TB5128功率输出 // *
//digitalWrite(RUN_ON,HIGH); // 关闭LED指示灯 // 1a
TQ_HIGH; // 50% 的设定电流
hc595Write(data_595); // 把数据写入到HC595
delay(2000); // 半流锁相2秒左右 // 方便观察电源端电流的变化
TQ_LOW; // 输出电流为设定值的 100% // 恢复设定电流输出
hc595Write(data_595); // 把数据写入到HC595
//digitalWrite(RUN_ON,LOW); // 开启LED指示灯 // 1a
}
}
}
|
感谢分享