我造輪子,你造車,創客一塊兒造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】 函數
本文介紹X-CTR100控制器的直流調速電機控制,X-CTR100具備4路專用直流電機調速接口,PWM進行調速,可用於航、機械臂、機器人等製做。 測試
X-CTR100左側MNOP接口可實現4路直流電機PWM調速控制,經過TIM1的四個通道實現,每一個控制接口配置兩個輔助IO,方便實現轉向、剎車等控制效果,直流電機控制接口須要配合直流電機驅動使用。X-CTR100的電機控制可用於機器人、智能車等具備直流電機調速控制的場合。 ui
X-CTR100電機接口須要配合電機驅動,可以使用配套專用電機驅動模塊X-CTR100-MDX2或X-CTR100-MDX4。 spa
X-CTR100-MDX4鏈接方式以下圖所示,X-CTR100-MDX4詳細資料請參考硬件資料中的擴展模塊資料。 blog
TB6612FNG引腳圖 TB6612FNG是東芝半導體公司生產的一款直流電機驅動器件,它具備大電流MOSFET-H橋結構,雙通道電路輸出,可同時驅動2個電機。 接口
TB6612FNG每通道輸出最高1.2 A的連續驅動電流,啓動峯值電流達2A/3.2 A(連續脈衝/單脈衝);4種電機控制模式:正轉/反轉/制動/中止;PWM支持頻率高達100 kHz;待機狀態;片內低壓檢測電路與熱停機保護電路;工做溫度:-20~85℃;SSOP24小型貼片封裝。 資源
TB6612FNG的主要引腳功能:AINl/AIN二、BIN1/BIN二、PWMA/PWMB爲控制信號輸入端;AO1/A0二、B01/B02爲2路電機控制輸出端;STBY爲正常工做/待機狀態控制引腳;VM(4.5~15 V)和VCC(2.7~5.5 V)分別爲電機驅動電壓輸入和邏輯電平輸入端。 get
TB6612FNG是基於MOSFET的H橋集成電路,其效率高於晶體管H橋驅動器。相比L293D每通道平均600 mA的驅動電流和1.2 A的脈衝峯值電流,它的輸出負載能力提升了一倍。相比L298N的熱耗性和外圍二極管續流電路,它無需外加散熱片,外圍電路簡單,只需外接電源濾波電容就能夠直接驅動電機,利於減少系統尺寸。對於PWM信號,它支持高達100 kHz的頻率,相對以上2款芯片的5 kHz和40 kHz也具備較大優點。 博客
控制四路電機實現增速正傳和增速反轉交替運行。 it
硬件資源:
硬件鏈接:
使用X-CTR100-MDX2 2路驅動器。
直流電源也能夠使用3S鋰電池代替。
除了專用配套電機驅動模塊,也能夠使用普通電機驅動模塊,使用TB6612電機驅動鏈接示意圖以下圖所示。
X-SOFT軟件生態,X-API擴展文件以下。
ax_motor.c——X-CTR100 直流電機控制源文件
ax_motor.h——X-CTR100 直流電機控制頭文件
接口函數
void AX_MOTOR_TIM1_MNOP_Init(uint8_t freq_khz); //電機MNOP接口初始化 void AX_MOTOR_TIM1_M_SetSpeed(int16_t speed); //電機M控制 void AX_MOTOR_TIM1_N_SetSpeed(int16_t speed); //電機N控制 void AX_MOTOR_TIM1_O_SetSpeed(int16_t speed); //電機O控制 void AX_MOTOR_TIM1_P_SetSpeed(int16_t speed); //電機P控制 |
函數AX_MOTOR_TIM1_MNOP_Init()函數實現電機的初始化,包括左側MNOP四路電機接口,並可設定PWM頻率爲20K,最大PWM頻率100KHz。AX_MOTOR_TIM1_X_SetSpeed()可分別設置四路電機轉速。本例程在while循環中實現了增速正轉和增速反轉交替運行,主程序代碼以下。
int main(void) { uint8_t temp; //工做模式
//X-CTR100初始化 AX_Init(115200); printf("***直流電機調速例程***\r\n\r\n");
//模塊初始化及配置 AX_MOTOR_TIM1_MNOP_Init(20); //初始化電機控制端口,PWM頻率爲20KHz
//X-API測試:四路電機正反轉調速測試 printf("*四個電機正反轉調速測試\r\n");
while (1) { printf("*電機正方向增速旋轉\r\n"); for (temp = 0; temp <= 200; temp++) { AX_MOTOR_TIM1_M_SetSpeed(temp); AX_MOTOR_TIM1_N_SetSpeed(temp); AX_MOTOR_TIM1_O_SetSpeed(temp); AX_MOTOR_TIM1_P_SetSpeed(temp); AX_Delayms(30); } AX_MOTOR_TIM1_M_SetSpeed(0); AX_MOTOR_TIM1_N_SetSpeed(0); AX_MOTOR_TIM1_O_SetSpeed(0); AX_MOTOR_TIM1_P_SetSpeed(0); AX_Delayms(1000);
printf("*電機反方向增速旋轉\r\n"); for (temp = 0; temp <= 200; temp++) { AX_MOTOR_TIM1_M_SetSpeed(-temp); AX_MOTOR_TIM1_N_SetSpeed(-temp); AX_MOTOR_TIM1_O_SetSpeed(-temp); AX_MOTOR_TIM1_P_SetSpeed(-temp); AX_Delayms(30); } AX_MOTOR_TIM1_M_SetSpeed(0); AX_MOTOR_TIM1_N_SetSpeed(0); AX_MOTOR_TIM1_O_SetSpeed(0); AX_MOTOR_TIM1_P_SetSpeed(0); AX_Delayms(1000); } } |
按照硬件鏈接說明鏈接好驅動和電機,電機可鏈接至四路控制接口中的任意一路,能夠觀察到電機作間隔的增速正轉和反轉。