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

          新聞中心

          EEPW首頁 > 設計應用 > 基于STC8A微控制器的節(jié)能車模系統(tǒng)*

          基于STC8A微控制器的節(jié)能車模系統(tǒng)*

          作者:楊豐碩,錢靖宇,王浩(哈爾濱工業(yè)大學,哈爾濱 150006) 時間:2022-04-11 來源:電子產(chǎn)品世界 收藏
          編者按:本設計以“第十五屆全國大學生智能汽車競賽”為背景,結合3D打印與激光切割技術,制作一輛以STC8A微控制器作為核心控制單元的節(jié)能直立車模。以Keil為開發(fā)環(huán)境,利用電感獲取賽道信息,解決彎道、坡道、環(huán)島等特殊賽道元素,并沿著賽道以適合的速度運行。該智能車系統(tǒng)顯示了高度的智能化、人性化,并且具備良好的安全性、穩(wěn)定性,可以為無人駕駛汽車及環(huán)保個人交通工具的后續(xù)研究提供經(jīng)驗。

          *節(jié)選自《第十五屆全國大學生智能汽車邀請賽技術報告》的“紫丁香四隊”《無線組技術報告》。

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

          指導教師:齊超,王盼寶;帶隊教師:張依。

          1   車模主要技術參數(shù)

          主要技術參數(shù)包括物理尺寸、電路指標等,具體參數(shù)見表 1,實物圖見圖1。

          1649656127322551.png

          2   接收電路設計

          為了實現(xiàn)對充電的控制,利用半橋電路通過調(diào)節(jié)PWM 信號,來實現(xiàn)對充電部分的控制。電路圖如圖2所示,采用BTN7971 集成半橋,實現(xiàn)對輸出電壓的控制。

          1649656179804678.png

          圖1 實物

          系統(tǒng)電源的來源由線圈接收的電壓經(jīng)過全橋整流濾波后,得到約24 V 的直流電壓,利用LM2596 得到5 V,給微控制器提供工作電壓[1-3],從而產(chǎn)生控制信號。

          2.1 控制設計

          通過反饋控制,達到充電功率恒定。方法是首先能夠?qū)τ诔潆姽β蔬M行測量,然后根據(jù)實際的充電功率與功率設定值進行比較,利用誤差信號,通過PID 控制算法,改變PWM 占空比,進而改變充電功率,使其達到與功率設定值相同并保持穩(wěn)定。其中功率測量部分,利用AD8217 對通過采樣電阻的電壓進行放大,從而將電流信號轉(zhuǎn)為電壓信號,利用分壓電阻將電壓降到微控制器的采樣范圍內(nèi),再利用微控制器的A/D 轉(zhuǎn)換完成對電壓的采樣,在程序里經(jīng)過還原,即可得到相應的電流值與電壓值。

          image.png

          圖2 控制部分原理圖

          3   硬件電路的設計

          智能車電路部分主要的模塊包括:充電模塊、電源模塊、傳感器模塊、驅(qū)動模塊以及其他周邊調(diào)試模塊。各模塊的總體設計原則是:,緊湊,易于拆換,穩(wěn)定可靠。但根據(jù)各模塊的不同,又有不同的設計要求。

          3.1 電源模塊設計

          由于是由超級電容供電,所以電源模塊的設計顯得至關重要,電源的首要指標是可靠性,整個硬件系統(tǒng)的工作完全由電源供電的可靠性決定,電源供電的不穩(wěn)定性會引起損耗、微控制器復位、舵機及傳感器損毀等嚴重問題;另外,與傳統(tǒng)的電池供電不同,超級電容在供電過程中存在電壓降低的問題,所以,在接入電路時,還要有穩(wěn)壓的模塊。

          電源設計中主要考慮到需要的電壓和電流,另外還用LED 燈顯示電池電壓,便于直觀發(fā)現(xiàn)電池電量是否正常。我們需要的電源包括3.3 V,5 V,-5 V,10 V 等。根據(jù)規(guī)劃,5 V 供電我們選擇了TPS63070 開關電源芯片,對于這款芯片,其輸入范圍為2~16 V,而輸出可調(diào),并且輸出電流可以達到2 A,足以滿足微控制器、傳感器、外圍電路,以及我們選的銀燕舵機正常工作所需要的電流。設計原理圖如圖3 所示。

          1649656444263038.png

          圖3 電源電路

          3.2 驅(qū)動電路設計

          驅(qū)動電路為智能車驅(qū)動電機提供控制和驅(qū)動[4-6],這部分電路的設計要求以能夠通過大電流為主要指標。驅(qū)動電路的基本原理是 H 橋驅(qū)動原理,目前流行的H橋驅(qū)動電路有:H 橋集成電路,如MC33886;集成半橋電路,如BTN7971 等;MOS 管搭建的H 橋電路。

          對于組,為了選出一個低功耗的驅(qū)動方案,我們對比三種電路都進行了搭建并測試,MC33886 的優(yōu)點是電路簡單,外圍元件少,但缺點是內(nèi)阻較大,通過電流有限,可以通過兩片MC33886 并聯(lián)方式進行改善;IR2104 + MOS 管搭建的H 橋電路可以通過較大電流,但由于每個MOS 管體積較大,因此電路板面積較大;BTN7971 是集成半橋電路,電路簡單,只需要簡單的幾個外圍電阻,缺點是輸入電壓要高于7 V 才能正常工作,但是對于超級電容的寬輸入范圍的電壓,我們可以采用TPS63070 進行升壓,給予其足夠工作的電壓。對比三種方案,我們選擇了BTN7971 作為驅(qū)動電路,圖4 是電路原理圖。

          1649656551661827.png

          圖4 驅(qū)動電路

          4   方向控制的理論分析

          PID 控制器是一種線性控制器,它根據(jù)給定值與實際輸出值構成控制偏差。將偏差的比例(P)、積分(I) 和微分(D) 通過線性組合構成控制量,對被控對象進行控制,故稱PID 控制器,原理框圖如圖5 所示。

          1649656637601789.png

          運用PID 控制的關鍵是調(diào)整KP、KI、KD 三個參數(shù),即參數(shù)整定。PID 參數(shù)的整定方法有兩大類:①理論計算整定法。主要是依據(jù)系統(tǒng)的數(shù)學模型,經(jīng)過理論計算確定控制器參數(shù);②工程整定方法。主要依賴工程經(jīng)驗,直接在控制系統(tǒng)的試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛采用。由于智能車系統(tǒng)是機電高耦合的分布式系統(tǒng),并且要考慮賽道的具體環(huán)境,要建立精確的智能車運動控制數(shù)學模型有一定難度,而且我們對車身機械結構經(jīng)常進行修正,模型參數(shù)變化較為頻繁,理論計算整定法可操作性不強,最終我們采用了工程整定的方法。

          參考文獻:

          [1] 華成英,童詩白.模擬電子技術基礎[M].北京:高等教育出版社,2006.

          [2] 邵貝貝.單片機嵌入式應用的在線開發(fā)方法[M].北京:清華大學出版社,2004.

          [3] 劉慧銀,龔光華,王云飛,等.Motorola(Freescale)微控制器MC68HC08原理及其嵌入式應用.新版.北京:清華大學出版社,1993.

          [4] 卓晴,黃開勝,邵貝貝,等.學做智能車[M].北京:北京航空航天大學出版社,2001.

          [5] 潘新民,王燕芳.微型計算機控制技術[M].北京:高等教育出版社,2001.

          [6] 何立民.微控制器應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,1997.

          (本文來源于《電子產(chǎn)品世界》雜志2021年1月期)



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();