<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一款基于DSP的循跡及自平衡的智能小車設(shè)計

          一款基于DSP的循跡及自平衡的智能小車設(shè)計

          作者: 時間:2014-06-12 來源:網(wǎng)絡(luò) 收藏

          摘要:本系統(tǒng)選用TI公司32位作為控制芯片,設(shè)計制作了一款能夠循跡并尋找平衡的智能小車。根據(jù)所給定的跑道和跑道上的位置標(biāo)志對小車進(jìn)行硬件設(shè)計和程序編寫。循跡分為前后各4路循跡,采用的是4路紅外循跡模塊,保證了小車能夠前進(jìn)后退均在指定路線上。

          本文引用地址:http://www.ex-cimer.com/article/248192.htm

          關(guān)鍵詞:芯片;紅外循跡;傾角傳感器;模數(shù)轉(zhuǎn)換器

          引言

          本系統(tǒng)選取了32位作為運動物體的控制中心。TMS320F28027具有豐富的資源,擁有32位架構(gòu)、高級外設(shè)、高度的模擬集成、高達(dá)128 KB的快閃存儲器,同時還包括功能強大的ADC、高分辨率PWM以及濕著增強的捕獲單元等眾多特性優(yōu)異的組件、高精度片上振蕩器、模擬比較器、上電復(fù)位與掉電保護(hù)等在內(nèi)的各種集成模塊。本文以電動車蹺蹺板的設(shè)計為例,介紹了TMS320F28027的PWM電機調(diào)速、A/D采樣、中斷和I/O口等的操作和控制,以及LCD、L298n、紅外循跡等外部擴(kuò)展硬件的連接技巧和方法。

          1 小車功能介紹

          1.1 按鍵和顯示功能

          按鍵操作:使用3個按鍵分別進(jìn)行選擇、確認(rèn)、退出功能操作,在系統(tǒng)上電后,顯示界面進(jìn)入主菜單,通過“選擇”按鍵塒“板上尋平衡”、“上板尋平衡”兩個功能進(jìn)行選擇,選定結(jié)束按下“確認(rèn)”鍵,系統(tǒng)進(jìn)入對應(yīng)函數(shù),此時可以按下“退出”鍵退出對應(yīng)的功能函數(shù)。

          顯示功能:LCD實時顯示小車的傾角和小車正在執(zhí)行的功能,成功完成一項操作后LCD給出“OK”的指示,同時在每項操作進(jìn)行時顯示其操作所用時間,完成所有任務(wù)后顯示出每項操作所耗時間。

          1.2 “板上尋平衡”功能

          在不加配重的情況下,電動車完成以下運動:

          ①電動車從起始端點A出發(fā),快速行駛到中心點C附近;

          ②電動車在中心點C附近盡快使蹺蹺板處于平衡狀態(tài),保持平衡5 s,并給出明顯的平衡指示;

          ③電動車從步驟②中的平衡點出發(fā),快速行駛到蹺蹺板末端B處(車頭距蹺蹺板末端B不大于50 mm);

          ④電動車在B點停止5 s后,快速倒退回起始端A,完成整個行程;

          ⑤在整個行駛過程中,電動車始終在蹺蹺板上,并分階段實時顯示電動車行駛所用的時間。

          其中,到達(dá)C點附近和倒退回A點有紅外循跡裝置配合循跡標(biāo)志完成,尋找平衡主要由傾角傳感器檢測小車狀態(tài)控制小車前后移動完成。

          1.3 “上板尋平衡”功能

          將配重固定在可調(diào)整范圍內(nèi)任一指定位置,電動車完成以下運動:

          ①將電動車放置在地面距離蹺蹺板起始端A點300 mm以外、90°扇形區(qū)域內(nèi)某一指定位置(車頭朝向蹺蹺板),電動車能夠自動駛上蹺蹺板,如圖1所示。

           

           

          ②電動車在蹺蹺板上取得平衡,給出明顯的平衡指示,保持平衡5 s以上。

          ③將另一塊質(zhì)量為電動車質(zhì)量10%~20%的塊狀配重放置在如圖2所示中A至C間指定的位置,電動車能夠重新取得平衡,給出明顯的平衡指示,保持平衡5 s以上。

           

           

          1.4 跑道和小車介紹

          (1)小車跑道

          跑道分為兩個部分:矩形部分的蹺蹺板和扇形部分的地面區(qū)域。圖2中兩側(cè)箭頭代表循跡標(biāo)識,蹺蹺板中間箭頭為后退的循跡標(biāo)識。在蹺蹺板中部C點放置蹺蹺板支架,保證蹺蹺板可自由擺動。

          (2)小車循跡模塊安裝位置

          主要介紹小車循跡模塊的安裝位置,以保讓小車能夠正確循跡。前進(jìn)循跡由小車前部左右各兩路的紅外循跡裝置完成,位置配合蹺蹺板上前進(jìn)循跡線安裝。后退循跡由小車后部的4路紅外循跡裝置完成,位置配合蹺蹺板上后退循跡線安裝。安裝位置如圖3所示。

           

           

          2 功能模塊電路連接

          2.1 系統(tǒng)總體模型

          TI公司32位 TMS320F28027為系統(tǒng)的控制芯片,系統(tǒng)通過7 V穩(wěn)壓直流電源給電機供電,同時7 V穩(wěn)壓電源經(jīng)LM8965穩(wěn)壓模塊輸出5V電壓后給其他模塊供電。在上電過后使用獨立按鍵配合LCD12864實現(xiàn)功能選擇,選擇功能結(jié)束,小車在紅外循跡模塊的引導(dǎo)下到達(dá)指定地點開始尋找平衡,此時系統(tǒng)對傾角傳感器輸出電壓進(jìn)行A/D采樣并將數(shù)據(jù)傳輸給芯片處理,然后芯片輸出信號對L298N驅(qū)動的直流電機進(jìn)行調(diào)節(jié),配合光電碼盤控制小車在蹺蹺板上移動以實現(xiàn)平衡點尋找。系統(tǒng)框圖如圖4所示。

           

           

          2.2 L298N驅(qū)動連接電路

          L298N是一塊雙H橋直流電機驅(qū)動芯片,主要是對直流電機進(jìn)行PWM轉(zhuǎn)速調(diào)節(jié),對步進(jìn)電機進(jìn)行PWM細(xì)分操作。驅(qū)動部分的端子電壓Vs在+5~+35 V,承載最大電流為2 A;邏輯部分的工作電壓為5~7 V,電流為0~36 mA,低電平有效值為-0.3~1.5 V,高電平有效值為2.3 V~Vss。該驅(qū)動板可驅(qū)動2路直流電機,使能端ENA、ENB為高電平時有效,設(shè)置IN1和IN2的輸入電平確定電機的轉(zhuǎn)動方向,改變輸入使能端PWM脈沖的占空比實現(xiàn)調(diào)速。(注意:當(dāng)使能信號為0時,電機處于自由停止?fàn)顟B(tài);當(dāng)使能信號為1,且IN1和IN2為00或11時,電機處于制動狀態(tài),阻止電機轉(zhuǎn)動。)

          由于小車采用的是左右兩側(cè)速度差轉(zhuǎn)向,所以為了節(jié)省I/O口,電機連接時使用一個I/O配合使能端控制一側(cè)的兩個電機的轉(zhuǎn)向和轉(zhuǎn)速使能端控制轉(zhuǎn)速,I/O口控制轉(zhuǎn)向。具體操作:同側(cè)的兩個電機并聯(lián),電機一端通過I/O口經(jīng)L298N控制,另一端從同一I/O口引出一根信號線經(jīng)一非門后由L298N控制。具體電路連接如圖5所示(其中MG1~MG4為4個直流電機)。

          pwm相關(guān)文章:pwm是什么


          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理


          傾角傳感器相關(guān)文章:傾角傳感器原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: DSP TMS320F28027

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();