1.IDE:keil
2.設備:保密
3.實驗:使用單片機通過普通IO口控制TB6600驅動42步進電機
4.時序圖:
TB6600
ENA+、ENA- | DIR-、DIR+ | PUL-、PUL+ | B-、B+ | A+、A- | VCC、GND |
使能電機(直接懸空不接) | 方向 | 脈沖輸入(普通IO口模擬即可) | 同組 | 同組 | 看驅動的電機的電壓 |
s1-s6根據驅動的電機設置電機驅動板,在下面第二張圖里面可以看到?
S1-S3設置步進電機的細分:
比如S1-ON,S2-ON,S3-OFF那么Pul輸入200個脈沖,電機轉一圈,
360度/200=1.8度,一個脈沖,電機轉1.8度。
比如S1-ON,S2-OFF,S3-ON那么Pul輸入400個脈沖,電機轉一圈,
360度/400=0.9度,一個脈沖,電機轉0.9度。
S4-S6設置電機的驅動電流:
我們現在使用的42步進電機,驅動電流為1A,所以S4-ON,S5-OFF,S6-ON。(根據使用的電機設置)
42步進電機
供電12V
如何判斷是否好壞:
所有線擰在一起,用手轉電機,轉不動,再把線散開,能轉動電機,則證明電機為好的。
如何判斷兩根線是否為同一組:
一般默認紅(A+)黑(A-)為一組,藍(B+)綠(B-)為一組,但是有些不是的。將四根線,兩根兩根的擰在一起,轉動電機,轉動有阻力則為一組,沒有阻力則不是一組。
接法:
(1)共陰極:DIR-、PUL-、單片機GND接在一起,DIR+、PUL+接單片機IO口(高電平有效)
(2)共陽極:DIR+、PUL+、單片機VCC接在一起,DIR-、PUL-接單片機IO口(低電平有效)
(3)VCC直流電源正極12V,GND接直流電源負極
(4)A+、A-、B+、B-理論上說只要能保證同一組即可
(5)ENA懸空
部分問題:
(1)脈沖頻率不要過高,否則會出現電機響而不轉
(2)注意電機負重不要過大
5.步驟:
(1)TB6600圖片
?
(2)42步進電機圖片
(該步進電機為紅黑一組,本人的步進電機為黑綠一組(相鄰且有排子),具體情況按上述說明測試)
6.代碼:
/**一個脈沖(無細分下轉動1.8度)*/
void Step_Run_OnePulse(void)
{Pulse_High;Delay_ms(20);Pulse_Low;Delay_ms(20);}/**指定方向轉動指定角度*細分200情況下:轉一圈為360/1.8=200個脈沖*/
void Step_Run_SpecifyAngle(u8 dir,u8 angle)
{u8 pulse_number=0;if(dir == Clockwise) //順時針Dir_High;else if(dir == Counterclockwise) //逆時針Dir_Low;pulse_number = (u8)((float)angle / 1.8); //得到需要轉動到指定角度的脈沖數for(pulse_number ;pulse_number > 0;pulse_number--)Step_Run_OnePulse();
}