手上有一個步進電機和ULN2003電機驅(qū)動模塊,這是之前做Arduino實驗的時候留下的,這幾天正好比較空閑,就移植了一個Arduino的Stepper庫,這個庫是用于控制步進電機的。這次我是將ULN的IN1-IN3接到Rainbow的PA1、PA3、PA5、PA7,硬件情況如下圖:
在軟件包的“Projects\Stepper_OneRevolution”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調(diào)試。代碼非常簡單,貼出來了:
#include "WProgram.h"
#include "Stepper.h"
//根據(jù)馬達調(diào)整合適的分辨率
const int stepsPerRevolution = 200;
//5線4相步進電機,使用PA1, PA3, PA5, PA7
Stepper myStepper(stepsPerRevolution, PA1, PA3, PA5, PA7);
void setup()
{
//啟用默認(rèn)串口,波特率9600
Serial.start();
//設(shè)置馬達速度為60rpm
myStepper.setSpeed(60);
}
void loop()
{
// 發(fā)送順時針轉(zhuǎn)動指令
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// 發(fā)送逆時針轉(zhuǎn)動指令
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
int main(void)
{
//初始化開發(fā)板
boardInit();
setup();
while(1) loop();
}
程序編譯無誤后,下載到Rainbow中,可以看到步進電機轉(zhuǎn)起來了,和Arduino中運行效果完全一樣。只是在這個應(yīng)用中,我發(fā)現(xiàn)步進電機時鐘只順時針轉(zhuǎn)動,不逆時針轉(zhuǎn),我跟蹤了一下程序,邏輯完全正確,同時Arduino中運行起來也是這樣的,我對電機這塊沒有什么研究,但是程序邏輯方面沒有問題,初步判斷可能是我這個步進電機的問題,身邊沒有其它型號的步進電機,所以無法最終確定問題所在。