黃 健, 呂林濤, 范 暉
(西京學(xué)院,陜西 西安 710123)
自動循跡是智能車要解決的一個技術(shù)問題,近年來,研究最多的是黑白線循跡,即沿著貼有黑、白線的跑道行駛[1~3],但這種方法受自然光的影響較大,當自然光比較強時,很難區(qū)分黑白線?;诖耍疚奶岢隽瞬捎眉氳F絲為跑道(因鐵絲受環(huán)境影響較小),使小車沿著鐵絲行駛。對鐵絲的檢測,即對金屬的檢測。早期的金屬檢測采用模擬電路,檢測輸出的也是模擬信號,因此其抗干擾能力、精度都較低。本文采用新型數(shù)字電感傳感器LDC1614,為4通道金屬檢測傳感器,具有I2C接口,可方便與各種微處理器相連。輸出28位的數(shù)字量可實現(xiàn)對金屬物高分辨率、高精度檢測。
系統(tǒng)設(shè)計框圖如圖1所示。主控采用STM32F103ZET6[4,5]。LDC1614將采集到的數(shù)據(jù)通過I2C串行總線傳送給STM32,STM32根據(jù)LDC1614中2個通道傳感器A和B采集的數(shù)字量判斷鐵絲的位置,控制小車的行駛。1.44 in(1in=2.54 cm)TFT真彩屏作為顯示設(shè)備,用于顯示A,B傳感器的數(shù)字量和時間等信息。
圖1 系統(tǒng)框圖
LDC1614原理如圖2所示,1腳為SCL,是I2C總線中的時鐘信號線。2腳是SDA,是I2C總線中的數(shù)據(jù)線,分別連接到STM32的PE4和PE5引腳上,PE4和PE5作為普通的I/O口,采用模擬I2C的方式與LDC1614進行數(shù)據(jù)傳送,為了保證傳輸?shù)目煽啃裕谠撘_上均接有10kΩ的上拉電阻器。LDC1614采用3.3V供電。圖中LDC1614的9腳IN0A和10腳IN0B是IN0輸入通道;11腳IN1A和12腳IN1B是IN1輸入通道,這2個通道分別連接自制電感線圈和電容器,構(gòu)成LC諧振電路,通過電渦流原理檢測金屬[6,7]。
圖2 STM32與LDC1614連接
自制線圈可通過手工繞制或者在Altium Design中繪制,然后加工而成,直徑達到了4 cm。線圈相當于電感,給該電感配置一個合適的電容值。當外部有金屬物體時,就會產(chǎn)生LC諧振。LC的諧振頻率通過式(1)計算
Fsen=1/3×Fex/Fcnt×RT
(1)
式中Fsen為LC諧振頻率;Fex為外部時鐘基準頻率,采用LDC1614內(nèi)部晶振產(chǎn)生,取值為4MHz;Fcnt為LDC1614內(nèi)部計數(shù)器值;RT為LDC1614內(nèi)部寄存器設(shè)置的響應(yīng)時間。對式(1)兩邊分別求倒數(shù),并適當變化,有
RT×(1/Fsen)=3×Fcnt×(1/Fex)
(2)
式中 1/Fsen為LC諧振周期;1/Fex為基準時鐘周期。式(2)表明在RT個LC諧振周期內(nèi),使用LDC1614的Fcnt計數(shù)器記錄基準時鐘的個數(shù)來推算LC的諧振頻率。
根據(jù)電渦流原理,要檢測細小的金屬,必須要產(chǎn)生足夠大的渦流,就必須增大電感量L,通過多次實驗,繪制了直徑為4 cm的電感線圈,線的粗細為0.1 mm,電感量為0.250 mH,與其匹配的電容值的大小為2.5 nF。對金屬的檢測距離達到3 cm。若要提高檢測距離,可適當加大電感量和電容值。
電機TB6612與STM32的連接如圖3所示。
圖3中AIN1,AIN2,PWMA控制1路電機,對應(yīng)電機連接端是AO1和AO2; BIN1,BIN2,PWMB控制2路電機,對應(yīng)電機連接端是BO1和BO2; 可將AIN1,AIN2,PWMA連接到對應(yīng)的STM32的I/O口,PWMA引腳產(chǎn)生對應(yīng)的PWM波形,用于電機調(diào)速。對應(yīng)的真值表如表1。
圖3 TB6612與STM32的連接
輸入AIN1AIN2PWMA輸出AO1AO2電機動作HHLLL制動HLHHL正轉(zhuǎn)LHHLH反轉(zhuǎn)LLLLL制動
當電機全速運行時,PWMA輸出高電平,要調(diào)整速度時,PWMA輸出不同占空比的方波。另一路電機BIN1,BIN2,PWMB,BO1,BO2的控制邏輯與表1類似。
顯示電路設(shè)計如圖4所示。
圖4 TFT顯示電路設(shè)計原理
為提高顯示屏刷屏速度,采用STM32F103ZET6的硬件SPI1接口與顯示屏屏相連。其中SCLK連接到PB3(SPI1_SCLK),DI連接到PB5(SPI2_MOSI),CS連接到PB12(SPI2_NSS)。其余RST為復(fù)位信號,GND共地,VCC接3.3 V。
軟件編程時,首先對I2C、定時器、SPI接口進行初始化,然后通過I2C接口循環(huán)采集LDC1614的金屬探測值。為了使檢測值穩(wěn)定、可靠,共循環(huán)采集50次,進行冒泡排序,去掉最大值和最小值各10個,用剩下的30個求均值,并將結(jié)果送給1.44 in TFT屏顯示。LDC1614連接2只傳感器,假設(shè)左邊的傳感器為A,右邊的傳感器為B。小車行駛時,將鐵絲放在傳感器A和B的中間,當鐵絲偏向左邊時,A傳感器的值增大,控制小車右轉(zhuǎn);當鐵絲偏向右邊時,B傳感器的值增大,控制小車左轉(zhuǎn);當鐵絲在A,B中間時,A,B傳感器的值相等,小車直走。小車的行駛通過TB6612直流電機驅(qū)動。按照表1所述的真值表控制小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)。
圖5給出了其讀時序。圖中SCL是時鐘信號,SDA是數(shù)據(jù)線。對LDC1614進行讀操作時,首先發(fā)送所讀單元地址,然后分別讀出高8位和低8位數(shù)據(jù)[8~10]。LDC1614雙通道的地址寄存器的映射關(guān)系如表2所示。
圖5 I2C讀時序
地址功能描述0X00通道0高16位數(shù)據(jù)0X01通道0低16位數(shù)據(jù)0X02通道1高16位數(shù)據(jù)0X03通道1低16位數(shù)據(jù)0X7F設(shè)備ID號(默認值0X3055)
表2中,按照圖5所示的時序,讀寫0X00和0X01的高16位數(shù)據(jù)和低16位數(shù)據(jù),將其組合成通道0對應(yīng)的32位數(shù)據(jù),通過和0X0FFFFFFF進行“與”運算得到28位有效數(shù)據(jù)。通過讀寫0X02和0X03地址得到通道1的28位有效數(shù)據(jù)。初始化時,為了驗證I2C時序的正確性,可通過讀寫設(shè)備ID號實現(xiàn),若讀到的ID號是0X3055,則說明I2C讀寫時序正確,初始化成功;否則,調(diào)試程序。
測試時的跑道如圖6所示。測試時,為了增加難度,在轉(zhuǎn)彎處設(shè)置了彎道。小車起始位置處于2 m直道的正中心,途經(jīng)6個彎道,彎道圓弧的半徑均為20 cm。最后再回到起點處,順時針行駛一圈。表3列出了細鐵絲位置與傳感器的測量值之間的對應(yīng)關(guān)系。
圖6 測試場地
測試時,首先將細鐵絲放置在傳感器A和B的自制線圈的正中心。假設(shè)通道0所對應(yīng)的傳感器為A,安裝在小車的左邊。通道1所對應(yīng)的傳感器為B,安裝在小車的右邊。當小車按順時針方向在直道上行駛時,當細鐵絲靠近傳感器A時,傳感器A的測量值降低,傳感器B因為遠離鐵絲,所以其值不變,此時控制小車右轉(zhuǎn),直至左、右傳感器采集值相同為止;反之,細鐵絲靠近傳感器B時,傳感器B的測量值降低,傳感器A因為遠離鐵絲,所以其值不變,此時控制小車左轉(zhuǎn),直至左、右傳感器采集值相同為止。當在彎道行駛時,情況比較復(fù)雜,細鐵絲靠近的一端的傳感器值降低比較快,此時控制小車向傳感器的值增大的一方旋轉(zhuǎn),直至左右兩只傳感器的測量值接近為止,然后控制小車直走。
表3 細鐵絲位置與傳感器測量值(數(shù)字量)之間對應(yīng)關(guān)系
本文設(shè)計了一種能夠沿著細鐵絲行駛的智能小車,采用新型LDC1614數(shù)字電感傳感器探測金屬,配置適當?shù)碾姼芯€圈和電容,可實現(xiàn)對細鐵絲的檢測,檢測距離接近3cm。由于LDC1614是雙通道傳感器,恰好可以實現(xiàn)對一根細鐵絲的檢測和循跡。加入適當?shù)能浖V波算法,可使數(shù)據(jù)處理變得更加穩(wěn)定、可靠。本設(shè)計為智能小車的循跡增加了一種新的思路和方法,克服了光電傳感器受強光影響比較大的缺點,可應(yīng)用在灰塵、污垢、油和潮濕等惡劣環(huán)境中,具有一定的實用價值。