Arduino筆記(二十四):回收商的42型步進馬達

[2017/06/02]
趁著端午節連續假期,將家裡的一些廢紙及回收物品拿到資源回收站去賣,剛好看到幾個 42型的步進馬達,線頭都被剪斷了。問一下老闆可以賣,當下就挑了 6個,以及2部DVD 光碟機。這 6個步進馬達的型號都不太一樣,電壓也不同,但有一個共同的特色就是都是兩相六線式的機種。如果可用,要自製 CNC雕刻機,可節省一點預算。


先挑了一個KH42JM2B140C,電壓 5.16V,由於電子材料行找不到可連接的排線,只好自己買了連接器的銅片及電線自行製作連接頭,只要測試可用,再焊接牢固一點。





有了連接線還不行,因為不知道六條線該如何接?於是找了網路上的一些文章參考,找的測量的方法:
(1) 用三用電表量電阻值,A跟B兩群線路的電阻為無限大
(2) 找出A、B兩群各三條線,分別量電阻,A & COM 及 /B & COM兩組的電阻值相同,我量得的電阻約 4.4 歐姆。A & B 之間的電阻值約 8.9 歐姆。
(3) COM 的兩條線接電池正極 (+5V)。



偷懶想將步進馬達接 Arduino 的 5V電源使用,但是只要轉動幾下,Arduino就會發生不穩定的現象,不是重開機,就是當機,只好加上兩顆 18650電池,電壓 7.4V,用降壓模組降到 5V,外接電源後,步進馬達的轉動狀況就正常了。

[連接電路圖]



參考一下先前寫的文章 Arduino筆記(八):控制步進馬達 ,將程式改寫一下進行測試,一個直接改變電位值,讓步進馬達轉動。另一個則呼叫 Stepper 函式庫。

[程式範例]

// 定義 L298N模組的pin輸出
int Pin_A  = 8;
int Pin_AA = 7;
int Pin_B  = 6;
int Pin_BB = 5;
int delayTime = 5;   // 設定旋轉速度, 數值越小速度越快

void setup() {
  pinMode(Pin_A, OUTPUT);
  pinMode(Pin_AA, OUTPUT);
  pinMode(Pin_B, OUTPUT);
  pinMode(Pin_BB, OUTPUT);
}

// 持續正轉
void loop() {
  digitalWrite(Pin_A, LOW);
  digitalWrite(Pin_AA,HIGH);
  digitalWrite(Pin_B, HIGH);
  digitalWrite(Pin_BB,LOW);
  delay(delayTime);
  digitalWrite(Pin_A, LOW);
  digitalWrite(Pin_AA,HIGH);
  digitalWrite(Pin_B, LOW);
  digitalWrite(Pin_BB,HIGH);
  delay(delayTime);
  digitalWrite(Pin_A, HIGH);
  digitalWrite(Pin_AA,LOW);
  digitalWrite(Pin_B, LOW);
  digitalWrite(Pin_BB,HIGH);
  delay(delayTime);
  digitalWrite(Pin_A, HIGH);
  digitalWrite(Pin_AA,LOW);
  digitalWrite(Pin_B, HIGH);
  digitalWrite(Pin_BB,LOW);
  delay(delayTime);
}

[程式二]

#include <Stepper.h>
// 定義步進馬達轉一圈所需的步數及輸出的腳位
Stepper stepper(200, 8, 7, 6, 5);

void setup()
{
  // 將馬達速度設定為每分鐘80轉(RPM)
  stepper.setSpeed(80);   
}
void loop()
{
  // 馬達行進步數
  stepper.step(100);    //正半圈
  delay(1000);
  stepper.step(-100);   //反半圈
  delay(1000);
  stepper.step(200);    //正1圈
  delay(1000);
  stepper.step(-200);   //反1圈
  delay(1000);
}

[測試結果]


video

[參考資料]

• Ming's Blogger:步進馬達的介紹
• amoBBS:2相步进电机6线接线方式?
Share on Google Plus
    Blogger Comment
    Facebook Comment

0 意見 :

張貼留言