張觀山,魯曉慶,尹義蕾,施國英,宋占華,張傳洋,宋月鵬
(1.山東農(nóng)業(yè)大學(xué)機械與電子工程學(xué)院,山東泰安,271018;2.山東省泰安英雄山中學(xué),山東泰安,271021;3.農(nóng)業(yè)農(nóng)村部規(guī)劃設(shè)計研究院,北京,100125)
《電子技術(shù)綜合訓(xùn)練》是面向自動化、電氣工程及其自動化、機械與電子工程等專業(yè)開設(shè)的實訓(xùn)課程,旨在綜合應(yīng)用大一、大二學(xué)年學(xué)習(xí)的《模擬電子技術(shù)基礎(chǔ)》、《數(shù)字電子技術(shù)基礎(chǔ)》、《電路原理》等課程理論知識,進行系統(tǒng)化、綜合性項目設(shè)計和實踐。傳統(tǒng)的實踐教學(xué)依托電子技術(shù)綜合實驗平臺等設(shè)備開展實驗,以上實驗設(shè)備只能滿足常規(guī)的實驗教學(xué)項目需求,而無法滿足創(chuàng)新性、綜合性項目設(shè)計需求,導(dǎo)致因設(shè)備配置實驗資源有限而在選擇和設(shè)計實驗過程中,放棄了諸多創(chuàng)新的設(shè)計思路和想法,制約了《電子技術(shù)綜合訓(xùn)練》課程實踐教學(xué)內(nèi)容發(fā)展[1]。
Proteus軟件是由Labcenter Electronics公司基于ProSPICE[2]開發(fā)的目前世界上最先進、最完整的嵌入式系統(tǒng)設(shè)計與仿真平臺[3],能夠?qū)崿F(xiàn)模擬電子、數(shù)字電子以及主流的微處理器,如51,STM32,ARM等的仿真[4]。因此,Proteus軟件能夠解決因?qū)嶒炘O(shè)備資源有限而制約《電子技術(shù)綜合訓(xùn)練》課程實踐教學(xué)內(nèi)容發(fā)展的問題。
本文采用Proteus軟件對電機恒速系統(tǒng)進行了設(shè)計和仿真,通過軟件仿真代替?zhèn)鹘y(tǒng)實驗教學(xué)設(shè)備,擺脫了實驗資源的限制[5],降低了實驗成本,提高了實驗設(shè)計的靈活性,提升了實驗教學(xué)效果[6]。
本文使用Proteus軟件對電機恒速系統(tǒng)進行了設(shè)計和仿真。電機恒速系統(tǒng)采用AT89C51單片機作為核心控制器,采用PWM方波驅(qū)動電機運轉(zhuǎn),采用單片機計數(shù)器采集電機的速度脈沖,采用8位共陰數(shù)碼管顯示電機速度設(shè)定值和實際值,采用按鍵電路修改速度設(shè)定值,采用增量式PID控制算法計算單片機控制輸出。
實驗前學(xué)生需熟練掌握Proteus軟件的使用,包括查找元件、放置元件、元件布局、線路連接、虛擬儀器儀表使用等內(nèi)容。
熟練掌握Proteus軟件之后,按照設(shè)計要求搭建電機恒速系統(tǒng)硬件電路。電路搭建過程中,遵循模塊化思想,按照先部分后整體的思路分模塊搭建電路,避免整體電路無法正常工作而難以查找問題的情況。例如搭建電機驅(qū)動、電機測速模塊電路,使用Proteus內(nèi)置的方波發(fā)生器連接電機驅(qū)動電路,觀察電機是否運轉(zhuǎn),使用Proteus軟件內(nèi)置的示波器觀察電機脈沖輸出。增大方波發(fā)生器輸出方波占空比,觀察電機轉(zhuǎn)速是否增加,通過示波器觀察電機脈沖頻率是否增加。如果以上現(xiàn)象符合預(yù)期要求,則表示電機驅(qū)動、電機測速模塊硬件電路搭建完成。如果現(xiàn)象不符合預(yù)期要求,需查找存在的問題,直至將問題解決。按照上述方法,繼續(xù)搭建數(shù)碼管顯示電路、按鍵電路等,最終完成整體硬件電路設(shè)計。
按照由簡單到復(fù)雜的思路完成軟件設(shè)計,共分13個步驟完成,具體實現(xiàn)步驟如下:
(1)實現(xiàn)單個LED燈點亮程序;
(2)實現(xiàn)LED燈熄滅程序;
(3)編寫延時程序,實現(xiàn)LED間隔1s閃爍;
(4)P1口連接8個LED,實現(xiàn)8個LED間隔1s閃爍;
(5)P0口連接數(shù)碼管段控位,向P0口發(fā)送0xFF,1s后發(fā)送0x00,不斷循環(huán),實現(xiàn)第0位數(shù)碼管從顯示8到全滅循環(huán)。
(6)向P0口發(fā)送0xFF,P2.5,P2.6,P2.7口通過控制LS138譯碼器控制數(shù)碼管位選,實現(xiàn)數(shù)碼管從0-7位循環(huán)顯示8。
(7)減少延時時間為5ms,利用動態(tài)掃描原理實現(xiàn)數(shù)碼管同時顯示8。
(8)控制數(shù)碼管不同位顯示不同內(nèi)容。例如控制第0位顯示時,發(fā)送顯示0的段碼,控制第7位顯示時,發(fā)送顯示7的段碼,實現(xiàn)數(shù)碼管從低位到高位顯示0至7,并通過修改段碼改變顯示內(nèi)容。
(9)初始速度設(shè)定值為200脈沖/秒,通過低四位數(shù)碼管顯示。
(10)編寫?yīng)毩存I程序,通過按鍵調(diào)整速度設(shè)定值,并在數(shù)碼管顯示。
(11)編寫單片機定時器程序,通過中斷服務(wù)程序產(chǎn)生方波驅(qū)動電機運轉(zhuǎn)。
(12)將單片機定時器/計數(shù)器設(shè)置為計數(shù)器模式,每隔1s時間讀取計數(shù)器存儲的電機脈沖數(shù),將脈沖數(shù)轉(zhuǎn)化為電機轉(zhuǎn)速,通過數(shù)碼管高四位顯示。
(13)編寫PID控制程序,計算PWM方波占空比,實現(xiàn)電機閉環(huán)調(diào)速。
圖1為硬件電路整體結(jié)構(gòu)圖,由微處理器、振蕩電路、復(fù)位電路、按鍵電路、數(shù)碼管驅(qū)動電路、數(shù)碼管段選電路、數(shù)碼管位選電路等組成。微處理器發(fā)送PWM方波到電機驅(qū)動電路驅(qū)動電機轉(zhuǎn)動,電機轉(zhuǎn)動產(chǎn)生方波脈沖。微處理器將定時器/計數(shù)器設(shè)定為計數(shù)器模式,計數(shù)器采集電機產(chǎn)生的方波,并轉(zhuǎn)化為電機轉(zhuǎn)速。數(shù)碼管顯示電路包括數(shù)碼管段選電路、數(shù)碼管位選電路和數(shù)碼管,數(shù)碼管段選電路控制每一位數(shù)碼管顯示內(nèi)容,數(shù)碼管位選電路控制某一位數(shù)碼管顯示,按鍵電路設(shè)定電機速度。

