基于A(yíng)VR單片機的自行車(chē)行車(chē)記錄儀,包括軟硬件具體方案
1. 引言
自行車(chē)行車(chē)記錄儀(以下簡(jiǎn)稱(chēng)碼表)在國內外已經(jīng)有了廣泛的應用,但是不管是國外的還是國產(chǎn)的碼表都存在著(zhù)很多缺點(diǎn)。
首先,對于國產(chǎn)碼表來(lái)說(shuō),缺點(diǎn)主要有:
安裝相當麻煩,根據使用者評價(jià),一般安裝需要半小時(shí)以上,而國外的進(jìn)口碼表則只要5分鐘即可安裝完畢,所以在設計該碼表時(shí)需要在這方面進(jìn)行改進(jìn)。
即時(shí)速度顯示混亂,其實(shí)這是計算精度不夠造成,速度高于25M/S以后(特別是30M/S以后)當前速度就開(kāi)始有波動(dòng),速度越快波動(dòng)越大,這個(gè)問(wèn)題還導致最高速度不可信,所以在設計時(shí)選擇的CPU必須是具有較高計算速度,且實(shí)時(shí)性能較好的,這里選用了AVR的MEGA64高性能8位單片機,此單片機資源豐富,最高速度可以達到16MIPS/S。
里程和速度的清零功能未能真正實(shí)現,它不能像國外的SIGMA那樣清除指定的數據,而是全部清零重置,連總里程和時(shí)鐘都清零了,所以這個(gè)設計也是非常的失敗的,需要改進(jìn)。
時(shí)鐘不準,根據大部分使用者的反應,一個(gè)月快了差不多半小時(shí)。
某些國產(chǎn)表的輪徑設置最小只能適應20*2.0cm的輪胎,也就是說(shuō)折疊車(chē)基本用不上,這點(diǎn)也是需要改進(jìn)的。
最后一點(diǎn)對于普通用戶(hù)來(lái)說(shuō)都是比較反感的,說(shuō)明書(shū)以及液晶上的顯示都是全英文的,而且液晶顯示簡(jiǎn)單,說(shuō)明書(shū)也只是一個(gè)小紙片而已,對自行車(chē)碼表沒(méi)點(diǎn)了解、沒(méi)有點(diǎn)鉆研精神還不一定能搞清里面的功能和用法。
再次,對于外國的碼表來(lái)說(shuō),觀(guān)點(diǎn)主要有以下:
除了以上的第六個(gè)缺點(diǎn)以外,其它缺點(diǎn)基本都是不存在的,但是一個(gè)比較致命的要害是價(jià)格高,一般的消費群體買(mǎi)不起。就拿比較出名的德國品牌sigma,最便宜的到70多,但是功能實(shí)在單一。而功能強大,性能又好的則貴至好幾百元,上千元不等,型號很多,價(jià)格范圍波動(dòng)也很大。
最后,總結出不管是國內還是國外碼表,都存在以下缺點(diǎn):
顯示都是英文,對于一般的用戶(hù)使用比較的不方便,而且安裝較麻煩,初始化設置十分的繁瑣。
功能單一,一般便宜的碼表,往往只具備速度的記錄,行車(chē)總里程,行車(chē)總時(shí)間的記錄等等,并且通過(guò)液晶查看,不能有效的統一歷史數據,或者只能查閱近幾天的歷史數據。
實(shí)現該系統所需要的知識如下:
單片機C語(yǔ)言編程;IIC,單總線(xiàn)等串行總線(xiàn)編程;模塊化程序設計;霍爾傳感器原理及實(shí)現方法;液晶顯示編程;打印機實(shí)現原理;protel畫(huà)原理圖以及畫(huà)PCB等。
核心元件,單片機,這里選擇ATMEL公司的8位中高端單片機Atmega64,選擇它的理由主要有以下幾點(diǎn):
在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該存儲器走的是IIC(ATMEL公司開(kāi)發(fā)的兩線(xiàn)串行總線(xiàn))總線(xiàn)模式,雖然可以用一般的單片機模擬IIC總線(xiàn),但是為了提高效率則必須選擇具有IIC總線(xiàn)接口的單片機,這個(gè)一般的51單片機已經(jīng)不能滿(mǎn)足,所以需考慮其它單片機。
打印機模塊,有下面的打印機實(shí)現原理(圖4.5)可知,我們必須選擇具有雙邊沿觸發(fā)的單片機,有這個(gè)功能的單片機ATMEL的AVR系列的中高端單片機能滿(mǎn)足,比如Atmega64及以上的單片機都具有這一功能。
霍爾傳感器,霍爾傳感器測速必須具有兩個(gè)內置外設,一個(gè)是外部下降沿中斷,一個(gè)是內部定時(shí)器,Atmega64也能很好的滿(mǎn)足。
內存空間要求:在做用戶(hù)界面以及制作貪吃蛇等游戲時(shí)都必須開(kāi)很大的緩存,所以必須具備一定的內存容量,初步估計需要2K內存以上,而Atmega64擁有4K內存,能夠完全滿(mǎn)足。
更重要的是,這款單片機價(jià)格便宜,只要20余元便能購置一片,所以選擇這個(gè)單片機時(shí)比較合適的。
下面將從硬件系統,軟件系統,各個(gè)模塊的實(shí)現原理,軟硬件調試這幾個(gè)方面來(lái)詳細的講述這一個(gè)系統。
2. 系統框架
2.1 系統框架結構圖
系統框架結構圖如圖2.1所示
圖2.1 系統框架圖
2.1.2 主控板
如上圖2.1所示,主控板為系統核心,主要包含單片機ATmega64(ATEML公司8位中高端單片機)以及,各個(gè)模塊接口。
2.1.3 打印機
如上圖2.1所示,打印機模塊需要一個(gè)驅動(dòng)板以及一個(gè)打印機模塊,打印機為EPSON公司的M-150II微型打點(diǎn)打印機,一行可以打96個(gè)點(diǎn)。
2.1.4 存儲模塊
如上圖2.1所示,存儲模塊用的是ATMEL公司的AT24LC64 EEPROM(電可擦除編寫(xiě)存儲器)存儲器,大小一共是8千字節。
2.1.5 溫度傳感器
如上圖2.1所示,溫度傳感器用的達拉斯公司的DS18B20單總線(xiàn)數字溫度傳感器,支持多個(gè)掛同一條總線(xiàn),且測試溫度較準。
2.1.6 霍爾傳感器
如上圖2.1所示,霍爾傳感器使用的是A3144先行霍爾元件,在下面的第三章,硬件設計中將看到對霍爾傳感器的改良。
2.1.7 液晶顯示器
如上圖2.1所示,液晶顯示器使用的STN7920控制器的12864液晶顯示器,該液晶寬128個(gè)點(diǎn),高64個(gè)點(diǎn),故名12864,并且自帶中文字庫,可顯示區域大。
2.2 解決的主要內容
如何利用好強大的MEGA64單片機資源而不浪費,以及充分理解該單片機相關(guān)的控制單元內在的物理邏輯,由此才能深入的理解單片機的運行以及啟動(dòng)過(guò)程,并發(fā)現問(wèn)題時(shí)能得到及時(shí)解決。
行車(chē)記錄儀的硬件設計— 記錄儀總共涉及到溫度,時(shí)間,電源,液晶,打印機等多個(gè)模塊組成,在設計硬件時(shí)需要充分考慮到各種干擾,美觀(guān)度等因素。
多層菜單設計— 多層菜單是一個(gè)比較復雜的邏輯,如果設計不好會(huì )導致整個(gè)工程的混亂,使代碼變得難于理解,甚至不能繼續接下去的工作,所以多層菜單設計需要一個(gè)較好的算法來(lái)實(shí)現它。
各種總線(xiàn)協(xié)議驅動(dòng)— 單片機內置IIC,SPI等總線(xiàn)協(xié)議,在溫度獲取,flash存儲中等都需要用到這些總線(xiàn),所以這些總線(xiàn)協(xié)議的驅動(dòng)也是比較關(guān)鍵的。
打印機驅動(dòng)電路— 在本設計中,用到了EPSON的M-150II打印機,其工作電流大,需要專(zhuān)門(mén)的硬件驅動(dòng)電路,在設計這一塊電路時(shí),必須做好和主控板(記錄儀)的接口,以方便用戶(hù)進(jìn)行數據導出和統計。
2.3 實(shí)現的主要功能
顯示實(shí)時(shí)速度和平均速度
顯示總里程和單次行車(chē)里程
顯示時(shí)間和溫度
節電保護
行車(chē)信息存儲
用戶(hù)菜單UI界面
時(shí)間修改
輪徑設置,里程設置,等一些參數的設置
打印行車(chē)記錄統計信息
貪吃蛇小游戲
3. 硬件系統設計
3.1 主控板
主控板主要包括:CPU,Atmega64;時(shí)鐘芯片,DS1302;存儲芯片,24LC64;JTAG在線(xiàn)仿真接口;中斷獨立按鍵模塊;LED調試電路;12864液晶顯示接口;DS18B20溫度傳感器接口;霍爾傳感器接口;打印機驅動(dòng)板接口。
對單片機的選擇主要有以下要求:
在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該小存儲器走的是IIC總線(xiàn)模式,雖然可以用一般的單片機模擬IIC總線(xiàn),但是為了提高效率則必須選擇具有IIC總線(xiàn)接口的單片機,這個(gè)一般的51單片機已經(jīng)不能滿(mǎn)足,所以需考慮其它單片機。
時(shí)鐘模塊,用的是達拉斯的DS1302芯片,只需普通的端口操作就能完成。
打印機模塊,有下面的打印機實(shí)現原理可知,我們必須選擇具有雙邊沿觸發(fā)的單片機,有這個(gè)功能的單片機ATMEL的AVR系列的中高端單片機能滿(mǎn)足,比如Atmega64及以上的單片機都具有這一功能。
霍爾傳感器,霍爾傳感器測速必須具有兩個(gè)內置外設,一個(gè)是外部下降沿中斷,一個(gè)是內部定時(shí)器。
內存空間要求:在做用戶(hù)界面以及制作貪吃蛇等游戲時(shí)都必須開(kāi)很大的緩存,所以必須具備一定的內存容量,初步估計需要2K內存以上。
由以上幾點(diǎn)分析,這里我選擇了ATMEL公司的AVR系列單片機Atmega64,該款單片機價(jià)格便宜,功能強大,能滿(mǎn)足上面幾點(diǎn)的全部要求。
結論:最終選擇的單片機為ATMEL公司的Atmega64八位高性能單片機。
主控系統的核心如圖3.1所示。
圖3.1 核心板最小系統
3.2 霍爾傳感器
霍爾傳感器是實(shí)現行車(chē)記錄儀最核心的部件,記錄儀的核心記錄參數(車(chē)速),便是由霍爾傳感器實(shí)現的,所以在制作霍爾傳感器時(shí)必須嚴格把關(guān)。
3.2.1霍爾傳感器工作原理
霍爾傳感器,顧名思義,利用的是霍爾效應。
霍爾效應的本質(zhì)是:固體材料中的載流子在外加磁場(chǎng)中運動(dòng)時(shí),因為受到洛侖茲力的作用而使軌跡發(fā)生偏移,并在材料兩側產(chǎn)生電荷積累,形成垂直于電流方向的電場(chǎng),最終使載流子受到的洛侖茲力與電場(chǎng)斥力相平衡,從而在兩側建立起一個(gè)穩定的電勢差即霍爾電壓。正交電場(chǎng)和電流強度與磁場(chǎng)強度的乘積之比就是霍爾系數。平行電場(chǎng)和電流強度之比就是電阻率。大量的研究揭示:參加材料導電過(guò)程的不僅有帶負電的電子,還有帶正電的空穴。
本記錄儀中使用的霍爾元件A3144E正是利用這一效應而產(chǎn)生的。其實(shí)物結構圖如圖3.2所示
圖3.2 霍爾元件結構圖
霍爾元件工作原理:實(shí)物結構圖如上圖3.2所示,3腳為信號腳,1腳和2腳分別接電源和地。在沒(méi)有經(jīng)過(guò)磁場(chǎng)時(shí),輸出為高電平,當磁場(chǎng)漸漸變強時(shí),則輸出的電平會(huì )漸漸變低,當磁場(chǎng)周期性的出現時(shí),在輸出腳便會(huì )出現一個(gè)正弦波電壓,霍爾元件信號輸出如圖3.3所示
圖3.3 霍爾元件信號輸出
3.2.2 霍爾傳感器改良
如上圖3.3所示在周期性磁場(chǎng)的作用下,霍爾元件,A3144E輸出的是一個(gè)周期性的正弦波,而單片機能識別的只是1或0的高低電平,如果把這個(gè)信號直接接單片機則有很多缺點(diǎn):
單片機無(wú)法識別該信號除了高電平和低電平時(shí)的電平
霍爾元件靈敏度低,只有在磁鐵靠的很近的時(shí)候才有反應
針對以上缺點(diǎn),需要對霍爾傳感器進(jìn)行改良,目的為了提高靈敏度和改善輸出波形,改良的電路圖如圖3.4所示
圖3.4 改良的霍爾傳感器
工作原理:改良的霍爾傳感器如上圖3.4所示,在沒(méi)有磁場(chǎng)的情況下,3144輸出高電平,則運算放大器輸出低電平,當經(jīng)過(guò)磁場(chǎng)時(shí),3144輸出電平漸漸變低,當電平低于放大器負極時(shí)則放大器輸出低電平,從而通過(guò)單片機采集這個(gè)低電平信號。
由以上工作原理可知,可以通過(guò)調節滑動(dòng)變阻器R3,從而來(lái)調節觸發(fā)電平。并且通過(guò)點(diǎn)亮燈LED1來(lái)指示信號的輸出。
改良后的霍爾傳感器信號輸出波形如圖3.5所示
圖3.5 霍爾傳感器輸出信號
霍爾傳感器信號輸出如上圖3.5可知,經(jīng)過(guò)改良后的霍爾傳感器能輸出一個(gè)單片機能識別的方波,并且可以通過(guò)調節滑動(dòng)變阻器R3來(lái)調節傳感器的觸發(fā)電平,同時(shí)通過(guò)指示燈LED1來(lái)指示信號的輸出,最主要達到了增強信號的可處理性的目的。
3.3 打印機
打印機在打印的時(shí)候需要大電流提供,而單片機的IO管腳最多只能提供20mA的電流,所以打印機在打印之前需要有額外的驅動(dòng)電路來(lái)提供打印需要的電流。打印機實(shí)物接口如下圖3.6所示
圖3.6 打印機實(shí)物接口
其中的信號接口如圖3.7所示
圖 3.7 打印機信號接口
打印機電機驅動(dòng)如下圖 3.8所示,打印機主要信號包括,電機驅動(dòng)信號:Motor(+),4個(gè)打印針驅動(dòng)信號:(6,7,8,9)。
電機驅動(dòng)電路如下圖3.8所示
圖3.8 打印機電機驅動(dòng)
打印機電機驅動(dòng)如上圖3.8所示,信號由AVR_PRINT_ON腳輸入,高電平驅動(dòng),當產(chǎn)生高電平時(shí),通過(guò)三極管Q1驅動(dòng)打印機打印。
打印針的驅動(dòng)如下圖3.9所示
圖3.9 打印針驅動(dòng)
AVR_PRINT_A為信號輸入腳,低電平驅動(dòng),當該腳為低電平時(shí),通過(guò)三極管Q3和Q4驅動(dòng)打印針PRINT_A打印。
3.4 其它外圍電路
除了以上涉及核心電路外,其它比如時(shí)間顯示,數據存儲,溫度顯示等,都分別需要不同的硬件模塊提供支持。
3.4.1 時(shí)鐘模塊
這里時(shí)鐘采用了達拉斯的DS1302時(shí)鐘芯片,時(shí)鐘模塊電路圖如圖3.10所示
圖3.10 DS1302時(shí)鐘模塊
該模塊采用串行工作模式,通過(guò)SCLK(Signal Clock,信號時(shí)鐘), I/O(Input And Output,輸入輸出信號),RST(Reset 復位信號)三線(xiàn)控制芯片工作。
3.4.2 數據儲存模塊
數據存儲采用了ATMEL公司的24LC64 EEPROM(可編程電可擦除存儲芯片),模塊電路圖如圖3.11所示
圖3.11 EEPROM存儲電路
該模塊采用的是標準的I2C總線(xiàn)模式,操作簡(jiǎn)單方便,總容量為64Kbit,8K字節,對于存儲記錄儀的參數是綽綽有余。
3.4.3 溫度傳感模塊
溫度傳感器采用的是達拉斯的DS18B20,單總線(xiàn)模式,溫度傳感器模塊電路圖如圖3.12所示
圖 3.12 溫度傳感器模塊
溫度傳感器模塊如上圖3.1所示,DS18B20采用的是單總線(xiàn)模式,該數字溫度傳感器最大的的特點(diǎn)是,只需一個(gè)IO管腳便可以控制其工作,并且該傳感器傳感溫度精確,最小可以精確到0.0625℃。
3.4.4 獨立按鍵模塊
獨立按鍵模塊是提供用戶(hù)來(lái)控制和使用UI界面,原理圖如下圖3.13所示
圖3.13 獨立按鍵電路
獨立按鍵電路如上圖3.13所示,每個(gè)按鍵按下時(shí)都會(huì )產(chǎn)生一個(gè)中斷,在設計嵌入式軟件時(shí)可以通過(guò)在按鍵中斷內判斷按鍵值,并且可以通過(guò)定時(shí)器去除抖動(dòng),這種軟件設計可以避免軟件延時(shí)去抖,從而提高了整套軟件的運行效率。
4. 軟件系統設計
本套軟件主要實(shí)現自行車(chē)行車(chē)記錄的智能控制,其實(shí)現的功能主要有以下幾點(diǎn):
顯示平均行車(chē)速度,實(shí)時(shí)行車(chē)速度,時(shí)間和溫度
記錄行車(chē)速度、行車(chē)總里程、單次行車(chē)里程
記錄總行車(chē)時(shí)間,單次行車(chē)時(shí)間
輪胎圓周設定,總里程初值設定
自動(dòng)關(guān)機,節電保護
行車(chē)統計信息打印
貪吃蛇小游戲
時(shí)間顯示和時(shí)間設置
4.1 軟件總體框架
軟件總體流程圖如下圖4.1所示
圖4.1 嵌入式軟件整體流程圖
4.2 軟件說(shuō)明
該嵌入式軟件設計的思想主要是模塊化的程序設計思想,其中需要驅動(dòng)的模塊主要有以下幾點(diǎn):
DS1302時(shí)鐘模塊驅動(dòng)
DS18B20數字溫度傳感器模塊驅動(dòng)
24LC64 EEPROM存儲模塊驅動(dòng)
12864液晶顯示模塊驅動(dòng)
霍爾傳感器計速模塊驅動(dòng)
EPSON M-150II微型打點(diǎn)打印機驅動(dòng)
軟件主要包含三層結構,分別為應用層,封裝層以及驅動(dòng)層。其軟件層次結構如下圖4.2所示
圖 4.2 嵌入式軟件層次結構
這種軟件設計的好處是便于移植,當更換某一芯片時(shí),只需要改變相應芯片的驅動(dòng)層,而不用修改封裝和應用層,便可以使軟件繼續正常運轉。
而如果更換單片機這一核心元件,也只需更改所有的驅動(dòng)層便可以把軟件移植到其它單片機平臺,在編寫(xiě)涉及到硬件的代碼時(shí),可以盡量使用宏定義或者編寫(xiě)多層結構,使底層硬件操作的代碼達到最少,從而方便移植。
4.3 各個(gè)模塊實(shí)現原理
4.3.1 處理器模塊
首先在選擇CPU(Central Processing Unit,計算機中央處理器)之前,必須先分析完成這個(gè)作品所選的CPU必須具備的功能,如果CPU選的功能太過(guò)簡(jiǎn)單就不能達到預期的效果,很多東西不能實(shí)現,而如果選擇很先進(jìn)的CPU或者32位的高級單片機,首先第一個(gè)是不能充分利用這個(gè)單片機,第二是在成本上也會(huì )大幅上升,所以在選擇單片機時(shí)必須對所需要的功能進(jìn)行合理的分析。
分析情況:
在顯示方面使用的是12864液晶的帶字庫液晶,該液晶操作簡(jiǎn)單,只需普通的IO端口操作便可以解決控制,所以它對單片機沒(méi)有特殊的要求。
在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該存儲器走的是IIC(ATMEL公司開(kāi)發(fā)的兩線(xiàn)串行總線(xiàn))總線(xiàn)模式,雖然可以用一般的單片機模擬IIC總線(xiàn),但是為了提高效率則必須選擇具有IIC總線(xiàn)接口的單片機,這個(gè)一般的51單片機已經(jīng)不能滿(mǎn)足,所以需考慮其它單片機。
時(shí)鐘模塊,用的是達拉斯的DS1302芯片,只需普通的端口操作就能完成。
打印機模塊,有下面的打印機實(shí)現原理(圖4.5)可知,我們必須選擇具有雙邊沿觸發(fā)的單片機,有這個(gè)功能的單片機ATMEL的AVR系列的中高端單片機能滿(mǎn)足,比如Atmega64及以上的單片機都具有這一功能。
霍爾傳感器,霍爾傳感器測速必須具有兩個(gè)內置外設,一個(gè)是外部下降沿中斷,一個(gè)是內部定時(shí)器。
內存空間要求:在做用戶(hù)界面以及制作貪吃蛇等游戲時(shí)都必須開(kāi)很大的緩存,所以必須具備一定的內存容量,初步估計需要2K內存以上。
由以上6點(diǎn)分析,這里我選擇了ATMEL公司的AVR系列單片機Atmega64,該款單片機價(jià)格便宜,功能強大,能滿(mǎn)足上面7點(diǎn)的全部要求。其資源如下:
工作于16M時(shí)性能高達16MIPS,速度快
64K flash程序代碼空間
4K 的內部SRAM,足夠滿(mǎn)足UI界面以及其他的緩存
內置IIC和SPI總線(xiàn)接口
8路外部中斷,有4路能實(shí)現雙邊沿中斷
3路定時(shí)急速器(2路8位,1路16位)
兩個(gè)串行USART口
53個(gè)普通IO端口(大部分復用)
由以上八點(diǎn)可以看出,該款單片機完全能夠滿(mǎn)足這個(gè)產(chǎn)品需要的功能,并且Atmega64為基于RSIC結構的8位低功耗CMOS微處理器,降低功耗,是做行車(chē)記錄儀的首選單片機。
結論:最終選擇的單片機為ATMEL公司的Atmega64八位高性能單片機。
4.3.2 用戶(hù)UI界面原理
在這個(gè)嵌入式軟件中,最關(guān)鍵也是最富有挑戰的便是用戶(hù)界面,即菜單系統,如果只是用簡(jiǎn)單的switch,case語(yǔ)句,那在三層菜單的基礎上,那將會(huì )是一個(gè)非常龐大的代碼,并且可讀性差,維護十分困難,當需要增加或則刪減菜單時(shí)都是一件非常痛苦的事情。
通過(guò)各種資料的搜索與整理,并且通過(guò)自己的改良,用了一種基于節點(diǎn)編號的方法實(shí)現了這個(gè)菜單系統。
首先、菜單是有層次的,并且每一層菜單都有不同的不同的條數,比如第一層菜單有四條,第一層菜單第一條的子菜單都3條,而第一層菜單第二條的子菜單有2條。
加入以個(gè)十百來(lái)標識菜單所在的層次,以每一位的大小來(lái)標識當前菜單再當前層次的條數,則可以推斷出每條菜單都有一個(gè)唯一的ID,我們稱(chēng)之為節點(diǎn)。
基于節點(diǎn)編號的菜單系統的結構如下圖4.3所示
圖4.3 基于節點(diǎn)編號的菜單系統結構
結構分析:菜單系統結構圖如上圖4.3所示,可見(jiàn)很明顯,菜單為3層菜單結構,第一層總共有兩條菜單,其編號分別是1和2,在例如在第三層中節點(diǎn)編號為133的菜單,由該節點(diǎn)知,該條菜單再當前層次的第三條,并且位于上層菜單的第三條,位于上上層菜單(即一級菜單)的第一條。其它菜單的結構和這個(gè)一樣。
由以上分析可知,菜單的結構很明顯的構成了一個(gè)標準的二叉樹(shù),并且其父子節點(diǎn)有很明顯的算術(shù)關(guān)系,其關(guān)系如下。
父節點(diǎn) = 當前節點(diǎn)%10;(%操作為求余操作)
子節點(diǎn) = 當前節點(diǎn)*10 + 1;
如果沒(méi)有父節點(diǎn)或者子節點(diǎn),則分別把這兩個(gè)節點(diǎn)設置成空節點(diǎn)。
有了這個(gè)方法,要實(shí)現一個(gè)菜單系統便是一個(gè)很簡(jiǎn)單的事情了,這套菜單系統還能實(shí)現翻頁(yè)等復雜操作,并且增加或刪除節點(diǎn)十分方便I,只需修改相應節點(diǎn)的編號就可以實(shí)現。
菜單與實(shí)時(shí)顯示界面的分離:在這套菜單系統中,用戶(hù)可以通過(guò)按返回鍵激活菜單或者通過(guò)返回鍵返回實(shí)時(shí)界面,其實(shí)現原理也非常簡(jiǎn)單,只需設置一個(gè)標志位來(lái)標識是否激活菜單,從而達到實(shí)時(shí)界面與菜單的分離。
4.3.3 測速實(shí)現原理
測速的核心部件是霍爾元件,利用霍爾元件,再進(jìn)行一些改良,如上硬件設計中提到的圖3.4所示。從而使傳感器在周期性的磁場(chǎng)作用下產(chǎn)生一個(gè)固定周期的方波。
那么,如何利用輸出的一個(gè)方波來(lái)實(shí)現測速的目的呢?這里利用了單片機的兩個(gè)內置外設:
外部IO中斷
8位定時(shí)器T2
當出現方波的下降沿時(shí),單片機可以利用外部中斷采集到這個(gè)下降沿,并跳轉到中斷服務(wù)入口,在中斷服務(wù)中可以通過(guò)打開(kāi)定時(shí)器來(lái)實(shí)現記錄每個(gè)方波或者一定方波個(gè)數n的時(shí)間t。
這里假設輪胎的圓周長(cháng)是len厘米。則由以上數據可知如下公式。
速度 V = n*len/t (cm/s),其中len的單位為厘米,t的單位為秒。
4.3.4 微型打印機原理
在這里使用的打印機是EPSON公司的M-150II微型打點(diǎn)打印機,其總共包含4個(gè)打印針,每個(gè)打印針?lè )謩e可以打印24個(gè)點(diǎn),其在打印紙上的分布點(diǎn)如下圖4.4所示
圖4.4 打印機點(diǎn)在打印紙上的分布
由以上硬件設計中的圖3.7所示知,控制打印機運轉的主要有4種信號:
復位控制信號Reset Decetor
時(shí)序控制信號 Timing Decteor
電機運轉控制信號 Motor
四個(gè)打印針控制信號 Print Solenoid
打印機點(diǎn)在打印紙上的分布如上圖4.4所示,當打印機從左往右運動(dòng)時(shí),分別產(chǎn)生96個(gè)Timing Dector信號,單片機以這個(gè)信號為基準進(jìn)行打點(diǎn)控制,每一個(gè)信號分別控制一個(gè)點(diǎn),總共96個(gè)信號對應96個(gè)點(diǎn),打打印完一行后,打印機需通過(guò)點(diǎn)擊回到起始原點(diǎn),當回到原點(diǎn)時(shí),打印機通過(guò)Reset Decotor信號輸出低電平開(kāi)始新的一行的打印。
而打印機在打印的時(shí)候,每個(gè)打印針電路上的瞬間電流都是很大的,所以必須要通過(guò)驅動(dòng)電路實(shí)現,其驅動(dòng)電路已經(jīng)在上面硬件電路設計中的打印機模塊講明了。
Timing Dector信號如下圖4.5所示
圖4.5 打印機Timing Dector信號
如上圖4.5所示,打印機輸出的為正弦波信號,通過(guò)驅動(dòng)電路把信號轉換成方波,此時(shí)的波形頻率為需要的波形頻率的1/2,這里可以通過(guò)兩種方法進(jìn)行改良:一種是硬件進(jìn)行分頻,另一種是利用單片機的雙邊沿促發(fā)功能。
第一種方法比較麻煩,需要拖入較大硬件,而第二種方法只要所選的單片機具有雙邊沿促發(fā)功能便可以很好的解決問(wèn)題。
而這里選用的Atmega64總共有8個(gè)外部中斷,分別是INT0~INT7,慶幸的是,其中有4個(gè)具有雙邊沿促發(fā)功能,分別是INT4~INT7,這里選用的是INT6。
5. 軟硬件系統調試
5.1 硬件調試
在完成硬件PCB的加工之后,首先第一步便是進(jìn)行硬件焊接以及調試,在調試過(guò)程中碰到過(guò)許多問(wèn)題,并且經(jīng)過(guò)分析和實(shí)踐意義解決,接下去分析在硬件調試過(guò)程中碰到的各類(lèi)問(wèn)題與解決方法。
遇到的問(wèn)題:
主控板電源,電流不夠,當初設計的時(shí)候主要是為了降壓在主控板的電源之后加了一個(gè)二極管來(lái)限制電壓,結果是焊接了一個(gè)IN4148的小電流二極管,導致液晶很暗,并且不能調處液晶對比度,電源模塊的電路圖如圖5.1所示
圖5.1 主控板電源模塊
解決方法是,使用大電流的二極管,SS26,很好的解決了這一問(wèn)題。
霍爾傳感器,感應靈敏度太低,在設計電路的時(shí)候以為霍爾元件在周期性磁場(chǎng)的作用下能直接輸出單片機能接收的方波,但是實(shí)際測試并非如此,單用霍爾元件直接接單片機,靈敏度很低,要固定也不方便,原設計圖霍爾傳感器接口如圖5.2所示
圖5.2 霍爾元件接口
解決方法是,使用運算放大器對信號進(jìn)行放大,并使用滑動(dòng)變阻器來(lái)調節靈敏度,使之變成一個(gè)靈敏度可調的并輸出方波的可調霍爾傳感器,改良的電路如上硬件設計中的圖3.4所示。
打印機子控板,布線(xiàn)太細,打印機的打印針在打印的瞬間,以及打印機的點(diǎn)擊在運轉的時(shí)候都是需要提供大電流的,能達到幾百mA,瞬間甚至幾個(gè)安培,而在布線(xiàn)的時(shí)候,打印針的地方只用了2.54mm的細線(xiàn),在實(shí)際使用的時(shí)候只能打印16x16的大字,當打印壓縮的字體時(shí)便變成很模糊的字,主要原因是打印針電流小,力度不夠。
解決方法:手動(dòng)焊接萬(wàn)用板來(lái)達到打印的效果,在使用萬(wàn)用板的時(shí)候也出現部分不能打印的結果,結果只是三極管壞掉,也得到了很好的解決。
5.2 軟件調試
在上面的硬件調試完畢之后,其實(shí)已經(jīng)完成了一些基本的驅動(dòng),打印機驅動(dòng),液晶驅動(dòng),霍爾元件驅動(dòng)都已經(jīng)完成,在軟件上的主要難題主要有:
DS18B20時(shí)序---作為單總線(xiàn)溫度傳感器,DS18B20是達拉斯的單總線(xiàn)結構數字溫度傳感器,由于其是單總線(xiàn)結構,所以在時(shí)序的控制上要求非常嚴格,在做這個(gè)驅動(dòng)時(shí)碰到過(guò)許多問(wèn)題,主要是時(shí)序很難控制,最后通過(guò)JTAG硬件仿真調試,解決了這一難題。
用戶(hù)UI界面,以前從來(lái)沒(méi)坐過(guò)多級的菜單,并且菜單層次多,條數多,如果用簡(jiǎn)單的switch,case語(yǔ)句來(lái)實(shí)現的話(huà),那將會(huì )是一個(gè)非常龐大的代碼,不僅編寫(xiě)困難,而且不易維護,增減麻煩。所以為了做好這一塊,在網(wǎng)上搜索了大量的資料,最后使用的是基于節點(diǎn)編號的方法,并進(jìn)行了一些改良,這種方法的結構圖如上圖軟件設計中的圖4.3所示
6. 欲求目標
6.1 要求達到的目標
要實(shí)現的功能主要如下:
顯示實(shí)時(shí)速度和平均速度
顯示總里程和單次行車(chē)里程
顯示時(shí)間和溫度
節電保護
行車(chē)信息存儲
用戶(hù)菜單UI界面
時(shí)間修改
輪徑設置,里程設置,等一些參數的設置
打印行車(chē)記錄統計信息
貪吃蛇小游戲
6.2 產(chǎn)品優(yōu)缺點(diǎn)
優(yōu)點(diǎn):該產(chǎn)品的最大優(yōu)點(diǎn)是顯示實(shí)時(shí)速度和里程精確,誤差小,并且可調節度大,能適應輪胎圓周10—250cm的自行車(chē),使用用戶(hù)UI界面,并且顯示的全是淺顯易懂的中文,顯示更加人性化和方便,傳感器靈敏度高,并且還具有打印功能,便于用戶(hù)管理行車(chē)信息。
缺點(diǎn):本產(chǎn)品的最大缺點(diǎn)是成本高,打印機以及液晶都是比較昂貴的,這點(diǎn)需要改進(jìn)。另一個(gè)缺點(diǎn)便是沒(méi)有包裝,只是達到了實(shí)驗級的產(chǎn)品,沒(méi)有達到產(chǎn)品級別,這點(diǎn)在量產(chǎn)產(chǎn)品之后可以進(jìn)行改良。
附錄一
主控板系統原理圖:
附錄二
驅動(dòng)板原理圖:
霍爾傳感器原理圖:
評論