胡孫杰,彭時翔,張小西,曹德友
(浙江長江汽車電子有限公司,浙江溫州,325000)
隨著自行車技術的不斷發展,騎行速度越來越快;同時出現了自行車速度過快剎車不及時造成人員身體傷害的事件不斷發生。因此設計一款體積小、操作方便的便攜式自行車車速報警系統,它能實時顯示當前自行車的速度,超出設定速度發出蜂鳴報警,同時能實時顯示當前環境溫度、電池電量及自動計算并顯示當前自行車行駛里程。
本文主要對單片機、霍爾測速原理、DS18B20 溫度采集、EEPROM 數據存儲、蜂鳴器控制原理、ADC 電壓采集及OLED 顯示原理的闡述與總結,對本文所描述的STM32F103CBT6 控制的自行車速度檢測顯示報警系統的系統原理的闡述,以及對控制程序的原理進行解析。
系統設計思路如下:在騎行過程中當自行車輪胎旋轉一圈走過的距離即為輪胎的周長C,采集輪胎旋轉的圈數即可得出自行車走過的總距離。因此如果將一個永磁鐵安裝在自行車輪轂上,與磁鐵對應的霍爾傳感器裝在固定支架上,單片機就可采集到的輪胎的旋轉狀態。單片機可計算單位時間T 內收到的脈沖數n 得出實時速度V=nC/T;總里程數S 為所收到脈沖數總數m 與輪胎周長乘積C 及S=mC。當輪胎都為標準的尺寸規格時,在首次安裝時提示選擇輪胎尺寸查表可得對應的周長;如規格不在表格中可選擇手動輸入當前輪胎周長或直徑單位為毫米。
圖1 為系統設計框圖。本系統采用STM32F103CBT6單片機對自行車速度傳感器霍爾脈沖信號的采集計算,同時通過DS18B20 采集環境溫度,通過OLED 顯示模塊顯示自行車實時速度、里程、環境溫度、電池電量,通過AT24C02 存儲自行車輪胎尺寸、總里程、限速設定擋位等配置信息,當速度超出設定值時通過蜂鳴器、LED 指示燈、液晶顯示提示發出報警提示騎行人員減速。

圖1 系統框圖
系統采用單節3.7V 鋰電池供電,同時單片機采集電池電壓當電壓過低時提示充電或更換電池。系統設計主要涉及以下幾個環節:單片機實現總體控制,YS282 霍爾脈沖信號采集、按鍵控制輸入、DS18B20 環境溫度采集、AT24C02通訊控制、蜂鳴器報警控制電路和OLED 顯示屏并口通訊控制。
系統的硬件電路包括霍爾脈沖采集,DS18B20 環境溫度采集電路,電源供電模塊及ADC 電池電壓采集電路,OLED 顯示屏控制電路,蜂鳴器、LED 報警電路,按鍵輸入,EEPROM 系統參數存儲、單片機系統[1]等部分組成,下面進行詳細說明。
本系統采用脈沖計數法測量速度;采集自行車轉軸旋轉圈數轉化成單片機可以識別的脈沖信號進行計算可獲得自行車速度。霍爾傳感器因結構簡單安裝方便,抗灰塵、油污等優點廣泛應用各種工業場所,采用YS282是一款高靈敏度高穩定的單極型霍爾效應傳感器;OUT 腳作為霍爾信號輸出至單片機信號采集腳,增加1k 電阻上拉增加驅動能力,同時增加濾波電容過濾干擾。霍爾傳感器硬件接口電路見圖2。

圖2 YS282 硬件連接電路
本系統采用STM32F103CBT6 實現速度、溫度、電壓等信號采集、計算顯示、報警等功能。如圖3 所示單片機最小系統包括上電復位電路、編程口、晶振、單片機等在內的單片機最小系統,單片機采用3.3V 低電壓電源供電可顯著降低系統功耗。

圖3 單片機最小系統原理圖
本系統選用ATK-0.96"OLED 模塊用于顯示交互;該模塊尺寸只有0.96 寸分辨率卻達到了128×64;采用先進的SSD1306 驅動芯片,內部集成升壓電路只需3.3V即可工作[2],硬件設計無需再增加DC-DC 電路使系統設計更簡單,模塊接口電路見圖4;采用3.3V 電壓供電,通訊接口采用并口通訊,同時可以通過單片機IO控制顯示屏復位。

圖4 OLED 硬件接口電路
當前系統采用無源蜂鳴器作為聲音報警器件;無源蜂鳴器與揚聲器相同是利用電磁感應現象,直接接入直流電無法產生聲音,只在接通或斷開時產生聲音。蜂鳴器控制電路見圖5,包括S8050 驅動開關三極管,1N4148 保護二極管用于吸收反向電動勢;R8、R9三極管驅動偏置電阻;控制信號采用單片機PA2 腳TIM2_CH3采用2700Hz 50%占空比的PWM 控制。
DS18B20 是一款高精度溫度測量芯片。通過單線總線實現通訊控制,溫度傳感器最低可檢測維度-55℃,最高可高檔+125℃;完全能滿足本系統設計要求。通過通訊口可以配置相應寄存器設定溫度傳感器的數字轉換精度轉換速度。在-10℃~+85℃誤差僅為0.4℃。DS18B20 硬件接口電路詳見圖6 所示,采用3.3V 供電,數據通訊線DQ 通過R7 上拉至電源,C3 為濾波電容。

