1. 程式人生 > >步進電機 HD6600驅動器 附arduino教程

步進電機 HD6600驅動器 附arduino教程

最近有一段時間沒有更新blog了,不怎麼練ACM了.不過有時可能也會發一點解題的心得,現在主要精力放在學業和嵌入式上面,廢話不多說,下面分享一下關於步進電機以及驅動器的除錯方法。

首先我們要了解一下什麼叫步進電機,網上大家可以查閱相關的資料

附上一個連結

https://wenku.baidu.com/view/f25014d4804d2b160a4ec001.html?re=view

這是百度文庫一家公司的使用手冊,大家如果覺得我之後講的不夠詳細的話,可以到上面去看一看。

不知道大家之前有沒有51微控制器的基礎,如果大家有看過51的話,相信搞定這個還是很輕鬆的,即使沒有做過51,有一定的C語言基礎就夠了。

下面我首先說一下硬體部分。

步進電機大家可以理解為,你給它一個脈衝,它就轉一個特定的角度,具體它內部是如何實現的呢

下面我稍微講一下他的原理說明,方便大家有一個更加深入的瞭解,知其然也知其所以然。


我們結合上幾張圖來說一下,這裡的相和交流三相電路不一樣,這裡是直流,主要指線路的

連線方式,這裡的是三相的,我們看脈衝其實就是產生磁力,根據法拉第電磁感應定律

電流會在空間中激發磁場,大概可以理解為磁矩使得轉子轉動就可以了。如果大家有不明白的

歡迎給我留言,我會耐心解答的!

接下來說一下,HD6600這個驅動器,很強大,先上個圖。

首先是右側接線,脈衝(PUL)管腳,方向管腳(DIR),使能管腳(ENA),字面意思理解即可,SW1-SW6是調節細分和電流的設定,根據你的需要,細分高,精度會好一些,

推薦一開始細分調高一些測試,電流就要看你的電機上面的額定電流了,調到合適的就ok了!

接線的話 以共陽為例:


就是把DIR+,PUL+,連到5V電源上,如果你的電源是24V的話 要串2K的電阻R ENA一般不接。

然後把PUL-,DIR-連到你arduino的兩個管腳上就ok了。

之後程式部分,這裡用驅動器的話,只需要傳送脈衝就ok了,測試的程式很簡單

typedef unsigned char u8;
void setup()
{
  u8 platformCLK=13;
  u8 platformDIR=12;
  pinMode(platformCLK,OUTPUT);
  pinMode(platformDIR,OUTPUT);
}

void loop() 
{
  bawlStepper(0,180);
}

void bawlStepper(bool dir,u16 angle)//旋轉 
{
  if(dir) digitalWrite(platformDIR,1);
  else digitalWrite(platformDIR,0);
  for(u16 i=0;i<angle/0.45;i++)//0.45是根據細分設定的
  {
    digitalWrite(platformCLK,HIGH); 
    delay(10);  //調整這個可以控制轉的快慢
    digitalWrite(platformCLK,LOW);  
    delay(10);  
  }
}
注意 電機驅動器電源不要接反,通電的時候不要隨意插拔相線,相線不要接反,驅動器不能用arduino開發板5V驅動,需要外加直流電源,典型值12V/24V

如果上電後電機鎖死不動,若指示燈不亮則是電源接線不好,若指示燈亮而脈衝燈不閃爍,則是傳送的脈衝有問題,注意傳送脈衝的間隔不能過短,即頻率不能設定過高,最好不要超過1khz 即delay(t) t>1 否則會使得力矩大大降低,因為你還沒有對線圈充好電又拉低了電平。

若手動點控,發現電機轉動,則是程式的問題。

如果你檢查了好久也不明白,換個驅動器把,我也燒了不只一個了..都是需要經驗的。