玩轉X-CTR100 l STM32F4 l TB6612直流電機調速控制


我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 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);

    }

}

實現效果

按照硬件連接說明連接好驅動和電機,電機可連接至四路控制接口中的任意一路,可以觀察到電機做間隔的增速正轉和反轉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM