我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介紹X-CTR100控制器的直流調速電機控制,X-CTR100具有4路專用直流電機調速接口,PWM進行調速,可用於航、機械臂、機器人等制作。
原理
X-CTR100左側MNOP接口可實現4路直流電機PWM調速控制,通過TIM1的四個通道實現,每個控制接口配置兩個輔助IO,方便實現轉向、剎車等控制效果,直流電機控制接口需要配合直流電機驅動使用。X-CTR100的電機控制可用於機器人、智能車等具有直流電機調速控制的場合。
X-CTR100電機接口需要配合電機驅動,可使用配套專用電機驅動模塊X-CTR100-MDX2或X-CTR100-MDX4。
X-CTR100-MDX4連接方式如下圖所示,X-CTR100-MDX4詳細資料請參考硬件資料中的擴展模塊資料。
TB6612
TB6612FNG引腳圖 TB6612FNG是東芝半導體公司生產的一款直流電機驅動器件,它具有大電流MOSFET-H橋結構,雙通道電路輸出,可同時驅動2個電機。
TB6612FNG每通道輸出最高1.2 A的連續驅動電流,啟動峰值電流達2A/3.2 A(連續脈沖/單脈沖);4種電機控制模式:正轉/反轉/制動/停止;PWM支持頻率高達100 kHz;待機狀態;片內低壓檢測電路與熱停機保護電路;工作溫度:-20~85℃;SSOP24小型貼片封裝。
TB6612FNG的主要引腳功能:AINl/AIN2、BIN1/BIN2、PWMA/PWMB為控制信號輸入端;AO1/A02、B01/B02為2路電機控制輸出端;STBY為正常工作/待機狀態控制引腳;VM(4.5~15 V)和VCC(2.7~5.5 V)分別為電機驅動電壓輸入和邏輯電平輸入端。
TB6612FNG是基於MOSFET的H橋集成電路,其效率高於晶體管H橋驅動器。相比L293D每通道平均600 mA的驅動電流和1.2 A的脈沖峰值電流,它的輸出負載能力提高了一倍。相比L298N的熱耗性和外圍二極管續流電路,它無需外加散熱片,外圍電路簡單,只需外接電源濾波電容就可以直接驅動電機,利於減小系統尺寸。對於PWM信號,它支持高達100 kHz的頻率,相對以上2款芯片的5 kHz和40 kHz也具有較大優勢。
例程
控制四路電機實現增速正傳和增速反轉交替運行。
硬件說明
硬件資源:
- 串口UART1
- RM、RN、RO、RP擴展接口(4路直流電機擴展接口)
- 直流電機驅動器(需自備,可選專用X-CTR100-MDX2/4驅動器)
- 直流電機(需自備)
硬件連接:
使用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); } } |
實現效果
按照硬件連接說明連接好驅動和電機,電機可連接至四路控制接口中的任意一路,可以觀察到電機做間隔的增速正轉和反轉。