我尝试用程序控制步进电机(参见下面) 我可以用Accelstepper控制步进机(见下文),但不知道如何编程Arduino所以它能够通过串口按照协议进行通信。通过程序Arduino步进控制
#include <AccelStepper.h>
// Define a stepper and the pins it will use
AccelStepper stepper(1, 3, 4);
int pos = 8192;
void setup()
{
stepper.setMaxSpeed(5000);
stepper.setAcceleration(1500);
}
void loop()
{
if (stepper.distanceToGo() == 0)
{
delay(500);
pos = -pos;
stepper.moveTo(pos);
}
stepper.run();
}
发送到回转台的所有命令都是简单字符格式,包括电机编号。只有标记为xxx的部分作为字节数据传递给表。例如,如果你想让表1旋转4步而不是传递“I1M004”,你需要传递“I1M”+(char)0 +(char)0 +(char)4 通常,所有命令都会以下列形式得到回复:^ XXXXXX
命令
V 请求旋转台的状态。通常的回复是^ R1R2R3R4,表示旋转1准备就绪,旋转2准备等。^ B1xxxR2R3R4表示旋转1占线,其中xxx为3字节表示旋转仍需执行多少步骤。
SmMxxx 将电机m的速度设置为xxx,其中xxx是表示速度的3个字节的数据。示例代码:port.Write(“S1M”+(char)0 +(char)6 +(char)255); //设置电机1的速度为1791.我们的旋转表的标准速度范围为:0x000001至0x0012FF(1至4863)。控制器将以^ mxx镜像电机号码和2个最后字节的速度设置作出响应。
ImMxxx 转动电机m xxx步数。控制器将以^ Bmxxx
DmCWLO 确认设置电机编号m顺时针旋转(因此每个连续的电机旋转命令m都会顺时针旋转)。
DmCWHi 将旋转m设定为逆时针旋转。
EmHALT 旋转m停止。 旋转采样命令序列
电机号码作为字符传递,但步数和速度作为3字节的二进制传递以简化。 发送:V回复:^ R1R2R3R4 发送:S1M1791回复:^ 191 发送:D1CWLO回复:^ 发送:I1M100回复:^ B1100