1 引言
本控制系統(tǒng)采用了有刷直流電機(jī)。電機(jī)的轉(zhuǎn)速受控于單片機(jī)產(chǎn)生PWM波的占空比,占空比越大,電機(jī)轉(zhuǎn)速越快;電機(jī)測(cè)速采用了霍爾編碼器,霍爾編碼器通過霍爾碼盤將電機(jī)的轉(zhuǎn)動(dòng)的圈數(shù)轉(zhuǎn)換為脈沖量,通過stm32編碼器接口對(duì)脈沖量的測(cè)量,在計(jì)數(shù)器中存儲(chǔ)得到的脈沖周期,然后通過定時(shí)讀取計(jì)數(shù)器的值得到電機(jī)的轉(zhuǎn)速。單片機(jī)將得到的轉(zhuǎn)速和設(shè)定的轉(zhuǎn)速之間的偏差計(jì)算出來,使用比例微分積分控制(PID控制器)進(jìn)行轉(zhuǎn)速調(diào)整。使用MPU6050陀螺儀傳感器測(cè)出角速度和角位移,通過角度的PID控制進(jìn)行轉(zhuǎn)向和平衡。
2 研發(fā)任務(wù)
利用Stm32f103實(shí)現(xiàn)小車的電機(jī)控制,智能調(diào)速和智能鎖車。
具體內(nèi)容如下:
(1)將電機(jī)驅(qū)動(dòng)模塊,單片機(jī)最小系統(tǒng),電源管理模塊和各種傳感器模塊通過一個(gè)底 板連接起來,使其構(gòu)成一個(gè)完整的電機(jī)控制的電路系統(tǒng);
(2)編寫安卓APP,通過手機(jī)的藍(lán)牙功能與小車上的藍(lán)牙模塊通信,達(dá)到app控制小車的目的;
(3)編寫單片機(jī)程序,使其能采樣傳感器數(shù)據(jù),顯示數(shù)據(jù)到顯示屏中,驅(qū)動(dòng)電機(jī),運(yùn)行電機(jī)控制算法。
3 硬件設(shè)計(jì)
硬件設(shè)計(jì)主要使用藍(lán)牙模塊,陀螺儀模塊,電機(jī)驅(qū)動(dòng)模塊和單片機(jī)最小系統(tǒng)相連接。單片機(jī)的I2C接口(PB8,PB9)接入到mpu6050模塊,usart接口接入到藍(lán)牙模塊(PB10,PB11),PA8和PA11產(chǎn)生PWM控制兩路電機(jī),PB12,PB13,PB14,PB15是電機(jī)正轉(zhuǎn)反轉(zhuǎn)控制的引腳;spi接口接到oled顯示屏上PB3PB4Pb5分別為spi的MISO,CLK和MOSI引腳,PA15是片選引腳。
圖1 顯示屏電路連接

圖2 底板電路連接示意
4 軟件設(shè)計(jì)
軟件設(shè)計(jì)主要分為初始化、控制算法和通訊三個(gè)部分,初始化包括各個(gè)硬件模塊和單片機(jī)片上資源的初始化,片上資源主要是引腳的輸入輸出模式,定時(shí)器的時(shí)鐘信號(hào),定時(shí)時(shí)間和硬件PWM接口配置和電機(jī)編碼器接口配置,串口的波特率和工作方式,硬件i2c和硬件spi接口的初始化。
控制算法部分5ms執(zhí)行一次,主要是硬件采集傳感器數(shù)據(jù),對(duì)傳感器數(shù)據(jù)進(jìn)行濾波和計(jì)算得到需要的電機(jī)轉(zhuǎn)速和偏轉(zhuǎn)角,加速度等信息,通過PID控制器,計(jì)算出下一個(gè)周期需要的PWM波的占空比,通過調(diào)整占空比,來讓當(dāng)前的運(yùn)動(dòng)狀態(tài)(速度,偏轉(zhuǎn)角度)等信息符合通過APP預(yù)設(shè)的值。
通訊部分就是通過APP和手機(jī)通訊,APP發(fā)出控制命令,單片機(jī)通過串口接收中斷解析命令后通過置位一些預(yù)設(shè)的標(biāo)志位來控制小車的速度和行進(jìn)方向。
為了簡(jiǎn)化APP設(shè)計(jì)和減少學(xué)習(xí)APP開發(fā)的時(shí)間,把更多的時(shí)間用于電機(jī)控制算法的理論和編程中,我們使用了可視化的安卓APP生成工具,MIT APP Inventor2這個(gè)工具使用了拖曳代碼塊和流程圖的方式生成APP。可以調(diào)用藍(lán)牙客戶端發(fā)送簡(jiǎn)單的命令。
PID控制中,比例調(diào)節(jié)直接根據(jù)測(cè)量值和預(yù)設(shè)值之間的關(guān)系進(jìn)行調(diào)節(jié),存在穩(wěn)態(tài)誤差,微分調(diào)節(jié)能夠根據(jù)測(cè)量值的變化趨勢(shì)進(jìn)行調(diào)節(jié),可以使得控制系統(tǒng)更快的進(jìn)入穩(wěn)定狀態(tài),積分調(diào)節(jié)能夠減少系統(tǒng)進(jìn)入穩(wěn)態(tài)之后的穩(wěn)態(tài)誤差,但是會(huì)延遲控制系統(tǒng)進(jìn)入穩(wěn)態(tài)的時(shí)間。在工程運(yùn)用時(shí)比例調(diào)節(jié)是必須的,積分微分調(diào)節(jié)根據(jù)實(shí)際工程的需要,可以有所取舍。工程要求響應(yīng)速度快的場(chǎng)合比如速度控制中通常只需要比例微分控制,工程要求響應(yīng)時(shí)間比較長(zhǎng)的場(chǎng)合,通常使用比例積分控制,例如溫度控制和液位控制。在需要積分控制時(shí),對(duì)于離散的測(cè)量信號(hào)進(jìn)行積分時(shí),一般在積分累加測(cè)量信號(hào)前使用一級(jí)的數(shù)字低通濾波器,來防止測(cè)量的誤差量在積分過程中被放大。
圖3 總體軟件框架
圖4 APP設(shè)計(jì)框圖
5 結(jié)束語
本文詳細(xì)介紹了如何基于Stm32f103cbt6構(gòu)造一個(gè)直流電機(jī)控制系統(tǒng)的硬件和軟件設(shè)計(jì)的流程,通過將自動(dòng)控制理論、電路設(shè)計(jì)知識(shí)與工程經(jīng)驗(yàn)結(jié)合起來,設(shè)計(jì)了一個(gè)可以通過APP藍(lán)牙通訊控制的PID調(diào)速智能小車系統(tǒng),實(shí)際工程中的電動(dòng)車上的調(diào)速,鎖車和定速巡航系統(tǒng)亦可借鑒一些在小車實(shí)驗(yàn)上的經(jīng)驗(yàn)和教訓(xùn)。