摘 要
本設計制作了以STM32f103C8t6微控制器為處理與控制系統,以三路LDC1000電感數字轉換器與蜂鳴器為檢測系統,以雙路減速直流電機與L298N電驅為動力系統的智能化循跡小車,實現了循跡、硬幣檢測、測距三大功能。循跡功能調用檢測系統、處理與控制系統和動力系統,采用檢測-控制原理實現,當小車運行時,通過檢測系統獲取賽道信息,利用處理與控制系統計算出小車當前狀態與應變狀態,而后處理與控制系統輸出PWM波到動力系統改變小車運動狀態。硬幣檢測功能通過處理與控制系統處理檢測系統輸出的硬幣特征值實現。測距功能通過測距系統輸出TTL電平到處理與控制系統,依次運算距離值並返回到測距系統,在OLED屏上顯示。實驗表明,小車平均顯示距離為673.33cm時,其平均顯示時間為31.33s。
關鍵字:STM32f103;LDC1000;智能化循跡;PWM控速;差速控向
Abstract:
This design is the intelligent tracking vehicle, which use the STM32f103C8t6 microcontroller as the processing and control system, the LDC1000 inductive digitizer and buzzer as the detection system, the deceleration DC motor and L298N electric drive as the power system. It has three functions like tracking, coin detection and ranging. The tracking function use the detection system, the processing and control system and the power system, adopts the detection-control principle. When the trolley is running, the track information is obtained bye the detection system, the current state and the strain state of the trolley are calculated by the processing and control system, and then The processing and control system send out a PWM wave to the power system to change the motion state of the car. The processing and control system processing the coin feature values to implement the coin detection function. The ranging system outputs the TTL level to the processing and control system which sequentially calculate the distance value and returns to the ranging system for display on the OLED screen to implement the ranging function. Experiment shows that the average display distance of the trolley is 673.33cm, the average display time is 31.33s.
Keywords: STM32f103; LDC1000; Intelligent tracking; PWM control speed; Differential speed direction control
1 系統方案與分析
1.1 總體設計
智能化尋跡小車總體由檢測系統、動力系統、處理與控制系統、測距系統、電力系統組成。
檢測系統:由三路LDC1000電感傳感器監測,檢測到的數據傳入單片機中。
動力系統:通過電流大小來控制電機轉速,電流越大,電機轉速和輸出的扭矩就越大。電流的大小通過外部PWM的占空比來調節,使之能夠根據需要做出相應的轉向、加速等動作。
處理與控制系統:由MCU組成,負責數據處理與控制信號輸出。
測距系統:由OLED顯示、光電傳感器兩部分組成。OLED顯示將單片機處理的結果進行實時顯示,方便用戶及時了解小車當前的距離和時間,蜂鳴器主要是根據硬幣所在位置做出響應來報告位置。
電力系統:由兩節18650電池提供能源,由降壓電源將電壓調至各系統適用的電壓。
1.2 方案論證
1.2.1 小車車型設計方案比較選擇
按照大賽要求,小車投影不超過A4紙大小,且小車運行后,不得有任何人工干預,故制定了兩種方案:
方案一:雙輪雙驅小車
中部底部采用常規兩輪,前后底部使用單個萬向輪,且車長只有四輪車的三分之二,車身更加輕盈,這樣方便小車進行轉向,但穩定性較弱。
方案二:四輪四驅小車
前后底部都是用常規兩輪,車身長度更長,且更加穩定,但摩擦更大,轉向力度要求更高,不方便控制。
結論:根據要求和方便使用,我們選擇了方案一。
1.2.2 傳感器設計方案比較選擇
方案一:LDC1000
LDC1000是世界上第一個電感數字轉換器,從而在一個低功耗、小封裝尺寸解決方案內提供電感感測的優勢。此產品采用一個小外形尺寸無引線 (SON)-16封裝,並且提供了幾種運行模式。其串行外設接口(SPI)簡化了與微控制器(MCU)的連接方式[1]。
方案二:LDC1314
LDC1314屬於電感-數字轉換器(LDC),通過測量LC諧振器的振盪頻率。該器件輸出數字值與振盪頻率成比例關系。此頻率測量值可被轉換為一個等效電感。
結論:綜上兩種方案選擇方案一。
1.2.3 電機設計方案比較選擇
方案一:采用步進電機
步進電機在非超載的情況下,電機的轉速、停止的位置只取決於脈沖信號的頻率和脈沖數,而不受負載變化的影響,當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的。可以通過控制脈沖個數來控制角位移量,從而達到准確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。
方案二:采用減速直流電機
通過電流大小來控制電機轉速,電流越大,電機轉速和輸出的扭矩就越大。電流的大小一般可以通過外部PWM的占空比來調節。這類電機一般用於扭矩和轉速控制,無法做到精確的位置控制,常用在輪式機器人上,控制其行走。
方案三:采用伺服電機
伺服電機可使控制速度,位置精度非常准確,可以將電壓信號轉化為轉矩和轉速以驅動控制對象。伺服電機轉子轉速受輸入信號控制,並能快速反應,在自動控制系統中,用作執行元件,且具有機電時間常數小、線性度高、始動電壓等特性,可把所收到的電信號轉換成電動機軸上的角位移或角速度輸出。分為直流和交流伺服電動機兩大類,其主要特點是,當信號電壓為零時無自轉現象,轉速隨着轉矩的增加而勻速下降。
結論:綜合以上三種方案,選擇方案二。
1.2.4 顯示器設計方案比較選擇
方案一:1602液晶顯示
1602液晶顯示驅動簡單,易於控制,功耗小,且顯示信息量大,可以直觀地觀測到小車走過的距離和經過時間。
方案二:LED數碼管顯示
數碼管顯示亮度高、色彩選擇多,但數碼管占用I/O資源多,控制復雜,功耗較大、顯示信息量較少且單一。
方案三:TFT-LDC顯示
16位真彩色,顯示信息量大且突出,雙向數據線,但功耗大、占用I/O口多。
方案四:OLED顯示
擁有128*68超高分辨率,且擁有超高可視角度,超低功耗,寬供電范圍。
總結:綜合考慮,我們采用方案四。
2 系統理論分析與計算
碼盤與小車運行距離運算
車輪外徑D = 22cm,光電碼盤一周碼盤孔數N = 20個,車輪轉動中檢測到碼盤孔即產生電平跳變,故車輪轉動一周產生20次電平跳變。
則檢測到一次電平跳變車輪轉動距離d = D/N = 22cm/20 = 1.1cm。
由於車輪相對於地面並未發生滑動,所以車輪轉動距離可以近似等於小車行駛距離,當光電傳感器檢測到number次碼盤孔時,行駛距離S = d*number。
3 電路與程序設計
3.1 電路設計
系統總體組成與原理框圖如圖1所示。
圖1 系統總體組成與原理框圖
3.1.1 電機驅動模塊電路原理
L298N是ST公司生產的一種高電壓、大電流電機驅動芯片。該芯片采用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續工作電流為2A;額定功率25W。
模塊內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電動機和步進電動機、繼電器線圈等感性負載;采用標准邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。
由L298N芯片驅動電機,可驅動一台兩相步進電機或四相步進電機,也可以驅動兩台直流電機。
圖2所示是電機驅動模塊電路。
圖2 電機驅動模塊電路
3.1.2 光電傳感模塊原理
圖3所示是光電傳感模塊電路,該模塊用於測距。采用槽型對射光電,只要在非透明物體通過槽型即可觸發(配合小車碼盤使用)輸出5V TTL電平。采用施密特觸發器去抖動脈沖,非常穩定。
圖3 光電傳感模塊電路
3.1.3 電源模塊
輸入電壓:3.2-35V。
輸出電壓:1.25-30V連續可調(建議空載調試)。
輸出電流:額定電流1A,最大2A(需加散熱片),如果輸出功率大於15W,建議加上散熱片。
轉換效率:最高92%(輸出電壓越高,效率越高)
靜態功耗: 3mA左右。
3.2 程序設計
3.2.1 程序流程圖
如圖4所示是程序流程圖。其中,傳感器基值用於檢測區分鐵絲或是硬幣,以便實現循跡和硬幣檢測報警功能,該基值的調試獲取過程見4.1.1節。
圖4 程序流程圖
3.2.2 程序功能描述與設計思路
(1)循跡功能
使用三個傳感器(同時啟動)實現賽道識別,其中左右傳感器負責控制小車在軌,中間傳感器控制小車加速功能。具體功能如下:
左側傳感器:檢測到賽道后,控制小車左輪不轉右輪轉動,實現小車左轉,使小車從向右的方向恢復為向前方向;
右側傳感器:檢測到賽道后,控制小車右輪不轉左輪轉動,實現小車右轉,使小車從向左的方向恢復為向前方向;
中間傳感器:檢測到賽道后,即可基本確定小車前進方向與賽道方向同向,此時控制左輪與右輪同時轉動,實現加速。
(2)硬幣檢測報警功能
由於傳感器在檢測到硬幣時返回的值遠大於檢測到鐵絲時所返回的值,故可在基准值的基礎之上設置兩個檔位來區分鐵絲和硬幣:當傳感器返回值較基准值變動較小(約為40)時檢測為鐵絲,當傳感器返回值較基准值變動較大(約為623)時檢測為硬幣,隨后啟動蜂鳴器報警。
為了避免硬幣檢測數據對循跡功能的干擾,在數據被判斷為由硬幣產生時,循跡功能實現程序選擇忽略該數據。
(3)測距功能
在車輪轉動中,光電傳感檢測到小車碼盤孔時觸發輸出5V TTL電平,產生電平跳變。程序通過啟動STM32f103C8t6外部中斷,采用下降沿觸發中斷。利用中斷服務函數中的EXTI_GetITStatus[2]檢測中斷發生與否,實現電平跳變次數(即碼盤孔數)計數,進而計算小車行駛距離(計算原理見第2節)。
(4)OLED顯示功能
利用SSD1306(OLED啟動芯片)控制顯示參賽信息、小車運行時間和運行距離。
4 測試方案與測試結果
4.1 各模塊測試方案與結果分析
4.1.1 LDC1000傳感器測試
測試方案:將動力系統屏蔽,OLED直接顯示傳感器當前獲取值。
測試結果:LDC1000輸出值測試結果見表1。
表1 LDC1000輸出值測試結果
測試情況 |
左側傳感器 |
中間傳感器 |
右側傳感器 |
基准值 |
2436-2442 |
2460-2468 |
2373-2378 |
鐵絲位於傳感器正下方 |
2719-2725 |
2683-2685 |
2632-2635 |
硬幣位於傳感器正下方 |
3276 |
3262 |
3276 |
結果分析:
同一型號的LDC1000存在體質不同問題,在沒有檢測到鐵絲的情況下,傳感器自身返回數值也有所不同,故各傳感器檢測到鐵絲硬幣的數值區間需單獨設計。
4.1.2 PWM控速測試
測試方案:屏蔽檢測系統,直接由while(1)循環控制小車運行,實現直走與90°轉向。
測試結果:PWM控速測試結果見表2。
表2 PWM控速測試結果
功能 |
左輪 |
右輪 |
直行 |
68 |
65 |
90°轉向 |
X |
68 |
結果分析:
在實現差速控向的過程中發現,在相同的控制電壓下,即使同一型號的電機,也有轉速差別,故想要精准控制電機轉動,必須對各電機的體質進行測試,得出具體的區別。
4.2 整車測試結果
在各模塊測試結束后,對小車最終的循跡時間和距離進行了測試,外部測試時間為使用人工計時,顯示時間為OLED顯示的時間,人工記錄較和設備記錄有一定誤差。如表3所示,在平均顯示距離為673.33cm時,其平均顯示時間為31.33s;外部測試時間和顯示時間的誤差為1.44s。
表3 整車測試結果
測試次序 |
外部測試時間 (單位:s) |
顯示距離 (單位:cm) |
顯示時間 (單位:s) |
1 |
29.76 |
650 |
31 |
2 |
30.13 |
670 |
32 |
3 |
29.78 |
700 |
31 |
平均值 |
29.89 |
673.33 |
31.33 |
5 總結
在開始階段,小組成員只想着解決物理結構或者解決控制邏輯,但是在最終調試發現並不存在確定物理結構就可一勞永逸的調試代碼,或者一套控制方案匹配多種物理結構的情況,小車的運行情況是物理結構與控制邏輯共同影響的,面對具體問題,很多時間是需要兩方面同時更改的。
在實際調試時一定要先出具體調試方案再行調試,且方案必須遵循控制變量法,這樣才能在實際調試中逐個排查,真正解決問題。
參考文獻
[1]《LDC1000 電感數字轉換器》 Texas Instruments,ZHCSBM0C –SEPTEMBER 2013–REVISED SEPTEMBER 2015
[2]《32 位基於 ARM 微控制器 STM32F101xx 與 STM32F103xx固件函數庫》 UM0427 用戶手冊 UM0427 Oct. 2007 Rev 2
注:站內閱讀,請勿轉載。