李暉,周唯
(湖南理工職業(yè)技術(shù)學(xué)院,湖南 湘潭 411105)
近年來云計算、人工智能、大數(shù)據(jù)等新技術(shù)快速發(fā)展,對人才提出了具備自我學(xué)習(xí)、自我創(chuàng)新、信息獲取和處理能力、與他人合作能力、社會責(zé)任感等核心素養(yǎng)要求。為此,我國在2016年出臺了《中國學(xué)生發(fā)展核心素養(yǎng)》報告。它包含文化基礎(chǔ)、自主發(fā)展、社會參與三個方面,人文底蘊、科學(xué)精神、學(xué)會生活、健康生活、責(zé)任擔(dān)當(dāng)和實踐創(chuàng)新六大要素,人文積淀、國家認(rèn)同、批判質(zhì)疑等18 個要點,其目的是要求我們不斷反思和改進(jìn)課程與教學(xué),培養(yǎng)學(xué)生具備技術(shù)帶動社會各方面發(fā)展形勢下的關(guān)鍵能力和必備品格。教學(xué)需要與實踐相結(jié)合,本文以自動抽水系統(tǒng)設(shè)計制作測試為例引導(dǎo)學(xué)生對STM32 控制系統(tǒng)進(jìn)行學(xué)習(xí)。
水塔需要改造為具有自動上水功能,設(shè)定三個水位:最高水位、預(yù)抽水水位、最低水位,當(dāng)水位低于預(yù)定水位則在用戶設(shè)定的用電峰谷時間啟動水泵抽水,抽水到最高水位關(guān)閉水泵停止抽水;當(dāng)用水量較大,沒來得及來到用電峰谷時間段就已經(jīng)達(dá)到最低水位則立即啟動水泵進(jìn)行抽水,直到水位達(dá)到預(yù)抽水水位則關(guān)閉水泵停止抽水。系統(tǒng)需要設(shè)計人機交互界面,滿足用戶自由設(shè)定最高、預(yù)抽水、最低水位,也可以對低于預(yù)抽水水位后用電峰谷的抽水時間進(jìn)行設(shè)置,以錯峰的方式合理利用能源,系統(tǒng)應(yīng)具有斷電保存功能,斷電后再次上電保持原參數(shù)運行。
檢測水位的方案有很多,引導(dǎo)學(xué)生進(jìn)行思考和分析,比如放入數(shù)個串聯(lián)電阻,當(dāng)水位淹沒電阻就會短路,然后經(jīng)過AD 檢測,可以得到具體水位;也可以像洗衣機一樣通過檢測壓力來檢測水位;最后學(xué)生嘗試采用非接觸式的方式檢測水位,即采用超聲波檢測水位。相比其他檢測技術(shù),超聲波傳感器具有安裝簡單、成本低的優(yōu)點。超聲波傳感器由共振片和晶體組成,通過壓電晶體的諧振來工作,對晶片施加振蕩頻率的脈沖電信號時,壓電晶片驅(qū)動共振板產(chǎn)生超聲波信號;當(dāng)共振板接收到超聲波信號時,將壓迫晶體振蕩,晶體振蕩將產(chǎn)生電信號。
超聲波測距一般采用發(fā)射一個超聲波,檢測返回超聲波,記錄從發(fā)射到返回所用的時間,假定時間為T,超聲波在空氣傳播的速度V=311.4+t×273(m/s),其中t是攝氏溫度。速度一定,測量出傳播時間,即可以計算出傳輸?shù)木嚯xS。距離S/2 則為水塔水位值。電路如圖1所示。超聲波發(fā)射器采用MA40A3S,發(fā)射部分主要通過控制振蕩器啟停來發(fā)射超聲波。由40 kHz 信號產(chǎn)生電路、信號整形和驅(qū)動電路。
圖1 超聲波發(fā)射電路原理圖
超聲波在空氣中傳輸?shù)念l率為40 kHz時傳輸效率最高,效果最好。前級采用CD4011 構(gòu)成多諧振蕩電路輸出40 kHz脈沖信號,經(jīng)過整形后,由CD4069 非門構(gòu)成驅(qū)動電路驅(qū)動超聲波發(fā)射模塊MA40A3S 發(fā)射超聲波,電路如圖2所示。
圖2 超聲波接收處理電路原理圖
超聲波接收部分主要由超聲波接收傳感器、放大電路、整形電路組成。經(jīng)過遠(yuǎn)距離的傳輸,接收回來的超聲信號較弱,產(chǎn)生的電信號需要經(jīng)過約60 dB 的放大。所以電路采用多級放大,使微弱信號放大到滿意的幅度,最后經(jīng)過信號整形后輸出,使得回來的信號是個門限信號。
通過發(fā)送超聲波產(chǎn)生控制信號到接收到超聲波,接收信號時間為超聲波傳輸時間,有了傳輸時間與傳輸速度的乘積即可計算出傳輸距離,也就是水位。
系統(tǒng)主要由STM32f103c8t6 最小系統(tǒng)、LM2596 電源轉(zhuǎn)換電路、DS1302 實時時鐘電路、OLED 顯示與4 個獨立按鍵組成的人機交互電路、超聲波傳感器電路、光耦隔離及繼電器驅(qū)動等電路構(gòu)成。
電源采用直流12 V 輸入,但單片機最小系統(tǒng)、OLED顯示、超聲波傳感器、實時鐘等電路模塊采用5 V 電源供電,需要把12 V 轉(zhuǎn)換為5 V。電源轉(zhuǎn)換電路采用LM2596T-5.0 V降壓芯片,LM2596 是非同步降壓型集成開關(guān)電壓調(diào)節(jié)器,最大能輸出3 A 的電流,內(nèi)部集成自動150 kHz 震蕩器、1.23 V 基準(zhǔn)電壓、電流限制電路、放大器、比較器及穩(wěn)壓電路等,電路原理圖如圖3所示。
電路中Cin 為前饋電容,D1 為續(xù)流二極管,Cout 為輸出電容,整個電路為一個非隔離型buck 降壓電路。通過查閱數(shù)據(jù)手冊可以得出各個元件參數(shù),輸入電容選取470 μF/50 V,續(xù)流二極管選擇1N5825,電感取33 μH 功率電感,輸出電容取220 μF/50 V。
STM32f103c8t6 是意法半導(dǎo)體公司(ST)的基于Cortex-M3內(nèi)核的32 位微控制器,外部有48 個引腳采用LQFP 封裝,內(nèi)部集成64 KB flash 作為程序存儲器,20 KB SRAM 可作為數(shù)據(jù)寄存器,37 個輸入/輸出端口,4 個16 位定時器,系統(tǒng)時鐘72 MHz。最小系統(tǒng)由電源電路、晶振電路、復(fù)位電路、啟動模式選擇電路、串口通信、JTAG 電路組成,電路原理如圖4所示。
圖4 最小系統(tǒng)原理圖
最小系統(tǒng)電源電路采用AMS1117-3v3 芯片,將5 V 轉(zhuǎn)換為內(nèi)核芯片供電電壓3.3 V,外部采用8 MHz 晶振,經(jīng)內(nèi)部倍頻得到72 MHz 主頻,STM32f103c8t6 采用低電平復(fù)位,啟動模式選擇電路采用6 個排針,其中兩個排針分別連接芯片boot0、boot1 引腳,在這兩個引腳兩邊分別設(shè)置兩個VCC、兩個GND,通過短路塊將boot0 和boot1 引腳與不同的電平進(jìn)行連接,以選擇不同的啟動方式。
電路采用OLED 作為輸出顯示,4 個獨立按鍵用于用戶設(shè)置輸入。OLED 采用集成電路總線(Inter-Integrated Circuit,IIC)串行總線協(xié)議傳輸數(shù)據(jù),IIC 屬于半雙工通信。IIC 串行總線有兩根信號線,一根是時鐘線SCL,另一根是數(shù)據(jù)線SDA。所有IIC 設(shè)備數(shù)據(jù)線SDA 和時鐘線SCL 都并聯(lián)并加上拉電阻。對于并聯(lián)在一條總線上的每個IIC 設(shè)備都有唯一的設(shè)備地址。
人機交互的按鍵輸入部分電路原理圖如圖5所示,采用4 個獨立按鍵電路,并把4 個獨立按鍵設(shè)計為上拉按鍵輸入電路,不但減少了系統(tǒng)的待機功耗,而且提高了系統(tǒng)抗干擾能力。
圖5 獨立按鍵原理圖
單片機控制電機需要一個隔離及驅(qū)動電路,該系統(tǒng)采用光耦進(jìn)行隔離,電路原理圖如圖6所示,單片機信號經(jīng)光耦隔離后經(jīng)三極管控制繼電器,繼電器控制12 V 和電機的正極的通斷,當(dāng)單片機輸出低電平時光耦導(dǎo)通,三極管飽和,繼電器線圈得電,電磁效應(yīng)使得繼電器吸合,電機的正極和電源12 V 接通,實現(xiàn)抽水。當(dāng)水位到達(dá)最高水位,單片機輸出高電平;繼電器斷開,停止抽水。和繼電器并聯(lián)一個二極管的作用是減少繼電器斷開時產(chǎn)生的反向自感電動勢對三極管的影響。并上發(fā)光二極管和電阻用以作為工作指示,當(dāng)繼電器工作時發(fā)光二極管也會點亮。
圖6 光耦隔離及繼電器驅(qū)動電路
本系統(tǒng)需要對主控STM32f103c8t6 進(jìn)行程序編寫來使各個硬件模塊協(xié)同工作,需要通過控制超聲波的發(fā)射和回收的時長算出水位高低,需要通過寫入和讀取DS1302 的值來實現(xiàn)用電峰谷進(jìn)行抽水以合理利用能源,需要讀取按鍵的輸入來設(shè)定上下水位、校正時間及抽水時間,需要驅(qū)動OLED 來顯示當(dāng)前狀態(tài)和參數(shù),需要產(chǎn)生控制信號經(jīng)隔離驅(qū)動后控制水泵啟停。
系統(tǒng)上電后,對STM32f103c8t6 主控芯片內(nèi)部進(jìn)行初始化,并對外部各模塊進(jìn)行初始化,OLED 顯示歡迎界面,等待用戶按下確認(rèn)按鍵。當(dāng)用戶按下確認(rèn)按鍵后,OLED 顯示一級菜單,包括:“當(dāng)前設(shè)置”“立即抽水”“停止抽水”“系統(tǒng)設(shè)置”,用戶可以通過上下按鍵選擇相應(yīng)的菜單,按下確定鍵進(jìn)入。當(dāng)進(jìn)入“當(dāng)前設(shè)置”二級菜單界面,OLED 顯示當(dāng)前日期、時間、水位高低、手動/自動模式;當(dāng)選擇“立即抽水”,系統(tǒng)會顯示“已切換手動模式”“電機已啟動”提示語,并顯示當(dāng)前實時水位;選擇“停止抽水”,OLED顯示“電機已停止”“自動模式啟動”提示語,并顯示當(dāng)前實時水位;當(dāng)選擇“系統(tǒng)設(shè)置”,進(jìn)入該菜單可以設(shè)置“抽水時段1”“抽水時段2”“系統(tǒng)時間校準(zhǔn)”“高低水位設(shè)置”,選擇不同的菜單項可以進(jìn)行相應(yīng)的設(shè)置。系統(tǒng)主程序流程圖如圖7所示。
圖7 主程序流程圖
在該系統(tǒng)中需要啟動超聲波發(fā)射40 kHz 的超聲波,并進(jìn)行計時,當(dāng)接收引腳收到超聲波信號及時停止,這個時間就是超聲波傳輸時間,已知速度,可以得到2 倍的距離。
開始時將控制超聲波發(fā)射的引腳和控制超聲波接收的引腳都初始化為低電平,然后控制超聲波發(fā)射引腳為高電平,超聲波發(fā)射模塊會自動發(fā)射40 kHz 超聲波,然后等待捕捉接收引腳的高電平,當(dāng)捕捉到接收引腳為高電平時,開啟定時器計時,再次捕捉接收引腳下降沿,下降沿到來,將定時器的時間讀出,這個時間就是超聲波在空氣中運行的時間,按照距離=(時間×速度(340 m/s))/2 就可以算出水位。當(dāng)發(fā)送引腳開啟高電平后,STM32f103c8t6 開啟定時器2 的高電平捕獲功能,接收到高電平后開啟計數(shù)器開始計數(shù),并把捕獲改為低電平捕獲,這樣計數(shù)值即為時間值。
部分程序為:
抽水系統(tǒng)設(shè)計制作完畢后對其測量水位的精度和控制功能進(jìn)行測試,測量誤差為0.02 米~0.05 米,采用超聲波測量水位可以滿足系統(tǒng)設(shè)計要求。系統(tǒng)設(shè)置三個水位線,從高到低依次為:最高水位、預(yù)抽水水位、最低水位。當(dāng)水位低于最低水位通過系統(tǒng)控制水泵立即抽水,抽到預(yù)抽水水位停止抽水。當(dāng)水位低于預(yù)抽水水位高于最低水位時,在用戶設(shè)定的用電峰谷進(jìn)行抽水,抽水當(dāng)水位到達(dá)最高水位時停止抽水。
通過設(shè)計制作STM32 自動抽水系統(tǒng),綜合OLED 顯示、超聲波傳感器控制、按鍵輸入、菜單制作、實時時鐘芯片數(shù)據(jù)讀取及寫入等知識,讓學(xué)生從實際系統(tǒng)項目中學(xué)習(xí)STM技術(shù),寓教于樂,授人以漁,達(dá)到了較好的教學(xué)效果。