劉 霞,白 剛
(1.西安文理學院 機械與材料工程學院,西安 710065;2.中國鐵路西安局集團有限公司,西安 710000)
近年來,我國社會經濟的快速發展以及我國城市化改革的深入推進,使人民群眾對于購買汽車有著強烈需求。隨著汽車進入千家萬戶,目前全國駕齡不滿1年的實習駕駛人將近3 000萬人,占機動車駕駛人總量的11.3%,部分實習駕駛者由于汽車轉向輪轉向角度把握不好而造成的車庫移位、刮擦、追尾等不同程度的事故[1-3]。我國汽車保有量的提升,其規模已大大超過了道路等重要交通設施的修建,交通流量的增加正處于一個較高的水平,每年都會有6萬多名人死于嚴重的交通事故[4-6]。在這些事故中,由于汽車轉向輪轉向角度把握不好而發生撞車的有很多。因此需要設計開發一套能夠有效的采集汽車轉向輪轉向角度的系統,在初學駕駛階段熟悉熟練汽車轉向輪角度把控必要且迫切。
現階段,單片機在交通工具上的應用研究發展態勢良好,曾堯[7]使用STM32控制系統,提供一種中線差值采樣的尋跡方法,選用MG995電動機進行驅動,使智能小車轉向更加靈敏。趙林超[8]實現了信號采集處理電路集成化,傳感器數據可直接在STM32中進行RBF人工神經網絡計算,在滿足測量精度和測量速度的同時,大大縮小了測量系統所占用的空間便于集成裝配在球鉸鏈底座的預留空間內,初步實現了測量系統集成化、智能化和便攜化的目標,同時制造成本大幅下降??讉チ羀9]以STM32單片機為核心設計了轉向單元、制動單元和驅動單元。轉向單元由轉向電機驅動器、轉向電機、轉角傳感器等組成,轉向單元能夠根據SALM最小系統獲取的環境信息控制轉向機構實現預期位置的轉向。鐘智杰等[10]提出了基于STM32為主控制器的速度轉角閉環控制方案,還設計了基于該結構的超聲波探頭分布與檢測策略,在實際應用中,具有較快響應速度,機構靈活,適用范圍廣泛。韓云鵬[11]根據靶車需求,確定STM32單片機作為主控制器,并完成各類電機與供電電源的選型。根據設計方案與結構參數,建立全地形移動靶車四輪驅動和四輪轉向運動學模型。張盼盼[12]設計開發了基于STM32處理器的智能駕駛輔助系統回路仿真與控制器,車道保持和主動變道控制器在保證車輛縱、橫向穩定性的基礎上能夠很好的完成車道保持和主動變道的功能。對車道保持和主動變道進行單片機控制的模型小車實驗,驗證了控制算法的可靠性。
本文針對基于STM32單片機的汽車轉向輪轉角顯示系統進行研究。首先分析目前產品功能的合理性,這些方案是否可以借鑒。整理出系統的架構圖并明確了系統的功能。功能的出現會帶動方案,明確了功能就可以針對性的進行方案設計。下一個階段是重要的硬件電路設計,需要研究各個方案,輸出對應功能的電路圖,結合電路設計的合理性、穩定性設計出系統的硬件。這一部分就需要將系統的硬件全部設計完成。硬件設計中的每一個器件的設計原因需要明確。在軟件設計環節,配合硬件實現對應的功能即可,編寫出程序代碼,統計將所有的功能按照功能邏輯設計,按照邏輯流程圖完善系統運行功能。最后進行仿真測試并決定系統功能是否符合要求,達到設計目的。期望全套設備開發為初學者和教練員教學帶來便利,也為駕駛學校教練車裝備智能化提供借鑒。
系統的功能結構如圖1所示,基于STM32單片機的汽車轉向輪轉角顯示的設計與實現系統的功能有汽車轉向輪轉角檢測、按鍵控制、數據顯示、WiFi通信、報警提示。設計轉向輪檢測角度范圍為30~40°,測量精度為1°,系統采集汽車轉向輪轉角數據,若汽車轉向輪轉角實時獲取數據不在設置閾值范圍內,則通過聲音報警提示??梢允褂冒存I調整汽車轉向輪轉角閾值,通過WiFi傳輸到手機實現數據監控[13-14]。

