版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上 指導教師評定成績: 審定成績: 重 慶 郵 電 大 學自 動 化 學 院計算機控制技術課程設計報告 設計題目:雙直流電機同步控制系統(tǒng)單位(二級學院): 自 動 化 學 院 學 生 姓 名: 專 業(yè): 自 動 化 班 級: 學 號: 指 導 教 師: 設計時間:2014 年5 月重慶郵電大學自動化學院制專心-專注-專業(yè)目 錄 (5)電源模塊. 9 五、軟件的設計與實現(xiàn) 14(1)主程序 .14(2)PID控制算法與參數(shù)整定16(3)干擾的抑制17(4)采樣周期的選定18(5)PID調(diào)節(jié)18(6)測速子程序20(7)單片機資源配置.20七、參考文獻23一、 計算機控制技
2、術課程設計題目雙直流電機同步控制系統(tǒng) 課程設計要求(1)實現(xiàn)電機加速減速,正反轉。(2)通過顯示屏顯示運行情況。(3)接受鍵盤輸入的控制信號。(4)產(chǎn)生PWM脈沖,對直流電機進行調(diào)速。(5)接受脈沖測速電路測得的電機的轉速。課程設計說明本次課程設計實現(xiàn)了對直流電機的同步調(diào)速控制。利用PWM來實現(xiàn)直流電機和步進電機的正轉、反轉、加速、減速、同步調(diào)速等操作,電動機的調(diào)速在硬件上實現(xiàn)了直流電機轉速的調(diào)節(jié)以及正反轉的控制同時在LCD上實時顯示,整個硬件系統(tǒng)工作穩(wěn)定。摘要本文旨在建立兩臺直流電動機同步控制系統(tǒng)(速度控制)的數(shù)學模型。首先根據(jù)題目,并通過查找資料對對象進行分析,了解基本工作原理。
3、然后畫出系統(tǒng)運行的方框圖并對系統(tǒng)過程進行分析。其次就是建立數(shù)學模型、求出系統(tǒng)的傳遞函數(shù),然后進行PID控制算法。在硬件方面,通過STC12C5A60S2單片機,實現(xiàn)對兩部直流電動機的啟動、停止、加速、減速和轉向的控制,具體硬件部分由晶振電路、復位電路、顯示電路、鍵盤電路、電源電路、單片機、電機驅動電路、測速電路等組成。最后再用C語言編程,實現(xiàn)兩臺電機的速度同步控制。關鍵詞:同步控制 PID控制算法 PWM AltiumDesigner 調(diào)速 正反轉二、 控制對象分析31系統(tǒng)運行結構圖與系統(tǒng)框圖圖1系統(tǒng)運行結構圖說明:輸入電壓Ui控制電機1,在控制器1以及驅動電路1的作用下運行,通過測速傳感器將
4、轉速轉為信號與電機2轉速比較后與電機2的反饋信號作為輸入信號控制電機2。電源電路DCmotor電機驅動電路單片機晶振電路復位電路DCmotor顯示電路鍵盤電路測速電路圖2直流調(diào)速系統(tǒng)框圖3.2建立系統(tǒng)數(shù)學模型 3.2.1控制模塊本設計選用的是STC12C5A60S2,STC12C5A60S2/AD/PWM系列單片機是單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。其主要特性如下:1.增強型8051
5、 CPU,1T,單時鐘/機器周期,指令代碼完全兼容傳統(tǒng)80512.工作電壓:STC12C5A60S2系列工作電壓:5.5V- 3.3V(5V單片機)3.工作頻率范圍:0 - 35MHz,相當于普通8051的 0420MHz4.片上集成1280字節(jié)RAM5.通用I/O口(36/40/44個),復位后為:準雙向口/弱上拉(普通8051傳統(tǒng)I/O口),可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏 。每個I/O口驅動能力均可達到20mA,但整個芯片最大不要超過55mA6.有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM)7. 看門狗8.內(nèi)部集成MA
6、X810專用復位電路(外部晶體12M以下時,復位腳可直接1K電阻到地)9.共4個16位定時器 ,兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發(fā)生器, 做串行通訊的波特率發(fā)生器, 再加上2路PCA模塊可再實現(xiàn)2個16位定時器14. 2個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘15.外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊,Power Down模式可由外部中斷喚醒,INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5, RxD/P
7、3.0,CCP0/P1.3 (也可通過寄存器設置到P4.2 ), CCP1/P1.4 (也可通過寄存器設置到P4.3) 16. PWM(2路)/PCA(可編程計數(shù)器陣列,2路)。也可用來當2路D/A使用 ,也可用來再實現(xiàn)2個定時器,也可用來再實現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷均可分別或同時支持)17.A/D轉換, 10位精度ADC,共8路,轉換速度可達250K/S(每秒鐘25萬次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時器或PCA軟件實現(xiàn)多串口19. STC12C5A60S2系列有雙串口,后綴有S2標志的才有雙串口,RxD2/P1.2(可通過
8、寄存器設置到P4.2),TxD2/P1.3(可通過寄存器設置到P4.3)主電路控制模塊的硬件電路包含復位電路,時鐘電路和電源電路3部分,滿足單片機正常工作,具體硬件電路如下圖:圖3 STC12C5A60S2的最小系統(tǒng)圖3.2.2驅動模塊 H橋驅動電路是一種典型的直流電機控制電路。圖4所示,H橋驅動電路由四個三極管組成H橋條橋臂,通過控制對角橋臂上的一組三極管,使電流以不同的方向流過電機,從而控制電動機的轉向。因電動機是電感元件,當電動機在正反轉轉換過程中,二極管起釋放反電動勢的作用。圖4 H橋驅動電本設計中直流電機驅動部分采用專用電機驅動芯片L298對電機進行驅動。L298可同時驅動兩個二相或
9、一個四相步進電機,內(nèi)含兩個全雙H橋驅動器,接受標準TTL邏輯準位信號。直流電機驅動模塊的硬件實現(xiàn)如圖所示:圖5 電動機驅動模塊3.2.3顯示模塊3.2.3.1管腳: 1602共16個管腳。編程主要用到的三個管腳,分別是:RS(數(shù)據(jù)命令選擇端),R/W(讀寫選擇端),E(使能信號)。RS 為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。R/W為讀寫選擇,高電平進行讀操作,低電平進行寫操作。E端為使能端,后面和時序聯(lián)系在一起。除此外,D0D7分別為八位雙向數(shù)據(jù)線。3.2.3.2操作時序:表 1RSR/W操作說明00寫入指令碼D0D701讀取輸出的D0D7狀態(tài)字10寫入數(shù)據(jù)D0D711從D
10、0D7讀取數(shù)據(jù)設計中顯示模塊采用的是1602LCD顯示。圖6 LCD顯示器3.2.4 PWM調(diào)速原理PWM(脈沖寬度調(diào)制)是通過控制固定電壓的直流電源開關頻率,改變負載兩端的電壓,從而達到控制要求的一種電壓調(diào)整方法。PWM可以應用在許多方面,比如:電機調(diào)速、溫度控制、壓力控制等等。在PWM驅動控制的調(diào)整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并且根據(jù)需要改變一個周期內(nèi)“接通”和“斷開”時間的長短。通過改變直流電機電樞上電壓的“占空比”來達到改變平均電壓大小的目的,從而來控制電動機的轉速。也正因為如此,PWM又被稱為“開關驅動裝置”,如圖所示:圖7 PWM信號的占空比在PWM調(diào)速時,占空比是一
11、個重要參數(shù)。以下3種方法 都可以改變占空比的值。(1)定寬調(diào)頻法這種方法是保持t1不變,只改變t2,這樣使周期(或頻率)也隨之改變。(2)調(diào)頻調(diào)寬法這種方法是保持t2不變,只改變t1,這樣使周期(或頻率)也隨之改變。(3)定頻調(diào)寬法這種方法是使周期T(或頻率)保持不變,而同時改變t1和t2。本設計采用單片機內(nèi)定時器產(chǎn)生PWM脈沖,設計方法是調(diào)整一個周期內(nèi)高電平持續(xù)時間占一個周期時間的比例,及調(diào)整脈沖的占空比。將產(chǎn)生的脈沖輸入到L298的EN A端,通過控制H橋一路橋臂兩個晶閘管的導通時間來控制電機的轉速。3.2.5電源模塊單片機系統(tǒng)需要一個穩(wěn)定的工作電壓才能正常工作。圖8 穩(wěn)壓電路3.2.6轉
12、速檢測模塊本系統(tǒng)采用增量式光電旋轉編碼器測量電機的速度。將光電編碼器與電動機相連,當電動機轉動時,帶動碼盤旋轉,便發(fā)出相應的信號。光電編碼器由光源,光電轉盤,光敏元件和光電整形放大電路組成。光電轉盤與被測軸連接,光源通過光電轉盤的透光孔射到光敏元件上,當轉盤轉動時,光敏元件便發(fā)出與轉速成正比的脈沖信號,為了判別電機的轉向,光電編碼器輸出兩路相隔90度電脈沖角度的正交脈沖。利用光電編碼器進行數(shù)字測速的常用方法有兩種:M法和T法。(1)M法測速:M法又叫定時計數(shù)法,是用計數(shù)器記取規(guī)定時間內(nèi)光電編碼器輸出的脈沖個數(shù)來反映轉速值,即在規(guī)定的時間間隔T內(nèi),測量編碼器光柵所產(chǎn)生的脈沖數(shù)來獲得被測的速度值。
13、設編碼器光柵每轉一圈發(fā)出的脈沖數(shù)為Z,且在規(guī)定的時間T內(nèi),測得的脈沖數(shù)為M,則電機每分鐘轉數(shù)為:n=60M/ZT (1)將轉速實際值和測量值之差與實際值之比定義為測量誤差率,反映了測速方法的準確性,越小,準確度越高。M法測速誤差率取決于編碼器的制造精度,以及編碼器輸出脈沖前沿和測速時間采樣脈沖前沿不齊所造成的誤差等,最多可以產(chǎn)生一個脈沖的誤差。因此,M法測速誤差率的最大值為: (2)由上式可知,誤差率與M成反比,即脈沖數(shù)越大,誤差越小,故M法測速適用于高速段。(2)T法測速:T法又叫定數(shù)計時法,是用定時器記取光電編碼器輸出脈沖一個周期內(nèi)的高頻時基個數(shù),然后取其倒數(shù)來反應速度值,即測量相鄰兩個脈
14、沖的時間間隔來確定被測速度。設編碼器光柵每轉一圈發(fā)出的脈沖數(shù)為Z,定時器的時基是一已知頻率為F的高頻脈沖,定時器的起始和終止由編碼器光柵脈沖的兩個相鄰脈沖的起始沿控制。若定時器的讀數(shù)為M,則電機每分鐘的轉速為: (3)T法測速的誤差產(chǎn)生原因與M法相仿,定時器的計數(shù)M最多存在一個脈沖的誤差,因此,T法測速誤差率的最大值為: (4)低速時,編碼器相鄰脈沖間隔時間長,測得的高頻脈沖個數(shù)多,誤差小,故T法適用于低速段。我們采用M法測速。所采用的光電編碼器光柵每轉一圈發(fā)出16個脈沖。機械頻率1MHZ,采樣頻率2MHZ。測速電路圖如下圖所示:圖9 轉速檢測模塊四、硬件電路PCB及實物圖的設計4.1電路板的
15、設計(1)、利用原理圖設計工具繪制原理圖,并且生成對應的網(wǎng)絡表。當然,有些特殊情況下,如電路板比較簡單,已經(jīng)有了網(wǎng)絡表等情況下也可以不進行原理圖的設計,直接進入PCB設計系統(tǒng),在PCB設計系統(tǒng)中,可以直接取用零件封裝,人工生成網(wǎng)絡表。(2)、手工更改網(wǎng)絡表 ,將一些元件的固定用腳等原理圖上沒有的焊盤定義到與它相通的網(wǎng)絡上,沒任何物理連接的可定義到地或保護地等。將一些原理圖和PCB封裝庫中引腳名稱不一致的器件引腳名稱改成和PCB封裝庫中的一致,特別是二、三極管等。(3)、畫出自己的封裝庫 將自己所畫的器件都放入一個自己建立的PCB 庫專用設計文件。(4)、PCB板的設計 進入PCB系統(tǒng)后的第一步
16、就是設置PCB設計環(huán)境,包括設置格點大小和類型,光標類型,板層參數(shù),布線參數(shù)等等。大多數(shù)參數(shù)都可以用系統(tǒng)默認值,而且這些參數(shù)經(jīng)過設置之后,符合個人的習慣,以后無須再去修改。然后規(guī)劃電路板,主要是確定電路板的邊框,包括電路板的尺寸大小等等。在需要放置固定孔的地方放上適當大小的焊盤。 注意:在繪制電路板地邊框前,一定要將當前層設置成Keep Out層,即禁止布線層。(5)、導入網(wǎng)絡表文件和修改零件封裝 這一步是非常重要的一個環(huán)節(jié),網(wǎng)絡表是PCB自動布線的靈魂,也是原理圖設計與印象電路板設計的接口,只有將網(wǎng)絡表裝入后,才能進行電路板的布線。在原理圖設計的過程中,ERC檢查不會涉及到零件的封裝問題。因
17、此,原理圖設計時,零件的封裝可能被遺忘,在引進網(wǎng)絡表時可以根據(jù)設計情況來修改或補充零件的封裝。當然,可以直接在PCB內(nèi)人工生成網(wǎng)絡表,并且指定零件封裝。(6)、設置布局采用手動布局的形式。用鼠標選中一個元件,按住鼠標左鍵不放,拖住這個元件到達目的地,放開左鍵,將該元件固定。使用自動選擇方式可以很快地收集相似封裝的元件,然后旋轉、展開和整理成組,就可以移動到板上所需位置上了。當簡易的布局完成后,使用自動對齊方式整齊地展開或縮緊一組封裝相似的元件。 (7)、根據(jù)情況再作適當調(diào)整然后將全部器件鎖定 假如板上空間允許則可在板上放上一些類似于實驗板的布線區(qū)。對于大板子,應在中間多加固定螺絲孔。板上有重的
18、器件或較大的接插件等受力器件邊上也應加固定螺絲孔,有需要的話可在適當位置放上一些測試用焊盤,最好在原理圖中就加上。將過小的焊盤過孔改大,將所有固定螺絲孔焊盤的網(wǎng)絡定義到地或保護地等。圖10 硬件電路原理圖圖11 電路PCB板圖12 實物圖五、軟件的設計與實現(xiàn)5.1、主程序流程圖5.2、PID控制算法及參數(shù)整定 5.2.1數(shù)字式增量PID控制算法計算機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算控制量。因此,連續(xù)PID控制算法不能直接使用,需要采用離散化方法,根據(jù)采樣時刻的偏差值計算控制量,離散化得: (5) 式中 k為采樣序號,k=0,1,2,3 如果采樣周期足夠小,這種離散逼近相當精確
19、。式中u(k)為全量輸出,它對應于被控對象的執(zhí)行機構第k次采樣時刻應達到的位置。因此,上式稱為PID位置型控制算式??梢钥闯?,按PID位置型控制算式計算u(k)時,輸出值與過去所有狀態(tài)有關。當執(zhí)行機構需要的不是控制量的絕對數(shù)值,而是其增量時(如步進電機的驅動),可導出下式: (2-3) 其中, 此式稱為增量型PID控制算式,增量型PID控制算式具有以下優(yōu)點:1. 計算機只輸出控制增量,即執(zhí)行機構位置的變化部分,因而誤動作影響小。2. 在k時刻的輸出u(k),只需要用到此時刻的偏差,及前兩次的偏差和前一次的輸出值,這大大節(jié)約了內(nèi)存的計算時間。3. 在手動-自動切換時,控制量沖擊小,能夠較平滑地過
20、渡。位置式控制算法可通過增量式控制算法推出遞推計算公式: (6)這就是目前在計算機控制中廣泛應用的數(shù)字遞推PID控制算式。入口 讀入, 計算 計算計算 增量型輸出增量式否? Y計算 位置型輸出返回圖13 數(shù)字PID控制算法程序框圖5.3干擾的抑制PID控制算法的輸入量是偏差e,也就是給定值與系統(tǒng)輸出的差。在進入正常調(diào)節(jié)后,由于輸出已接近給定,e的值不會太大。所以相對而言,干擾對調(diào)節(jié)有較大的影響,除了從系統(tǒng)硬件及環(huán)境方面采取措施外,在控制算法上也可采取一定的措施,以抑制干擾的影響。對于作用時間較為短暫的快速干擾,例如采樣器,A/D轉換器的偶然出錯等,我們可以簡單地采用連續(xù)多次采樣求平均值的辦法予
21、以濾除。例如圍繞著采樣時刻ti連續(xù)采樣N次,可得到ei1、ei2、 、eiN。由于快速干擾往往比較強烈,只要有一個采樣數(shù)據(jù)受到快速隨機干擾,即使對它們求平均值,干擾的影響也會反映出來。因此,應剔除其中的最大最小值,對其余的N-2次采樣求平均值。由于在N次中連續(xù)偶然出錯的可能很小,故這樣做已足以消除這類快速隨機干擾的影響。5.4、采樣周期的選定進行數(shù)字PID控制器參數(shù)整定時,首先應該解決的一個問題是確定合理的采樣周期T。采樣周期T必須足夠短,才能保證有足夠的精度。但采樣周期短則會加重計算機的任務,影響工作效率,因此應合理選擇采樣周期。采樣周期T應遠遠小于系統(tǒng)中其它的時間常數(shù),否則可能會由于采樣的
22、頻帶寬度不夠而無法反映系統(tǒng)的動態(tài)過程。一般來說,采樣周期T的最大值受系統(tǒng)穩(wěn)定性條件和香農(nóng)采樣定理的限制而不能太大。T的最小值則受到計算機在一個采樣周期內(nèi)能完成的計算工作量的限制,實際中常選2PAI/T為系統(tǒng)有用信號最高頻率的410倍。5.5、PID調(diào)節(jié)器的參數(shù)整定采樣周期T通常遠遠小于系統(tǒng)的時間常數(shù),因此,PID參數(shù)的整定可以按模擬調(diào)節(jié)器的方法來進行。參數(shù)整定通常有兩種:理論設計法和實驗確定法。前者需要有被控對象的精確模型,然后采用最優(yōu)化的方法確定PID的各參數(shù)。被控對象的模型可通過物理建?;蛳到y(tǒng)辨識方法得到,但這樣通常只能得到近似的模型。因此,通過實驗確定法(如試湊法,工程整定法)來選擇PI
23、D參數(shù)是經(jīng)常采用又行之有效的方法。本方案采用了試湊法。試湊前先要知道PID各調(diào)節(jié)參數(shù)對系統(tǒng)響應的影響。 試湊法是通過計算機仿真或實際運行,觀察系統(tǒng)對典型輸入作用的響應曲線,根據(jù)各調(diào)節(jié)參數(shù)(Kp,Ti,Td)對系統(tǒng)的影響,反復調(diào)節(jié)試湊,直到滿意為止,從而確定PID參數(shù)。增大比例系數(shù)Kp將加快系統(tǒng)響應并減小系統(tǒng)穩(wěn)態(tài)誤差,但過大會產(chǎn)生較大的超調(diào)量,產(chǎn)生震蕩,破壞系統(tǒng)的穩(wěn)定性。增大積分時間常數(shù)Ti可使減小超調(diào),提高系統(tǒng)穩(wěn)定性,但系統(tǒng)誤差的消除將隨之變慢。增大微分時間常數(shù)Td可加速系統(tǒng)的響應,使超調(diào)量減小,增加系統(tǒng)的穩(wěn)定性,但系統(tǒng)抗干擾能力下降。試湊時,可參考以上參數(shù)對控制系統(tǒng)性能的影響趨勢,實行先比例
24、,后積分,再微分的反復調(diào)整。1、首先只調(diào)比例系數(shù),將Kp由小到大,使響應曲線略有超調(diào)。此時系統(tǒng)若無穩(wěn)態(tài)誤差或穩(wěn)態(tài)誤差已小到允許范圍內(nèi),并且認為響應曲線已屬滿意,那么,只須用比例調(diào)節(jié)器即可。2、若在比例調(diào)節(jié)的基礎上,系統(tǒng)穩(wěn)態(tài)誤差太大,則必須加入積分環(huán)節(jié)。整定時先將第一步所整定的比例系數(shù)略為縮?。ㄈ?.8倍),再將積分時間常數(shù)Ti置為一較大值并連續(xù)減小,使得在保持良好動態(tài)性能的前提下消除穩(wěn)態(tài)誤差。這一步可反復進行。3、若使用PI調(diào)節(jié)器消除了穩(wěn)態(tài)誤差,但系統(tǒng)動態(tài)響應經(jīng)反復調(diào)整后仍不能令人滿意,則加入微分環(huán)節(jié),構成PID控制器。在整定時先將微分時間常數(shù)Td設定為零,再逐步增加Td并同時進行前面兩步的調(diào)
25、整,以獲得滿意的調(diào)節(jié)效果和控制參數(shù)。參數(shù)整定結果:5.6、測速子程序測速子程序是通過調(diào)用Timer1中斷來完成的。T1循環(huán)定時,定時時間是50ms,作為速度采樣的基本周期。T1定時時間一到,程序就進入中斷,分別讀取一次主從電機的脈沖。在T1中斷子程序中,變量i作為T1定時循環(huán)標志,當循環(huán)10次達到500ms,變量i被置0,變量i是主程序運算標志,當i等于10時,主程序進入if語句進行一次控制計算。因此,本程序的控制周期為500ms。碼盤是四位編碼器構成。 (7)5.7、單片機資源配置表2 單片機內(nèi)部功能模塊使用情況說明表定時器Timer0:PWM定時/計數(shù)器時基Timer1:計主電機速度脈沖P
26、CA0PCA0:產(chǎn)生主電機PWM波PCA1:產(chǎn)生從電機PWM波表3 單片機I/O端口配置表資源分配P1.3:CEX0,PWM0輸出P1.4:CEX1,PWM1輸出P3.4:T0主電機速度脈沖輸入P3.2:INT0從電機速度脈沖輸入其中在8位PWM脈寬調(diào)制模式下的輸出波形頻率為PCA時鐘頻率的256分頻,8位PWM占空比公式為: (8)此時,只要將PCA0開啟,為PCA配置一個時鐘源,將相應模塊設在8為PWM模式下,并將PWM輸出開啟,再將該模塊配置到一個I/O口上,則不再需要處理器的干預,PCA會自動地向外端口輸出PWM波,只有當需要改變占空比的時候,修改一下該模塊的捕捉比較寄存器的值即可。六
27、、設計心得經(jīng)過將近兩周的單片機課程設計,終于完成了兩臺直流電機速度同步控制的設計,基本達到設計要求,從心底里來說,還是很高興的,畢竟這次設計把實物都做了出來。但高興之余不得不深思呀!在本次設計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多。對于單片機設計,其硬件電路是比較簡單的,主要是解決程序設計的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此在整個設計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關鍵的問題所在,這需要對單片機的結構很熟悉。因此可以說單片機的
28、設計是軟件和硬件的結合,二者是密不可分的。要設計一個成功的電路,必須要有耐心,要有堅持的毅力。在整個電路的設計過程中,花費時間最多的是各個單元電路的連接及電路的細節(jié)設計上,如在多種方案的選擇中,我們仔細比較分析其原理以及可行的原因。這就要求我們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應用。完成這次設計后,我在書本理論知識的基礎上又有了更深層次的理解。同時在本次設計的過程中,我還學會了高效率的查閱資料、運用工具書、利用網(wǎng)絡查找資料。我發(fā)現(xiàn),在我們所使用的書籍上有一些知識在實際應用中其實并不是十分理想,各種參數(shù)都需要自己去調(diào)整。偶而還會遇到錯誤的資料現(xiàn)象,這就要求我們應更加注重實
29、踐環(huán)節(jié)。最后還要在此感謝各位畢業(yè)設計的指導老師們和我的組員們,他們在整個過程中都給予了我充分的幫助與支持。七、參考文獻1陳勇.電力拖動與控制.北京:人民郵電出版社,20112 梅曉榕.自動控制元件及線路.哈爾濱:哈爾濱工業(yè)大學出版社, 20013 胡壽松.自動控制原理.北京:科學出版社,20074王平.計算機控制技術及應用.北京:機械工業(yè)出版社,20105向敏.微控制器原理及應用.北京:人民郵電出版社,2012八、附錄 #include "REG12C5A60S2.H" void system_check(void) P2M0 &= (1<<7); /*
30、將相應位清0*/P2M1 &= (1<<7);P2M0 |= 1<<7; /*設置相應IO口推挽輸出*/void timer_init( u8 fosc, u8 div, u8 number, u16 time, u8 pre)/工作方式1 u16 fosc_fre = 0; fosc_time = (u32)fosc * /(u32)div; fosc_time /= (u32)pre;fosc_fre = (u16)(fosc_time /1000 * (u32)time /1000);/*fosc_time <65536*/ if( TIM0 = n
31、umber ) time0 = ( 65536 - fosc_fre ); TMOD |= 0x01;/* the timer0 mode 1 */ TL0 = time0; TH0 = time0>>8; ET0 = 1;if( 1 = pre ) AUXR |= 0x80;/* the timer0 clk = fclk */elseAUXR &= 0x7f; /* the timer0 clk = fclk/12*/EA =1; void counter_init( u8 number ) if( TIM1 = number )TMOD |= 0x50; /* the
32、 counter1 mode 1 */ET1 =1; void exti_init( bit number ) if( 0 = number ) IT0 = 1;/* 下降沿*/ EX0 = 1; void lcd_init_1602( void ) /1602初始化#ifdef LCD_1602_parallel_8 lcdrw=0;lcden = 0;write_1602( 0x38, 0 ); /設至顯示模式write_1602( 0x0c, 0 ); /設置顯示和光標write_1602( 0x06, 0 ); /設置光標移動write_1602( 0x01, 0 ); /清屏#end
33、if #ifdef LCD_1602_parallel_4u8 date_1602;lcdrw=0;lcdrs = 0;lcden = 1;delay_ms(2); /根據(jù)系統(tǒng)時鐘不同而不同date_1602 = (0x02 << LOW_BIT);I0_lcd1602 = (I0_lcd1602 & (0x0f<<LOW_BIT); /delay_ms(2); /根據(jù)系統(tǒng)時鐘不同而不同I0_lcd1602 = I0_lcd1602 | date_1602;lcden = 0; write_1602( 0x28, 0 );/設至顯示模式write_1602( 0
34、x0c, 0 ); /設置顯示和光標write_1602( 0x06, 0 ); /設置光標移動write_1602( 0x01, 0 ); /清屏#endif/*END OF FUNCTION lcd_init_1602( void )*/*END OF THE FUNCTION void counter_init( u8 number )*/ void write_string1_1602( u8 addr_y, u8 addr_x, u8 *string ) /寫帶地址的字符串 write_addr_1602( addr_y, addr_x ); /寫地址write_string_160
35、2( string ); /寫字符串/*end of function write_string1_1602( uchar addr_y, uchar addr_x, uchar *string )*/void write_addr_1602( u8 addr_y, u8 addr_x )/寫地址 u8 addr_part_variate; /絕對地址 if( 1 = addr_y ) /第一行 addr_part_variate = 0x80; /相對地址/*END OF ( 1 = addr_y ) */else/第二行 addr_part_variate = 0xc0 ; /*END O
36、F ( 1 != addr_y ) */addr_part_variate += (addr_x - 1);/得到絕對地址 write_1602( addr_part_variate, 0 ); void write_1602( u8 date, bit com ) /寫1602操作lcdrs = com; /數(shù)據(jù)或命令I0_lcd1602 = date; /數(shù)據(jù)傳送delay_ms(2);lcden = 1; /LCD1602使能delay_ms(2);lcden = 0; /1602失能INPUT: number : PWM0/PWM1/PWvoid motor_dc_init(u8 fo
37、sc ,u8 div , u16 fren ,u8 mode ) motor_dc_io(); /*初始化電機IO模式*/ pwm_init(fosc,div); /*PWM輸出初始化*/pwm_fre(fren,mode); /*PWM頻率設定*/IN1 = 0; /*關閉電機輸出*/IN2 = 0;IN3 = 0;IN4 = 0;void PID_init( float kp, float ki, float kd, s16 max, s16 min, PID *Name ) /PID系數(shù)及邊界值初始化 Name->Kp = kp;/比例系數(shù)賦初值Name->Ki = ki;/
38、積分系數(shù)賦初值Name->Kd = kd;/微分系數(shù)賦初值Name->Pwm = 0;/控制量賦初值Name->Error = 0;/本次誤差賦初值Name->His_Error = 0;Name->His2_Error = 0;Name->Max = max;Name->Min = min;void init( void ) /*系統(tǒng)總初始化函數(shù)*/ CLK_DIV=0x00; /* 系統(tǒng)不分頻flck = 12MHZ*/ delay_time = (12 * 1.0 / 1 ) * 58+ 0.5; /計算延時毫秒系數(shù) /* 延時初始化delay
39、init*/ P2M0 &= (1<<7); /*將相應位清0*/P2M1 &= (1<<7);P2M0 |= 1<<7; /*設置相應IO口推挽輸出*/ /*LED初始化*/timer_init(12,1,TIM0,50000,12); /定時器初始化50mscounter_init(TIM1); /初始化計數(shù)器exti_init(0);lcd_init_1602();/初始化液晶顯示write_string1_1602(1,1,"Set_V:");/*LCD1602顯示字符串*/write_string1_1602(2
40、,1,"V1:");write_string1_1602(1,12,"r/m");write_string1_1602(2,9,"V2:");motor_dc_init(12,1,3903,12);/初始化電機 3.9Kmotor_dc_with(PWM1,1);/初始化PWM脈寬motor_dc_with(PWM0,1);/初始化PWM脈寬 PID_init(0.03,0.017,0,255,1,&PID1);/初始化PID參數(shù)PID_init(0.03,0.017,0,255,1,&PID2);/初始化PID參數(shù)
41、/*/ u8 key_Freedom( bit mode ) /適當時候可通過設置標記位來去除等待放手 static u8 xdata key_mode=1; /連續(xù)檢測標志位 u8 key = 0; P3 |= 0x0f; if(key1=1&&key2=1&&key_mode=0) key_mode=1;return 255; /*按鍵彈起*/ if(mode)key_mode=1;if(key1=0|key2=0)&&key_mode)delay_ms(5); key_mode=0;if(key1=0|key2=0) if(key1=0)
42、key |= 1<<0;if(key2=0) key |= 1<<1;/if(key3=0) key |= 1<<2;/if(key4=0) key |= 1<<3; return key;/*END OF THE if(key1=0|key2=0|key3=0|key4=0)&&key_mode)*/*END OF THE if(key1=0|key2=0|key3=0|key4=0)&&key_mode)*/return 0; void delay_ms( u8 number ) /延時多少毫秒u16 idat
43、a time;while( number- )for( time=delay_time; time>0; time- ); /*仿真時不能用*/*END OF while(number-)*/ void timer_start( u8 number,bit mode )/* timer start */if(mode) if( number = TIM0 ) TMOD |= 0X08;else if( number = TIM1) TMOD |= 0x80;else if( number = TIM0 ) TMOD &= 0Xf7;else if( number = TIM1)
44、TMOD &= 0x7f; switch( number ) case TIM0: TR0 =1; break;case TIM1: TR1 =1; break;case PCA0: CCAPM0 = 0x49;/*PCAmodule-0 work in 16-bit timer mode*/ /*and enable PCA interrupt*/ CR =1; break;/*PCA timer satrt run*/case PCA1: CCAPM1 = 0x49;/*PCAmodule-1 work in 16-bit timer mode*/ /*and enable PCA
45、 interrupt*/ CR =1; break;/*PCA timer satrt run*/default : ; break;/*END OF THE switch( number )*/*END OF THE FUNCTION void timer_start( u8 number )*/void counter_start( u8 number,bit mode ) if(mode) if( number = TIM0 ) TMOD |= 0X08;else if( number = TIM1) TMOD |= 0x80;else if( number = TIM0 ) TMOD
46、&= 0Xf7;else if( number = TIM1) TMOD &= 0x7f; switch( number ) case TIM0: TR0 =1; break;case TIM1: TR1 =1; break;default : CR =1; break;/*PCA timer satrt run*/ /*END OF THE switch( number )*/ /*END OF THE FUNCTION void counter_start( u8 number )*/void motor_dc_start( u8 number, u8 mode ) pwm_start(number);switch(mode) case 0 : IN1 =1; IN2 = 0; break;case 1 : IN1 =0; IN2 = 1; break;case 2 : IN3 =1; IN4 = 0; break;case 3 : IN3 =0; IN4 = 1; break;void motor_dc_stop( u8 number, u8 mode ) pwm_stop(number);if(mode = 1) IN1 = 0;IN2 = 0;else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年衛(wèi)星云圖接收設備合作協(xié)議書
- 2025年新型結構不銹鋼絲繩項目發(fā)展計劃
- 全科期末練習試卷附答案
- 2025年上半年四川省涼山越西縣事業(yè)單位考試招聘65人高頻重點提升(共500題)附帶答案詳解
- 《我國水資源稅制的構想與設計》
- 2025年女職工職業(yè)健康安全專項集體合同書
- 二零二五年度委托招聘教育行業(yè)培訓師合同
- 小學四年級數(shù)學三位數(shù)乘兩位數(shù)質量練習例題大全附答案
- 二零二五年度定制化客運班車包車合同
- 小學三年級數(shù)學兩位數(shù)乘一位數(shù)計算能力測試試題
- 2023年中醫(yī)養(yǎng)生之藥膳食療考試試題
- 《醫(yī)學人文課件》
- 四川省成都市龍泉驛區(qū)2023-2024學年三年級數(shù)學第一學期期末監(jiān)測試題含答案
- 高空除銹刷漆施工方案模板
- 鍋爐控制器modbus協(xié)議支持說明
- 粉末涂料有限公司危廢庫安全風險分級管控清單
- 安全生產(chǎn)信息管理制度全
- 住宅物業(yè)危險源辨識評價表
- 世界主要國家洲別、名稱、首都、代碼、區(qū)號、時差匯總表
- 2023學年廣東省廣州市越秀區(qū)鐵一中學九年級(上)物理期末試題及答案解析
- 《報告文學研究》(07562)自考考試復習題庫(含答案)
評論
0/150
提交評論