我嘗試用程序控制步進電機(參見下面) 我可以用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