圖1 系統結構框圖
主控制器決定選擇STM32。該芯片內置ARM型Cortex?-M3。內核使用的是32位數據處理數據。芯片的最高速度為72 MHz。芯片搭配了512 K的存儲空間保證程序的存儲。同樣帶有上電和掉電復位功能。為了保證系統的功耗,芯片內部有3種模式:休眠、停止、待機模式。帶有多種調試方案,分別是SWD和JTAG接口。為了方便進行數據的移動和復制,設計了DMA方案,可以在不需要內核控制的情況下,自助地進行數據的拷貝轉移。
汽車轉向輪轉角檢測的采集功能由轉角檢測模塊完成。這款傳感器的成本很低,而且設計精巧。在傳感器的表面設計了鍍鎳處理。為了讓傳感器可以獲取更可靠的土壤濕度數據,對傳感器的測量面積進行了加寬設計。鍍鎳處理方案也可以提高傳感器的使用時壽命,傳感器不會產生生銹的現象。若汽車轉向輪轉角發聲變化,傳感器就可以輸出對應的電信號,汽車轉向輪轉角越大,傳感器輸出的電信號伏值越大,因此只要獲取到電壓數據就可以判斷汽車轉向輪轉角的大小。
ESP8266是專用的WiFi通信技術方案,模塊集成了WiFi所有的功能,常用的TCP/IP協議也在其中。模塊和主控可以通過串口進行通信,模塊集成了串口數據交互方案,就是方便和主控進行連接,這樣能夠適用于市面上所有的主控設備。WiFi通信作為一種常用的無線數據傳輸技術方案,在很多的產品上得到了廣泛的使用。最終確定選擇ESP8266模塊完成WiFi通信功能。模塊內部主要的是器件是WiFi芯片,搭配芯片需要的外圍器件支撐芯片的運行,集成在同一塊PCB上封裝為模塊,模塊引出通信接口。模塊最大的優勢之一是一項透傳模式,模塊在這個模式下能夠非??旖莸谋粏纹瑱C進行控制[15]。單片機在操作模塊時只需要通過串口收發數據就能夠實現WiFi通信雙向數據傳輸,也就是說單片機不需要了解WiFi的具體傳輸細節,這些由模塊完成。
汽車轉向輪轉角數據顯示選擇LCD1602。系統需要一個顯示功能作為信息輸出。應用LCD1602實現信息顯示。這款液晶的成本低,顯示效果好。可以支持多種字符的顯示,包括字母、數字等其他符號。這種顯示器不需要實時占用主控資源,只要控制顯示內容后,就可以長期保留顯示信息。主控和顯示器的連接關系簡單,從設計難度上來講也符合設計要求。整個屏幕可以容納32個顯示符號,能夠滿足系統的顯示要求。顯示器中集成了很多庫以及驅動器,在控制的時候只需要依據顯示器要求的時序輸入數據即可完成顯示信息的功能。顯示器內部的核心是HD44780芯片,這款芯片具有封裝了針對液晶控制的多種技術,所以在應用主控對液晶操作上會方便很多。同時搭配了HD44100作為對液晶的驅動控制方案,這些都是集成在液晶顯示器模塊中,不需要額外的進行設計。為了適應更多的場合,液晶顯示器還集成了燈光效果,能夠有背光功能,可以在夜間讓顯示內容更加的醒目。
汽車轉向輪轉角數據超過設置的閾值時進行聲音提示,以便用戶了解汽車轉向輪轉角數據的具體情況。系統要求在異常情況下進行聲音預警提示,使用蜂鳴器實現此功能。蜂鳴器在很多產品中都能夠看到。蜂鳴器能夠發出蜂鳴聲,聲音可以達到提示的效果,控制上手簡單。蜂鳴器的控制需要有硬件驅動的支持,否則只靠主控的接口是無法對蜂鳴器進行控制的。蜂鳴器的選擇需要注意類型,如果是無源蜂鳴器在控制信號上有一定的要求,信號必須有一定的波動頻率。如果是有源蜂鳴器只需要簡單的電平變換就能實現蜂鳴器響與不響的控制。因此最終確定選擇有源蜂鳴器作為報警功能的方案。
主控制器電路如圖2所示,作為高性能的STM32F103C8T6,在高速運行條件下功耗為36 mA。接口的轉換速度為10 MHz。兩個模數轉換模塊速度快到1 μs。串口通信的速度可以達到每秒18兆位。芯片的供電電壓在2.0~3.6 V范圍內,雖然供電沒有達到5 V,但是IO接口都可以兼容5 V,所以也擴大了芯片的使用范圍。復位電路集成在芯片內部,因此不需要單獨在外置復位電路,減少了硬件設計的成本和工作量。芯片能在超低溫和超高溫環境下運行,溫度范圍在-40~+85℃。芯片的IO接口有多種配置模式,非常便于連接不同的外設,包括上拉、下拉、模擬、開漏等模式[16]。STM32F103C8T6中的C代表芯片一共48個接口,這48個接口每個口都具備多種功能,可以通過程序配置使用其中一項功能。其中103表示這款芯片是增強型器件,8表示用戶可以設計的代碼量達到64 K。芯片在SWD模式下,使用的接口為PA13、PA14。芯片在JTAG模式下,使用的接口為PA13、PA14、PA15、PB3、PB4。這些接口也可以作為控制外設的接口,因此實現了復用功能。芯片的封裝為LQFP,手工焊接并不是很方便,因此直接只用最小系統板進行系統開發。

