胡發(fā)煥,鄭大騰,郭猷敏
(井岡山大學(xué)機(jī)電工程學(xué)院,江西 吉安 343009)
“單片機(jī)原理及應(yīng)用”是電氣工程、測(cè)控技術(shù)與儀器、機(jī)械電子工程等電控類專業(yè)的基礎(chǔ)核心課程,是從事機(jī)電、自動(dòng)化設(shè)計(jì)人才必須掌握的一門專業(yè)課程。該課程不僅要求掌握相應(yīng)的理論知識(shí),同時(shí)具有很強(qiáng)的實(shí)踐性和工程性,強(qiáng)調(diào)理論教學(xué)和實(shí)踐教學(xué)的高度結(jié)合[1-4]。但在傳統(tǒng)的單片機(jī)教學(xué)過程中,實(shí)踐環(huán)節(jié)卻沒有得到應(yīng)有的重視,與培養(yǎng)大學(xué)生實(shí)踐和創(chuàng)新能力的要求差距較大[5-8]。單片機(jī)課程設(shè)計(jì)是整個(gè)課程教學(xué)的重要實(shí)踐環(huán)節(jié),它將單片機(jī)原理、模擬電路、數(shù)字電路、自動(dòng)控制原理等相關(guān)課程的知識(shí)緊密結(jié)合起來,為提高課程設(shè)計(jì)效果需要根據(jù)教師提出的要求,設(shè)計(jì)完成一個(gè)實(shí)際項(xiàng)目的設(shè)計(jì)過程。劉恒[9]采用現(xiàn)成的實(shí)驗(yàn)箱形式完成實(shí)驗(yàn),主要訓(xùn)練學(xué)生的軟件編程能力,難以培養(yǎng)學(xué)生的電路設(shè)計(jì)能力。依據(jù)老師布置的項(xiàng)目,學(xué)生自己設(shè)計(jì)硬件電路、選擇電子元器件、設(shè)計(jì)PCB 板、焊接元件、編寫程序、聯(lián)機(jī)調(diào)試等一系列過程,完成一個(gè)單片機(jī)應(yīng)用的小系統(tǒng)。課程設(shè)計(jì)實(shí)驗(yàn)環(huán)節(jié)是以學(xué)生為主體,以培養(yǎng)學(xué)生的綜合設(shè)計(jì)能力和創(chuàng)新能力為目標(biāo)[10]。
教師在單片機(jī)課程設(shè)計(jì)選題時(shí),應(yīng)該結(jié)合學(xué)生的自身需求,同時(shí)拓展學(xué)生的知識(shí)面,王一[11]采用的主控芯片在拓展學(xué)生知識(shí)面上有所欠缺。大學(xué)生在學(xué)習(xí)期間,常參加各類學(xué)科競(jìng)賽,通過學(xué)科競(jìng)賽可以檢驗(yàn)和提高學(xué)生的理論基礎(chǔ)和實(shí)踐創(chuàng)新能力。在電類學(xué)科競(jìng)賽中常會(huì)考查學(xué)生對(duì)閉環(huán)控制系統(tǒng)的設(shè)計(jì)能力,控制系統(tǒng)的執(zhí)行器通常是電機(jī)類。因此,本文以基于單片機(jī)的直流電機(jī)閉環(huán)控制系統(tǒng)設(shè)計(jì)為單片機(jī)的課程設(shè)計(jì)題目,在主控芯片上選用性能更高的單片機(jī),以達(dá)到更好地培養(yǎng)學(xué)生的專業(yè)綜合設(shè)計(jì)能力和促進(jìn)學(xué)生參加學(xué)科競(jìng)賽的目標(biāo)。
通過單片機(jī)課程設(shè)計(jì),學(xué)生應(yīng)掌握以下的知識(shí)點(diǎn):(1)掌握單片機(jī)編程的基本知識(shí);(2)掌握閉環(huán)控制經(jīng)典控制方法,即比例-積分-微分(PID)控制算法;(3)掌握脈沖寬度調(diào)制(Pulse Width Modulation,PWM)技術(shù)的相關(guān)知識(shí);(4)掌握直流電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)方法;(5)掌握一種電機(jī)轉(zhuǎn)速和轉(zhuǎn)向檢測(cè)傳感器的使用方法。通過單片機(jī)的課程設(shè)計(jì),讓學(xué)生能夠舉一反三,達(dá)到培養(yǎng)學(xué)生的綜合設(shè)計(jì)和創(chuàng)新能力的目標(biāo)。
直流電機(jī)閉環(huán)控制系統(tǒng),要求電機(jī)能夠快速地啟動(dòng)、停止和頻繁正反轉(zhuǎn),且電機(jī)的實(shí)際轉(zhuǎn)速和系統(tǒng)要求轉(zhuǎn)速一致,因此必須具有轉(zhuǎn)速負(fù)反饋,構(gòu)成閉環(huán)控制系統(tǒng),其原理如圖1 所示。
圖1 直流電機(jī)閉環(huán)控制系統(tǒng)
直流電機(jī)調(diào)速方案主要有3 種:調(diào)節(jié)電樞電壓、調(diào)節(jié)電樞的串聯(lián)阻抗和調(diào)節(jié)電機(jī)的磁場(chǎng)強(qiáng)度[12]。其中調(diào)節(jié)電樞電壓用得最廣,本文即采用這種方式。電樞電壓采用PWM 方式調(diào)節(jié),這種方式調(diào)節(jié)范圍寬(可在0 ~100%之間來連續(xù)調(diào)節(jié))且效率高。它是根據(jù)窄脈沖面積等效的原理,通過改變高電平的比例(占空比),將固定的直流電壓變換成所需要的直流電壓,從而改變電機(jī)的電樞電壓:
式中:Ud為電樞電壓;Us為電源電壓;ton為PWM 脈沖高電平時(shí)間;t 為PWM 周期;ρ 為兩者之比為占空比,當(dāng)ρ =0 時(shí)Ud=0,ρ =1 時(shí)Ud=Us。
調(diào)速系統(tǒng)框圖如圖2所示。圖中,VT1 ~VT4為4 個(gè)開關(guān)管構(gòu)成H 橋控制電路,當(dāng)VT1 和VT3 導(dǎo)通時(shí),VT2 和VT4截止,電機(jī)正轉(zhuǎn);當(dāng)VT2 和VT4 導(dǎo)通時(shí),VT1和VT3 截止,電機(jī)反轉(zhuǎn)。通過調(diào)節(jié)PWM脈沖的占空比,實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速的控制。同時(shí)通過轉(zhuǎn)速檢測(cè)傳感器,獲得電機(jī)的轉(zhuǎn)速,以達(dá)到閉環(huán)控制的目標(biāo)。為更好地實(shí)現(xiàn)電機(jī)的閉環(huán)控制,本文的單片機(jī)采用某公司C8051F310 單片機(jī)[13],該單片機(jī)較教材選用的80C51 單片機(jī)功能強(qiáng),其特點(diǎn):該系統(tǒng)資源豐富,帶內(nèi)部晶振,有21 個(gè)外部輸入的12 位ADC和2 個(gè)10 位DAC,29 個(gè)I/O 端口,15 個(gè)向量中斷源,可編程的16 位計(jì)數(shù)器定時(shí)器陣列,4 個(gè)通用16 位計(jì)數(shù)器/定時(shí)器,5 個(gè)捕捉比較模塊,可輸出16 位PWM 脈沖。選用該單片機(jī)除了其強(qiáng)大功能,還可以訓(xùn)練學(xué)生學(xué)習(xí)更高級(jí)別單片機(jī),擴(kuò)充學(xué)生知識(shí)面。
圖2 數(shù)字化閉環(huán)PWM直流調(diào)速系統(tǒng)硬件框圖
(1)單片機(jī)端口分配。
在學(xué)科競(jìng)賽中用到的輪式機(jī)器人大多是兩輪機(jī)器人,因此本文設(shè)計(jì)控制2 個(gè)直流電機(jī),即輪式機(jī)器人的左右輪。單片機(jī)采用內(nèi)部晶振,每個(gè)電機(jī)分配1 個(gè)電機(jī)轉(zhuǎn)速控制端口(PWM輸出端口)、1 個(gè)電機(jī)轉(zhuǎn)向控制端口、1個(gè)獲取電機(jī)轉(zhuǎn)速反饋端口和1 個(gè)獲取電機(jī)轉(zhuǎn)向反饋端口,每個(gè)電機(jī)需用4 個(gè)端口,2 個(gè)電機(jī)共需8 個(gè)I/O端口。顯示屏需4 個(gè)I/O 端口。按鍵需5 個(gè)I/O 端口,端口分配如圖3 所示。具體分配是左右輪電機(jī)的PWM輸出端口分別是P1.0 和P1.1;左右輪電機(jī)的轉(zhuǎn)向控制端口分別為P1.4和P1.5;反饋?zhàn)笥逸嗠姍C(jī)速度端口分別為P1.2 和P1.3;反饋?zhàn)笥逸嗠姍C(jī)轉(zhuǎn)向端口分別為P1.6 和P1.7,通過P1 的8 個(gè)端口實(shí)現(xiàn)對(duì)2 個(gè)電機(jī)的閉環(huán)控制。顯示屏采用SPI通信方式,占用P0.0 ~0.2 端口和C2CK 端口。按鍵用P2.2 ~2.6 端口。
圖3 單片機(jī)端口分配
(2)電機(jī)驅(qū)動(dòng)電路及分析
單片機(jī)輸出的PWM 信號(hào)不能直接驅(qū)動(dòng)電機(jī),需經(jīng)過電機(jī)驅(qū)動(dòng)電路才能控制電機(jī)的正常工作。本文采用圖2 的H橋方式實(shí)現(xiàn)電機(jī)的控制。H橋的4 個(gè)開關(guān)管選用場(chǎng)效應(yīng)管,它具有損耗小、工作電流大的優(yōu)勢(shì)。采用2個(gè)半橋驅(qū)動(dòng)器IR2104 芯片控4 個(gè)開關(guān)管[14],其驅(qū)動(dòng)電路如圖4 所示。IR2104 的SD為使能端,高電平有效;IN為脈沖信號(hào)輸入端,可輸入TTL 電平;HO、LO 為控制輸出端,分別為高、低橋臂的門極驅(qū)動(dòng)端,HO 的邏輯電平與IN 同相;LO 的邏輯電平與IN 反相,任何時(shí)刻HO和LO只有一個(gè)輸出邏輯高電平。VB 是高橋臂浮動(dòng)電源輸入端,VS高橋臂浮動(dòng)電源回流端,2 個(gè)IR2104 控制一個(gè)電機(jī)。以左輪電機(jī)為例,2 個(gè)IR2104 控制4 個(gè)場(chǎng)效應(yīng)管,PWM_L和DIR_L 分別為電機(jī)轉(zhuǎn)速和轉(zhuǎn)向控制輸入端。當(dāng)DIR_L為邏輯高電平1 時(shí),U8 的HO輸出邏輯高電平,LO 輸出邏輯低電平,V2 飽和導(dǎo)通,V3 截止。PWM_L是PWM信號(hào),當(dāng)PWM_L是高電平1 時(shí),V1 飽和導(dǎo)通,V4 截止,電機(jī)無電流流過;當(dāng)PWM_L 是低電平0 時(shí),V1 截止,V4 飽和導(dǎo)通,這時(shí)V2 和V4 飽和導(dǎo)通,V1 和V3 截止,電機(jī)正向轉(zhuǎn)動(dòng),改變PWM_L 的占空比則改變電機(jī)的轉(zhuǎn)速。同理分析可以得到,當(dāng)DIR_L為低電平0 時(shí),電機(jī)反向轉(zhuǎn)動(dòng),改變PWM_L 的占空比則改變電機(jī)的轉(zhuǎn)速。在向?qū)W生分析電路時(shí),應(yīng)講解二極管D6 ~D9 的作用:因場(chǎng)效管的門極和源極之間有結(jié)電容,在場(chǎng)效應(yīng)導(dǎo)通和截止時(shí)結(jié)電容存在充放電過程,在門極電阻并聯(lián)二極管,使得充放電時(shí)間常數(shù)不一樣。充電時(shí),電流經(jīng)過門極電阻,放電時(shí)電流經(jīng)過二極管,放電時(shí)間小于充電時(shí)間,使場(chǎng)效應(yīng)管截止時(shí)間小于導(dǎo)通時(shí)間,確保一個(gè)場(chǎng)效應(yīng)管導(dǎo)通時(shí),另一半橋臂的場(chǎng)效應(yīng)管提前截止。D4、C14 和D5、C13 通過充放電構(gòu)成自舉電路,依靠自舉電路,HO 輸出邏輯高電平時(shí),可達(dá)高于VCC 電壓6 ~8 V,可以確保高橋臂V1、V2 飽和導(dǎo)通時(shí)門極的高電壓。在課程設(shè)計(jì)的分析過程中,應(yīng)向?qū)W生講解自舉電路的工作原理和場(chǎng)效應(yīng)門極二極管的作用,這也是分析整個(gè)電路的一個(gè)重點(diǎn)。
圖4 電機(jī)驅(qū)動(dòng)電路
(3)邏輯電路及分析
在電機(jī)驅(qū)動(dòng)電路中,存在一個(gè)缺陷,當(dāng)控制電機(jī)轉(zhuǎn)向的DIR_ L輸出高電平1 時(shí),V2 保持飽和導(dǎo)通,V1 保持截止。由于DIR_A 不是PWM 波形不能形成充放電,此時(shí)U8 的自舉電路工作狀態(tài)受到嚴(yán)重影響,測(cè)試發(fā)現(xiàn)此時(shí)U8 的HO電壓比VCC 電壓高出約3V,即V2 不能工作在飽和狀態(tài),發(fā)熱明顯加大,影響其正常工作。為了克服上述的缺點(diǎn),本文在驅(qū)動(dòng)電路前加入邏輯電路,以左電機(jī)邏輯電路為例,運(yùn)算電路如圖5 (a)所示,實(shí)現(xiàn)電路如圖5 (b)所示。從單片機(jī)輸出的L_PWM、L_DIR分別為左電機(jī)速度信號(hào)和電機(jī)轉(zhuǎn)向信號(hào),邏輯電路運(yùn)算分別為:PWM_L =L_PWM·L_DIR 和DIR_L =L_PWM·L_DIR。邏輯電路輸出的PWM_L 和DIR_L 送給電機(jī)驅(qū)動(dòng)電路。當(dāng)轉(zhuǎn)向信號(hào)L_DIR 為高電平1 時(shí),PWM_L =L_ PWM,DIR_L =0。此時(shí)PWM_ L 端輸出PWM波形,U7 的自舉電路能正常工作;而U8 的HO =0,LO =1,V2 保持截止,V3 保持飽和導(dǎo)通,因V2 截止,所以自舉電路的電壓對(duì)V2 沒有影響。當(dāng)L_DIR 為低電平0 時(shí),PWM_L =0,DIR_L =L_PWM。DIR_L端輸出PWM波形,U8 的自舉電路能夠正常工作;U7 的HO=0,LO =1,V4 保持飽和導(dǎo)通,V1 保持截止,因V1 截止,所以自舉電路的電壓對(duì)V1 沒有影響。
圖5 邏輯電路
從上述分析可知,經(jīng)過邏輯電路后不論電機(jī)正轉(zhuǎn)還是反轉(zhuǎn),保持飽和導(dǎo)通的不是高橋臂而是低橋臂,低橋臂飽和導(dǎo)通時(shí)門極電壓不需要比VCC的電壓高,因此克服了驅(qū)動(dòng)電路的缺陷。本文的邏輯電路也是學(xué)生需要理解的一個(gè)重點(diǎn)。
(4)電機(jī)轉(zhuǎn)速反饋電路
電機(jī)的閉環(huán)控制需要通過傳感器獲得電機(jī)的實(shí)際轉(zhuǎn)速并反饋給單片機(jī),確保電機(jī)的實(shí)際轉(zhuǎn)速和單片機(jī)的給定轉(zhuǎn)速一致。本文的轉(zhuǎn)速傳感器采用HEDS-5540增量式編碼器,它安裝在電機(jī)的尾部,與電機(jī)合為一體。該編碼器是1024 線編碼器,直接輸出兩相TTL 的數(shù)字脈沖信號(hào),兩相信號(hào)之間有90°的相位差。本文用其中任何一相作為電機(jī)的轉(zhuǎn)速反饋信號(hào),送給單片機(jī)的計(jì)數(shù)器實(shí)現(xiàn)測(cè)速。
(5)電機(jī)轉(zhuǎn)向反饋電路
要對(duì)電機(jī)閉環(huán)控制,必須將電機(jī)的轉(zhuǎn)向反饋給單片機(jī),確保電機(jī)的實(shí)際轉(zhuǎn)向和給定轉(zhuǎn)向一致。本文的轉(zhuǎn)向檢測(cè)電路采用兩路邊沿D觸發(fā)器74LS74 實(shí)現(xiàn)對(duì)兩個(gè)電機(jī)的轉(zhuǎn)向檢測(cè),檢測(cè)電路如圖6 所示。為便于檢測(cè),本文將復(fù)位端CLR1、CLR2 和置位端SET1、SET2 接高電平。將2 個(gè)編碼器送來的四路脈沖信號(hào)分別輸入CLK1、D1和CLK2、D2,其中CLK 為2 個(gè)D 觸發(fā)器的時(shí)鐘信號(hào),上升沿有效;D 為數(shù)據(jù)輸入端,Q 為觸發(fā)器的輸出信號(hào)端,其輸值為時(shí)鐘信號(hào)上升沿對(duì)應(yīng)的輸入端D 的值,即:RQ=RD·RCLK↑。編碼器傳輸過來的AB 兩路脈沖方波的頻率相同,但相位相差90°。鑒向過程如圖7 所示,當(dāng)電機(jī)正轉(zhuǎn)時(shí),A相超前B相90°,觸發(fā)信號(hào)的上升沿對(duì)應(yīng)的輸入信號(hào)是高電平,此時(shí)輸出端Q 為高電平1;當(dāng)電機(jī)反轉(zhuǎn)時(shí),A 相滯后B相90°,觸發(fā)信號(hào)的上升沿對(duì)應(yīng)的輸入信號(hào)是低電平,此時(shí)輸出端Q 為低電平0。通過電機(jī)轉(zhuǎn)向反饋電路,單片機(jī)可獲得電機(jī)的轉(zhuǎn)向。
圖6 電機(jī)轉(zhuǎn)向反饋電路
圖7 電機(jī)轉(zhuǎn)向鑒相示圖
(6)按鍵及OLED顯示電路
為調(diào)節(jié)及顯示電機(jī)轉(zhuǎn)速,控制電路中設(shè)計(jì)了按鍵及OLED顯示電路,控制引腳分配(圖3)。按鍵共有5 個(gè)“運(yùn)行”“停止”“調(diào)速”“速度+”“速度-”。通過這些按鍵可以啟動(dòng)、停止和調(diào)節(jié)電機(jī)的轉(zhuǎn)速。OLED 顯示屏是采用SPI通信方式通信,用于顯示電機(jī)的設(shè)置轉(zhuǎn)速和實(shí)際轉(zhuǎn)速,通過兩個(gè)速度的比較,可以直觀地得到電機(jī)控制的效果。
主程序流程如圖8 所示,在電機(jī)運(yùn)行過程中,可以隨時(shí)改變電機(jī)速度。按功能不同,子程序包括了初始化設(shè)置子程序、PID 轉(zhuǎn)速控制程序、按鍵和顯示子程序等。
圖8 主程序流程
PID控制器廣泛應(yīng)用于自動(dòng)控制領(lǐng)域,是電類專業(yè)學(xué)生要求掌握的一個(gè)知識(shí)點(diǎn),也是本課程設(shè)計(jì)的一個(gè)教學(xué)重點(diǎn)。本設(shè)計(jì)通過對(duì)電機(jī)的轉(zhuǎn)速控制和顯示,能夠讓學(xué)生對(duì)PID 控制器的設(shè)計(jì)及其效果有一個(gè)直觀的理解。在微機(jī)控制系統(tǒng)中,采用離散化設(shè)計(jì)方法,得到數(shù)字PID控制器,它分為位置式PID和增量式PID,本文的控制對(duì)象為電機(jī),故采用增量式數(shù)字PID控制器[15],其控制方式如式(2)所示,控制程序的流程如圖9 所示。因?yàn)镻WM 的占空比最大為1,因此,本文采用限幅式PID控制方式,即u(k)≤Umax。
圖9 增量式PID子程序流程
本文測(cè)試的電機(jī)是Faulhaber 2342L012CR 直流伺服減速電機(jī),是在學(xué)科競(jìng)賽中常用的一款電機(jī),其主要參數(shù):額定電壓12 V,額定功率17 W,直流阻抗1.9 Ω,轉(zhuǎn)子電感65 μH,機(jī)械時(shí)間常數(shù)6 ms,原始轉(zhuǎn)速7 680 r/min,減速后轉(zhuǎn)速120 r/min,連續(xù)轉(zhuǎn)矩1.7 N·m。兩輪機(jī)器人小車的實(shí)物如圖10 所示。
圖10 兩輪機(jī)器人實(shí)物
本課程設(shè)計(jì)實(shí)驗(yàn)平臺(tái)的控制方式為閉環(huán)控制,為檢測(cè)控制效果,采用開環(huán)和閉環(huán)兩種方式進(jìn)行了測(cè)試比較,測(cè)試的結(jié)果如表1 所示。從表中可得出,本課程設(shè)計(jì)的實(shí)驗(yàn)平臺(tái)能夠良好運(yùn)行,閉環(huán)控制方式的靜差率和調(diào)節(jié)時(shí)間比開環(huán)控制都有大幅度降低,其控制效果明顯優(yōu)于開環(huán)控制方式。
表1 綜合實(shí)驗(yàn)平臺(tái)性能測(cè)試
單片機(jī)課程設(shè)計(jì)是單片機(jī)課程教學(xué)的一個(gè)重要實(shí)踐教學(xué)環(huán)節(jié),本課程設(shè)計(jì)涉及的知識(shí)點(diǎn)廣,主要包含了的單片機(jī)基本編程、定時(shí)器脈寬調(diào)制、單片機(jī)中斷編程、數(shù)字PID編程、直流電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)、OLED 顯示器驅(qū)動(dòng)、數(shù)字編碼器應(yīng)用、電機(jī)鑒向電路等知識(shí)點(diǎn)。尤其在電機(jī)驅(qū)動(dòng)電路為了使截止橋臂快于導(dǎo)通橋臂而設(shè)置門極二極管D6 ~D9;為了克服半橋驅(qū)動(dòng)器IR2104 高橋臂長(zhǎng)時(shí)間導(dǎo)通時(shí)輸出電壓低的問題而設(shè)計(jì)的邏輯電路,都是解決實(shí)際設(shè)計(jì)電路的措施,通過學(xué)習(xí)這些實(shí)際案例可以很大地拓展學(xué)生的知識(shí)點(diǎn)和電路設(shè)計(jì)能力。因此,本文的設(shè)計(jì)是一個(gè)很好的單片機(jī)綜合設(shè)計(jì)案例。