版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計說明書</b></p><p> 課 程 名 稱: 汽車電控技術課程設計 </p><p> 課 程 代 碼: </p><p> 題 目: 汽車懸架系統(tǒng)振幅控制器 <
2、/p><p> 學院(直屬系) : 交通與汽車工程學院 </p><p> 年級/專業(yè)/班: 車輛工程汽電班 </p><p> 學 生 姓 名: </p><p> 學 號:
3、 </p><p> 指 導 教 師: </p><p> 開 題 時 間: 20年 12 月 3 日</p><p> 完 成 時 間: 20 年 12 月 14日</p><p><b> 目 錄</b></p><p>
4、 摘要 ………………………………………………………………………………………… 2 </p><p> 1引言………………………………………………………………………………………… 3 </p><p> 1.1汽車懸架系統(tǒng)的功能作用………………………………………………………… 3</p><p> 1.2汽車懸架系統(tǒng)的組
5、成……………………………………………………………… 3</p><p> 1.3 汽車懸架系統(tǒng)的分類……………………………………………………………… 3</p><p> 1.4本課程設計的主要內容…………………………………………………………… 3</p><p> 2 汽車懸架系統(tǒng)振幅控制器總體方案設計………………………………………………… 5</p&
6、gt;<p> 2.1汽車懸架系統(tǒng)振幅控制器的基本工作原理……………………………………… 5</p><p> 2.2汽車懸架系統(tǒng)振幅控制器的結構………………………………………………… 5</p><p> 2.3汽車懸架系統(tǒng)振幅控制器設計方案論證………………………………………… 5</p><p> 2.4 汽車懸架系統(tǒng)振幅控制器設計總
7、流程圖………………………………………… 6</p><p> 3 汽車懸架系統(tǒng)振幅控制器的硬件設計過程……………………………………………… 7</p><p> 3.1控制器主要芯片的選擇………………………………………………………………7</p><p> 3.2懸架控制系統(tǒng)整體硬件電路設計………………………………………………… 8</p>
8、<p> 4 汽車懸架系統(tǒng)振幅控制器的系統(tǒng)軟件設計過程………………………………………… 10</p><p> 4.1 ADC0809芯片起始地址的確定…………………………………………………… 11</p><p> 4.2采樣周期T的確定……………………………………………………………………11</p><p> 4.3車身垂直加速度與振幅位移的
9、變換思想………………………………………… 11</p><p> 4.4數字PID控制算法……………………………………………………………………12</p><p> 4.5步進電機驅動算法及編碼………………………………………………………… 12</p><p> 4.6繪制系統(tǒng)程序流程圖……………………………………………………………… 13</p>
10、<p> 4.7軟件程序調試……………………………………………………………………… 16</p><p> 結論…………………………………………………………………………………………… 17</p><p> 致謝…………………………………………………………………………………………… 18</p><p> 參考文獻………………………………………
11、……………………………………………… 19</p><p> 附錄: ………………………………………………………………………………………… 20</p><p><b> 摘 要</b></p><p> 隨著社會科學的發(fā)展進步,人們對汽車的需求量越來越大,并且對汽車各方面的性能要求越來越高,不僅要滿足其基本的動力性和經濟性,更重要的
12、是汽車的舒適性變得愈來愈重要。本次設計通過控制汽車懸架系統(tǒng)的振幅大小來改善汽車的乘坐舒適性。這次設計的核心采用AT89C51單片機作為控制系統(tǒng)的微處理芯片,以壓電式加速度傳感器及ADC數據采集為測試手段,通過運用數字PID控制算法,采用三相步進電機為執(zhí)行機構,用以調節(jié)汽車減振器的阻尼大小,從而改善汽車的振動情況以滿足舒適性要求。</p><p> 關鍵詞:單片機、ADC0809,壓電式傳感器、步進電機</
13、p><p><b> 1 引 言</b></p><p> 1.1汽車懸架系統(tǒng)的功能作用. </p><p> 現代汽車除了保證其基本性能,即行駛性、轉向性和制動性等之外,目前正致力于提高安全性與舒適性,對此,尤其作為提高操縱穩(wěn)定性、乘坐舒適性的轎車懸架必須進行相應的改進。舒適性是汽車最重要的使用性能之一,是汽車上的重要總成之一,懸架的主要
14、作用是傳遞作用在車輪和車身之間的一切力和力矩,并且緩和由不平路面?zhèn)鹘o車身的沖擊載荷、衰減由此引起的振動、保證乘員的舒適性、減小貨物和車輛本身的動載荷。懸架與汽車的多種使用性能有關,為滿足這些性能,懸架系統(tǒng)必須能滿足這些性能的要求:</p><p> 首先,懸架系統(tǒng)要保證汽車有良好的行駛平順性。</p><p> 其次,懸架要保證車身和車輪在共振區(qū)的振幅小,振動衰減快。</p>
15、;<p> 再次,要能保證汽車有良好的操縱穩(wěn)定性。</p><p> 1.2汽車懸架系統(tǒng)的組成</p><p> 汽車懸架包括彈性元件,減振器和傳力裝置等三部分,這三部分分別起緩沖,減振和力的傳遞作用。彈性元件用力傳遞垂向力,并緩和由路面不平度引起的沖擊和振動,它只承受垂直載荷,緩和及抑制不平路面對車體的沖擊,具有占用空間小,質量小,無需潤滑的優(yōu)點,但由于本身沒有摩擦而
16、沒有減振作用。減振器指液力減振器,是為了加速衰減車身的振動,它是懸架機構中最精密和復雜的機械件。傳力裝置是指車架的上下擺臂等*形剛架、轉向節(jié)等元件,用來傳遞縱向力,側向力及力矩,并保證車輪相對于車架(或車身)有確定的相對運動規(guī)律。</p><p> 1.3 汽車懸架系統(tǒng)的分類</p><p> 因為理想的懸架應在不同的使用條件下具有不同的彈簧風度和減振器阻尼,這樣既能滿足行駛平順性要求
17、又能滿足操縱穩(wěn)定性要求。汽車電控半主動懸架根據可控阻尼減振器可以分為兩種:</p><p> ?。?)機械式可變阻尼減振器:傳統(tǒng)的可變阻尼減振器懸架系統(tǒng)是用機械式的可控閥來實現的,它是通過電子控制器控制減振器中的電磁閥來調節(jié)阻尼</p><p> (2)磁流體可控阻尼減振器:這種可控阻尼減振器是通過控制阻尼介質中的磁場達到調節(jié)阻尼介質的流體特性,從而達到控制阻尼的目的。</p>
18、;<p> 1.4本課程設計的主要內容</p><p> 電子控制懸架系統(tǒng)能根據不同的路面狀況、載重量、車速等控制懸架系統(tǒng)的剛度和減振器的阻尼,也可以調節(jié)車身高度以提高車輛的通過性。本設計的主要任務就是利用單片機控制汽車懸架系統(tǒng)振幅在一定的范圍之內,此懸架系統(tǒng)振幅控制器應該具備以下功能:</p><p> (1)能根據汽車的運行狀態(tài)調節(jié)汽車的振幅。</p>
19、<p> (2)要求該控制器結構簡單,控制方便。</p><p> (3)當檢測到振幅超過15mm時,在控制器面板上給予報警顯示。</p><p> 本次課程設計的懸架系統(tǒng)為半主動懸架,以AT89C51單片機為微處理器,壓電式加速度傳感器用以檢測車身的振幅大小,并將其轉化為電壓值,由于此信號比較微弱,故在其后端增加一運放處理電路,然后通過ADC0809采集運放所輸出的信號
20、數據,運用精確控制的數字PID算法驅動步進電機調節(jié)減振器的阻尼器以控制汽車的車身剛度大小,以滿足乘坐舒適性要求。</p><p> 2 汽車懸架系統(tǒng)振幅控制器總體方案設計
21、 </p><p> 2.1 汽車懸架系統(tǒng)振幅控制器的基本工作原理</p><p> 電子控制半主動懸架系統(tǒng)由傳感器與開關、控制單元、執(zhí)行元件等電子器件組成。傳感器和開關將路面輸入的模擬信號轉換為數字信號傳送給控制單元ECU,控制單元ECU將傳感器輸入的電信號進行分析處理后輸出控制信號給執(zhí)行元件,執(zhí)行元件的機械動作改變減振器的阻尼。工作原理如圖1。&l
22、t;/p><p> 主動懸架系統(tǒng)的基本工作原理是:傳感器將采集的反映懸架振動幅度的信號傳給控制器,控制器控制主動懸架的力發(fā)生器,產生控制力控制車身的振動,從而大大提高了車輛的平順性等性能。</p><p> 半主動懸架系統(tǒng)基本工作原理是:用可調彈簧或可調阻尼元件組成懸架,并根據懸架的振動響應等反饋信號,按照一定的調節(jié)規(guī)律調節(jié)車輛懸架系統(tǒng)的剛度或阻尼狀態(tài),提高車輛的行駛平順性和安全性。<
23、;/p><p> 2.2汽車懸架系統(tǒng)振幅控制器的結構</p><p> 在具體設計過程中通過分析和考慮控制器的性能和要求,因此,在進行硬件電路設計的時候,為了達到控制懸架系統(tǒng)振幅的目的,采取如圖2的控制系統(tǒng)結構框圖: </p><p> 汽車在運動過程中由于受到路面的沖擊,即給車身一個輸入信號,通過車身壓電式垂直加速度傳感器獲取車身振動信號,通過一系列的數據采集
24、和處理,使其離散化,此離散信號最終被送至ECU微處理器,經過數字PID的調節(jié)作用,使其輸出控制信號以控制步進電機,由此控制步進電機的轉速大小,從而控制阻尼孔開口的大小,最終控制車身振幅使其在一定的范圍之內。</p><p> 在比例環(huán)節(jié)中其輸出隨著偏差的增大而增大,并且比系數Kp越大,系統(tǒng)的動態(tài)響應時間就越長,極易引起系統(tǒng)的不穩(wěn)定。并且比例環(huán)節(jié)存在靜差,無法消除;在積分環(huán)節(jié)中,積分調節(jié)的作用在于偏差存在的情況下
25、,當偏差消失后,積分調節(jié)不起作用,從而使系統(tǒng)迅速穩(wěn)定,即積分環(huán)節(jié)可以消除靜差。另外,積分調節(jié)作用的快慢與積分時間常數Ti有關,積分時間常數越大,其調節(jié)作用起慢,積分時間常數越小,其調節(jié)作用越明顯;在微分環(huán)節(jié)中,其調節(jié)作用僅在于偏差出現的那一時刻,其后無論偏差有多大,微分調節(jié)便不起任何作用。其最大的特點就是調節(jié)速度快,能夠快速調節(jié)系統(tǒng),減少系統(tǒng)的調整時間。</p><p> 因此當出現偏差時,只要通過實驗確定好比
26、例調節(jié)系統(tǒng)Kp,積分時間常數Ti和微分時間常數Td后,當系統(tǒng)由于慣性作用或一些干擾信號的作用使系統(tǒng)出現偏差時,開始通過比例和微分調節(jié),系統(tǒng)便能夠迅速的作出響應,即系統(tǒng)的動態(tài)響應快,最后通過積分的作用消除靜差,使系統(tǒng)趨于穩(wěn)定。 </p><p> 圖2懸架控制系統(tǒng)的結構框圖</p><p> 2.3汽車懸架系統(tǒng)振幅控制器設計方案論證</p><p> (1)方案
27、一:本方案采用單片機8031為微處理器,壓電式加速度傳感器,A/D模數轉換芯片采用12位的逐次逼近型AD574,執(zhí)行機構采用電壓型輸出控制的直流電機,單片機輸出的控制信號的處理采用DAC0809處理芯片。</p><p> ?。?)方案二:本方案采用ATMEL公司的51系列單片AT89C51,壓電式加速度傳感器,采用A/D模數轉換采用8位的逐次逼近型的ADC0809,執(zhí)行機構采用脈沖控制的三相步進電機。</
28、p><p> 通過比較分析,本設計采取方案二,從處理器角度看,AT89C51功能更加完善,亦不需要存儲器的擴展,使用方便;從控制系統(tǒng)的要求來看,本次設計采用8位的A/D模數轉換器即可符合要求,如采用12位的A/D,價格會比較昂貴,會增加控制器的開發(fā)成本;從執(zhí)行機構的角度來看,步進電機控制方便,精確度高,單片機輸出的控制信號通過驅動電路便可驅動電機,若采用直流電機還需要增設D/A芯片及其接口電路,減少了不必要的麻煩。
29、</p><p> 2.4汽車懸架系統(tǒng)振幅控制器設計總流程圖 </p><p> 此系統(tǒng)方案的設計過程如圖3所示,在充分明確設計的功能和要求下,細化設計的工作任務,其包含硬件部分和軟件部分。</p><p> ?。?)在系統(tǒng)硬件部分中,通過分析,確定控制器所要求的各類芯片,包括單片機的型號,A/D模數轉換器,以及執(zhí)行機構電機(步進電機和直流電機)的選取等,細化各
30、部件的設計過程,然后繪制電路草圖,確認無誤后便可用計算機軟件protel繪制電路原理圖,最后通過電氣規(guī)則檢查來判斷電路設計的正確情況。</p><p> ?。?)在系統(tǒng)軟件部分中,根據硬件電路部分明確軟件的主體設計思想,以程序流程圖的形式表達。以流程圖為設計思路,用相關編程軟件進行 圖3懸架系統(tǒng)設計總流程圖</p><p> 程序的設計(如Keil),通過反復的調
31、試程序直至其正確。</p><p> 3汽車懸架系統(tǒng)振幅控制器的硬件設計過程</p><p> 3.1控制器主要芯片的選擇</p><p> 3.1.1單片機控制芯片的選擇:</p><p> 8031:此單片機為MCS-51系列的基本典型產品,其內部包括一個8位CPU、128個字節(jié)RAM,21個SFR,4個8位I/O口,2個16位定
32、時/計數器。</p><p> AT89C51:此單片機為ATMEL公司的51系列單片機,除具有MCS-51系列的基本功能外,增加了4K的flash閃存,并且具有6個中斷源和一個UART串口。</p><p> 從8031和AT89C51的對比中可以看出,AT89C51具有更高的性能,且不需要擴展程序存儲器,使用方便,且具有flash閃存,可以方便的擦除和改寫程序,故本次設計采用AT8
33、9C51為控制芯片。</p><p> 3.1.2電機的選擇:</p><p> 現在市場上的電機型號多種多樣,但是總的來說可以分為直流電機和步進電機兩種,</p><p> 電機作為一種微機控制系統(tǒng)中常用的執(zhí)行元件,無論是哪一種在特定的場合,特定的工作環(huán)境下,要求不盡相同,各有其特點:</p><p> 直流電機可以分為電壓驅動的和
34、電流驅動的電機,只要控制輸出的電流或電壓的大小便可以方便地控制直流電機的轉動速度,亦很容易實現其正反控制。</p><p> 步進電機的慣性相對比較小,因而能夠做到快速的啟動和停止,定位精度非常高,不會由于是旋轉量的變量而產生誤差積累,此外,它的輸入信號為一個周期的脈沖電流,即微處理器輸出的控制信號通過電機驅動電路可以直接驅動步進電機使其按照特定的規(guī)律轉動。不需要增加D/A信號的轉換,使用比較方便。因此為提高控
35、制系統(tǒng)的精確及其穩(wěn)定性,在這次設計中選用的是三相步進電機。</p><p> 3.1.3 A/D模數轉換芯片的選擇:</p><p> A/D模數轉換芯片的選擇主要根據A/D轉換器的性能指標以及控制系統(tǒng)的要求,性能指標越高,A/D所采集的數據越精度,但是價格也越高,所以應根據具體情況具體分析。</p><p> ADC0809芯片是帶有8位A/D轉換器、8路多
36、路開關以及微處理器兼容不得的控制邏輯CMOS組件,它是逐次逼近式A/D轉換器,可以和微機直接接口。由于對汽車懸架振幅控制系統(tǒng)的要求來看,8位的ADC0809精度、分辨率及轉換時間已經符合要求,故本次設計就選擇最常用的ADC0809控制芯片。</p><p> 3.2懸架系統(tǒng)控制器整體硬件電路設計</p><p> 3.2.1簡單介紹各主要元器件結構及其功能</p><
37、;p> ?。?)AT89C51單片機:</p><p> 在此單片機上集成了微處理器(CPU),內部數據存儲器(RAM),以及輸入輸出端口。采用40只引腳的雙列直插封裝方式(見圖4),本次設計用到的各引腳的功能如下:</p><p> ?、買/O口引腳:共4個,分別是P0、P1、P2、P3,均為8位口。這4個I/O口可分別作為基本的Input、Output端口。其中P0口可作為數據
38、總線 </p><p> 和地址總線(低8位)分時復用的端口,P2口可 圖4 AT89C51引腳圖</p><p> 作為地址總線的高8位,即P0口和P2口地起構函數成16位地址總線,可供尋址的地址范圍是:64KB。P3口具有第二功能,即可以產生中斷,定時計數等功能。</p><p> ?、跁r鐘引腳X1及 X2:用于接晶體振蕩器,此次設計用的晶
39、振頻率為12MHZ。</p><p> ?、跼ESET腳:是復位信號輸入端,高電平有效。 </p><p> ?、蹵LE腳:地址鎖存允許信號,用于鎖存單片機輸出的低,高電平有效</p><p> ⑤EA腳:其功能
40、為內外程序存儲器選擇控制端。當EA為高電平時,單片機訪問內部程序存儲器,當EA為低電平時,單片機直接訪問片外程序存儲器。 </p><p> ?。?)地址鎖存器74LS373:如下圖5所示。</p><p> D0~~D7:8位數據輸入線</p><p> Q0~~Q7:8位數據輸出線</p><p> C:
41、數據輸入鎖存選通信號,高電平有效。當該信號為高電平時,外部數據選通到內部鎖存器,負跳變時,數據鎖存。 </p><p> OC:數據輸出允許信號,低電平有效。 (3)模數轉換芯片ADC0809:如下圖6所示。 圖5 74LS373引腳圖</p><p> IN7~IN0:為8條模擬量輸
42、入通道 </p><p> ?、诘刂份斎牒涂刂凭€:4條。ALE為地址鎖存允許輸入線,高電平有效。當ALE=1時,地址鎖存與譯碼器將A、B、C三條地址線的地址信號進行鎖存,通過A、B、C的組合以選中IN7~IN0上的一路模擬量輸入。</p><p> ③數字量輸出及控制線:11條</p><p> 當START=1時
43、,開始進行A/D轉換,在轉換期間START=0。 </p><p> EOC為轉換結束信號,當EOC=1時,表時轉換結束。OE=1時 圖6 ADC0809引腳圖</p><p> 可以輸出轉換得到的數據。D7~D0為數字量輸出線。
44、 </p><p> ?、茈娫葱盘柤捌渌?5條 </p><p> (4)步進電機驅動芯片ULN2003,如下圖7所示:</p><p> IN1~IN7為信號輸入端,內部為開路開路輸出達林頓驅動器,最高可驅動電壓
45、50V,GND為接地端,COM可以接電源或懸空。</p><p> 3.2.2各部分硬件電路設計:</p><p> (1)時鐘電路圖:本設計采用內部時鐘方式,如圖8所示: 圖7 ULN2003引腳圖 </p><p> ?。?)復位電路圖:
46、 </p><p> 本復位電路如圖9所示,采用的是手動按鍵電平觸發(fā)方式經電阻與電源+5V接通而實現的。</p><p> 圖8 時鐘電路 圖9 復位電路</p><p> (3)報警電路圖:</p><p> 本報警電路采用PNP三極管作為驅動器件, 電阻R2輸
47、出端接到單片機P1.0上,當單片機檢測到車身振幅超過15MM時,P1.0輸出高電平,三極管導通,便可驅動揚聲器發(fā)出報警聲響。</p><p> (4)步進電機驅動電路圖:</p><p> 此電路驅動采用集成電路芯片,步進電機驅動芯片ULN2003,ULN2003具有很強的驅動能力,最大可驅動輸出電壓達50V。其電路圖連接如圖10所示:</p><p> 圖1
48、0 步進電機驅動電路</p><p> (5)電路原理圖(見附錄)</p><p> ?。?)硬件電路的仿真:開啟PC機,在桌面上雙擊“DXP.EXE”進入Protel界面,打開電路原理圖,然后選中菜單“Project”→“Compile Document”進行電氣檢查編譯,然后點擊軟件右下角的“system”菜單→“Messages”即可觀察仿真的結果,如果電氣連接正確則“Messa
49、ges”里面的內容為空(仿真結果見附錄)</p><p> 4汽車懸架系統(tǒng)振幅控制器的系統(tǒng)軟件設計過程</p><p> 任何一個應用系統(tǒng),它們都有著自己的硬件系統(tǒng)和軟件系統(tǒng), 少了任何一個部分都不可能稱之為一個完整的應用系統(tǒng),它們之間是相互依存的一個整體,硬件系統(tǒng)是軟件系統(tǒng)的一個基礎和前提,為軟件系統(tǒng)提供了一個操作平臺;而軟件系統(tǒng)是硬件系統(tǒng)的靈魂 ,它對硬件系統(tǒng)起到擴充和完善的作用。
50、可想而知軟件系統(tǒng)與硬件系統(tǒng)同等重要,下面為汽車懸架系統(tǒng)振幅控制器的軟件方面的具體設計過程:</p><p> 4.1 ADC0809芯片起始地址的確定:</p><p> AD芯片的通道1地址為:0xf9 (AD地址為:0xf8)</p><p> ADC0809的A、B、C端分別接至單片機引腳的P0.0、P0.1、P0.2,各通道的選擇可以通過A、B、C的組
51、合而確定(即由P0.2~P0.0確定),而通道0即為ADC0809芯片的起始地址,所以ADC0809芯片的起始地址為:0xf8,由于本設計將傳感器的信號接至通道1,故通道1的芯片地址為:0xf9.</p><p> 4.2采樣周期T的確定:</p><p> 設地面對汽車車身的輸入頻率為f=5HZ,則角頻率ω=2*3.14*5=31.4。根據采樣定理可得fs>=2f,在此次設計中
52、取fs=4f=20HZ,即可得采樣周期為T=0.05S,本設計采用晶振為12HZ,采用定時器0、模式1,則計數的脈沖個數為:(50*1000)*12/foc=50000個,故有:</p><p> TH0=(65536-50000)/256</p><p> TL0=(65536-50000)%256</p><p> 4.3車身垂直加速度與振幅位移的變換思想
53、:</p><p> 由于壓電式加速度傳感器檢測的是車身的垂直振動加速度值,在程序的設計過程中必須將其轉化為車身振動的大小,即振幅的位移,其轉化過程如下:</p><p> 假設路面對車身的輸入為x=Asinωt</p><p> V=dx/dt=Aωcosωt</p><p> a= dV/dt=-A(ω^2)*sinωt</
54、p><p> x/a=-1/(ω^ 2);</p><p> h=x=-a/(ω^2)</p><p> 首先先設定汽車車身振幅范圍為0-10mm即,h=10mm為最大值,當汽車振動幅度超過10mm時即(h>10mm),必須執(zhí)行PID調節(jié),如果h<10mm,則繼續(xù)采樣加速度值,繼續(xù)比較。但是當h>15mm時,峰鳴器必須響,發(fā)出報警聲,以提示使用者
55、。</p><p> 4.4數字PID控制算法:</p><p> 直次PID控制算法采用的增量式PID控制算法,因為增量式PID算法只需要保持當前時刻以前三個時刻的誤差即可。它與位置式PID相比,有以下優(yōu)點:</p><p> 首先:位置式PID算法每次輸出與整個過去狀態(tài)有關,計算式中要用到過去誤差的累加值,因此容易產生較大的計算誤差,而增量式PID只需要計
56、算增量,計算誤差當精度不足時對控制量的計算影響較小。</p><p> 其次:采用增量算法,由于其與原始狀態(tài)無關,易于實現手動到自動的無沖擊切換。</p><p> 另外,由于執(zhí)行機構需要的是控制變量的絕對值而不是其增量,這時仍可采用增量式計算,但是輸出則采用位置式的輸出形式,算法公式如下:</p><p> y(n)=y(n-1)+ δy(n)=y(n-1)
57、+Kp*(δe(n)+I*e(n)+D*δe(n)^2),</p><p> 把δe(n)=e(n)-e(n-1), δe(n)^2=δe(n)-2*δe(n-1)+e(n-2)代入上式,則:</p><p> y(n)=y(n-1)+Kp*[(e(n)-e(n-1))+I*e(n)+D*(e(n)-2*e(n-1)+e(n-2))]</p><p> 式中:
58、e(n)=w-u(n);</p><p> W----給定值振幅位移量</p><p><b> Kp---比例系數</b></p><p> I=T/Ti---積分系數</p><p> D=Td/T---微分系數</p><p><b> T---采樣周期</b>
59、;</p><p> 由于本次的課程設計時間有限,關于PID控制中的各參數,如比例系數Kp、積分環(huán)節(jié)Ki、微分環(huán)節(jié)Kd的確定事先已經假定得出,沒有經過Matlab軟件的仿真得出。本次設計中各參數的取值如下:</p><p> Kp=15;Td=5;Ti=0.005;T=0.05</p><p> 因此,Ki=Kp*T/Ti=150;Td=Kp*Td/T=150
60、0</p><p> 4.5步進電機驅動算法及編碼</p><p> 要利用單片機實現對步進電機的控制,必須注意以下問題:</p><p> 5.1電機控制需要的脈沖序形的形成:</p><p> 要實現對步進電機的控制,首先微機能輸出具有一定周期的控制脈沖,在微機控制系統(tǒng)中,脈沖序列的產生是通過軟件實現的,或者通過定時/計數器定時而
61、產生一定周期的脈沖,本次設計采用的是第二種方法。實現的方法是:先輸出一個高電平,延時段時間后,再輸出一個低電平,然后再延時,改變延時時間的長短,就可以改變脈沖的周期。</p><p> 4.5.2控制步進電機的旋轉方向:</p><p> 對于電機選擇:選用三相步進電機,其通電方式采用六拍工作方式,通電順序為:</p><p> 正向旋轉:A→AB→B→BC→
62、C→CA→A;</p><p> 反向旋轉:A→CA→C→BC→B→AB→A。</p><p> 本設計僅需要使用正向旋轉控制,并且A、B、C組線圈分別接至微處理器的P1.1、P1.2、P1.3,其正轉方式的控制模型如下:</p><p> 將此控制編碼以數組的形式存入單片機連續(xù)內存單元RAM中,根據需要進行調用即可實現按一定的順序對電機的線圈進行通電。<
63、;/p><p> 4.6繪制系統(tǒng)程序流程圖</p><p> 4.6.1主程序流程圖:如圖11所示</p><p> 4.6.2采樣子程序的流程圖:如圖12所示</p><p> 4.6.3數字平均濾波子程序流程圖,如圖13所示</p><p> 4.6.4數字PID調節(jié)子程序流程圖:如圖14所示</p&g
64、t;<p> 4.6.5步進電機程序流程圖:如圖15所示:</p><p> 圖15步進電機程序流程圖</p><p><b> 4.7軟件程序調試</b></p><p> 在PC機上運行Keil編程軟件,根據上面繪制的程序流程圖編寫程序,本設計采用的編程語言為C51,將程序的編寫過程實行模塊化,如分別編寫數據采集模塊子
65、程序、數字平均濾波模塊子程序、數字PID控制模塊子程序、步進電機驅動模塊子程序等。在編寫過程中分別對各個模塊進行調試和編譯,編寫完成后,再通過主函數的調用即可。</p><p> 最后,編寫好的完整程序亦需要調試和編譯,本設計程序的調試編譯結果見(附錄)。</p><p><b> 結 論</b></p><p> 通過此這次課程設計的
66、學習,不僅再次熟悉了單片機的工作原理及自動控制理論的相關基本知識,并且對各種芯片的使用方法亦有了進一步的認識,從整體上把握了控制系統(tǒng)設計的知識,收獲很大,而且對汽車懸架系統(tǒng)的控制方法和算法有了更深入的了解和認識,汽車懸架系統(tǒng)對控制系統(tǒng)的實時性要求很高,現代的汽車不僅僅是一種交通工作,更是一種生活享受,通過數字PID的控制算法更能夠精確的控制汽車的振動幅度,使其達到預期的效果。</p><p><b>
67、 致 謝</b></p><p> 本設計是在**教師的悉心指導下完成的。她們淵博的專業(yè)知識,嚴謹的治學態(tài)度,精益求精的工作作風,誨人不倦的高尚師德,嚴以律己、寬以待人的崇高風范,樸實無華、平易近人的人格魅力對我影響深遠。不僅使我樹立了遠大的學術目標、掌握了控制系統(tǒng)的基本研究方法,還使我明白了許多為人處世的道理。本設計從選題到完成,每一步都是在老師的指導下完成的,傾注了老師們大量的心血。另外,本設
68、計的完成也離不開各位同學給我的建議和幫助,是他們讓我明白了團隊合作的精神。在此,向各位幫助我的老師和同學們表示崇高的敬意和衷心的感謝!</p><p><b> 參考文獻</b></p><p> [1]《新編MCS-51單片機應用設計》張毅剛、彭喜元等編著名,哈爾濱工業(yè)大學出版社</p><p> ?。?]《單片機應用技術》劉守義主編
69、, 西安電子科技大學出版社 2002</p><p> ?。?]《汽車電器及電子技術》孫仁云、付百學 ,機械工作出版社</p><p> ?。?]《計算機控制技術》臺方、張子萍 中國水力水電出版社 </p><p><b> 附錄(代碼) </b></p><p> /****************頭
70、文件及函數聲明及調用**************************************/</p><p> #include<stdio.h></p><p> #include<reg51.h></p><p> #include<math.h></p><p> #include &l
71、t;intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> void dingshi_0();</p><p> void dingshi_1();</p><p> floa
72、t lubo(void);</p><p> float PID(void);</p><p> void dianji();</p><p> delay(uchar);</p><p> /***********************************************************************
73、**************/</p><p> /******************************各個變量的定義***************************************/</p><p> uint Kp,Ki,Kd; /*定義PID各參數,并為其分配內存空間*/</p><p> f
74、loat x,un,yn,yn_1,en,en_1,en_2,Td,Ti,T;</p><p> sbit P32=P3^2;</p><p> sbit P33=P3^3;</p><p> sbit P27=P2^7;</p><p> sbit P10=P1^0;</p><p><b> b
75、it flag;</b></p><p> sbit EOC=P2^1; /*Port P2.1 connect to EOC*/</p><p> uchar channel=0xf9; /*通道INT1*/</p><p> float getdata[10]; /*A/D轉換后的數據*/</p><p
76、> uchar i=0;</p><p> uchar m=0;</p><p> /***********************************************************************************/</p><p> /***********************主函數*************
77、*****************************************/</p><p> void main()</p><p><b> {</b></p><p> P27=0;/*使P27端口保持為低電平,與RD,WR同為低電平,以完成A/D數據的轉換和讀取。*/</p><p><b&g
78、t; EX1=1;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> loop: dingshi_0(); </p><p> un=lubo();</p><p><b>
79、; yn=PID();</b></p><p> if (flag==1)</p><p><b> {</b></p><p><b> flag=0;</b></p><p> goto loop;/*flag=1說明振幅控制在一定的范圍之內,不需調節(jié),返回定時.否則執(zhí)行e
80、lse*/</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> delay(6); /*采用離線控制方式,沒有立即實時控制,延時控制輸出*/</p><p
81、><b> dianji();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*************************到此主函數結束*
82、*****************************************/</p><p> /**************************從這各子函數開始*******************************************/</p><p> float lubo(void) /*數字平均濾波子程序*/</p><p>
83、;<b> {</b></p><p> uchar n=0;</p><p> float sum,stmp;</p><p> for (n=0;n<=9;n++)</p><p><b> {</b></p><p> sum=sum+getdata[
84、n];</p><p><b> }</b></p><p> stmp=sum/10;</p><p> return stmp;</p><p><b> }</b></p><p> float PID(void )</p><p>
85、<b> {</b></p><p> float w0=31.4; /*選定f=5HZ,w0=2*3.14*5=31.4*/</p><p><b> float cy;</b></p><p> x=10;/*給定振動幅度為10mm*/</p><p> Kp=15;Td=5;Ti
86、=0.005;/*自定義比例,積分,微分常數*/</p><p> T=0.02; /*采樣周期*/</p><p> Kd=Kp*Td/T;</p><p> Ki=Kp*T/Ti;</p><p> cy=fabs(un/(w0*w0));/*將采樣所得的加速度值轉為振動位移; 并取其絕對值*/</p
87、><p><b> en=10-cy;</b></p><p> if (en <0)</p><p><b> {</b></p><p> if (15-cy<0)</p><p><b> {</b></p><
88、;p><b> P10=1;</b></p><p> delay(2); /*延遲1S*/</p><p><b> P10=0;</b></p><p><b> }</b></p><p> yn=yn_1+Kp*(en-en_1)+Ki*en+Kd*
89、(en-2*en_1+en_2);</p><p><b> yn_1=yn;</b></p><p> en_2=en_1;</p><p><b> en_1=en;</b></p><p> return yn;</p><p><b> }<
90、/b></p><p> else/*如果檢測結果在10MM以內,則返回定時子程序繼續(xù)采樣檢測*/</p><p><b> {</b></p><p><b> yn_1=yn;</b></p><p> en_2=en_1;</p><p><
91、b> en_1=en;</b></p><p> flag=1;/*設置標志位,如果flag=1,則說明振幅控制在一定的范圍之內,不需要輸出調節(jié)*/</p><p><b> }</b></p><p><b> }</b></p><p> void dianji()&
92、lt;/p><p><b> {</b></p><p> dingshi_1();</p><p><b> }</b></p><p> void dingshi_1()</p><p><b> {</b></p><p&
93、gt; TMOD=0x00;</p><p> TH1=(8192-20000)/32; /*延時周期為20MS, 初值高位送至TH1*/</p><p> TL1=(8192-20000)%32; </p><p><b> EX1=1;</b></p><p><b> TR1=1;&l
94、t;/b></p><p><b> while(1);</b></p><p><b> }</b></p><p> /***********************至此各子函數結束**********************************************/</p><
95、p> /******************************從這各定時中斷程序開始*********************************/</p><p> void dingshi_0()</p><p><b> {</b></p><p> TMOD=0X01;</p><p>
96、 TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> ET0=1;</b></p><p><b> EA=1;</b></p><p><b> TR0=1;</b></p>
97、;<p><b> while(1);</b></p><p><b> }</b></p><p> void tim_0() interrupt 1</p><p><b> {</b></p><p><b> TR0=0;</b&
98、gt;</p><p> P33=1;/*使P33即int0端口產生一個下跳沿中斷*/</p><p><b> _nop_();</b></p><p><b> P33=0;</b></p><p><b> _nop_();</b></p>
99、<p> if(i!=10) /*如果定時采樣了10次,則退出,否則繼續(xù)采樣*/</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p>&
100、lt;p><b> TR0=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> ET0=0;</b></
101、p><p><b> TR0=0;</b></p><p><b> i=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> void int_1() interrupt
102、 2 /*利用外部中斷1服務程序進行A/D數據采樣*/</p><p><b> {</b></p><p> P0=channel;/*通道#1號地址*/</p><p> WR=1;/*啟動A/D轉換*/</p><p><b> WR=0;</b></p>&
103、lt;p><b> WR=1;</b></p><p> while(EOC==0);</p><p> RD=0; /*轉換結束,使OE=0,數據輸出*/</p><p> getdata[i]=P0;</p><p><b> i++;</b></p>&
104、lt;p><b> }</b></p><p> void tim_1() interrupt 3 /*定時器1中斷服務程序*/</p><p><b> {</b></p><p> uchar tongdian[]={0x02,0x06,0x04,0x0C,0x08,0x0A};/*三相電機六拍工
105、作線圈通電順序編碼*/</p><p> P1=tongdian[m]; /*輸出編碼驅動電機轉動*/</p><p><b> m++;</b></p><p> if (m==6)/*轉動一周*/</p><p><b> {</b></p><
106、;p> yn--;/*步數減一*/</p><p><b> m=0;</b></p><p> if (yn<=0)</p><p><b> {</b></p><p><b> ET1=0;</b></p><p>&
107、lt;b> TR1=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /************************至此各定時中斷程序結束******
108、*********************************/</p><p> /****************************延時子程序開始********************************************/</p><p> delay(uchar a){</p><p><b> uint b=0;<
109、;/b></p><p><b> uchar c;</b></p><p> for (b=0;b>50000;b++) /*延時時間=0.5XC,如0.5X2=1S*/</p><p> for (c=a;c>0;c--);</p><p> }
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論