史中權(quán),丁 坤
(河海大學(xué)機(jī)電工程學(xué)院,江蘇常州213022)
“單片機(jī)原理與應(yīng)用”課程是實(shí)踐性較強(qiáng)的課程[1]。傳統(tǒng)的單片機(jī)教學(xué)模式以原理講授為中心,強(qiáng)調(diào)理論知識(shí)體系的完整性,講授內(nèi)容比較抽象[2,3]。即使有若干相應(yīng)的實(shí)驗(yàn)作為教學(xué)輔助,教學(xué)效果仍然不夠理想。本文根據(jù)單片機(jī)教學(xué)的特點(diǎn)和經(jīng)驗(yàn),結(jié)合“電控柴油發(fā)動(dòng)機(jī)的噴油控制”這項(xiàng)科研項(xiàng)目開發(fā)實(shí)例,提高講授單片機(jī)綜合實(shí)踐課程中各模塊應(yīng)用的教學(xué)效果。
單片機(jī)處理的信號(hào)一般可以分為開關(guān)量、模擬量、數(shù)字量和脈沖量等幾大類,處理模塊包括開關(guān)量輸入輸出、定時(shí)/計(jì)數(shù)、模擬量采集A/D、模擬量輸出D/A、脈沖量輸入、PWM輸出、通信以及中斷控制等。其中的中斷控制模塊往往貫穿于其它各模塊之中。如何選取一個(gè)有價(jià)值的科研案例是本教學(xué)方法最關(guān)鍵內(nèi)容之一。本課程的案例選取要注重兩個(gè)原則:①盡可能多體現(xiàn)教學(xué)內(nèi)容;②簡單易懂。
本課程科研案例選用“電控柴油發(fā)動(dòng)機(jī)噴油控制”,其核心控制器簡稱為電子控制單元ECU,其主控芯片為單片機(jī),涉及到的外圍部件包含了常用的單片機(jī)基本模塊。ECU單片機(jī)各模塊見表1。
表1 ECU單片機(jī)各模塊分類
開關(guān)量輸入模塊的輸入信號(hào)來自于各種只有開和關(guān)兩種狀態(tài)的設(shè)備,如限位開關(guān),操作按鍵按鈕、選擇開關(guān)、行程開關(guān)以及其他一些傳感器比如溫度開關(guān)、壓力開關(guān)輸出的開關(guān)量等,通過輸入電路轉(zhuǎn)換成單片機(jī)能夠接收和處理的信號(hào)。本科研實(shí)例為0V或+5V。最簡單可靠的開關(guān)量處理方案是:在輸入端與地之間并聯(lián)一只電容來吸收干擾脈沖,如圖1(a)所示。更可靠的方案是采用光耦進(jìn)行信號(hào)隔離,如圖1(b)所示。本科研實(shí)例采用的是光耦隔離的方式。
圖1 開關(guān)量輸入模塊
對于開關(guān)量的編程處理,最簡單的就是直接讀取相應(yīng)的端口,外部開關(guān)狀態(tài)對應(yīng)內(nèi)部字節(jié)位狀態(tài)“0”或“1”,判斷相應(yīng)位的值來決定處理流程。上述方案中,外部相應(yīng)開關(guān)接通,相應(yīng)端口位為0。本例中,啟動(dòng)開關(guān)對應(yīng)單片機(jī)的P1.0口,剎車信號(hào)對應(yīng)于P1.1口。如果程序讀取到P1.0為0,則表明啟動(dòng)開關(guān)接通,則通電啟動(dòng)電機(jī)并按時(shí)序接通發(fā)動(dòng)機(jī)的噴油閥以完成噴油輸出。如果P1.1口為0,則表明剎車信號(hào)接通,則此時(shí)噴油量不能按照油門決定,必須強(qiáng)制回到怠速控制甚至斷油。
開關(guān)量處理中經(jīng)常要檢測一個(gè)開關(guān)的狀態(tài)變化,比如從斷開到接通或者從接通到斷開的跳變,這一點(diǎn)對于初學(xué)的學(xué)生常常會(huì)感到無從下手。常規(guī)處理方法是,判斷某開關(guān)對應(yīng)位的上一次狀態(tài)和本次采集到的狀態(tài),即可判斷是何種跳變,但這種處理方法不利于批量開關(guān)量跳變的判斷。本例采用的是利用上次狀態(tài)和本次狀態(tài)進(jìn)行邏輯計(jì)算,結(jié)果中為1的位即表明該位對應(yīng)開關(guān)有跳變。設(shè)批量開關(guān)的上次輸入狀態(tài)為oldST,本次的輸入狀態(tài)為nowST,對應(yīng)位1表明開關(guān)處于接通狀態(tài)。則開關(guān)從接通到斷開的跳變變量edgSTP和從斷開到接通跳變變量edgSTQ的邏輯計(jì)算公式如下:
對于開關(guān)量輸出,我們可以簡單地解釋為字節(jié)中位的狀態(tài)決定了相應(yīng)端口引腳的電平狀態(tài):引腳直接通過場效應(yīng)管接地或通過一個(gè)電阻直接接到電源+5V。因此,單片機(jī)開關(guān)量輸出端口一般驅(qū)動(dòng)能力不強(qiáng),除了直接驅(qū)動(dòng)小電流器件如LED等,一般情況下均需專用的驅(qū)動(dòng)芯片。其輸出雖因控制對象的不同而千差萬別,但一般情況下均需滿足對輸出電壓、電流和隔離抗干擾的要求。常規(guī)的驅(qū)動(dòng)采用三極管或驅(qū)動(dòng)能力更強(qiáng)的MC1413或UN2003等復(fù)合晶體管。本項(xiàng)目實(shí)例采用的是MC1413來驅(qū)動(dòng)相應(yīng)繼電器線圈,最終接通預(yù)熱塞和風(fēng)扇電機(jī)等開關(guān)設(shè)備,如圖2所示。需要接通外部設(shè)備時(shí),引腳輸出高電平,反之輸出低電平。
圖2 開關(guān)量輸出驅(qū)動(dòng)電路
A/D轉(zhuǎn)換模塊最重要的指標(biāo)就是輸出的二進(jìn)制數(shù)據(jù)位數(shù),位數(shù)越多分辨率越高。12位A/D轉(zhuǎn)換后的數(shù)字量最大值為212-1=4095。本項(xiàng)目實(shí)例中,單片機(jī)需要檢測油門,通過油門傳感器,將實(shí)際的油門開度0%~100%線性地轉(zhuǎn)換為0~5V的直流電壓,然后通過A/D轉(zhuǎn)換成數(shù)字量0~4095。對于A/D轉(zhuǎn)換模塊的操作,在設(shè)置好轉(zhuǎn)換速率等參數(shù)基礎(chǔ)上,實(shí)時(shí)操作主要有啟動(dòng)A/D轉(zhuǎn)換和讀取轉(zhuǎn)換結(jié)果兩個(gè)步驟??梢远〞r(shí)啟動(dòng),也可以讀取完結(jié)果再啟動(dòng)下一次轉(zhuǎn)換,可以等待轉(zhuǎn)換完畢讀取,或者轉(zhuǎn)換完畢產(chǎn)生中斷,在中斷服務(wù)程序里讀取,以提高單片機(jī)實(shí)時(shí)性。
單片機(jī)控制輸出中,常常需要連續(xù)調(diào)節(jié)某個(gè)物理量,如本項(xiàng)目實(shí)例中需連續(xù)調(diào)節(jié)閥門開度。將數(shù)字量轉(zhuǎn)換成模擬量,由D/A轉(zhuǎn)換模塊完成。本實(shí)例中采用12位D/A,即將0~4095轉(zhuǎn)換成0~5V電壓。需要向?qū)W生強(qiáng)調(diào)的是:0~4095只取其中的整數(shù)值,因此從微觀上看,輸出的模擬量也只有4095個(gè)級數(shù),也就是實(shí)質(zhì)上還是有級調(diào)節(jié),只不過級數(shù)比較多,能夠滿足大多數(shù)場合連續(xù)調(diào)節(jié)分辨率的需要。比如本項(xiàng)目中對于一個(gè)閥門的開度0%~100%,調(diào)節(jié)的最小分辨率可達(dá)到100/4095=0.024=2.4%,對于此應(yīng)用來說完全足夠。
常規(guī)的轉(zhuǎn)速測量方法都是在轉(zhuǎn)速盤圓周上開有齒槽,由專用的轉(zhuǎn)速傳感器接近輪齒,轉(zhuǎn)速盤轉(zhuǎn)動(dòng)時(shí),傳感器將感應(yīng)并發(fā)出頻率與轉(zhuǎn)速成正比的脈沖信號(hào),如圖3所示[4]。
圖3 轉(zhuǎn)速測量電路
由轉(zhuǎn)速脈沖計(jì)算轉(zhuǎn)速有兩種處理方法:
(1)統(tǒng)計(jì)單位時(shí)間內(nèi)的脈沖數(shù):轉(zhuǎn)動(dòng)部件一圈的脈沖數(shù)已知,如統(tǒng)計(jì)1秒內(nèi)的脈沖數(shù),即可算出1秒內(nèi)轉(zhuǎn)動(dòng)部件轉(zhuǎn)過的圈數(shù)即轉(zhuǎn)速。(2)統(tǒng)計(jì)兩脈沖信號(hào)間隔的時(shí)間:對于沒有專門輸入捕捉模塊的單片機(jī),可用外部中斷配合定時(shí)器來處理;而對于有專門輸入捕捉功能的單片機(jī),則只需對輸入捕捉模塊進(jìn)行操作即可完成轉(zhuǎn)速測量。
常規(guī)的通信功能主要有串行口和并行口通信之分?,F(xiàn)在的單片機(jī)還包含現(xiàn)場總線、無線射頻和以太網(wǎng)等先進(jìn)通信模塊。通信最重要的要求就是數(shù)據(jù)能夠及時(shí)、準(zhǔn)確的到達(dá)指定單元。本項(xiàng)目實(shí)例中,為了便于調(diào)試,需要與計(jì)算機(jī)上的監(jiān)控軟件進(jìn)行通信,監(jiān)控軟件隨時(shí)需要向ECU發(fā)指令并獲取實(shí)時(shí)狀態(tài)數(shù)據(jù)。
對于本科研項(xiàng)目實(shí)例,我們要盡量讓學(xué)生參與整個(gè)項(xiàng)目全部開發(fā)流程,從方案的制定、電路原理圖和電路板的制作、元器件的焊接、電路板的調(diào)試和電路改進(jìn)等。通過工程實(shí)踐能力的訓(xùn)練,能讓學(xué)生在將來工作中快速地融入到具體的項(xiàng)目開發(fā)之中。
本文以具體的科研開發(fā)項(xiàng)目為實(shí)例,將單片機(jī)綜合實(shí)踐教學(xué)中各模塊的學(xué)習(xí)和應(yīng)用貫穿在項(xiàng)目方案設(shè)計(jì)、程序編寫和系統(tǒng)調(diào)試整個(gè)過程中。引導(dǎo)學(xué)生對對所學(xué)知識(shí)的融會(huì)貫通,達(dá)到理論知識(shí)與生產(chǎn)實(shí)際的結(jié)合。
[1] 張友德,趙志英,涂時(shí)亮.單片機(jī)微型機(jī)原理應(yīng)用與實(shí)驗(yàn)[M] .上海:復(fù)旦大學(xué)出版社.2006年第5版
[2] 唐鴻儒,夏揚(yáng),黃亞忠.單片機(jī)課程的實(shí)踐教學(xué)探索[J] .南京:電氣電子教學(xué)學(xué)報(bào),2009(1):67-69
[3] 胡敬朋,王聰.單片機(jī)項(xiàng)目教學(xué)研究及實(shí)踐[J] .南京:電氣電子教學(xué)學(xué)報(bào),2009(5):82-84
[4] 王紹銧,夏群生,李建秋.汽車電子學(xué)[M] .北京:清華大學(xué)出版社.2005年第1版