基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)_第1頁
基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)_第2頁
基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)_第3頁
基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)_第4頁
基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)摘要:在各類機(jī)電系統(tǒng)中,由于直流電機(jī)具有良好的起動、制動和調(diào)速性能,直流調(diào)速技術(shù)已廣泛運用于工業(yè)領(lǐng)域的各個方面。最常用的直流調(diào)速技術(shù)是脈寬調(diào)制(PWM)直流調(diào)速技術(shù),它具有調(diào)速精度高、響應(yīng)速度快、調(diào)速范圍寬和耗損低等特點。文中采用AVR單片機(jī)ATmega16產(chǎn)生PWM信號、L298驅(qū)動、行列式鍵盤控制及LCD顯示,并采取轉(zhuǎn)速、電流雙閉環(huán)PID算法對直流電機(jī)進(jìn)行調(diào)速控制的直流電機(jī)PWM調(diào)速系統(tǒng)。關(guān)鍵詞:AVR;雙閉環(huán);PWM;直流電機(jī)調(diào)速AVR-baseddual-loopDCmotorspeedregulationsystemAbstract:Invariousmechanicalandelectricalsystems,duetoDCmotorhasagoodstart,brakingandspeedcontrolperformanceofDCdrivetechnologyhasbeenwidelyusedinindustry,allaspectsofthefieldofaerospace.Themostcommonlyusedtechniqueispulse-widthmodulatedDCspeed(PWM)DCconvertertechnology,whichhasspeed,highprecision,fastresponse,widespeedrangeandlowandthewearandtear.ThispaperpresentsaPWMgeneratedbytheAVRmicrocontrollerATmega16signal,L298-driven,thedeterminantofthekeyboardcontrolandLCDdisplay,andtotakespeed,thecurrentdual-loopPIDalgorithmtoDCmotorspeedcontrolofDCmotorPWMspeedcontrolsystem.Keywords:AVR;Double-loop;PWM;DCMotorSpeedControl

