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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ATmega16L的ISP技術(shù)在汽車(chē)電子差速控制中的應(yīng)用

          ATmega16L的ISP技術(shù)在汽車(chē)電子差速控制中的應(yīng)用

          作者: 時(shí)間:2013-03-06 來(lái)源:網(wǎng)絡(luò) 收藏
          1 引言

          當(dāng)車(chē)輛行駛在轉(zhuǎn)彎路面或巷道時(shí),傳統(tǒng)燃油汽車(chē)通過(guò)左右輪間的機(jī)械差速器保證了兩側(cè)車(chē)輪能夠以不同速度旋轉(zhuǎn),雖然滿(mǎn)足了汽車(chē)行駛運(yùn)動(dòng)學(xué)的要求,同時(shí)也增加了減震懸架系統(tǒng)的復(fù)雜度,降低了系統(tǒng)的效率。本文研究的電動(dòng)汽車(chē)采用獨(dú)立的輪式驅(qū)動(dòng)方式,即每個(gè)車(chē)輪有一個(gè)直接驅(qū)動(dòng)的電機(jī)。這樣,汽車(chē)兩個(gè)后輪都能獨(dú)立提供驅(qū)動(dòng)動(dòng)力,可以按運(yùn)行工況需求獨(dú)立分配功率,該電子器是以?xún)蓚€(gè)驅(qū)動(dòng)輪的附著系數(shù)相等為目標(biāo)分配兩輪的驅(qū)動(dòng)轉(zhuǎn)矩,從而使車(chē)輛發(fā)生滑轉(zhuǎn)的可能性減小到最小,具有操作靈活,運(yùn)行穩(wěn)定的優(yōu)點(diǎn),是未來(lái)電動(dòng)汽車(chē)發(fā)展的主要方向。電動(dòng)汽車(chē)器的設(shè)計(jì)除了要考慮穩(wěn)定性好,更要考慮在工業(yè)現(xiàn)場(chǎng)便于維護(hù)、升級(jí)。使用傳統(tǒng)方法對(duì)CPU重新編程存在很多不便,所以,采用在系統(tǒng)編程()設(shè)計(jì)控制器系統(tǒng)。

          2 開(kāi)發(fā)模式介紹及芯片選擇

          本文介紹的應(yīng)用系統(tǒng)采用了一種新的開(kāi)發(fā)模式(類(lèi)似于編程器開(kāi)發(fā)模式)。由于利用了芯片的在系統(tǒng)編程(ISP)功能,因此不需要移動(dòng)芯片。在軟件設(shè)計(jì)時(shí)設(shè)計(jì)成:一旦代碼文件被重新編過(guò),即自動(dòng)下載到芯片,并自動(dòng)復(fù)位運(yùn)行,是真正的“所編即所得”。

          目前很多單片機(jī)都支持在系統(tǒng)編程。8051系列單片機(jī)支持在系統(tǒng)編程的也很多,但大多數(shù)是支持通過(guò)PC機(jī)的串口對(duì)單片機(jī)進(jìn)行編程。這樣有四個(gè)不方便的地方:一是項(xiàng)目本身與PC機(jī)串行通信不方便;二是要增加1片MAX232電平轉(zhuǎn)換芯片;三是有的芯片要按特定的步驟進(jìn)入下載模式,編程過(guò)程需要手工干預(yù);四是有的芯片需要固件(定制的程序)的支持,如果不小心損壞了固件,則芯片的在系統(tǒng)編程功能也沒(méi)有了。

          經(jīng)過(guò)比較,ATMEL公司生產(chǎn)的是一款比較理想的芯片,它的內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路,具備了AVR高檔單片機(jī)的MEGE系列的全部性能和特點(diǎn),適合本系統(tǒng)的開(kāi)發(fā)。

          在AVR產(chǎn)品中,具有突出特點(diǎn):

          (1) 高性能、低功耗的8bAVR微控制器,先進(jìn)的RISC精簡(jiǎn)指令集結(jié)構(gòu),可通過(guò)SPI接口在系統(tǒng)串行編程與8051兼容。

          (2) 片內(nèi)集成了較大容量的非易失性程序和數(shù)據(jù)存儲(chǔ)器。16KB的Flash程序存儲(chǔ)器,可擦寫(xiě)壽命達(dá)10,000次;512B的EEPROM,擦寫(xiě)壽命達(dá)100,000次;支持可在線(xiàn)編程(ISP)和可應(yīng)用自編程(IAP);可編程的程序加密位。

          (3) 豐富強(qiáng)大的外部接口性能。四通道PWM,可實(shí)現(xiàn)任意16b以?xún)?nèi)的、相位和頻率可調(diào)的PWM脈寬調(diào)制輸出,為實(shí)現(xiàn)先進(jìn)的電機(jī)控制方法提供了條件;8通道A/D轉(zhuǎn)換;32個(gè)可編程的I/O口。

          (4) 特殊的微控制器性能??煽刂频纳想姀?fù)位以及可編程的欠電壓檢測(cè)電路;串行編程時(shí)有自動(dòng)擦寫(xiě)周期,在調(diào)試大程序時(shí)可以分段下載,節(jié)約時(shí)間。

          3 ATmega16微控制器在系統(tǒng)編程模式

          當(dāng)芯片的引腳RESET接地時(shí),F(xiàn)lash程序存儲(chǔ)器、EEPROM數(shù)據(jù)存儲(chǔ)器、熔絲位和加密鎖定位都可以通過(guò)SPI總線(xiàn)接口[SCK,MOSI(input),MISO(output)]來(lái)編程。當(dāng)RESET引腳為低電平后,在編程/擦除操作之前必須首先發(fā)送一條編程允許命令。在串行編程模式下,芯片會(huì)在字節(jié)編程之前自動(dòng)插入一個(gè)擦除周期。因此,除非芯片的代碼保護(hù)位被編程,編程之前不需要執(zhí)行全片擦除命令。芯片擦除指令把程序和數(shù)據(jù)存儲(chǔ)器的每一單元都變成0xFF。而根據(jù)系統(tǒng)時(shí)鐘源的不同,串行編程時(shí)鐘SCK必須同系統(tǒng)時(shí)鐘相配合,SCK的低電平和高電平的最小時(shí)間定義如下:Low:大于2個(gè)MCU時(shí)鐘周期(fck<12MHz);High:大于2個(gè)MCU時(shí)鐘周期(fck<12MHz)。

          4 在系統(tǒng)編程技術(shù)在汽車(chē)電子中的應(yīng)用

          4.1 系統(tǒng)組成

          整個(gè)車(chē)輛控制系統(tǒng)分兩層,外層是差速控制層,根據(jù)從直流電機(jī)采集到的速度量反饋到CPU,經(jīng)A/D轉(zhuǎn)換、CPU內(nèi)部差速算法計(jì)算后產(chǎn)生理想轉(zhuǎn)矩值Td,內(nèi)層是電機(jī)轉(zhuǎn)矩控制層,根據(jù)從直流電機(jī)采集到的電流量反饋到CPU,經(jīng)A/D轉(zhuǎn)換、CPU內(nèi)部PID算法調(diào)節(jié)后產(chǎn)生實(shí)際控制電流Io,CPU通過(guò)查表計(jì)算出PWM占空比,此信號(hào)通過(guò)功率轉(zhuǎn)換電路輸送給直流電機(jī),一但發(fā)現(xiàn)電機(jī)功率轉(zhuǎn)換電路內(nèi)出現(xiàn)過(guò)流、過(guò)壓、過(guò)溫等異常情況時(shí),保護(hù)電路及時(shí)通知CUP并做相應(yīng)調(diào)整。系統(tǒng)運(yùn)行情況由外部狀態(tài)指示器顯示。RS-485輸出用于與其他車(chē)載電子設(shè)備通信。系統(tǒng)組成框圖如圖1所示:


          圖1 汽車(chē)電子差速控制系統(tǒng)結(jié)構(gòu)圖


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();