邵小娟,陳宏川,王 睿,李 章
(西南交通大學(xué) 電氣工程學(xué)院,四川 成都 610031)
汽車儀表是駕駛者和汽車的交互界面,為駕駛員提供所需要的運(yùn)行參數(shù)、故障、里程等實(shí)時信息,是不可或缺的部分[1]。文中設(shè)計(jì)的步進(jìn)電機(jī)式駕駛模擬器儀表采用C8051F340單片機(jī)控制微型步進(jìn)電機(jī),帶動指針轉(zhuǎn)動顯示汽車行駛過程中相關(guān)實(shí)時信息,通過單片機(jī)編程實(shí)現(xiàn)系統(tǒng)的自動控制和精確控制。單片機(jī)功能強(qiáng)大,將顯示、復(fù)位、驅(qū)動等外圍電路有機(jī)的組合,提高了系統(tǒng)的交互性。步進(jìn)電機(jī)又稱脈沖電機(jī),可直接由數(shù)字信號來控制[2],同時步進(jìn)電機(jī)只有周期性的誤差,并無累積定位誤差,所以精度比較高,滿足儀表指針準(zhǔn)確定位的要求。結(jié)合汽車儀表對車速、發(fā)動機(jī)轉(zhuǎn)速等信息的顯示要求,系統(tǒng)通過改變單片機(jī)輸出脈沖的頻率、時序波形方向來控制電機(jī)的速度、加速度、轉(zhuǎn)向等。
圖1 系統(tǒng)功能框圖Fig.1 Function diagram of the system
基于單片機(jī)的步進(jìn)電機(jī)式模擬器儀表系統(tǒng)功能框圖如圖1所示。單片機(jī)控制步進(jìn)電機(jī)分別驅(qū)動發(fā)動機(jī)轉(zhuǎn)速表、時速表的指針轉(zhuǎn)動,實(shí)現(xiàn)發(fā)動機(jī)轉(zhuǎn)速和汽車時速的模擬,并通過LED給駕駛員提示或警告。
本系統(tǒng)選用微型汽車儀表步進(jìn)電機(jī)VID29-07。VID29系列步進(jìn)電機(jī)是一種精密的微型步進(jìn)電機(jī),它是將數(shù)字信號準(zhǔn)確的轉(zhuǎn)化為模擬信號的顯示輸出,即它能將電脈沖信號轉(zhuǎn)換為機(jī)械的運(yùn)動量(直線位移或角位移)加以輸出[3]。該電機(jī)主要特點(diǎn)為:寬電壓(3.5 V~10 V);低功率;工作環(huán)境溫度范圍寬;高精度(歩距角最小可達(dá)1/12o),滿足該儀表系統(tǒng)的要求。電機(jī)轉(zhuǎn)軸轉(zhuǎn)速與脈沖頻率成正比,轉(zhuǎn)軸輸出的位移量與脈沖個數(shù)成正比,轉(zhuǎn)動方向(逆時針或順時針)與輸入脈沖時序有關(guān),易于通過控制脈沖頻率來控制步進(jìn)電機(jī)的速度和加速度,適合單片機(jī)的控制。單片機(jī)數(shù)字I/O口輸出的時序脈沖作為電機(jī)驅(qū)動芯片頻率控制端F(scx)和方向控制端CW/CCW的輸入信號,步進(jìn)電機(jī)的4個觸點(diǎn)連接驅(qū)動芯片的兩相輸出,當(dāng)電流信號流經(jīng)電機(jī)4個觸點(diǎn)輸入時,引起電機(jī)線圈的磁場變化,從而引起轉(zhuǎn)動軸的轉(zhuǎn)動,然后再通過齒輪差速比裝置帶動針軸的旋轉(zhuǎn)[4]。
該儀表系統(tǒng)硬件系統(tǒng)設(shè)計(jì)采用模塊化設(shè)計(jì)思想,主要包括電源模塊、控制器模塊、驅(qū)動模塊和通訊模塊4部分。
電源模塊為系統(tǒng)提供+5 V和+3.3 V電源,+5 V電源為電機(jī)驅(qū)動芯片和LED顯示電路的電源,+3.3 V電源主要提供單片機(jī)和通訊模塊所需電源。本系統(tǒng)只需外界提供+5 V電源,考慮到工業(yè)控制中電源電壓受溫漂、不穩(wěn)定電壓、諧波等的干擾,系統(tǒng)中采取穩(wěn)壓二極管IN4733獲得較穩(wěn)定的+5 V電壓,+3.3 V電壓通過穩(wěn)壓芯片LM1117-3.3來獲取,但是LM1117是一個低壓差電壓調(diào)節(jié)器,所以在穩(wěn)壓芯片電壓輸入端采用外加一個穩(wěn)壓二極管[5]。電源模塊電路設(shè)計(jì)如圖2所示。
圖2 電源電路設(shè)計(jì)Fig.2 Design of power circuit
本系統(tǒng)核心控制器選用新華龍公司的C8051F340單片機(jī)。該單片機(jī)內(nèi)部的4 kb XRAM和64 kb Flash滿足控制系統(tǒng)的存儲要求,并支持在系統(tǒng)編程;5個8位數(shù)字I/O端口均耐5 V電壓,方便驅(qū)動數(shù)量較多的LED;P1端口在步進(jìn)電機(jī)工作過程中通過控制驅(qū)動芯片輸入信號F(scx)和CW/CCW來改變步進(jìn)電機(jī)的工作狀態(tài);P3、P4口輸出高低電平控制LED的亮滅;UART模塊方便單片機(jī)和上位機(jī)之間的通信;C8051F340單片機(jī)內(nèi)部振蕩器0.25%的精度,支持所有UART工作方式,可用于產(chǎn)生波特率,省去外部振蕩器電路的設(shè)計(jì),簡化了電路;4個通用16位計(jì)數(shù)器/定時器可用于產(chǎn)生時序波形或計(jì)數(shù),控制步進(jìn)電機(jī)轉(zhuǎn)速及轉(zhuǎn)向;片內(nèi)調(diào)試電路提供在系統(tǒng)調(diào)試,支持?jǐn)帱c(diǎn)、單步、觀察/修改寄存器和存儲器,便于系統(tǒng)調(diào)試[7]。
該儀表系統(tǒng)驅(qū)動模塊包括步進(jìn)電機(jī)的驅(qū)動和指示燈、照明燈LED的驅(qū)動。
2.3.1 步進(jìn)電機(jī)驅(qū)動
步進(jìn)電機(jī)的驅(qū)動選擇專為驅(qū)動微型步進(jìn)電機(jī)而設(shè)計(jì)的VID66-08驅(qū)動芯片,VID66-08芯片是一種采用步進(jìn)電機(jī)微步驅(qū)動方式而設(shè)計(jì)的CMOS集成電路,有效降低步進(jìn)電機(jī)轉(zhuǎn)軸的抖動,易于實(shí)現(xiàn)指針平穩(wěn)、持續(xù)的旋轉(zhuǎn)。每個VID66-08芯片可同時驅(qū)動兩路電機(jī),滿足本系統(tǒng)的要求。在頻率信號端F(scx)輸入時序脈沖信號,每輸入一個脈沖電機(jī)輸出軸轉(zhuǎn)動一個步距角(最小可達(dá)1/12o)。電路設(shè)計(jì)如圖3所示。
2.3.2 LED驅(qū)動
系統(tǒng)中指示燈包括安全帶指示燈、車門開關(guān)指示燈、機(jī)油指示燈、遠(yuǎn)光指示燈、電瓶指示燈、氣囊指示燈、ABS指示燈、發(fā)動機(jī)自檢燈、手剎指示燈、車鑰匙指示燈、左右轉(zhuǎn)指示燈、燃油指示燈和水溫指示燈等常見指示燈。選用發(fā)光二極管來作用,駕駛員只需觀察指示燈的實(shí)時工作狀態(tài)就可判斷需要進(jìn)行哪些操作,不需駕駛員手動去檢查機(jī)油的多少、車門是否關(guān)閉等等。系統(tǒng)中指示燈數(shù)量比較多,其一端與+5 V電源連接,另一端連接限流電阻再與單片機(jī)管腳連接,通過單片機(jī)編程控制管腳的輸出電平來控制LED的亮滅。
圖3 電機(jī)驅(qū)動電路設(shè)計(jì)Fig.3 Design of motor driver circuit
除上述指示燈,系統(tǒng)還需多個照明用LED以便駕駛員直觀、迅速地讀到汽車行駛過程各動態(tài)指標(biāo)。不同于指示燈,照明用LED的功率較大,系統(tǒng)中采用三極管的開關(guān)及擴(kuò)流作用為發(fā)光二極管提供所需功率。單片機(jī)編程實(shí)現(xiàn)控制照明燈的亮和滅[9]。驅(qū)動電路的設(shè)計(jì)如圖4所示。
圖4 照明燈驅(qū)動電路Fig.4 Floodlight drive circuit
上位機(jī)與單片機(jī)之間通過UART通訊,由于上位機(jī)串口輸出電壓高至十幾伏,而單片機(jī)正常工作電壓為3.3 V,且只能兼容5 V電壓。所以在上位機(jī)串口與單片機(jī)之間需要添加電平轉(zhuǎn)換電路,系統(tǒng)中采用SP3223芯片實(shí)現(xiàn)電平轉(zhuǎn)換,電路設(shè)計(jì)如圖5所示。
圖5 電平轉(zhuǎn)換電路Fig.5 Level conversion circuit
電平轉(zhuǎn)換電路中電容均可為0.1 μF,考慮到應(yīng)用中通訊的穩(wěn)定、波特率高低等因素,作者將VCC端與地間電容選用1.0 μF。VCC端接地電容也可選擇鉭電容,但要考慮正負(fù)極處理。
該儀表系統(tǒng)軟件系統(tǒng)設(shè)計(jì)由單片機(jī)程序和上位機(jī)程序兩部分。本系統(tǒng)單片機(jī)程序用C語言編寫,采取模塊化設(shè)計(jì),包括主程序、中斷服務(wù)程序及各功能子程序。單片機(jī)定時器0產(chǎn)生步進(jìn)電機(jī)的驅(qū)動方波。通過比較脈沖數(shù)和設(shè)定的脈沖周期,利用定時器中斷服務(wù)子程序?qū)崿F(xiàn)電機(jī)的正反轉(zhuǎn)等動作。脈沖周期的大小直接影響電機(jī)轉(zhuǎn)速大小。程序流程如圖6、圖7所示。
圖6 主程序流程圖Fig.6 Flow diagram of the main program
圖7 步進(jìn)電機(jī)驅(qū)動流程圖Fig.7 Flow diagram of Stepping motor driver
上位機(jī)程序采用MFC控件編寫,實(shí)現(xiàn)上位機(jī)界面控制。通過單片機(jī)UART模塊實(shí)現(xiàn)與上位機(jī)通訊,單片機(jī)接收上位機(jī)指令進(jìn)而控制步進(jìn)電機(jī)步進(jìn)運(yùn)動和LED顯示。拖動上位機(jī)程序界面中轉(zhuǎn)速表和時速表滾動條可模擬儀表指針的轉(zhuǎn)動;系統(tǒng)中指示LED是負(fù)邏輯控制,且可單獨(dú)控制每個指示燈狀態(tài);照明LED是正邏輯控制。
時速表和發(fā)動機(jī)轉(zhuǎn)速表逆時針(順時針)方向轉(zhuǎn)動由輸入信號端CW/CCW的低電平(高電平)作用,圖8、圖9是表針不同轉(zhuǎn)向時電機(jī)驅(qū)動芯片方向控制端波形。
上位機(jī)編程將0~180°分為4 320個單位,對應(yīng)單片機(jī)編程中0~360°的8 640個單位。若上位機(jī)發(fā)送指令以每次拖動n個單位步進(jìn)運(yùn)動,則驅(qū)動芯片脈沖控制端要輸入2 n個脈沖波形。即單片機(jī)P1.1、P1.3在步進(jìn)電機(jī)步進(jìn)運(yùn)動的每一步輸出2 n個脈沖波。程序中定時器0周期300 ms,每個周期是系統(tǒng)周期的一個12分頻,計(jì)算出所產(chǎn)生方波的最小周期為0.6 ms。不同速度拖動步進(jìn)電機(jī)運(yùn)動的波形如下圖10圖11所示。
圖8 電機(jī)順時針轉(zhuǎn)動Fig.8 Motor rotated clockwise
圖9 電機(jī)逆時針轉(zhuǎn)動Fig.9 Motor rotated counterclockwise
圖10 每步8單位步進(jìn)運(yùn)動Fig.10 Stepping movement with each step 8 units
圖11 每步10單位步進(jìn)運(yùn)動Fig.11 Stepping movement with each step 10 units
該儀表系統(tǒng)通過單片機(jī)控制步進(jìn)電機(jī)運(yùn)轉(zhuǎn)和LED顯示狀態(tài),其可靠性高、穩(wěn)定性好、硬件電路簡單、易實(shí)現(xiàn),能方便地控制步進(jìn)電機(jī)的運(yùn)行、停止、轉(zhuǎn)速和方向,由上位機(jī)程序界面可以控制步進(jìn)電機(jī)各種運(yùn)行方式及LED的各種顯示,使得系統(tǒng)能應(yīng)用于各種環(huán)境,在一定意義上保證了駕駛員的安全。系統(tǒng)電路設(shè)計(jì)簡單、成本較低、方便控制、實(shí)用價(jià)值高。文中設(shè)計(jì)的基于單片機(jī)的步進(jìn)電機(jī)式車輛儀表系統(tǒng)已經(jīng)成功地應(yīng)用在汽車駕駛仿真器上,并得到了理想的效果。
[1]劉帥,祖靜,張紅艷.基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)[J],電子設(shè)計(jì)工程,2010,18(4):38-40.
LIU Shuai, ZU Jing, ZHANG Hong-yan.Design of control system ofstepper motor based on microcontroller[J].Electronic Design Engineering,2010,18(4):38-40.
[2]余世超,高志,邵鵬.基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)與研究[J].煤礦機(jī)械,2010,31(05):210-212.
YU Shi-chao, GAO Zhi, SHAO Peng.Design and research of MCU-based control system for stepper motor[J].Coal Mine Machinery,2010,31(05):210-212.
[3]張萍,王毅博.汽車駕駛模擬器儀表驅(qū)動系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J],自動化技術(shù)與應(yīng)用,2008,27(3):97-99.
ZHANG Ping,WANG Yi-bo.The driver circuits of the instrument board of a driving simulator[J].Techniques of Automation and Applications,2008,27(3):97-99.
[4]廖建斌.步進(jìn)電機(jī)汽車儀表控制技術(shù)[J].汽車電器,2008,(6):5-9.
LIAO Jian-bin Stepper motor meter control technology of automobile[J].Automobile Electric Appliances,2008,(6):5-9.
[5]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].4版.北京:高等教育出版社,1983.
[6]張偉,孫穎,趙晶.電路設(shè)計(jì)與制版Protel99SE高級應(yīng)用[M].北京:人民郵電出版社,2007.
[7]Cygnal Integrated Products,Inc.著,潘琢金,孫德龍,夏秀峰,譯.C8051F單片機(jī)應(yīng)用解析[M].北京:北京航空航天大學(xué)出版社,2002.
[8]華大龍,楊曄,潘漢懷.步進(jìn)電機(jī)原理及其驅(qū)動電路的研究[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2009,5(34):9841-9842.
HUA Da-long, YANG Ye, PAN Han-huai.Motor theory and driving circuit[J].Computer Knowledge and Technology,2009,5(34):9841-9842.
[9]Marc T.Thompson著.實(shí)用模擬電子設(shè)計(jì)[M].張樂鋒,等譯.北京:人民郵電出版社,2009.