目錄1緒論 11.1緒論 11.2直流電動機(jī)簡介 11.3直流電機(jī)工作原理 21.4直流電機(jī)的勵磁 21.4.1 他勵電機(jī)勵磁 21.4.2 自勵電機(jī)勵磁 31.5直流電機(jī)的優(yōu)越性 31.6直流電動機(jī)應(yīng)用 42選題背景 42.1問題的提出 42.2解決方案 43系統(tǒng)總設(shè)計方案 53.1設(shè)計思路 53.2方案論證與設(shè)計 53.2.1 系統(tǒng)控制設(shè)計方案論證與選擇 53.2.2 電機(jī)控制電路的設(shè)計 63.2.3 鍵盤電路的設(shè)計 63.2.4 顯示電路的設(shè)計 63.2.5 速度測量電路的設(shè)計 63.2.6 電流檢測電路設(shè)計 63.3系統(tǒng)組成: 63.4ATMEGA控制電路 73.5電源及ISP 83.6主要電路單元的設(shè)計 83.6.1 L298驅(qū)動接口 . 控制邏輯 . L298原理圖 103.6.2 顯示電路設(shè)計 . 液晶模塊接線圖 . 1062接口說明 . 基本操作時序 113.6.3 鍵盤電路設(shè)計 . 行列式鍵盤電路 . 按鍵抖動 . 去抖方法 123.6.4 電機(jī)測速電路設(shè)計 123.6.5 光電編碼器的工作原理: . 絕對式編碼器 . 增量式編碼器 . 轉(zhuǎn)速轉(zhuǎn)向信號處理 143.6.6 電樞電流測量 . 測量方法 . AVR數(shù)模轉(zhuǎn)換特點 154系統(tǒng)軟件設(shè)計與實現(xiàn) 164.1PWM軟件設(shè)計 184.1.1 產(chǎn)生PWM信號4種方法 184.1.2 AVR單片機(jī)輸出PWM的程序 194.2轉(zhuǎn)向與速度檢測 194.2.1 測速原理 194.2.2 脈沖數(shù)字(P/D)轉(zhuǎn)換方法 204.2.3 M/T法測速軟件設(shè)計 204.2.4 M/T法數(shù)字測速軟件圖 214.2.5 轉(zhuǎn)向的判斷 234.3電流檢測原理 234.3.1 AD轉(zhuǎn)換程序 234.4調(diào)節(jié)器的設(shè)計 244.4.1 電流調(diào)節(jié)器的設(shè)計 244.4.2 轉(zhuǎn)速調(diào)節(jié)器的設(shè)計 274.5PID程序流程圖: 295系統(tǒng)調(diào)試結(jié)果 306總結(jié) 31致謝 32參考文獻(xiàn) 33PAGE1基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)緒論緒論當(dāng)今,自動化控制系統(tǒng)己經(jīng)在各行各業(yè)得到了廣泛的應(yīng)用和發(fā)展,而直流調(diào)速控制作為電氣傳動的主流在現(xiàn)代化生產(chǎn)中起著主要作用。本文主要研究直流調(diào)速系統(tǒng),它主要由三部分組成,包括控制部分、功率部分、直流電動機(jī)。長期以來,直流電動機(jī)因其具有調(diào)節(jié)轉(zhuǎn)速比較靈活、方法簡單、易于大范圍內(nèi)平滑調(diào)速、控制性能好等特點,一直在傳動領(lǐng)域占有統(tǒng)治地位。微機(jī)技術(shù)的快速發(fā)展,在控制領(lǐng)域得到廣泛應(yīng)用。本文對基于微機(jī)控制的雙閉環(huán)可逆直流PWM調(diào)速系統(tǒng)進(jìn)行了較深入的研究,從直流調(diào)速系統(tǒng)原理出發(fā),逐步建立了雙閉環(huán)直流PWM調(diào)速系統(tǒng)的數(shù)學(xué)模型,用微機(jī)硬件和軟件發(fā)展的最新成果,探討一個將微機(jī)和電力拖動控制相結(jié)合的控制方法,本文在對控制對象全面回顧的基礎(chǔ)上,重點對控制部分展開研究,它包括對實現(xiàn)控制所需要的硬件和軟件的探討,控制策略和控制算法的探討等內(nèi)容。在硬件方面充分利用微機(jī)外設(shè)接口豐富,運算速度快的特點,采取軟件和硬件相結(jié)合的措施,實現(xiàn)對轉(zhuǎn)速、電流雙閉環(huán)調(diào)速系統(tǒng)的控制。直流電動機(jī)簡介直流電動機(jī)是將直流電能轉(zhuǎn)換成機(jī)械能的裝置。在磁場中放如通有電流的導(dǎo)體就會產(chǎn)生磁感應(yīng)效應(yīng)。直流電動機(jī)是應(yīng)用磁感應(yīng)原理將電能轉(zhuǎn)換為機(jī)械能的裝置,其轉(zhuǎn)子和定子分別由繞組和永久磁鐵組成。直流電動機(jī)具有調(diào)速性能較好和起動轉(zhuǎn)矩較大等優(yōu)點。直流調(diào)速技術(shù)已廣泛運用于工業(yè)、航天領(lǐng)域的各個方面。最常用的直流調(diào)速技術(shù)是脈寬調(diào)制(PWM)直流調(diào)速技術(shù),它具有調(diào)速精度高、響應(yīng)速度快、調(diào)速范圍寬和耗損低等特點。直流電機(jī)工作原理在直流電動機(jī)中,外加電壓并不是直接加在線圈兩端,而是通過電刷B1、B2和換向器再加到線圈上。由于電刷固定不動,對于圖中的情況,電流i總是從電刷B1流人,從電刷B2流出。所以當(dāng)轉(zhuǎn)子旋轉(zhuǎn)時,A、x兩個導(dǎo)體輪流交替地處于N極和s極下時,導(dǎo)體中的電流將隨其所處磁極極性的改變而同時改變方向,從而使電磁轉(zhuǎn)矩的方向始終保持不變,使電動機(jī)持續(xù)旋轉(zhuǎn)。此時換向器起到將外電路的直流改變?yōu)榫€圈內(nèi)交流的“逆變”作用。圖1.1直流電機(jī)模型直流電動機(jī)的電磁轉(zhuǎn)矩常用下式表示T=KTφIa式中KT——電動機(jī)結(jié)構(gòu)系數(shù);φ——每個磁極下的磁通(wb);Ia——電樞電流(A)。直流電機(jī)的勵磁直流電機(jī)的主磁場由勵磁線圈通人直流電流產(chǎn)生,只有微型直流電機(jī)才采用永久磁鐵。勵磁方式是指勵磁線圈的供電方式。直流電機(jī)的運行性能與勵磁方式有密切的關(guān)系。按勵磁供電方式不同,直流電機(jī)可分為他勵和自勵兩大類。他勵電機(jī)勵磁他勵電機(jī)的勵磁電流由獨立的直流電源供電,其大小與電樞兩端電壓無關(guān),如圖2—8a所示,有較好的運行性能。自勵電機(jī)勵磁自勵電機(jī)的勵磁繞組與電樞繞組連接,按連接方式不同又分為:并勵、串勵、復(fù)勵三種,如圖所示。圖1.2直流電動機(jī)勵磁并勵電機(jī)的勵磁繞組與電樞繞組并聯(lián),因其勵磁電流受電機(jī)端電壓波動的影響故其運行性能略次于他勵式電機(jī)。串勵電機(jī)的勵磁繞組與電樞繞組串聯(lián),勵磁電流與電樞電流相等。其主磁場的強(qiáng)弱與負(fù)載電流大小有直接關(guān)系,所以僅對電機(jī)有特殊性能要求時才采用。復(fù)勵電機(jī)的同一磁極有兩套勵磁繞組,一套繞組與電樞繞組并聯(lián)(或其他電源供給),另一套繞組與電樞繞組串聯(lián)。本文重點放在直流電動機(jī)運行特性和應(yīng)用上。直流電機(jī)的優(yōu)越性直流電機(jī)是最早出現(xiàn)的電動機(jī),也是最早實現(xiàn)調(diào)速的電動機(jī)。由于直流電機(jī)具有良好的線性調(diào)速特性、控制簡單、效率高及優(yōu)異的動態(tài)特性,長期以來一直占據(jù)著調(diào)速控制領(lǐng)域的統(tǒng)治地位。近年來,隨著交流變頻電機(jī)及無刷電機(jī)的調(diào)速控制技術(shù)的不斷成熟,直流電機(jī)正面臨著巨大的挑戰(zhàn)。但在很多調(diào)速控制場合,直流電機(jī)仍是最佳選擇。直流電動機(jī)應(yīng)用在家用電器中的空調(diào)器、電冰箱、風(fēng)扇、洗衣機(jī)、跑步機(jī)等應(yīng)用直流電機(jī)已經(jīng)十分普遍。在航空、軍事設(shè)施應(yīng)用領(lǐng)域里的雷達(dá)驅(qū)動、機(jī)載武器瞄準(zhǔn)驅(qū)動、自行火炮火力控制驅(qū)動等等。在工業(yè)控制領(lǐng)域,機(jī)器人關(guān)節(jié)驅(qū)動和自動生產(chǎn)線、電子產(chǎn)品加工裝備上的各種中小功率的驅(qū)動等。選題背景問題的提出眾所周知,直流電動機(jī)全壓啟動時,如果沒有限流措施,會產(chǎn)生很大的沖擊電流,這不僅對電動機(jī)換向不利,對過載能力低的電力電子器件來說,更是不能允許的。采用轉(zhuǎn)速負(fù)反饋的閉環(huán)調(diào)速系統(tǒng)突然加上給定電壓時,由于慣性,轉(zhuǎn)速不可能立即建立起來,反饋電壓認(rèn)為零,相當(dāng)于差不多是其穩(wěn)態(tài)工作值的1+K倍。這時,由于放大器和變換器的慣性都很小,電樞電壓Ud一下子就達(dá)到它的最高值,對電機(jī)來說,相當(dāng)于全壓啟動,當(dāng)然是不允許的。 另外,有些生產(chǎn)機(jī)械的電動機(jī)可能會遇到堵轉(zhuǎn)的情況,例如,由于故障是機(jī)械軸被卡住,或挖土機(jī)運行時碰到堅硬的石塊等等。由于閉環(huán)系統(tǒng)靜特性很硬,若無限流環(huán)節(jié),電流將遠(yuǎn)遠(yuǎn)超過允許值。如果只依靠過流繼電器或熔斷器保護(hù),一過載就跳閘,也會給正常工作帶來不便。解決方案為了為了解決反饋閉環(huán)調(diào)速系統(tǒng)啟動和堵轉(zhuǎn)時電流過大的問題,系統(tǒng)中必須有自動限制電樞電流的環(huán)節(jié)。根據(jù)反饋控制原理,要維持哪一個物理量基本不變,就應(yīng)該引入那個物理量的負(fù)反饋。那么,引入電流負(fù)反饋,就應(yīng)能保持電流基本不變,使它不超過允許值。然而對于經(jīng)常正、反轉(zhuǎn)運行的調(diào)速系統(tǒng),例如龍門刨床、可你軋鋼機(jī)等,盡量縮短起、制動工程的時間是提高生產(chǎn)效率的重要因素。為此,在電機(jī)最大允許電流和轉(zhuǎn)矩受限制的條件下,應(yīng)該充分利用電機(jī)的過載能力,最好是在過渡過程中始終保持電流(轉(zhuǎn)矩)為允許的最大值,使電力拖動系統(tǒng)以最大的加速度啟動,到達(dá)穩(wěn)態(tài)轉(zhuǎn)速時,立即讓電流降下來,使得轉(zhuǎn)矩馬上與負(fù)載相平衡,從而轉(zhuǎn)入穩(wěn)態(tài)運行。如圖所示n圖2.1直流電動機(jī)雙閉環(huán)理想快速啟動過程系統(tǒng)總設(shè)計方案設(shè)計思路題目要求設(shè)計一個基于AVR的直流電動機(jī)雙閉環(huán)調(diào)速系統(tǒng)。系統(tǒng)可以分為控制部分、AD采樣部分和顯示部分。設(shè)計中采用Atmega16單片機(jī)為主控制核心,行列式鍵盤為控制部分,利用Atmega16的自帶的AD作為AD采樣電路,顯示部分采用液晶1602顯示。方案論證與設(shè)計系統(tǒng)控制設(shè)計方案論證與選擇方案一:采用DSP芯片來產(chǎn)生PWM信號來控制電機(jī)轉(zhuǎn)動,同時和單片機(jī)結(jié)合來實現(xiàn)PID算法,實現(xiàn)實時控制。方案二:直接采用AVR單片機(jī)由軟件產(chǎn)生脈寬調(diào)制信號,經(jīng)過PID算法來實現(xiàn)閉環(huán)控制。由于系統(tǒng)要求比較簡單,所以采用Atmega16單片機(jī)來對電機(jī)進(jìn)行控制。電機(jī)控制電路的設(shè)計方案一:采用晶閘管——電動機(jī)控制系統(tǒng)(V-M)進(jìn)行控制。方案二:采用專用電機(jī)控制集成芯片L298來控制電機(jī)轉(zhuǎn)動,該方案電路簡單,可靠。方案三:直接采用4個三極管搭成橋式電路來控制電機(jī)的轉(zhuǎn)動。本設(shè)計采用方案二,采用芯片L298方便硬件設(shè)計,減少硬件帶來更大的麻煩。相對于V——M調(diào)速,PWM調(diào)速有很多優(yōu)點,比如PWM開關(guān)頻率高、電流容易連續(xù)、諧波少、低速性能好、穩(wěn)速精度高、調(diào)速范圍寬等。鍵盤電路的設(shè)計由于系統(tǒng)要求控制功能少,所以直接采用行列式鍵盤進(jìn)行控制。顯示電路的設(shè)計顯示電路采用LCM1602顯示結(jié)果。速度測量電路的設(shè)計速度測量采用光電編碼器進(jìn)行速度采集,經(jīng)過單片機(jī)中斷將采樣的數(shù)據(jù)換算。電流檢測電路設(shè)計L298設(shè)有感應(yīng)電流檢測引腳1和引腳15,在1腳和地之間串入小于0.5歐姆的電阻,通過測量非地端電位即可計算出通過電阻電流即L298A路電流。詳見本文4.3.6部分。系統(tǒng)組成:經(jīng)過比較與論證,最終確定的系統(tǒng)組成框圖如下,其中采用Atmega16為主控制芯片,采用1602進(jìn)行顯示,鍵盤控制電路。系統(tǒng)控制結(jié)構(gòu)如圖3.1:圖3.1系統(tǒng)硬件的設(shè)計與實現(xiàn)ATMEGA控制電路圖3.2avr控制電路接線圖電源及ISP圖3.3電源及ISP接線圖主要電路單元的設(shè)計L298驅(qū)動接口AVR單片機(jī)ATMEGA16輸出的脈寬調(diào)制(PWM)信號需經(jīng)過功率放大才能驅(qū)動電機(jī),本調(diào)速控制系統(tǒng)采用的是L298驅(qū)動芯片,驅(qū)動接口電路如圖4.2所示。L298有單極性、雙極性2種工作方式。單極性工作方式指的是在一個PWM周期內(nèi),電機(jī)的電樞只承受單極性的電壓;雙極性工作方式是指在一個PWM周期內(nèi)電機(jī)電樞兩端的電壓呈正負(fù)變化。調(diào)速控制系統(tǒng)采用的是單極性工作方式。單片機(jī)的PWM輸出引腳(PD4或PD5)接L298的EnA和EnB引腳,它控制著電機(jī)轉(zhuǎn)速大小;單片機(jī)的PD6或PD7經(jīng)過一定的邏輯電路接到L298的IN1~I(xiàn)N4輸入引腳上,它控制電機(jī)的轉(zhuǎn)動方向。為了增強(qiáng)L298的驅(qū)動能力,本調(diào)速控制系統(tǒng)對L298的兩路驅(qū)動進(jìn)行了并聯(lián)使用,最大驅(qū)動能力可以達(dá)到3A。圖3.4L298驅(qū)動電路接線圖控制邏輯圖3.5電機(jī)控制邏輯圖當(dāng)電機(jī)使能端A為高電平時,如果輸入端M1Direction引腳為高電平,三極管導(dǎo)通,輸入引腳1為低電平而輸入引腳2為高電平,電機(jī)反轉(zhuǎn);如果輸入端M1Direction引腳為低電平,三極管截止,輸入引腳2為低電平而輸入引腳1為高電平,電機(jī)正轉(zhuǎn);當(dāng)電機(jī)使能端A為低電平時,電機(jī)停止。L298原理圖圖3.6 L298原理圖顯示電路設(shè)計顯示給定的速度參數(shù)和經(jīng)過PID調(diào)速后穩(wěn)定的速度參數(shù)。液晶模塊接線圖圖3.71602接線圖1062接口說明圖3.81602液晶接口說明基本操作時序鍵盤電路設(shè)計行列式鍵盤電路圖3.9行列式鍵盤電路按鍵抖動按鍵在閉合和斷開時,觸點會存在抖動現(xiàn)象。圖3.10按鍵抖動去抖方法硬件方法:設(shè)計一個濾波延時電路或單穩(wěn)態(tài)電路等硬件電路來避開按鍵的抖動時間。軟件方法:指編制一段時間大于20ms的延時程序,在第一次檢測到有鍵按下時,執(zhí)行這段延時子程序使鍵的前沿抖動消失后檢測該鍵狀態(tài),如果該鍵仍保持閉合狀態(tài)電平,則確認(rèn)該鍵已穩(wěn)定按下,否則無鍵按下,從而消除了抖動的影響。同理,在檢測到按鍵釋放后,也同樣要延時一段時間,以消除后沿抖動,然后轉(zhuǎn)入對該按鍵的處理。本設(shè)計采用軟件方法。電機(jī)測速電路設(shè)計傳感器接口電路用于對直流電機(jī)的輸出量進(jìn)行采樣,以實現(xiàn)閉環(huán)控制。轉(zhuǎn)速信號通過與直流電機(jī)同軸連接的增量式光電編碼器輸出的相差90度相角的兩路方波信號獲取。光電編碼器接線電路如圖圖3.11光電測速光電編碼器的工作原理:光電編碼器,是一種通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器。這是目前應(yīng)用最多的傳感器,光電編碼器是由光柵盤和光電檢測裝置組成。光柵盤是在一定直徑的圓板上等分地開通若干個長方形孔。由于光電碼盤與電動機(jī)同軸,電動機(jī)旋轉(zhuǎn)時,光柵盤與電動機(jī)同速旋轉(zhuǎn),經(jīng)發(fā)光二極管等電子元件組成的檢測裝置檢測輸出若干脈沖信號,其原理示意圖如圖1所示;通過計算每秒光電編碼器輸出脈沖的個數(shù)就能反映當(dāng)前電動機(jī)的轉(zhuǎn)速。此外,為判斷旋轉(zhuǎn)方向,碼盤還可提供相位相差90o的兩路脈沖信號。根據(jù)檢測原理,編碼器可分為光學(xué)式、磁式、感應(yīng)式和電容式。根據(jù)其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。絕對式編碼器絕對編碼器是直接輸出數(shù)字量的傳感器,在它的圓形碼盤上沿徑向有若干同心碼道,每條道上由透光和不透光的扇形區(qū)相間組成,相鄰碼道的扇區(qū)數(shù)目是雙倍關(guān)系,碼盤上的碼道數(shù)就是它的二進(jìn)制數(shù)碼的位數(shù),在碼盤的一側(cè)是光源,另一側(cè)對應(yīng)每一碼道有一光敏元件;當(dāng)碼盤處于不同位置時,各光敏元件根據(jù)受光照與否轉(zhuǎn)換出相應(yīng)的電平信號,形成二進(jìn)制數(shù)。這種編碼器的特點是不要計數(shù)器,在轉(zhuǎn)軸的任意位置都可讀出一個固定的與位置相對應(yīng)的數(shù)字碼。顯然,碼道越多,分辨率就越高,對于一個具有N位二進(jìn)制分辨率的編碼器,其碼盤必須有N條碼道。目前國內(nèi)已有16位的絕對編碼器產(chǎn)品。增量式編碼器增量式光電編碼器在圓盤上有規(guī)則地刻有透光和不透光的線條,在圓盤兩側(cè)安放發(fā)光元件和光敏元件。當(dāng)圓盤隨電機(jī)旋轉(zhuǎn)時,光敏元件接收的光通量隨透光線條同步變化,光敏元件輸出波形經(jīng)過整理后變?yōu)槊}沖。碼盤上有相標(biāo)志,每轉(zhuǎn)一圈Z相輸出一個脈沖。此外,為判斷旋轉(zhuǎn)方向,碼盤還可提供相位相差90度的兩路脈沖信號,如圖4.9所示。圖3.12增量式光電編碼盤轉(zhuǎn)速轉(zhuǎn)向信號處理將A、B兩相脈沖中任何一相輸入計數(shù)器中,均可使計數(shù)器進(jìn)行計數(shù)。編碼盤輸出Z相脈沖用于復(fù)位計數(shù)器,每轉(zhuǎn)一圈復(fù)位一次計數(shù)器。編碼盤的旋轉(zhuǎn)方向可以通過D觸發(fā)器的輸出信號Q來判斷。整形后的A、B兩相輸出信號分別接到觸發(fā)器的時鐘端和D輸入端,D觸發(fā)器的CLK端在A相脈沖的上升沿觸發(fā)。由于A、B兩相的脈沖相位相差90度,當(dāng)電機(jī)正轉(zhuǎn)時(假設(shè)A相脈沖超前時為正轉(zhuǎn),反之為反轉(zhuǎn)),A相脈沖超前B相脈沖90度,觸發(fā)器總是在B脈沖為高電平觸發(fā),這時D觸發(fā)器的輸出端Q輸出高電平。如圖4.10所示。當(dāng)電機(jī)反轉(zhuǎn)時,B相脈沖超前A相脈沖90度,則D觸發(fā)器總是在B脈沖為低電平時觸發(fā),這時Q輸出端輸出為低電平。由此確定電機(jī)的轉(zhuǎn)動方向。圖3.13光電編碼盤工作原理圖電樞電流測量測量方法在L298的1腳和15腳串接電阻可分別檢測L298A路和B路電流大小,由電路圖可知電阻一端接地只要測量另一端電壓即可算出電路電流。本文直接采用avr16自帶的ad轉(zhuǎn)換電路測量SEA端電壓。圖3.14L298一腳和十五腳感應(yīng)電阻接線圖AVR數(shù)模轉(zhuǎn)換特點ATmega16有一個10位的逐次逼近型ADC。ADC與一個8通道的模擬多路復(fù)用器連接,能對來自端口A的8路單端輸入電壓進(jìn)行采樣。單端電壓輸入以0V(GND)為基準(zhǔn)。器件還支持16路差分電壓輸入組合。兩路差分輸入(ADC1、ADC0與ADC3、ADC2)有可編程增益級,在A/D轉(zhuǎn)換前給差分輸入電壓提供0dB(1x)、20dB(10x)或46dB(200x)的放大級。七路差分模擬輸入通道共享一個通用負(fù)端(ADC1),而其他任何ADC輸入可做為正輸入端。如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。ADC包括一個采樣保持電路,以確保在轉(zhuǎn)換過程中輸入到ADC的電壓保持恒定。標(biāo)稱值為2.56V的基準(zhǔn)電壓,以及AVCC,都位于器件之內(nèi)。基準(zhǔn)電壓可以通過在AREF引腳上加一個電容進(jìn)行解耦,以更好地抑制噪聲。系統(tǒng)軟件設(shè)計與實現(xiàn)軟件編寫主要包括PWM波形的產(chǎn)生,電機(jī)轉(zhuǎn)速的實時檢測、電機(jī)電樞電流實時測量,PID控制算法,鍵盤掃描和液晶顯示程序。如圖程序框圖的構(gòu)成,當(dāng)程序進(jìn)入“初始化”時,開放外部中斷,進(jìn)行電機(jī)轉(zhuǎn)速計數(shù),當(dāng)定時器定時1s到達(dá)時,停止計時和中斷外部中斷,轉(zhuǎn)入計算當(dāng)前轉(zhuǎn)速,根據(jù)當(dāng)前轉(zhuǎn)速與AVR單片機(jī)給定的轉(zhuǎn)速比較,采取PID算法的對直流電機(jī)進(jìn)行調(diào)速控制,當(dāng)超過PWM限幅值1024時,返回PID算法程序再進(jìn)行直流電機(jī)調(diào)速控制,否則輸出PWM信號。1.控制總流程圖圖4.1程序流程圖2.轉(zhuǎn)速、電流雙閉環(huán)直流調(diào)速系統(tǒng)框圖圖4.2轉(zhuǎn)速、電流雙閉環(huán)直流調(diào)速系統(tǒng)ASR——轉(zhuǎn)速調(diào)節(jié)器 ACR——電流調(diào)節(jié)器 TG——測速 TA——電流檢測儀 UPE——電力電子變換器 Un*——轉(zhuǎn)速給定電壓 Un——轉(zhuǎn)速反饋電壓 Ui*電流給定電壓 Ui——電流反饋電壓PWM軟件設(shè)計脈沖寬度調(diào)制(PWM)是英文“PulseWidthModulation”的縮寫,簡稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用于測量,通信,功率控制與變換等許多領(lǐng)域。一種模擬控制方式,根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定。脈沖寬度調(diào)制(PWM)是一種對模擬信號電平進(jìn)行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進(jìn)行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時候即是直流供電被加到負(fù)載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。多數(shù)負(fù)載(無論是電感性負(fù)載還是電容性負(fù)載)需要的調(diào)制頻率高于10Hz,通常調(diào)制頻率為1kHz到200kHz之間。PWM的占空比決定輸出到直流電機(jī)的平均電壓.PWM不是調(diào)節(jié)電流的.PWM的意思是脈寬調(diào)節(jié),也就是調(diào)節(jié)方波高電平和低電平的時間比,一個20%占空比波形,會有20%的高電平時間和80%的低電平時間,而一個60%占空比的波形則具有60%的高電平時間和40%的低電平時間,占空比越大,高電平時間越長,則輸出的脈沖幅度越高,即電壓越高.如果占空比為0%,那么高電平時間為0,則沒有電壓輸出.如果占空比為100%,那么輸出全部電壓.