圖1 硬件電路整體結(jié)構(gòu)圖
電機驅(qū)動電路使用L298N專用驅(qū)動集成電路設(shè)計而成,L298N屬于H橋集成電路,具有輸出電流大,電路簡單,使用方便等特點,能夠?qū)崿F(xiàn)電機調(diào)速、急停、換向等功能[7]。圖2為電機驅(qū)動電路設(shè)計圖,電機使用Proteus仿真軟件內(nèi)置的ENCMOTOR模塊,該模塊包括三個端口,左右端口為轉(zhuǎn)速信號,中間端口為脈沖信號,本文設(shè)置ENCMOTOR電機轉(zhuǎn)1圈,輸出60個脈沖信號。

圖2 電機驅(qū)動電路設(shè)計
數(shù)碼管顯示電路中數(shù)碼管選用8位共陰數(shù)碼管,前四位顯示電機轉(zhuǎn)速實際值,后四位顯示電機轉(zhuǎn)速測量值。AT89C51單片機P0口連接74HC573鎖存器,74HC573鎖存器連接數(shù)碼管段控端,控制數(shù)碼管顯示內(nèi)容。AT89C51單片機通過P2.5口,P2.6口,P2.7口連接74HC138譯碼器輸入端口,74HC138譯碼器輸出端口連接數(shù)碼管位控端,控制數(shù)碼管位選。74HC138譯碼器是一種3線-8線通用譯碼器,可實現(xiàn)擴展單片機IO口(見圖6)。