圖2 主控電路
轉角檢測模塊傳感器能有效地消除其它信號的干擾。該傳感器具有很強的可重用性,可長期穩定使用。該傳感器啟動時間短,感應時間快,長期穩定運行,測試性能強。傳感器在使用時會產生熱量,這是正?,F象。加熱一段時間后,它將恢復正常。輸出為模擬量,需要與模數轉換芯片匹配。ADC0832芯片設計了使能選擇接口。位于CS引腳1處,使能有效信號為低電平,由主控的PB9控制。如果是低電平,則意味著芯片可以操作,模擬數據可以通過單片機接口讀取和控制。芯片的兩個模數轉換通道分別位于引腳2的CH0和引腳3的CH0處。電源GND位于4腳。數據輸入腳位于5腳的DI。數據輸入腳位于6腳的DO,接單片機的PB7。時鐘信號引腳位于7腳,由主控的PB8控制。8腳為電源以及參考電源端,轉角檢測電路如圖3所示。

圖3 轉角檢測電路
WiFi模塊和單片機的連接需要三條信號線,也就是完成串口的線速連接,就可以實現WiFi數據通信。WiFi模塊引出8條信號線。其中4腳是模塊的供電接口。6/7腳是WiFi模塊自帶的控制接口,WiFi模塊本身也可以作為主控實現一些控制功能。5腳是模塊引出的數據接收腳,相對于單片機就是串口數據發送腳,和單片機的TXD連接在一起。1腳是模塊引出的數據發送腳,相對于單片機就是串口數據接收腳,和單片機的RXD連接在一起。8腳是模塊的供電GND口。WiFi通信電路如圖4所示。

