專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> STM32 >> 瀏覽文章

使用Rainbow控制步進電機

作者:未知   來源:會員上傳   點擊數(shù):  更新時間:2014年05月20日   【字體:

手上有一個步進電機和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中運行起來也是這樣的,我對電機這塊沒有什么研究,但是程序邏輯方面沒有問題,初步判斷可能是我這個步進電機的問題,身邊沒有其它型號的步進電機,所以無法最終確定問題所在。
關(guān)閉窗口