圖6 電機恒速系統(tǒng)Proteus軟件仿真界面
采用單片機中斷技術(shù)結(jié)合LED動態(tài)掃描顯示原理實現(xiàn)數(shù)碼管顯示[8],圖3為數(shù)碼管顯示程序流程。設(shè)置單片機定時器/計數(shù)器工作于定時器模式,將定時器設(shè)置為工作方式1,打開中斷總開關(guān)和定時器中斷開關(guān),分別給TH0和TL0裝入初值,TH0裝入的初值為(65536-5000)/256,TL0裝入的初值為(65536-5000)%256,設(shè)置定時器每5ms產(chǎn)生一次中斷,啟動定時器。設(shè)置數(shù)碼管位控顯示變量i等于0。判斷是否滿足定時器中斷觸發(fā)的條件,如果未滿足,則繼續(xù)等待,如果滿足定時器中斷觸發(fā)條件,則定時器中斷觸發(fā)并進入定時器中斷服務(wù)程序。在中斷服務(wù)程序中,單片機給數(shù)碼管發(fā)送數(shù)碼管段選碼和位選碼,然后判斷數(shù)碼管顯示控制變量i是否大于7,如果i不大于7,i加1,等待下一次定時器中斷觸發(fā)。如果i大于7,i清零,并等待下一次定時器中斷觸發(fā)。

圖3 數(shù)碼管顯示程序?qū)崿F(xiàn)流程
圖4為測速程序?qū)崿F(xiàn)流程圖。首先設(shè)置定時器0為5ms定時器,設(shè)置定時器1工作于計數(shù)器模式,設(shè)置1s定時控制變量j等于0,判斷定時器0是否滿足中斷觸發(fā)條件,如果不滿足,則等待定時器0中斷觸發(fā),如果滿足,則進入定時器0中斷服務(wù)程序。進入定時器0中斷服務(wù)程序之后,判斷1s定時控制變量j是否大于200,如果不滿足,則j加1,跳出中斷,等待下一次定時器0中斷觸發(fā)。如果滿足,則讀取計數(shù)器存儲數(shù)值,同時計數(shù)器清零。讀取的數(shù)值經(jīng)過處理之后得到電機速度,1s定時控制變量j清零,跳出定時器0中斷服務(wù)程序,等待下一次定時器中斷觸發(fā)。

圖4 測速程序?qū)崿F(xiàn)流程圖
圖5為PID原理框圖,本文使用的增量式PID算法調(diào)節(jié)單片機輸出控制量。圖5中,r(t)為給定值,y(t)為輸出值,給定值與輸出值構(gòu)成控制偏差e(t),即e(t)=r(t)-y(t),e(t)作為PID控制器的輸入,u(t)作為PID控制器的輸出和被控對象的輸入,u(t)指PWM方波的占空比,占空比越大,電機轉(zhuǎn)速越快。PID控制器的控制律通過公式1表達。

圖5 PID原理框圖

式(1)中,u(t)為輸出信號,e(t)為偏差信號,Kp為比例系數(shù),TI為積分時間,TD為微分時間,u0為控制常量,Kp/TI為積分系數(shù),Kp/Td為微分系數(shù)。
本文使用Proteus軟件進行電機恒速系統(tǒng)設(shè)計與仿真,圖6為電機恒速系統(tǒng)Proteus軟件仿真界面。設(shè)置比例系數(shù)Kp等于1,積分系數(shù)Kp/TI等于0.3,微分系數(shù)Kp/Td等于0.03,初始電機速度設(shè)定為200脈沖/秒。啟動仿真,系統(tǒng)運行約5s后,電機實際速度穩(wěn)定在200脈沖/秒。
通過加速按鍵,將速度設(shè)定值增加至250脈沖/秒,調(diào)整結(jié)束后,系統(tǒng)將電機實際速度調(diào)整為250脈沖/秒大約需要4秒時間。
通過減速按鍵,將速度設(shè)定值減小至150脈沖/秒,系統(tǒng)將電機速度調(diào)整為150脈沖/秒大約需要6秒。
為了滿足《電子技術(shù)綜合訓(xùn)練》課程實訓(xùn)要求,提出了基于Proteus的電機恒速系統(tǒng)實驗教學(xué)項目。該項目要求學(xué)生按照模塊化思想搭建硬件仿真電路,按照由簡單到復(fù)雜的思路逐步完成程序的設(shè)計。系統(tǒng)采用增量式PID控制算法調(diào)節(jié)電機速度,實現(xiàn)了電機轉(zhuǎn)速閉環(huán)控制。通過該項目實踐,能夠?qū)W(xué)生數(shù)字電路、模擬電路、自動控制理論等知識進行較為系統(tǒng)的應(yīng)用和訓(xùn)練,對學(xué)生電路設(shè)計能力、仿真分析能力、軟件編程能力具有較大的幫助和提升。