圖4 WIFI通信電路
顯示電路如圖5所示,在LCD1602硬件電路中,液晶只需要16個接口進行連接。1腳為電源GND。2腳為電源VCC。3腳接電位器,電位器的作用是調節液晶屏的對比度,使液晶顯示屏顯示的內容更清晰。一般選擇103,也就是10 K電位器。4腳為RS,是控制輸入的內容是命令還是數據。如果控制RS為低電平,則輸入的內容為指令。如果控制RS為高電平,則輸入的內容為數據。5腳為RW,控制單片機是讀液晶的數據,還是向液晶寫數據。如果控制RW為低電平,可以對液晶進行寫指令或者寫數據。如果控制RW為高電平,主要讀取顯示屏的顯示狀態。6腳為E,使能控制端。7腳到16腳為8個數據口。液晶的電源要求為5V。顯示屏D0到D7接單片機的PA口,RS接單片機的PB0,RW接單片機的PB1,EN接單片機的PB10。

圖5 顯示電路
蜂鳴器的功能主要是實現聲音的輸出,因此應用非常的廣泛。比如玩具、打印機、家用電器等都使用蜂鳴器。蜂鳴器的控制原理簡單方便,但是主控也無法直接對蜂鳴器實行控制,需要有硬件驅動的支持,主要原因是蜂鳴器的驅動信號需要一定的電流,主控的接口無法滿足輸出電流的大小[17]。在電路中使用三極管完成主控和蜂鳴器之間的對接。在聲音效果上也需要選擇對類型的蜂鳴器。有通過電磁發聲的蜂鳴器,有壓電式發聲的蜂鳴器。這兩種蜂鳴器發出的聲音效果不一樣。壓電式的蜂鳴器發出的聲音洪亮,更適合系統的設計要求,因此使用的是壓電式的蜂鳴器。報警電路如圖6所示。

圖6 報警電路
按鍵最常用的是作為系統的參數設置功能方案。按鍵也屬于開關的一種,因此具有兩種狀態。按鍵在沒有任何操作的情況下是斷開的,沒有信號輸入。按鍵在有操作的情況下會閉合,輸入一個信號,因此設計兩種信號分別代表按鍵有操作和無操作的狀態。按鍵選擇常用的輕觸開關。在有人操作的情況下按鍵能否有效的動作和按鍵的結構以及制作材料有關系[18]。由于是機械動作轉換為電信號,所以制作的工藝也會決定按鍵的使用壽命。為了達到更好的按鍵效果,制作按鍵選擇的材料必須是電阻率小、耐使用。在進行實物制作時,按鍵的引腳會被上錫,引腳在上錫后會改變引腳的電阻率,因此廠家在制作按鍵時,加入了鍍銀工序,這樣可以保證引腳電阻率的穩定,也會避免引腳的氧化,加長了按鍵的使用時間。使用按鍵S2可以設置汽車轉向輪轉角數據閾值,進入閾值設置界面,主控選擇PA13采集按鍵信號。使用按鍵S3可以設置汽車轉向輪轉角數據閾值加控制,主控選擇PA14采集按鍵信號。使用按鍵S4可以設置汽車轉向輪轉角數據閾值減控制,主控選擇PA15采集按鍵信號。按鍵電路如圖7所示。

圖7 按鍵電路
主控需要提供的電源是3.3 V。但是系統輸入的電源是5 V,需要進行轉換處理。電源是整個系統最重要的部分之一,電源如果癱瘓的話,整個系統沒有一個功能是可以運行的,因此電源的設計一定要穩定、可靠。電源電路如圖8所示,POWER是電源的接口,可以和所有的能夠輸出5 V的電源適配器連接。輸入電源后經過兩個電容的濾波,幫助電源濾除雜波信號,兩個電容參數一大一小分別對高頻和低頻雜波進行濾除。經過U7將5 V電壓穩壓到3.3 V,再經過一大一小電容參數,同樣對高頻和低頻雜波進行濾除輸入到系統各部分模塊中。為了指示電源是否正常功能,加入了LED。

