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