圖6 DS18B20 硬件連接電路
本系統采用單節鋰電池供電,電池電壓3.7V 而單片機等芯片供電電壓為3.3V;因此采用TPS7A6133 進行減壓。電池電壓采集采用兩個10k 電阻進行分壓后再輸入至單片機AD 采集口,當電池電壓低于3.2V 時發出低電量提示。系統電路見圖7 所示。

圖7 系統電源供電模塊及電池電壓采集模塊
為了防止系統斷電時設置參數丟失,本系統選擇AT24C02保存系統參數。AT24C02是一款COMSEEPROM,內部容量為256 個字節。模塊接口電路見圖8所示;采用3.3V 電壓供電,通訊采用I2C 串口通訊,WP 寫保護引腳直接接地允許讀寫操作;SDA、SCL 引腳分別通過R40、R39 上拉至電源;由于系統只接了一個AT24C02 因此所有地址選擇引腳A0、A1、A2 可以全部接地。

圖8 AT24C02A 模塊接口電路
系統程序流程圖見圖9 所示。首先對系統參數進行初始化,接下來對按鍵模塊、ADC 電源電壓采集模塊、定時器模塊、AT24C02 通訊控制模塊[3]、OLED 顯示模塊、PWM蜂鳴器控制模塊、DS18B20 模塊進行初始化,啟動看門狗模塊,讀取AT24C02 系統參數,初始化系統參數。然后進入主程序,循環讀取霍爾傳感器脈沖計算自行車實時速度并判斷是否超速,讀取環境溫度,按鍵檢測,讀取電池電壓判斷電量,刷新OLED 顯示,看門狗喂狗。

圖9 主程序流程圖
STM32F103CBT6 的通用定時器是一個通過可編程預分頻器驅動的16 位自動裝載計數器構成。STM32F103CBT6的通用定時器可以被用于測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和PWM)等[4]。
本系統采用TIM2 定時器設置10ms 定時中斷,用于系統各處理周期計數。TIM3 設置頻率為2700HZ 占空比為50%的PWM 輸出用超速時的蜂鳴器報警控制輸出;TIM1設置為輸入捕獲用于霍爾脈沖測速。
SSD1306 的控制顯示器的分辨率為128×64,顯存總共有8 頁每頁包含了128 字節總共2K。對應的在單片機的內部建立一個2K 的GRAM,因此在每次修改顯示內容時只修改單片機上的GRAM,然后把單片機內部的數據寫入到OLED 即可,無需再讀取顯示內容再做修改,大大簡化了測序設計流程。
I2C 總線是一種兩線式串行總線;是單片機與外圍設備連接最常用的一種通訊總線;只需兩根數據線即可實現數據雙向通訊,最高速度可達400kbps 以上。
本系統采用單片機的IO 口來模擬I2C 通訊。程序實現包括:①初始化函數實現I2C 通訊接口初始化:將SDA(PB7)設置為雙向數據口,SCL(PB6)設置為輸出口;②起始信號函數;③停止信號函數;④等待應答函數;⑤產生ACK 函數;⑥發送一個字節函數;⑦讀一個字節函數[5]。
DS18B20 是通過1-Wrie 總線即“一線總線”接口進行通訊控制的,采用嚴格的信號時序,以保證數據的完整性。共有6 種信號類型:復位脈沖、應答脈沖、寫0、寫1、讀0 和讀1。所有這些信號,除了應答脈沖以外,都由單片機發出同步信號。并且發送所有的命令和數據都是字節的低位在前。這里我們簡單介紹這幾個信號的時序:
(1)復位脈沖和應答脈沖
通信都是以初始化序列開始。①MCU 輸出低電平,保持低電平時間至少480μs,以產生復位脈沖;②MCU 釋放總線,延時15~60μs,并進入接收模式(Rx);③接著DS18B20 拉低總線 60~240μs,以產生低電平應答脈沖,若為低電平,再延時480μs。
(2)寫時序
寫時序包括寫0 時序和寫1 時序。所有寫時序至少需要60μs,且在2 次獨立的寫時序之間至少需要1μs 的恢復時間,兩種寫時序均起始于MCU 拉低總線。寫1 時序:MCU 輸出低電平,延時2μs,然后釋放總線,延時60μs。寫0 時序:MCU 輸出低電平,延時60μs,然后釋放總線,延時2μs。
(3)讀時序
DS18B20 僅在MCU 發出讀時序時,才向MCU 傳輸數據,所以當MCU 發出讀數據命令后,必須馬上產生讀時序,以便DS18B20 能夠傳輸數據。所有讀時序至少需要60μs,且在2次獨立的讀時序之間至少需要1μs的恢復時間。每個讀時序都由MCU 發起,至少拉低總線1μs。MCU 在讀時序期間必須釋放總線,并且在時序起始后的15μs 之內采樣總線狀態。
DS18B20 的典型溫度讀取過程為:①復位;②發SKIP ROM 命令(0XCC);③發開始轉換命令(0X44);④延時;⑤復位;⑥發送SKIP ROM 命令(0XCC);⑦發讀存儲器命令(0XBE);⑧連續讀出兩個字節數據(即溫度);⑨結束。
本系統采用功能強大的STM32F103CBT6 32 位單片機實現霍爾脈沖采集自行車實時速度并實時顯示在128×64分辨率的OLED 顯示屏上具有較好的顯示效果,并用AT24C02 存儲系統參數保證了系統掉電數據安全性,同時采用DS18B20 監測環境溫度提示。系統實現了自行車速度/里程、電池電壓、環境溫度實時顯示,當自行車超速時可發出蜂鳴報警提示減速,當電池電量不足提示充電或更換電池。系統小巧、穩定,適合各尺寸自行車。