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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于PID控制算法的智能小車設計方案

          基于PID控制算法的智能小車設計方案

          作者: 時間:2010-12-13 來源:網(wǎng)絡 收藏

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

            式中:U為電樞端電壓;I為電樞電流;R為電樞電路中電阻;φ為每級磁通量;K為電動機結構參數(shù)。

            由式(1)可知,直流電動機的轉速方法可以分為兩大類:對勵磁磁通進行的勵磁法和對電樞電壓進行控制的電樞控制法?,F(xiàn)在大多數(shù)應用場合都使用電樞電壓控制法,本采用的是在保證勵磁恒定不變的情況下,采用PWM來實現(xiàn)直流電動機的調速方法。

            電動機的電樞繞組兩端的電壓平均值U。為:

            

          電壓平均值U

            式中:占空比D表示在一個周期T里開關導通的時間與周期的比值,D的變化范圍為0≤D≤1。由式(2)可知,當電源電壓Us不變的情況下,電樞兩端電壓的平均值Uo取決于占空比D的大小,改變D值也就改變了電樞兩端電壓的平均值,從而達到控制電動機轉速的目的,即實現(xiàn)PWM調制。

            為了便于取材和方便,此次選擇了飛思卡爾半導體公司的PC33886。PC33886在PWM調速模式驅動下可以接受20 kHz的工作頻率;具有過熱、過流、短路保護,并且通過一條反饋線將器件的工作狀態(tài)反饋給單片機。

            4.2 舵機控制

            舵機控制程序流程圖如圖4所示。

            

          舵機控制程序流程圖

            車模在行駛過程中不斷采樣路況信息,并通過分析車模與賽道相對位置判斷車模所處路況,計算轉彎半徑。所有舵機標準PWM周期為20 ms,轉動角度最大為90°,當給舵機輸入脈寬為0.5 ms,即占空比為O.5/20=2.5%的調制波時,舵機右轉90°??梢酝茖С鲛D動角度與脈寬的關系計算公式為:

            t=1.5±θ/90

            式中:t為正脈沖寬度,單位:ms;θ為轉動角度;當左轉時取加法計算,右轉時取減法計算。

            在具體操作中PWM調制波的周期可以設置在20 ms左右一定范圍內(nèi)均可以使舵機正常轉動,經(jīng)反復測試最終把輸出PWM調制波周期設為13 ms。

            運行電機的轉速以及舵機的轉角,在軟件上都是通過對PWM波占空比進行設置來相應控制的。

            5 電源模塊

            電機驅動系統(tǒng)要求大功率的電源供應:低內(nèi)阻、大電流、對電源的紋波不敏感;單片機和圖像采集系統(tǒng)對電源質量要求較高:低內(nèi)阻、波紋小、自身功耗不大,但要嚴防電動機在工作時產(chǎn)生的干擾。供電系統(tǒng)框圖如圖5所示。

            

          供電系統(tǒng)框圖

          pid控制器相關文章:pid控制器原理




          評論


          相關推薦

          技術專區(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); })();