黃 健,董三鋒,王利平
(西京學院,西安710123)
自動循跡智能小車是近年來研究的一個熱點,在各種電子設計競賽中都有所涉及,比如飛思卡爾智能車大賽、全國大學生電子設計競賽、TI杯比賽等。智能車融合了傳感器、電機控制、微處理器等多項硬件技術,為有效的對其進行控制,還要加入軟件算法。智能車控制是典型的軟硬件技術的結合體,具有極大的研究價值,其中自動循跡是智能車要解決的一個主要技術問題。早期的循跡采用光電傳感器,用黑白線作為跑道標識。近幾年,隨著電感傳感技術的發展,有人提出采用鐵絲作為跑道,實現自動循跡[1-3]。
本文正是基于此提出采用TI公司新型數字電感傳感器 LDC1000 作為傳感器[4-5],檢測直徑為0.7 mm的細鐵絲構成的跑道。由于鐵絲太細,必須采用自制的線圈來檢測,否則根本檢測不到。經過多次的實驗,繞制成功了合適的線圈,能夠明顯感應到細鐵絲。但由于只有一個LDC1000,當鐵絲在線圈的正中心時,值最大,向左或者向右偏移時,都會減小,給軟件編程造成了一定的困難。采用試探法結合狀態圖法,能夠有效地控制小車的左右移動和前進,較好地完成了自動循跡的功能。
系統設計框圖如圖1所示。LDC1000傳感器檢測到鐵絲的值后,通過一個SPI總線接口傳送給STM32微處理器。由于選擇的主控是STM32F103RBT6[6-7]。它有 2 個 SPI 接口,用另外一個連接到1.44英寸TFT真彩屏,顯示采集到的數據和其它信息。電機驅動采用TB6612,體積小,比L298性能好。其中2個直流電機都帶有編碼器,可將其連接到STM32的定時器進行測速。通過軟件編程控制左右電機速度,使得小車能夠平穩前行。

圖1 系統框圖
LDC1000原理圖如圖2所示。圖中DCLK是LDC1000時鐘輸入信號線,SCLK是SPI總線通信所需時鐘線,SDI是SPI總線數據接收信號線,SDO是SPI總線數據發送信號線。由于LDC1000采用SPI總線通信,所以將LDC1000的SCLK連接到STM32的PA5(SPI1_SCLK),將 LDC1000的 SDI連接到STM32的 PA7(SPI1_MOSI),將 LDC1000的 SDO連接到STM32的PA6(SPI1_MISO),將LDC1000的SCLK連接到 STM32的 PA5(SPI1_MOSI),將LDC1000的CSB連接到STM32的PA4(SPI1_NSS),為實現有效通信,雙方必須共地。此外,LDC1000的DCLK作為主時鐘,要求產生6 MHz的頻率,用STM32的PC6通過定時器的PWM波產生。圖中LDC1000與INA和INB連接的電容C和電感L為振蕩電路,基于電渦流原理[8],能夠與外部檢測的金屬產生諧振。

圖2 STM32與LDC1000連接圖
當外部有金屬物體時,在電感L上將會產生一個諧振頻率。而LDC1000對金屬物的探測也就是基于測試LC諧振頻率的方法。LDC1000的外部基準時鐘是6 MHz,由STM32的PC6產生。使用內部寄存器計數方法作頻率計。其中LC的諧振頻率通過式(1)計算:

式中:Fsen是LC諧振頻率;Fex是外部時鐘基準頻率,取值為6 MHz;Fcnt是LDC1000內部計數器值,TL是LDC1000內部寄存器設置的響應時間。對式(1)兩邊分別求倒數,并做適當變化,可得到:

式中:1/Fsen是LC諧振周期;1/Fex是基準時鐘周期。式(2)表明在TR個LC諧振周期內,使用LDC1000的Fcnt計數器記錄基準時鐘的個數來推算LC的諧振頻率。
根據電渦流原理,要檢測直徑為0.7 mm的細鐵絲,必須要產生足夠大的渦流,就必須增大電感量L的值.通過多次實驗,繞制了直徑為4 cm的電感線圈,如圖3所示。

圖3 自制電感線圈
該線圈采用0.15 mm的細銅絲繞制而成,直徑為4 cm,電感量為0.180 mH,與其匹配的電容值為2 nF。
TB6612是東芝公司推出的一款直流電機驅動芯片,集成度高,可同時驅動 2路直流電機[9]。TB6612的硬件連接圖如圖4所示。

圖4 TB6612硬件連接圖
圖4 中PA0,PA11,PA12控制1路電機,PA0產生PWM波,控制電機的轉速;PA11,PA12控制電機的方向。PA1,PB10,PB12控制另1路電機,PA1產生PWM波,控制電機的轉速;PB10,PB12控制電機的方向。AO1,AO2連接1路電機;B01,B02連接另外1路電機。
TFT顯示單元采用1.44英寸SPI接口真彩屏,顯示電路設計如圖5所示。