所以通過調(diào)節(jié)占空比,可以實現(xiàn)調(diào)節(jié)輸出電壓的目的,而且輸出電壓可以無級連續(xù)調(diào)節(jié).(4-1)其中:Ud——整流電壓Us——電源電壓ton——開通時間T——開關(guān)周期產(chǎn)生PWM信號4種方法①分立電子元件組成的PWM信號發(fā)生器這種方式是用分立的邏輯電子元件組成PWM信號電路,是較早采用的方法,可靠性、可調(diào)性較差;②軟件模擬式利用單片機(jī)的一個I/O引腳,通過軟件對該引腳輸出高低電平來模擬PWM波,該方法占用CPU的時間較多,控制軟件較復(fù)雜;③專用PWM集成電路采用芯片制造商生產(chǎn)專用的PWM集成電路芯片,該方法功能強(qiáng),但增加了調(diào)速系統(tǒng)的成本開銷;④單片機(jī)的PWM口新一代的許多單片機(jī)具有PWM功能。通過單片機(jī)的初始化設(shè)置,使其自動發(fā)生PWM脈沖波,只有在改變脈沖寬度時,CPU才進(jìn)行干預(yù),該方法控制直流電動機(jī)轉(zhuǎn)速簡單、可靠??衫脝纹瑱C(jī)的PWM口產(chǎn)生控制信號的方法控制電壓。AVR單片機(jī)輸出PWM的程序voidmain()//PD4輸出高電平持續(xù)2MS,PD5輸出占空比為50%,因為其COMnx1:0=1。{DDRD|=0X30;TCCR1A=0X63; TCCR1B=0X1B; OCR1A=12499;//產(chǎn)生10MS的PWM信號,保存上限值,但不能輸出PWM信號 OCR1B=2500;//占空比為20%,既PD4輸出高電平持續(xù)2MS。}轉(zhuǎn)向與速度檢測測速原理由光電式旋轉(zhuǎn)編碼器產(chǎn)生與被測轉(zhuǎn)速成正比的脈沖,測速裝置將輸入脈沖轉(zhuǎn)換為以數(shù)字形式表示的轉(zhuǎn)速值。M法、T法、M/T法工作原理以下:⑴M法測速工作原理:①由計數(shù)器記錄PLG發(fā)出的脈沖信號;②定時器每隔時間Tc向CPU發(fā)出中斷請求INTt;③CPU響應(yīng)中斷后,讀出計數(shù)值M1,并將計數(shù)器清零重新計數(shù);④根據(jù)計數(shù)值M計算出對應(yīng)的轉(zhuǎn)速值n。⑵T法測速工作原理:①計數(shù)器記錄來自CPU的高頻脈沖f0;②PLG每輸出一個脈沖,中斷電路向CPU發(fā)出一次中斷請求;③CPU響應(yīng)INTn中斷,從計數(shù)器中讀出計數(shù)值M2,并立即清零,重新計數(shù)。⑶T法測速工作原理:①T0定時器控制采樣時間;②M1計數(shù)器記錄PLG脈沖;③M2計數(shù)器記錄時鐘脈沖。脈沖數(shù)字(P/D)轉(zhuǎn)換方法(1)M法—脈沖直接計數(shù)方法;(2)T法—脈沖時間計數(shù)方法;(3)M/T法—脈沖時間混合計數(shù)方法。M/T法測速軟件設(shè)計由于轉(zhuǎn)速檢測的精度和快速性對電機(jī)調(diào)速系統(tǒng)的靜、動態(tài)性能影響極大。為了在較寬的速度范圍內(nèi)獲得高精度和快速的數(shù)字測速,本設(shè)計使用每轉(zhuǎn)4096線的光電編碼器作為轉(zhuǎn)速傳感器,它產(chǎn)生的測速脈沖頻率與電機(jī)轉(zhuǎn)速有固定的比列關(guān)系,微機(jī)對該頻率信號采用M/T法測速處理。M/T法測速原理是在對光電編碼器輸出的測速脈沖數(shù)m1進(jìn)行計數(shù)的同時,對時鐘脈沖的個數(shù)m2也進(jìn)行計數(shù)。圖4.3M/T法測速原理圖測速時間Td由測速脈沖來同步,即由硬件電路實現(xiàn)Td等于整m1個脈沖周期。設(shè)從圖5.2點開始,計數(shù)器分別對ml和m2計數(shù),到達(dá)b點,預(yù)計的測速時間Tc到,微機(jī)發(fā)出停止計數(shù)指令,但因為Tc不一定恰好等于整數(shù)個編碼起輸出脈沖周期,所以計數(shù)器仍對時鐘脈沖計數(shù),自到c點時,可以利用下一個轉(zhuǎn)速脈沖上升沿(即c點)觸發(fā)數(shù)字測速硬件電路使時間計數(shù)器停止計數(shù)。這樣,m2就代表了m1個測速脈沖周期的時間。設(shè)時鐘脈沖頻率為f0,光電編碼器每轉(zhuǎn)發(fā)出P個脈沖,則電動機(jī)轉(zhuǎn)速的計算公式為:r/min(4-2)在本系統(tǒng)中,由于選用f0=2MHz,P=4096=,所以轉(zhuǎn)速計算公式有:r/min(4-3)為了在低速測量時能使測速器在相當(dāng)短的Td時間內(nèi)任能包含較多個測速脈沖的高精度測速值,除了盡可能選擇較大P值的光電編碼器外,還可以利用光電編碼器輸出的相位上互差90的兩路矩形脈沖信號經(jīng)過4信頻電路后再送入計數(shù)器。這樣,轉(zhuǎn)速n的計算式應(yīng)改為:r/min(4-4)由此可以得到轉(zhuǎn)速的值。M/T法數(shù)字測速軟件圖測速軟件由捕捉中斷服務(wù)子程序如圖5.3和測速時間中斷服務(wù)子程序如圖5.4構(gòu)成,轉(zhuǎn)速調(diào)節(jié)中斷服務(wù)程序中進(jìn)行到“測速允許”時,開放捕捉中斷,但只有旋轉(zhuǎn)編碼器脈沖前沿到達(dá)時,進(jìn)入捕捉中斷服務(wù)程序,旋轉(zhuǎn)編碼器脈沖計數(shù)器M1和高頻時鐘計數(shù)器M2才真正開始計數(shù),同時打開測速時間計數(shù)器Tc,禁止捕捉中斷,使不再干擾計數(shù)器計數(shù)。待測速時間計數(shù)器到達(dá)計數(shù)值,發(fā)出停止測速信號,再次開放捕捉中斷,到旋轉(zhuǎn)編碼器脈沖前沿再到達(dá)時停止計數(shù)。在這一組軟件框圖中,測速軟件僅完成M1和M2計數(shù),轉(zhuǎn)速計算是在轉(zhuǎn)速調(diào)節(jié)中斷服務(wù)子程序中完成的。圖5.5為故障保護(hù)中斷服務(wù)子程序框圖。圖4.4主程序框圖圖4.5初始化主程序框圖圖4.6圖4.7圖4.8轉(zhuǎn)速調(diào)節(jié)中斷電流調(diào)節(jié)中斷故障保護(hù)中斷服務(wù)子程序框圖服務(wù)子程序框圖服務(wù)子程序框圖轉(zhuǎn)向的判斷編碼盤的旋轉(zhuǎn)方向可以通過D觸發(fā)器的輸出信號Q來判斷。整形后的A、B兩相輸出信號分別接到觸發(fā)器的時鐘端和D輸入端,D觸發(fā)器的CLK端在A相脈沖的上升沿觸發(fā)。由于A、B兩相的脈沖相位相差90度,當(dāng)電機(jī)正轉(zhuǎn)時(假設(shè)A相脈沖超前時為正轉(zhuǎn),反之為反轉(zhuǎn)),A相脈沖超前B相脈沖90度,觸發(fā)器總是在B脈沖為高電平觸發(fā),這時D觸發(fā)器的輸出端Q輸出高電平。如圖4所示。當(dāng)電機(jī)反轉(zhuǎn)時,B相脈沖超前A相脈沖90度,則D觸發(fā)器總是在B脈沖為低電平時觸發(fā),這時Q輸出端輸出為低電平。由此確定電機(jī)的轉(zhuǎn)動方向。電流檢測原理AD轉(zhuǎn)換程序uintmega16_ad()//avrPA0作為adc輸入,十位ADC