圖8 電源電路
系統整體軟件設計中是將說有功能軟件部分在主函數中整合。在主函數運行開始需要對各項功能進行配置。對汽車轉向輪轉角檢測接口、按鍵控制接口、數據顯示控制接口、WiFi通信控制接口、報警提示控制接口進行初始化。系統采集汽車轉向輪轉角數據,如果汽車轉向輪轉角數據超過設置的閾值,則通過聲音報警提示。可以使用按鍵調整汽車轉向輪轉角閾值。同時可以通過WiFi傳輸到手機實現數據監控。系統整體軟件設計流程如圖9所示。

圖9 系統整體軟件設計流程圖
轉角檢測模塊輸出模擬數據。ADC0832是一個8位分辨率的模數轉換方案,因此最多可以達到256級的數字量,可以滿足大多數模數轉換應用項目中。參考電壓為5V,因此模擬量的輸入范圍為0~5 V。MCU只需要CS、CLK、DO和DI可以完成收藏數字量。在控制芯片時,數據輸出DO和數據輸入DI不同時使用,即如果有數據輸出,就沒有數據輸入。因此,DO的數據輸出和DI的數據輸入重用了一條數據線,使單片機的值需要3個引腳來操作芯片。當需要操作芯片時,將引腳控制在低電平。芯片完成模數轉換后,單片機將時鐘信號輸入芯片時鐘,然后根據時鐘信號通過數據輸入DI選擇相應的轉換通道,然后通過數據輸出DO接收數字數據。接收IN1、IN2信號,以控制電機的正向和反向旋轉。轉角檢測軟件設計流程圖如圖10所示。

圖10 溫度檢測軟件設計流程圖
WiFi通信的軟件設計需要單片機來完成,單片機主要通過串口向WiFi模塊輸入相應的AT指令對模塊進行功能控制。要實現串口需要確定串口數據傳輸的速度,即波特率[19-21]。還需要確定串口數據傳輸的位數,在系統設計中確定以9 600波特率以及8位數據位去設置好串口。在進行AT指令使用時,需要先發送AT進行測試,如果WiFi模塊反回OK,則表示模塊可以進行控制,否則需要繼續進行AT指令測試。WiFi模塊的串口參數也是需要設置的,需要設置和單片機一致即可,是否設置成功可以通過PC端的串口助手進行驗證。先設置WiFi模塊進入到路由模式,設置后必須重啟模塊才可以生效設置。啟動WiFi通信后就完成了WiFi模塊的配置,進入到連接數據傳輸狀態。WiFi通信軟件設計流程如圖11所示。

圖11 WiFi通信軟件設計流程圖
LCD1602是專用的字符顯示液晶屏,能夠顯示的內容包括字母、數字、符號等字符內容??梢詽M足大部分項目開發的需求。驅動芯片中有存儲器,存儲器有3種功能,DDRAM用于存儲液晶需要顯示內容的數據,包括所有能顯示內容的數據,在控制的時候調用對應顯示內容的數據到液晶屏,完成顯示。液晶屏單個字符顯示單元是5×7點陣式,需要顯示任何字符,都可以在5×7點陣上顯示出來,每個字符對應的數據都可以計算出來。DDRAM一共有80個字節的數據,作為液晶屏顯示內容數據存儲器,但是在顯示的時候,液晶屏無法將80個字節數據全部顯示,這樣就需要應用移動指令控制顯示數據,通過移動將未顯示出來的內容進行移動顯示。因此只需要把顯示的內容數據寫入到DDRAM,就可以完成顯示。如果要顯示數字1,直接將1對應的Ascll數據0x31輸入到DDRAM中,就可以在液晶屏上顯示出數字1。顯示軟件設計流程如圖12所示。

圖12 顯示軟件設計流程圖
汽車轉向輪轉角數據超過設置的閾值時進行聲音提示,以便用戶了解汽車轉向輪轉角數據的具體情況。如果汽車轉向輪轉角數據超過設置的閾值,則主控控制PB11輸出低電平,控制蜂鳴器報警。報警控制軟件設計流程如圖13所示。