圖5 TFT顯示電路設計原理圖
為提高1.44 TFT真彩屏的刷屏速度,采用硬件SPI接口與STM32相連,其中 SCLK連接到 PB13(SPI2_SCLK),DI連接到 PB15(SPI2_MOSI),CS 連接到 PB12(SPI2_NSS)。其余 RST為復位信號,GND 為接地,VCC 接3.3 V。
本設計的難點是只有一個LDC1000傳感器探頭。當鐵絲在傳感器線圈的正中心時,檢測到的頻率值最大;當鐵絲向左、向右偏轉時,檢測到的頻率值都在減小。因此,如何判斷偏左還是偏右,就變得非常困難。為有效解決這個問題,提出“試探法”結合“狀態圖”的方法。當頻率值減小時,首先讓小車左轉,如果值繼續減小,則右轉。因為小車要沿著鐵絲行走,小車將會有3個狀態,分別是直走、左轉、右轉。只有控制好這3個狀態及其相互轉換的條件,另外,為有效控制小車的運行,還必須測出傳感器對鐵絲感應的最大值FRE_MAX和最小值FRE_MIN,FRE_MAX是細鐵絲在自制線圈的正中心時測量值,FRE_MIN是細鐵絲完全偏離線圈,在線圈外時測量值。圖6給出了小車的狀態圖。

圖6 狀態轉換圖
圖中FRE為傳感器測得的當前頻率值,測試時,首先將小車放在跑道的正中心,細鐵絲位于傳感器線圈的中心直徑上。當FRE=FRE_MAX時,小車直走。當FRE減小時,首先讓小車左拐,如果FRE繼續減小,說明小車繼續偏離細鐵絲,這時狀態轉換為右拐;若右拐時,FRE一直在增大,說明右拐正確,小車一直在向細鐵絲靠近,當遞增到最大值后,小車直走。當FRE受到意外干擾,FRE≤FRE_MIN時,強制讓小車右拐,如果值遞增,說明右拐正確,小車正在靠近細鐵絲,繼續右拐;如果不變,還是最小值,說明右轉錯誤,改變狀態左拐,左拐后如果FRE在遞增,繼續左拐,當到達最大值FRE_MAX后,直走。
按照圖6的狀態圖在MDK5.0下用C語言編程,較好地完成了對小車自動循跡的控制。
測試時的跑道如圖7所示。小車起始位置放在2 m直道的正中心,途徑6個彎道,彎道圓弧的半徑均為為20 cm。最后再回到起點處,完成一圈行駛。

圖7 小車行駛跑道
靜態測試時,用手挪動小車到指定位置,測量傳感器LDC1000通過自制線圈對細鐵絲感應時的頻率值。當線圈的電感量為0.180 mH,電容為2 nF時,對直道、彎道1、彎道2、彎道3、彎道4、彎道5、彎道6測量得到的頻率值與細鐵絲位置之間的對應關系,如表1~表7所示。

表1 鐵絲位置與頻率值之間對應關系(直道1)

表2 鐵絲位置與頻率值之間對應關系(彎道1)

表3 鐵絲位置與頻率值之間對應關系(彎道2)

表4 鐵絲位置與頻率值之間對應關系(彎道3)

表5 鐵絲位置與頻率值之間對應關系(彎道4)
表1~表7中距離d是細鐵絲與線圈直徑之間的垂直距離。從表中可以看出,當距離d增大時,頻率值明顯減小,但在彎道時比較復雜,但整體而言,如果偏離彎道,則頻率值減小;若靠近,頻率值增大。

表6 鐵絲位置與頻率值之間對應關系(彎道5)

表7 鐵絲位置與頻率值之間對應關系(彎道6)
本文采用LDC1000數字電感傳感器和自制線圈,經過多次實驗和測試,成功實現了對細鐵絲跑道的檢測。采用試探法結合狀態圖法,解決了只有一個傳感器無法識別左右的問題,經過多次調試,解決了該問題。實現了自動循跡功能。具有實用性和通用性,可應用在汽車、消費電子、智能玩具等領域[10-11]。
[1] 余熾業,宋 躍,雷瑞庭.基于STC12C5 A60S2的智能循跡小車[J].實驗室研究與探索,2014,33(11):46-49.
[2] 王子輝,葉云岳.基于CMOS傳感器的智能循跡小車圖像識別技術研究[J].傳感技術學報,2009,22(4):484-488.
[3] 單以才,李奇林,秦劍華,等.基于紅外傳感器的自主循跡小車控制算法設計與實現[J].機床與液壓,2010,38(14):78-81.
[4] 金立,賈存良,王梅,等.基于PIC單片機的智能循跡小車設計[J].工礦自動化,2010,36(8):129-132.
[5] 莫太平,楊宏光,劉冬梅.面向多路線的智能循跡小車的設計與實現[J].自動化與儀表,2014,29(4):6-9.
[6] 呂云芳,陳帥帥,郝興森,等.基于C51高級語言程序控制的智能循跡小車設計與實現[J].實驗室研究與探索,2015,34(3):142-145.
[7] 師樹恒,趙斌,郭朋彥,等.基于MK60 N512的智能循跡小車設計[J].機床與液壓,2014,42(2):91-96.
[8] 楊寧,石冰飛,朱平,等.基于CCD的自動循跡小車的軟件設計[J].自動化與儀表,2012,33(1):52-55.
[9] 宋永獻,馬娟麗,賀乃寶,等.基于T MS320F2812的智能循跡小車控制系統設計[J].計算機測量與控制,2011,19(9):2128-2130.
[10] 李艷紅,李自成,孫仕琪.基于ST M32單片機的金屬物體探測定位器系統的設計與實現[J].儀表技術與傳感器,2016(4):63-66.
[11] 王麗君,馬龍升,鐘皇平,等.可自主移動的金屬物體探測定位儀設計及開發[J].實驗技術與管理,2015,32(5):107-110.