{

uintaddata;

DDRA&=~BIT(PA0);

PORTA&=~BIT(PA0);//設(shè)置PA0口為不帶上拉電阻輸入

ADMUX=0;//選擇0通道

ADCSR=0X80;//ADC使能,二分頻

ADCSR|=BIT(ADSC);//ADSC=6即ADC開始轉(zhuǎn)換

while(!(ADCSR&(BIT(ADIF))));//查詢ADC是否轉(zhuǎn)換完畢

addata=ADCL;//讀出ADC寄存器中低8位

addata=addata+ADCH*256;//讀出ADC寄存器中高八位并與低位合并

returnaddata;//最終ADC轉(zhuǎn)換數(shù)值

}調(diào)節(jié)器的設(shè)計圖4.4轉(zhuǎn)速、電流雙閉環(huán)調(diào)速系統(tǒng)的動態(tài)結(jié)構(gòu)框圖系統(tǒng)設(shè)計的一般原則“先內(nèi)環(huán)后外環(huán)”從內(nèi)環(huán)開始,逐步向外擴(kuò)展。在這里,首先設(shè)計電流調(diào)節(jié)器,然后把整個電流環(huán)看作是轉(zhuǎn)速調(diào)節(jié)系統(tǒng)中的一個環(huán)節(jié),再設(shè)計電流調(diào)節(jié)器的設(shè)計設(shè)計分為以下幾個步驟:1、電流環(huán)結(jié)構(gòu)圖的簡化 忽略反電動勢的動態(tài)影響。在按動態(tài)性能設(shè)計電流環(huán)時,可以暫不考慮反電動勢變化的動態(tài)影響,即ΔE≈0。這時,電流環(huán)如下圖所示。圖4.5忽略反電動勢的動態(tài)影響結(jié)構(gòu)框圖 等效成單位負(fù)反饋系統(tǒng)。如果把給定濾波和反饋濾波兩個環(huán)節(jié)都等效地移到環(huán)內(nèi),同時把給定信號改成,則電流環(huán)便等效成單位負(fù)反饋系統(tǒng)。圖4.6電流環(huán)等效成單位負(fù)反饋 小慣性環(huán)節(jié)近似處理。最后,由于Ts和T0i一般都比Tl小得多,可以當(dāng)作小慣性群而近似地看作是一個慣性環(huán)節(jié),其時間常數(shù)為:(4-5)簡化的近視條件為(4-6)電流環(huán)結(jié)構(gòu)圖最終簡化圖圖4.7電流環(huán)結(jié)構(gòu)圖最終簡化圖2、電流調(diào)節(jié)器結(jié)構(gòu)的選擇從穩(wěn)態(tài)要求上看,希望電流無靜差,由圖4.7可以看出,以得到理想的堵轉(zhuǎn)特性,采用I型系統(tǒng)就夠了。從動態(tài)要求上看,實際系統(tǒng)不允許電樞電流在突加控制作用時有太大的超調(diào),以保證電流在動態(tài)過程中不超過允許值,而對電網(wǎng)電壓波動的及時抗擾作用只是次要的因素,為此,電流環(huán)應(yīng)以跟隨性能為主,應(yīng)選用典型I型系統(tǒng)。圖4.7表明,電流環(huán)的控制對象是雙慣性型的,要校正成典型I型系統(tǒng),顯然應(yīng)采用PI型的電流調(diào)節(jié)器,其傳遞函數(shù)可以寫成(4-7)式中Ki—電流調(diào)節(jié)器的比例系數(shù);τi—電流調(diào)節(jié)器的超前時間常數(shù)。3、電流調(diào)節(jié)器的參數(shù)計算在一般情況下,希望電流超調(diào)量i≤5%,可選ξ=0.707,KITΣi=0.5,則(4-8)再利用式和式得到(4-9)電流環(huán)閉環(huán)傳遞函數(shù):電流環(huán)經(jīng)簡化后可視作轉(zhuǎn)速環(huán)中的一個環(huán)節(jié),為此,須求出它的閉環(huán)傳遞函數(shù)。由圖2-24a可知(4-10)忽略高次項,上式可將階近似為(4-11)近似條件可由式求出(4-12)式中ωcn—轉(zhuǎn)速環(huán)開環(huán)頻率特性的截止頻率。接入轉(zhuǎn)速環(huán)內(nèi),電流環(huán)等效環(huán)節(jié)的輸入量應(yīng)為U*i(s),因此電流環(huán)在轉(zhuǎn)速環(huán)中應(yīng)等效為(4-13)這樣,原來是雙慣性環(huán)節(jié)的電流環(huán)控制對象,經(jīng)閉環(huán)控制后,可以近似地等效成只有較小時間常數(shù)的一階慣性環(huán)節(jié)。轉(zhuǎn)速調(diào)節(jié)器的設(shè)計用電流環(huán)的等效環(huán)節(jié)代替圖2-22中的電流環(huán)后,整個轉(zhuǎn)速控制系統(tǒng)的動態(tài)結(jié)構(gòu)圖便如圖2-26a所示。圖4.8轉(zhuǎn)速環(huán)的動態(tài)結(jié)構(gòu)框圖及簡化和電流環(huán)中一樣,把轉(zhuǎn)速給定濾波和反饋濾波環(huán)節(jié)移到環(huán)內(nèi),同時將給定信號改成U*n(s)/α,再把時間常數(shù)為1/KI和Ton的兩個小慣性環(huán)節(jié)合并起來,近似成一個時間常數(shù)為的慣性環(huán)節(jié),其中(4-14)轉(zhuǎn)速環(huán)結(jié)構(gòu)簡化圖4.9等效成單位負(fù)反饋系統(tǒng)和小慣性的近似處理轉(zhuǎn)速調(diào)節(jié)器的選擇為了實現(xiàn)轉(zhuǎn)速無靜差,在負(fù)載擾動作用點前面必須有一個積分環(huán)節(jié),它應(yīng)該包含在轉(zhuǎn)速調(diào)節(jié)器ASR中(見圖4.9),現(xiàn)在在擾動作用點后面已經(jīng)有了一個積分環(huán)節(jié),因此轉(zhuǎn)速環(huán)開環(huán)傳遞函數(shù)應(yīng)共有兩個積分環(huán)節(jié),所以應(yīng)該設(shè)計成典型Ⅱ型系統(tǒng),這樣的系統(tǒng)同時也能滿足動態(tài)抗擾性能好的要求。由此可見,ASR也應(yīng)該采用PI調(diào)節(jié)器,其傳遞函數(shù)為(4-15)式中 Kn—轉(zhuǎn)速調(diào)節(jié)器的比例系數(shù); τn—轉(zhuǎn)速調(diào)節(jié)器的超前時間常數(shù)。開環(huán)傳遞函數(shù)為:(4-16)令轉(zhuǎn)速環(huán)開環(huán)增益為(4-17)則(4-18) 校正后的系統(tǒng)結(jié)構(gòu)圖4.10校正后成為典型II型系統(tǒng)轉(zhuǎn)速調(diào)節(jié)器的參數(shù)包括Kn和τn。按照典型Ⅱ型系統(tǒng)的參數(shù)關(guān)系,可得(4-19)再由式(2-39) (4-20)因此 (4-21)至于中頻寬h應(yīng)選擇多少,要看動態(tài)性能的要求決定。無特殊要求時,一般可選擇 h=5PID程序流程圖:圖4.11PID流程圖定義PID結(jié)構(gòu)體typedefstruct{doubleSetPoint;//設(shè)定目標(biāo)DesiredValuedoubleProportion;//比例常數(shù)ProportionalConstdoubleIntegral;//積分常數(shù)IntegralConstdoubleDerivative;//微分常數(shù)DerivativeConstdoubleLastError;//Error[-1]doublePrevError;//Error[-2]doubleSumError;//SumsofErrors}PID;PIDsPID;//PIDControlStructure定義一下結(jié)構(gòu)體變量系統(tǒng)調(diào)試結(jié)果經(jīng)過調(diào)試,電路基本完成了系統(tǒng)的設(shè)計要求,經(jīng)過測試,電機(jī)在全速運行時的轉(zhuǎn)速為每分鐘8000轉(zhuǎn),由于為了更好控制轉(zhuǎn)速,所以控制速度設(shè)定為4000~8000轉(zhuǎn)范圍。在不斷的測試和調(diào)試下,系統(tǒng)誤差基本達(dá)到與設(shè)定值的5%誤差??偨Y(jié)本文已用AVR單片機(jī)實現(xiàn)了直流電機(jī)雙閉環(huán)調(diào)速,簡化了控制邏輯系統(tǒng),與其它系統(tǒng)相比,開發(fā)時間短,實用性強(qiáng),功能完整。以微處理器為核心的數(shù)字控制系統(tǒng)(簡稱微機(jī)數(shù)字控制系統(tǒng))硬件電路的標(biāo)準(zhǔn)化程度高,制作成本低,且不受器件溫度漂移的影響;其控制軟件能夠進(jìn)行邏輯判斷和復(fù)雜運算,可以實現(xiàn)不同于一般線性調(diào)節(jié)的最優(yōu)化、自適應(yīng)、非線性、智能化等控制規(guī)律,而且更改起來靈活方便。如直流電機(jī)速度PID/模糊PID控制已得到驗證,對于要求精度高、調(diào)速范圍大的系統(tǒng),往往需要采用旋轉(zhuǎn)編碼器測速,即數(shù)字測速。由于M/T法的計數(shù)值M1和M2都隨著轉(zhuǎn)速的變化而變化,高速時,相當(dāng)于M法測速,最低速時,M1=1,自動進(jìn)入T法測速。因此M/T法測速能適用的轉(zhuǎn)速范圍明顯大于前兩種。是目前廣泛應(yīng)用的一種測速方法。模擬測速一般采用測速發(fā)電機(jī),其輸出電壓不僅表示了轉(zhuǎn)速的大小,還包含了轉(zhuǎn)速的方向,在調(diào)速系統(tǒng)中(尤其在可逆系統(tǒng)中),轉(zhuǎn)速的方向也是不可缺少的。。使用PID閉環(huán)反饋控制可顯著提高系統(tǒng)性能。由于采用數(shù)字給定、數(shù)字控制和數(shù)字檢測,可根據(jù)控制對象的變化,方便地改變控制器參數(shù),更好地對直流電機(jī)調(diào)速控制。致謝在本論文完成之際,衷心感謝指導(dǎo)老師寧宇副教授的悉心指導(dǎo),以及提供良好的學(xué)習(xí)研究環(huán)境;在一個多學(xué)期的學(xué)習(xí)中,給予我理論方面的支持和技術(shù)上的幫助;對本人學(xué)習(xí)作風(fēng)產(chǎn)生極大的影響,養(yǎng)成實事求是、一絲不茍、自強(qiáng)不息的習(xí)慣。同時寧宇老師淵博的知識和勇于創(chuàng)新的科學(xué)精神將使我受益匪淺。感謝李廣同師兄所做的前期電路,最后還要感謝各位領(lǐng)導(dǎo)、老師、同學(xué)們的熱情相助。參考文獻(xiàn)[1]陳伯時,電力拖動自動控制系統(tǒng)(第三版),機(jī)械工業(yè)出版社,2006[2]高國琴,微型計算機(jī)控制技術(shù),機(jī)械工業(yè)出版社,2006[3]張軍,AVR單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實例,中國電力出版社,2007[4]金鐘夫等,AVRATmega128單片機(jī)C程序設(shè)計與實踐,北京航空航天大學(xué)出版社,2008[5]譚浩強(qiáng),C程序設(shè)計(第三版),清華大學(xué)出版社,2005[6]林敏,計算機(jī)控制技術(shù)及工程應(yīng)用,國防工業(yè)出版社,2007[7]郭天祥,51單片機(jī)C語言教程,電子工業(yè)出版社,2009

中南民族大學(xué)學(xué)生課程設(shè)計報告課程名稱:C程序設(shè)計語言選題名稱:通訊錄管理年級:專業(yè):信息管理與信息系統(tǒng)學(xué)號:姓名:指導(dǎo)教師:完成地點:管理學(xué)院綜合實驗室完成日期:1.課程設(shè)計的目的為了熟練掌握C語言的語法特點、及其數(shù)據(jù)結(jié)構(gòu),提高自身編寫程序的能力。通過課程設(shè)計實現(xiàn)理論知識與實際情況的結(jié)合,使所學(xué)知識能夠在現(xiàn)實社會中起到一定的作用,防止所編寫的程序脫離實際,讓程序可以更好的發(fā)揮作用,以便減輕實際工作中所遇到的繁瑣步驟,提高現(xiàn)實工作中的效率。此外通過課程設(shè)計提高邏輯思考能力和解決實際問題的能力。程序設(shè)計是公認(rèn)的、最能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維,培養(yǎng)分析問題、解決問題能力的學(xué)科之一。其次課程設(shè)計有利于治學(xué)態(tài)度的培養(yǎng)。程序設(shè)計中,語句的語法和常量變量的定義都有嚴(yán)格的要求,有時輸了一個中文標(biāo)點、打錯了一個字母,編譯就不通過,程序無法正常運行。因此,程序設(shè)計初學(xué)階段,學(xué)生經(jīng)常會犯這樣的錯誤,可能要通過幾次乃至十多次的反復(fù)修改、調(diào)試,才能成功,但這種現(xiàn)象會隨著學(xué)習(xí)的深入而慢慢改觀。這當(dāng)中就有一個嚴(yán)謹(jǐn)治學(xué)、一絲不茍的科學(xué)精神的培養(yǎng),又有一個不怕失敗、百折不撓品格的鍛煉。通訊錄信息管理系統(tǒng)是生活中不可缺少的部分編寫了一個通訊錄信息管理系統(tǒng)是十分必要的。本程序設(shè)計具有通訊信息的錄入,進(jìn)行保存、查找、刪除等功能,操作界面簡潔美觀,易于操作。程序用了條件、循環(huán)、指針、結(jié)構(gòu)體等知識點,綜合了文件的打開和保存編寫的??蛇\用于小的管理軟件。軟件運用菜單實現(xiàn)交互式管理,用戶輕松的按鍵既可實現(xiàn)對軟件的操作,操作簡單易懂,功能豐富,可以很好的滿足的需要。通過對通訊錄管理系統(tǒng)的設(shè)計,進(jìn)一步理解和掌握C語言這門課程的知識點,能夠熟練的調(diào)用各種函數(shù),把各種C語句有機(jī)的結(jié)合起來,提高自己C語言程序設(shè)計的能力,為今后解決實際問題打下良好基礎(chǔ)。2.設(shè)計方案論證2.1設(shè)計思路建立一個函數(shù),用來添加、顯示、刪除、查詢通訊錄等信息,完成通訊錄的功能。主函數(shù)可以調(diào)用六個子函數(shù),分別完成添加記錄、顯示記錄、刪除記錄、查詢記錄、退出系統(tǒng)等功能。在主函數(shù)中可以以1、2、3、4、0數(shù)字鍵分別可以執(zhí)行某個功能模塊。退出程序刪除記錄查詢記錄顯示退出程序刪除記錄查詢記錄顯示記錄添加記錄通訊錄管理系統(tǒng) 2.2程序設(shè)計2.2.1根據(jù)圖1定義數(shù)據(jù)類型建立函數(shù)typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;2.2.2主函數(shù)及其流程圖Y定義主函數(shù)main()和一系列的功能函數(shù),只有通過這些函數(shù)才可實現(xiàn)程序的功能。每次使用都會調(diào)用主函數(shù)。主函數(shù)主要是利用switch語句對數(shù)據(jù)進(jìn)行處理,流程圖如下:Y添加記錄選擇1開始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3添加記錄選擇1開始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3結(jié)束結(jié)束 -PAGE3-2.2.3增加函數(shù)及其流程圖.添加通訊錄記錄流程圖:.顯示通訊錄記錄流程圖:.刪除通訊錄記錄流程圖:.查詢通訊錄記錄流程圖:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t\t*****通訊錄*****\n"); printf("\t\t┌───────┐\n"); printf("\t\t│1.添加記錄│\n"); printf("\t\t│2.顯示記錄│\n"); printf("\t\t│3.刪除記錄│\n"); printf("\t\t│4.查詢記錄│\n"); printf("\t\t│0.退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t請您選擇(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t編號:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年齡:"); scanf("\t%s",per[n+i].age); printf("\t電話號碼:"); scanf("\t%s",per[n+i].num); printf("\t通訊住址:"); scanf("\t%s",per[n+i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否繼續(xù)添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\n");/*格式*/ printf("編號姓名年齡電話號碼通訊地址電子郵箱\n"); printf("\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t\n"); printf("\t"); system("pause"); printf("\t\n"); } } printf("\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t請輸入想刪除記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已經(jīng)成功刪除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t\n請選擇查詢方式:\n");printf("\t┌──────┐\n");printf("\t│1姓名│\n");printf("\t│2電話│\n");printf("\t│3地址│\n");printf("\t│4返回│\n");printf("\t└──────┘\n");printf("請選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("輸入錯誤,請重新選擇:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t請輸入想查詢的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t請輸入想查詢的電話:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t請輸入想查詢的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t電子郵箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t請輸入想修改的記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t編號:"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年齡:"); scanf("\t%s",per[i].age); printf("\t電話號碼:"); scanf("\t%s",per[i].num); printf("\t通訊住址:"); scanf("\t%s",per[i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[i].email); printf("\t修改成功!");}voidWritetoText(Personper[],intn){ inti=0; FILE*fp;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論