圖13 報警控制軟件設計流程圖
按鍵的人軟件代碼設計很重要,如果按鍵判斷錯誤,整個系統的控制就會產生故障。按鍵動作的檢測主要在軟件代碼設計上,首先分析按鍵動作機制,了解按鍵動作才可以更好的設計軟件代碼。理論上按鍵就是開關動作,但是由于實際情況是機械動作轉換為電信號,機械動作難免存在摩擦等情況,因為人手按下按鍵的機械動作存在抖動以及摩擦,所以在按按鍵的時候,真實情況是抖動的,所以導致按鍵開關是抖動開關,輸出的電信號也是抖動狀態,即為高低電平抖動,等人手按下按鍵穩定后,才輸出穩定的低電平,這個抖動過程一般是3~5 ms,因此在單片機掃描按鍵電信號的時候,需要在按鍵按下狀態穩定后檢測電信號,在軟件代碼掃描中第一次掃描到按鍵有效信號,此時并非真正的穩定信號,而是抖動開始或者干擾信號,所以待3~5 ms后繼續掃描,如果仍然是穩定信號,則表示按鍵按下。
按照電路圖的設計,進行電源接口電路的焊接試。之后進行單片機系統電路的焊接,其他部分需要通過單片機進行控制。用萬用表導通檔位測量電源是否短路,若正常則測量電源電壓是否正確。完成實物的焊接制作后即可進行系統軟件功能測試。
Keil可以完成對系統軟件功能的設計,Keil的使用方法簡單,創建項目工程后就可以開始進行代碼設計了。這也能保證能夠快速的進入開發階段。在編程上使用模塊模式進行程序設計,有利于在對代碼做管理,出現問題可以快速定位。此系統的代碼截圖如圖14所示。

圖14 軟件代碼截圖
打開項目工程后,選擇菜單進入調試界面進行調試。選擇“Debug”→“Start/Stop Debug Session”就可以進入調試功能。具體操作方法如圖15所示。

圖15 選擇調試功能示意圖
進入到調試界面后,可以看到左側有對寄存器進行實時監控的界面,可以在程序運行時觀察寄存器的實時變化狀態。同時還有代碼斷點的設置,對代碼的運行進行單步點擊運行操作,方便觀察各個參數的變化。

圖16 進入調試功能界面
之后,可以對部分變量進行監控,需要調節被監控的變量。選擇“View”→“Watch Window”就可以進入監控設置界面。調出Watch界面后,在此界面就可以設置被監控的變量或者參數。雙擊Name就可以設置要監控的變量,輸入變量名稱就可以監控變量的動態變化。完成上述硬件測試和軟件調試后,進行實際測試。整理了5組測試數據如表1所示,通過本文系統檢測數據和車輪轉向定位儀測量數據進行對比,測試結果一致。

表1 測試數據表與實際測量值比較
為了方便初學駕駛人員快速準確的掌握車輛轉角角度,也為了教練員有針對性的教學。開發設計了一套基于STM32單片機的汽車轉向輪轉角顯示儀,系統需要設計功能包括汽車轉向輪轉角檢測、按鍵操作、汽車轉向輪轉角數據顯示、語音播報、報警提示。系統采集汽車轉向輪轉角數據,如果汽車轉向輪轉角數據超過設置的閾值,則通過聲音報警提示,通過語音播報提醒??梢允褂冒存I調整汽車轉向輪轉角閾值。
系統的功能雖然基本滿足要求,但是通過分析還存在一些不足之處,需要后期不斷的改進。比如轉向控制的功能比較單一,可以融入一些物聯網的功能,比如加入遠程WiFi功能,通過手機實現遠程對汽車駕駛的控制。還可以加入人臉識別,讓系統的功能更加的多樣,也更加的智能和方便。