新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AVR單片機(jī)的自行車行車記錄儀,包括軟硬件具體方案

基于AVR單片機(jī)的自行車行車記錄儀,包括軟硬件具體方案

作者: 時(shí)間:2017-06-03 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://www.butianyuan.cn/article/201706/346860.htm

1. 引言

自行車(以下簡稱)在國內(nèi)外已經(jīng)有了廣泛的應(yīng)用,但是不管是國外的還是國產(chǎn)的都存在著很多缺點(diǎn)。

首先,對于國產(chǎn)來說,缺點(diǎn)主要有:

  1. 安裝相當(dāng)麻煩,根據(jù)使用者評價(jià),一般安裝需要半小時(shí)以上,而國外的進(jìn)口碼表則只要5分鐘即可安裝完畢,所以在設(shè)計(jì)該碼表時(shí)需要在這方面進(jìn)行改進(jìn)。

  2. 即時(shí)速度顯示混亂,其實(shí)這是計(jì)算精度不夠造成,速度高于25M/S以后(特別是30M/S以后)當(dāng)前速度就開始有波動,速度越快波動越大,這個(gè)問題還導(dǎo)致最高速度不可信,所以在設(shè)計(jì)時(shí)選擇的CPU必須是具有較高計(jì)算速度,且實(shí)時(shí)性能較好的,這里選用了AVR的MEGA64高性能8位單片機(jī),此單片機(jī)資源豐富,最高速度可以達(dá)到16MIPS/S。

  3. 里程和速度的清零功能未能真正實(shí)現(xiàn),它不能像國外的SIGMA那樣清除指定的數(shù)據(jù),而是全部清零重置,連總里程和時(shí)鐘都清零了,所以這個(gè)設(shè)計(jì)也是非常的失敗的,需要改進(jìn)。

  4. 時(shí)鐘不準(zhǔn),根據(jù)大部分使用者的反應(yīng),一個(gè)月快了差不多半小時(shí)。

  5. 某些國產(chǎn)表的輪徑設(shè)置最小只能適應(yīng)20*2.0cm的輪胎,也就是說折疊車基本用不上,這點(diǎn)也是需要改進(jìn)的。

  6. 最后一點(diǎn)對于普通用戶來說都是比較反感的,說明書以及液晶上的顯示都是全英文的,而且液晶顯示簡單,說明書也只是一個(gè)小紙片而已,對自行車碼表沒點(diǎn)了解、沒有點(diǎn)鉆研精神還不一定能搞清里面的功能和用法。

再次,對于外國的碼表來說,觀點(diǎn)主要有以下:

除了以上的第六個(gè)缺點(diǎn)以外,其它缺點(diǎn)基本都是不存在的,但是一個(gè)比較致命的要害是價(jià)格高,一般的消費(fèi)群體買不起。就拿比較出名的德國品牌sigma,最便宜的到70多,但是功能實(shí)在單一。而功能強(qiáng)大,性能又好的則貴至好幾百元,上千元不等,型號很多,價(jià)格范圍波動也很大。

最后,總結(jié)出不管是國內(nèi)還是國外碼表,都存在以下缺點(diǎn):

  1. 顯示都是英文,對于一般的用戶使用比較的不方便,而且安裝較麻煩,初始化設(shè)置十分的繁瑣。

  2. 功能單一,一般便宜的碼表,往往只具備速度的記錄,行車總里程,行車總時(shí)間的記錄等等,并且通過液晶查看,不能有效的統(tǒng)一歷史數(shù)據(jù),或者只能查閱近幾天的歷史數(shù)據(jù)。

實(shí)現(xiàn)該系統(tǒng)所需要的知識如下:

單片機(jī)C語言編程;IIC,單總線等串行總線編程;模塊化程序設(shè)計(jì);原理及實(shí)現(xiàn)方法;液晶顯示編程;打印機(jī)實(shí)現(xiàn)原理;protel畫原理圖以及畫PCB等。

核心元件,單片機(jī),這里選擇ATMEL公司的8位中高端單片機(jī)Atmega64,選擇它的理由主要有以下幾點(diǎn):

  1. 在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該存儲器走的是IIC(ATMEL公司開發(fā)的兩線串行總線)總線模式,雖然可以用一般的單片機(jī)模擬IIC總線,但是為了提高效率則必須選擇具有IIC總線接口的單片機(jī),這個(gè)一般的51單片機(jī)已經(jīng)不能滿足,所以需考慮其它單片機(jī)。

  2. 打印機(jī)模塊,有下面的打印機(jī)實(shí)現(xiàn)原理(圖4.5)可知,我們必須選擇具有雙邊沿觸發(fā)的單片機(jī),有這個(gè)功能的單片機(jī)ATMEL的AVR系列的中高端單片機(jī)能滿足,比如Atmega64及以上的單片機(jī)都具有這一功能。

  3. ,測速必須具有兩個(gè)內(nèi)置外設(shè),一個(gè)是外部下降沿中斷,一個(gè)是內(nèi)部定時(shí)器,Atmega64也能很好的滿足。

  4. 內(nèi)存空間要求:在做用戶界面以及制作貪吃蛇等游戲時(shí)都必須開很大的緩存,所以必須具備一定的內(nèi)存容量,初步估計(jì)需要2K內(nèi)存以上,而Atmega64擁有4K內(nèi)存,能夠完全滿足。

  5. 更重要的是,這款單片機(jī)價(jià)格便宜,只要20余元便能購置一片,所以選擇這個(gè)單片機(jī)時(shí)比較合適的。

下面將從硬件系統(tǒng),軟件系統(tǒng),各個(gè)模塊的實(shí)現(xiàn)原理,軟硬件調(diào)試這幾個(gè)方面來詳細(xì)的講述這一個(gè)系統(tǒng)。

2. 系統(tǒng)框架

2.1 系統(tǒng)框架結(jié)構(gòu)圖

系統(tǒng)框架結(jié)構(gòu)圖如圖2.1所示

圖2.1 系統(tǒng)框架圖

2.1.2 主控板

如上圖2.1所示,主控板為系統(tǒng)核心,主要包含單片機(jī)ATmega64(ATEML公司8位中高端單片機(jī))以及,各個(gè)模塊接口。

2.1.3 打印機(jī)

如上圖2.1所示,打印機(jī)模塊需要一個(gè)驅(qū)動板以及一個(gè)打印機(jī)模塊,打印機(jī)為EPSON公司的M-150II微型打點(diǎn)打印機(jī),一行可以打96個(gè)點(diǎn)。

2.1.4 存儲模塊

如上圖2.1所示,存儲模塊用的是ATMEL公司的AT24LC64 EEPROM(電可擦除編寫存儲器)存儲器,大小一共是8千字節(jié)。

2.1.5

如上圖2.1所示,用的達(dá)拉斯公司的DS18B20單總線數(shù)字,支持多個(gè)掛同一條總線,且測試溫度較準(zhǔn)。

2.1.6 霍爾傳感器

如上圖2.1所示,霍爾傳感器使用的是A3144先行霍爾元件,在下面的第三章,硬件設(shè)計(jì)中將看到對霍爾傳感器的改良。

2.1.7 液晶顯示器

如上圖2.1所示,液晶顯示器使用的STN7920控制器的12864液晶顯示器,該液晶寬128個(gè)點(diǎn),高64個(gè)點(diǎn),故名12864,并且自帶中文字庫,可顯示區(qū)域大。

2.2 解決的主要內(nèi)容

  1. 如何利用好強(qiáng)大的MEGA64單片機(jī)資源而不浪費(fèi),以及充分理解該單片機(jī)相關(guān)的控制單元內(nèi)在的物理邏輯,由此才能深入的理解單片機(jī)的運(yùn)行以及啟動過程,并發(fā)現(xiàn)問題時(shí)能得到及時(shí)解決。

  2. 的硬件設(shè)計(jì)— 記錄儀總共涉及到溫度,時(shí)間,電源,液晶,打印機(jī)等多個(gè)模塊組成,在設(shè)計(jì)硬件時(shí)需要充分考慮到各種干擾,美觀度等因素。

  3. 多層菜單設(shè)計(jì)— 多層菜單是一個(gè)比較復(fù)雜的邏輯,如果設(shè)計(jì)不好會導(dǎo)致整個(gè)工程的混亂,使代碼變得難于理解,甚至不能繼續(xù)接下去的工作,所以多層菜單設(shè)計(jì)需要一個(gè)較好的算法來實(shí)現(xiàn)它。

  4. 各種總線協(xié)議驅(qū)動— 單片機(jī)內(nèi)置IIC,SPI等總線協(xié)議,在溫度獲取,flash存儲中等都需要用到這些總線,所以這些總線協(xié)議的驅(qū)動也是比較關(guān)鍵的。

  5. 打印機(jī)驅(qū)動電路— 在本設(shè)計(jì)中,用到了EPSON的M-150II打印機(jī),其工作電流大,需要專門的硬件驅(qū)動電路,在設(shè)計(jì)這一塊電路時(shí),必須做好和主控板(記錄儀)的接口,以方便用戶進(jìn)行數(shù)據(jù)導(dǎo)出和統(tǒng)計(jì)。

2.3 實(shí)現(xiàn)的主要功能

  1. 顯示實(shí)時(shí)速度和平均速度

  2. 顯示總里程和單次行車?yán)锍?/p>

  3. 顯示時(shí)間和溫度

  4. 節(jié)電保護(hù)

  5. 行車信息存儲

  6. 用戶菜單UI界面

  7. 時(shí)間修改

  8. 輪徑設(shè)置,里程設(shè)置,等一些參數(shù)的設(shè)置

  9. 打印行車記錄統(tǒng)計(jì)信息

  10. 貪吃蛇小游戲

3. 硬件系統(tǒng)設(shè)計(jì)

3.1 主控板

主控板主要包括:CPU,Atmega64;時(shí)鐘芯片,DS1302;存儲芯片,24LC64;JTAG在線仿真接口;中斷獨(dú)立按鍵模塊;LED調(diào)試電路;12864液晶顯示接口;DS18B20溫度傳感器接口;霍爾傳感器接口;打印機(jī)驅(qū)動板接口。

對單片機(jī)的選擇主要有以下要求:

  1. 在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該小存儲器走的是IIC總線模式,雖然可以用一般的單片機(jī)模擬IIC總線,但是為了提高效率則必須選擇具有IIC總線接口的單片機(jī),這個(gè)一般的51單片機(jī)已經(jīng)不能滿足,所以需考慮其它單片機(jī)。

  2. 時(shí)鐘模塊,用的是達(dá)拉斯的DS1302芯片,只需普通的端口操作就能完成。

  3. 打印機(jī)模塊,有下面的打印機(jī)實(shí)現(xiàn)原理可知,我們必須選擇具有雙邊沿觸發(fā)的單片機(jī),有這個(gè)功能的單片機(jī)ATMEL的AVR系列的中高端單片機(jī)能滿足,比如Atmega64及以上的單片機(jī)都具有這一功能。

  4. 霍爾傳感器,霍爾傳感器測速必須具有兩個(gè)內(nèi)置外設(shè),一個(gè)是外部下降沿中斷,一個(gè)是內(nèi)部定時(shí)器。

  5. 內(nèi)存空間要求:在做用戶界面以及制作貪吃蛇等游戲時(shí)都必須開很大的緩存,所以必須具備一定的內(nèi)存容量,初步估計(jì)需要2K內(nèi)存以上。

由以上幾點(diǎn)分析,這里我選擇了ATMEL公司的AVR系列單片機(jī)Atmega64,該款單片機(jī)價(jià)格便宜,功能強(qiáng)大,能滿足上面幾點(diǎn)的全部要求。

結(jié)論:最終選擇的單片機(jī)為ATMEL公司的Atmega64八位高性能單片機(jī)。

主控系統(tǒng)的核心如圖3.1所示。

圖3.1 核心板最小系統(tǒng)

3.2 霍爾傳感器

霍爾傳感器是實(shí)現(xiàn)最核心的部件,記錄儀的核心記錄參數(shù)(車速),便是由霍爾傳感器實(shí)現(xiàn)的,所以在制作霍爾傳感器時(shí)必須嚴(yán)格把關(guān)。

3.2.1霍爾傳感器工作原理

霍爾傳感器,顧名思義,利用的是霍爾效應(yīng)。

霍爾效應(yīng)的本質(zhì)是:固體材料中的載流子在外加磁場中運(yùn)動時(shí),因?yàn)槭艿铰鍋銎澚Φ淖饔枚管壽E發(fā)生偏移,并在材料兩側(cè)產(chǎn)生電荷積累,形成垂直于電流方向的電場,最終使載流子受到的洛侖茲力與電場斥力相平衡,從而在兩側(cè)建立起一個(gè)穩(wěn)定的電勢差即霍爾電壓。正交電場和電流強(qiáng)度與磁場強(qiáng)度的乘積之比就是霍爾系數(shù)。平行電場和電流強(qiáng)度之比就是電阻率。大量的研究揭示:參加材料導(dǎo)電過程的不僅有帶負(fù)電的電子,還有帶正電的空穴。

本記錄儀中使用的霍爾元件A3144E正是利用這一效應(yīng)而產(chǎn)生的。其實(shí)物結(jié)構(gòu)圖如圖3.2所示

圖3.2 霍爾元件結(jié)構(gòu)圖

霍爾元件工作原理:實(shí)物結(jié)構(gòu)圖如上圖3.2所示,3腳為信號腳,1腳和2腳分別接電源和地。在沒有經(jīng)過磁場時(shí),輸出為高電平,當(dāng)磁場漸漸變強(qiáng)時(shí),則輸出的電平會漸漸變低,當(dāng)磁場周期性的出現(xiàn)時(shí),在輸出腳便會出現(xiàn)一個(gè)正弦波電壓,霍爾元件信號輸出如圖3.3所示

圖3.3 霍爾元件信號輸出

3.2.2 霍爾傳感器改良

如上圖3.3所示在周期性磁場的作用下,霍爾元件,A3144E輸出的是一個(gè)周期性的正弦波,而單片機(jī)能識別的只是1或0的高低電平,如果把這個(gè)信號直接接單片機(jī)則有很多缺點(diǎn):

  • 單片機(jī)無法識別該信號除了高電平和低電平時(shí)的電平

  • 霍爾元件靈敏度低,只有在磁鐵靠的很近的時(shí)候才有反應(yīng)

針對以上缺點(diǎn),需要對霍爾傳感器進(jìn)行改良,目的為了提高靈敏度和改善輸出波形,改良的電路圖如圖3.4所示

圖3.4 改良的霍爾傳感器

工作原理:改良的霍爾傳感器如上圖3.4所示,在沒有磁場的情況下,3144輸出高電平,則運(yùn)算放大器輸出低電平,當(dāng)經(jīng)過磁場時(shí),3144輸出電平漸漸變低,當(dāng)電平低于放大器負(fù)極時(shí)則放大器輸出低電平,從而通過單片機(jī)采集這個(gè)低電平信號。

由以上工作原理可知,可以通過調(diào)節(jié)滑動變阻器R3,從而來調(diào)節(jié)觸發(fā)電平。并且通過點(diǎn)亮燈LED1來指示信號的輸出。

改良后的霍爾傳感器信號輸出波形如圖3.5所示

圖3.5 霍爾傳感器輸出信號

霍爾傳感器信號輸出如上圖3.5可知,經(jīng)過改良后的霍爾傳感器能輸出一個(gè)單片機(jī)能識別的方波,并且可以通過調(diào)節(jié)滑動變阻器R3來調(diào)節(jié)傳感器的觸發(fā)電平,同時(shí)通過指示燈LED1來指示信號的輸出,最主要達(dá)到了增強(qiáng)信號的可處理性的目的。

3.3 打印機(jī)

打印機(jī)在打印的時(shí)候需要大電流提供,而單片機(jī)的IO管腳最多只能提供20mA的電流,所以打印機(jī)在打印之前需要有額外的驅(qū)動電路來提供打印需要的電流。打印機(jī)實(shí)物接口如下圖3.6所示

圖3.6 打印機(jī)實(shí)物接口

其中的信號接口如圖3.7所示

圖 3.7 打印機(jī)信號接口

打印機(jī)電機(jī)驅(qū)動如下圖 3.8所示,打印機(jī)主要信號包括,電機(jī)驅(qū)動信號:Motor(+),4個(gè)打印針驅(qū)動信號:(6,7,8,9)。

電機(jī)驅(qū)動電路如下圖3.8所示

圖3.8 打印機(jī)電機(jī)驅(qū)動

打印機(jī)電機(jī)驅(qū)動如上圖3.8所示,信號由AVR_PRINT_ON腳輸入,高電平驅(qū)動,當(dāng)產(chǎn)生高電平時(shí),通過三極管Q1驅(qū)動打印機(jī)打印。

打印針的驅(qū)動如下圖3.9所示

圖3.9 打印針驅(qū)動

AVR_PRINT_A為信號輸入腳,低電平驅(qū)動,當(dāng)該腳為低電平時(shí),通過三極管Q3和Q4驅(qū)動打印針PRINT_A打印。

3.4 其它外圍電路

除了以上涉及核心電路外,其它比如時(shí)間顯示,數(shù)據(jù)存儲,溫度顯示等,都分別需要不同的硬件模塊提供支持。

3.4.1 時(shí)鐘模塊

這里時(shí)鐘采用了達(dá)拉斯的DS1302時(shí)鐘芯片,時(shí)鐘模塊電路圖如圖3.10所示

圖3.10 DS1302時(shí)鐘模塊

該模塊采用串行工作模式,通過SCLK(Signal Clock,信號時(shí)鐘), I/O(Input And Output,輸入輸出信號),RST(Reset 復(fù)位信號)三線控制芯片工作。

3.4.2 數(shù)據(jù)儲存模塊

數(shù)據(jù)存儲采用了ATMEL公司的24LC64 EEPROM(可編程電可擦除存儲芯片),模塊電路圖如圖3.11所示

圖3.11 EEPROM存儲電路

該模塊采用的是標(biāo)準(zhǔn)的I2C總線模式,操作簡單方便,總?cè)萘繛?4Kbit,8K字節(jié),對于存儲記錄儀的參數(shù)是綽綽有余。

3.4.3 溫度傳感模塊

溫度傳感器采用的是達(dá)拉斯的DS18B20,單總線模式,溫度傳感器模塊電路圖如圖3.12所示

圖 3.12 溫度傳感器模塊

溫度傳感器模塊如上圖3.1所示,DS18B20采用的是單總線模式,該數(shù)字溫度傳感器最大的的特點(diǎn)是,只需一個(gè)IO管腳便可以控制其工作,并且該傳感器傳感溫度精確,最小可以精確到0.0625℃。

3.4.4 獨(dú)立按鍵模塊

獨(dú)立按鍵模塊是提供用戶來控制和使用UI界面,原理圖如下圖3.13所示

圖3.13 獨(dú)立按鍵電路

獨(dú)立按鍵電路如上圖3.13所示,每個(gè)按鍵按下時(shí)都會產(chǎn)生一個(gè)中斷,在設(shè)計(jì)嵌入式軟件時(shí)可以通過在按鍵中斷內(nèi)判斷按鍵值,并且可以通過定時(shí)器去除抖動,這種軟件設(shè)計(jì)可以避免軟件延時(shí)去抖,從而提高了整套軟件的運(yùn)行效率。

4. 軟件系統(tǒng)設(shè)計(jì)

本套軟件主要實(shí)現(xiàn)自行車行車記錄的智能控制,其實(shí)現(xiàn)的功能主要有以下幾點(diǎn):

  • 顯示平均行車速度,實(shí)時(shí)行車速度,時(shí)間和溫度

  • 記錄行車速度、行車總里程、單次行車?yán)锍?/p>

  • 記錄總行車時(shí)間,單次行車時(shí)間

  • 輪胎圓周設(shè)定,總里程初值設(shè)定

  • 自動關(guān)機(jī),節(jié)電保護(hù)

  • 行車統(tǒng)計(jì)信息打印

  • 貪吃蛇小游戲

  • 時(shí)間顯示和時(shí)間設(shè)置

4.1 軟件總體框架

軟件總體流程圖如下圖4.1所示

圖4.1 嵌入式軟件整體流程圖

4.2 軟件說明

該嵌入式軟件設(shè)計(jì)的思想主要是模塊化的程序設(shè)計(jì)思想,其中需要驅(qū)動的模塊主要有以下幾點(diǎn):

  • DS1302時(shí)鐘模塊驅(qū)動

  • DS18B20數(shù)字溫度傳感器模塊驅(qū)動

  • 24LC64 EEPROM存儲模塊驅(qū)動

  • 12864液晶顯示模塊驅(qū)動

  • 霍爾傳感器計(jì)速模塊驅(qū)動

  • EPSON M-150II微型打點(diǎn)打印機(jī)驅(qū)動

軟件主要包含三層結(jié)構(gòu),分別為應(yīng)用層,封裝層以及驅(qū)動層。其軟件層次結(jié)構(gòu)如下圖4.2所示

圖 4.2 嵌入式軟件層次結(jié)構(gòu)

這種軟件設(shè)計(jì)的好處是便于移植,當(dāng)更換某一芯片時(shí),只需要改變相應(yīng)芯片的驅(qū)動層,而不用修改封裝和應(yīng)用層,便可以使軟件繼續(xù)正常運(yùn)轉(zhuǎn)。

而如果更換單片機(jī)這一核心元件,也只需更改所有的驅(qū)動層便可以把軟件移植到其它單片機(jī)平臺,在編寫涉及到硬件的代碼時(shí),可以盡量使用宏定義或者編寫多層結(jié)構(gòu),使底層硬件操作的代碼達(dá)到最少,從而方便移植。

4.3 各個(gè)模塊實(shí)現(xiàn)原理

4.3.1 處理器模塊

首先在選擇CPU(Central Processing Unit,計(jì)算機(jī)中央處理器)之前,必須先分析完成這個(gè)作品所選的CPU必須具備的功能,如果CPU選的功能太過簡單就不能達(dá)到預(yù)期的效果,很多東西不能實(shí)現(xiàn),而如果選擇很先進(jìn)的CPU或者32位的高級單片機(jī),首先第一個(gè)是不能充分利用這個(gè)單片機(jī),第二是在成本上也會大幅上升,所以在選擇單片機(jī)時(shí)必須對所需要的功能進(jìn)行合理的分析。

分析情況:

  1. 在顯示方面使用的是12864液晶的帶字庫液晶,該液晶操作簡單,只需普通的IO端口操作便可以解決控制,所以它對單片機(jī)沒有特殊的要求。

  2. 在存儲方面,使用的是ATMEL公司的AT24LC64 EEPROM存儲器,該存儲器走的是IIC(ATMEL公司開發(fā)的兩線串行總線)總線模式,雖然可以用一般的單片機(jī)模擬IIC總線,但是為了提高效率則必須選擇具有IIC總線接口的單片機(jī),這個(gè)一般的51單片機(jī)已經(jīng)不能滿足,所以需考慮其它單片機(jī)。

  3. 時(shí)鐘模塊,用的是達(dá)拉斯的DS1302芯片,只需普通的端口操作就能完成。

  4. 打印機(jī)模塊,有下面的打印機(jī)實(shí)現(xiàn)原理(圖4.5)可知,我們必須選擇具有雙邊沿觸發(fā)的單片機(jī),有這個(gè)功能的單片機(jī)ATMEL的AVR系列的中高端單片機(jī)能滿足,比如Atmega64及以上的單片機(jī)都具有這一功能。

  5. 霍爾傳感器,霍爾傳感器測速必須具有兩個(gè)內(nèi)置外設(shè),一個(gè)是外部下降沿中斷,一個(gè)是內(nèi)部定時(shí)器。

  6. 內(nèi)存空間要求:在做用戶界面以及制作貪吃蛇等游戲時(shí)都必須開很大的緩存,所以必須具備一定的內(nèi)存容量,初步估計(jì)需要2K內(nèi)存以上。

由以上6點(diǎn)分析,這里我選擇了ATMEL公司的AVR系列單片機(jī)Atmega64,該款單片機(jī)價(jià)格便宜,功能強(qiáng)大,能滿足上面7點(diǎn)的全部要求。其資源如下:

  1. 工作于16M時(shí)性能高達(dá)16MIPS,速度快

  2. 64K flash程序代碼空間

  3. 4K 的內(nèi)部SRAM,足夠滿足UI界面以及其他的緩存

  4. 內(nèi)置IIC和SPI總線接口

  5. 8路外部中斷,有4路能實(shí)現(xiàn)雙邊沿中斷

  6. 3路定時(shí)急速器(2路8位,1路16位)

  7. 兩個(gè)串行USART口

  8. 53個(gè)普通IO端口(大部分復(fù)用)

由以上八點(diǎn)可以看出,該款單片機(jī)完全能夠滿足這個(gè)產(chǎn)品需要的功能,并且Atmega64為基于RSIC結(jié)構(gòu)的8位低功耗CMOS微處理器,降低功耗,是做行車記錄儀的首選單片機(jī)。

結(jié)論:最終選擇的單片機(jī)為ATMEL公司的Atmega64八位高性能單片機(jī)。

4.3.2 用戶UI界面原理

在這個(gè)嵌入式軟件中,最關(guān)鍵也是最富有挑戰(zhàn)的便是用戶界面,即菜單系統(tǒng),如果只是用簡單的switch,case語句,那在三層菜單的基礎(chǔ)上,那將會是一個(gè)非常龐大的代碼,并且可讀性差,維護(hù)十分困難,當(dāng)需要增加或則刪減菜單時(shí)都是一件非常痛苦的事情。

通過各種資料的搜索與整理,并且通過自己的改良,用了一種基于節(jié)點(diǎn)編號的方法實(shí)現(xiàn)了這個(gè)菜單系統(tǒng)。

首先、菜單是有層次的,并且每一層菜單都有不同的不同的條數(shù),比如第一層菜單有四條,第一層菜單第一條的子菜單都3條,而第一層菜單第二條的子菜單有2條。

加入以個(gè)十百來標(biāo)識菜單所在的層次,以每一位的大小來標(biāo)識當(dāng)前菜單再當(dāng)前層次的條數(shù),則可以推斷出每條菜單都有一個(gè)唯一的ID,我們稱之為節(jié)點(diǎn)。

基于節(jié)點(diǎn)編號的菜單系統(tǒng)的結(jié)構(gòu)如下圖4.3所示

圖4.3 基于節(jié)點(diǎn)編號的菜單系統(tǒng)結(jié)構(gòu)

結(jié)構(gòu)分析:菜單系統(tǒng)結(jié)構(gòu)圖如上圖4.3所示,可見很明顯,菜單為3層菜單結(jié)構(gòu),第一層總共有兩條菜單,其編號分別是1和2,在例如在第三層中節(jié)點(diǎn)編號為133的菜單,由該節(jié)點(diǎn)知,該條菜單再當(dāng)前層次的第三條,并且位于上層菜單的第三條,位于上上層菜單(即一級菜單)的第一條。其它菜單的結(jié)構(gòu)和這個(gè)一樣。

由以上分析可知,菜單的結(jié)構(gòu)很明顯的構(gòu)成了一個(gè)標(biāo)準(zhǔn)的二叉樹,并且其父子節(jié)點(diǎn)有很明顯的算術(shù)關(guān)系,其關(guān)系如下。

父節(jié)點(diǎn) = 當(dāng)前節(jié)點(diǎn)%10;(%操作為求余操作)

子節(jié)點(diǎn) = 當(dāng)前節(jié)點(diǎn)*10 + 1;

如果沒有父節(jié)點(diǎn)或者子節(jié)點(diǎn),則分別把這兩個(gè)節(jié)點(diǎn)設(shè)置成空節(jié)點(diǎn)。

有了這個(gè)方法,要實(shí)現(xiàn)一個(gè)菜單系統(tǒng)便是一個(gè)很簡單的事情了,這套菜單系統(tǒng)還能實(shí)現(xiàn)翻頁等復(fù)雜操作,并且增加或刪除節(jié)點(diǎn)十分方便I,只需修改相應(yīng)節(jié)點(diǎn)的編號就可以實(shí)現(xiàn)。

菜單與實(shí)時(shí)顯示界面的分離:在這套菜單系統(tǒng)中,用戶可以通過按返回鍵激活菜單或者通過返回鍵返回實(shí)時(shí)界面,其實(shí)現(xiàn)原理也非常簡單,只需設(shè)置一個(gè)標(biāo)志位來標(biāo)識是否激活菜單,從而達(dá)到實(shí)時(shí)界面與菜單的分離。

4.3.3 測速實(shí)現(xiàn)原理

測速的核心部件是霍爾元件,利用霍爾元件,再進(jìn)行一些改良,如上硬件設(shè)計(jì)中提到的圖3.4所示。從而使傳感器在周期性的磁場作用下產(chǎn)生一個(gè)固定周期的方波。

那么,如何利用輸出的一個(gè)方波來實(shí)現(xiàn)測速的目的呢?這里利用了單片機(jī)的兩個(gè)內(nèi)置外設(shè):

  • 外部IO中斷

  • 8位定時(shí)器T2

當(dāng)出現(xiàn)方波的下降沿時(shí),單片機(jī)可以利用外部中斷采集到這個(gè)下降沿,并跳轉(zhuǎn)到中斷服務(wù)入口,在中斷服務(wù)中可以通過打開定時(shí)器來實(shí)現(xiàn)記錄每個(gè)方波或者一定方波個(gè)數(shù)n的時(shí)間t。

這里假設(shè)輪胎的圓周長是len厘米。則由以上數(shù)據(jù)可知如下公式。

速度 V = n*len/t (cm/s),其中l(wèi)en的單位為厘米,t的單位為秒。

4.3.4 微型打印機(jī)原理

在這里使用的打印機(jī)是EPSON公司的M-150II微型打點(diǎn)打印機(jī),其總共包含4個(gè)打印針,每個(gè)打印針分別可以打印24個(gè)點(diǎn),其在打印紙上的分布點(diǎn)如下圖4.4所示

圖4.4 打印機(jī)點(diǎn)在打印紙上的分布

由以上硬件設(shè)計(jì)中的圖3.7所示知,控制打印機(jī)運(yùn)轉(zhuǎn)的主要有4種信號:

  • 復(fù)位控制信號Reset Decetor

  • 時(shí)序控制信號 Timing Decteor

  • 電機(jī)運(yùn)轉(zhuǎn)控制信號 Motor

  • 四個(gè)打印針控制信號 Print Solenoid

打印機(jī)點(diǎn)在打印紙上的分布如上圖4.4所示,當(dāng)打印機(jī)從左往右運(yùn)動時(shí),分別產(chǎn)生96個(gè)Timing Dector信號,單片機(jī)以這個(gè)信號為基準(zhǔn)進(jìn)行打點(diǎn)控制,每一個(gè)信號分別控制一個(gè)點(diǎn),總共96個(gè)信號對應(yīng)96個(gè)點(diǎn),打打印完一行后,打印機(jī)需通過點(diǎn)擊回到起始原點(diǎn),當(dāng)回到原點(diǎn)時(shí),打印機(jī)通過Reset Decotor信號輸出低電平開始新的一行的打印。

而打印機(jī)在打印的時(shí)候,每個(gè)打印針電路上的瞬間電流都是很大的,所以必須要通過驅(qū)動電路實(shí)現(xiàn),其驅(qū)動電路已經(jīng)在上面硬件電路設(shè)計(jì)中的打印機(jī)模塊講明了。

Timing Dector信號如下圖4.5所示

圖4.5 打印機(jī)Timing Dector信號

如上圖4.5所示,打印機(jī)輸出的為正弦波信號,通過驅(qū)動電路把信號轉(zhuǎn)換成方波,此時(shí)的波形頻率為需要的波形頻率的1/2,這里可以通過兩種方法進(jìn)行改良:一種是硬件進(jìn)行分頻,另一種是利用單片機(jī)的雙邊沿促發(fā)功能。

第一種方法比較麻煩,需要拖入較大硬件,而第二種方法只要所選的單片機(jī)具有雙邊沿促發(fā)功能便可以很好的解決問題。

而這里選用的Atmega64總共有8個(gè)外部中斷,分別是INT0~INT7,慶幸的是,其中有4個(gè)具有雙邊沿促發(fā)功能,分別是INT4~INT7,這里選用的是INT6。

5. 軟硬件系統(tǒng)調(diào)試

5.1 硬件調(diào)試

在完成硬件PCB的加工之后,首先第一步便是進(jìn)行硬件焊接以及調(diào)試,在調(diào)試過程中碰到過許多問題,并且經(jīng)過分析和實(shí)踐意義解決,接下去分析在硬件調(diào)試過程中碰到的各類問題與解決方法。

遇到的問題:

  1. 主控板電源,電流不夠,當(dāng)初設(shè)計(jì)的時(shí)候主要是為了降壓在主控板的電源之后加了一個(gè)二極管來限制電壓,結(jié)果是焊接了一個(gè)IN4148的小電流二極管,導(dǎo)致液晶很暗,并且不能調(diào)處液晶對比度,電源模塊的電路圖如圖5.1所示

圖5.1 主控板電源模塊

解決方法是,使用大電流的二極管,SS26,很好的解決了這一問題。

  1. 霍爾傳感器,感應(yīng)靈敏度太低,在設(shè)計(jì)電路的時(shí)候以為霍爾元件在周期性磁場的作用下能直接輸出單片機(jī)能接收的方波,但是實(shí)際測試并非如此,單用霍爾元件直接接單片機(jī),靈敏度很低,要固定也不方便,原設(shè)計(jì)圖霍爾傳感器接口如圖5.2所示

圖5.2 霍爾元件接口

解決方法是,使用運(yùn)算放大器對信號進(jìn)行放大,并使用滑動變阻器來調(diào)節(jié)靈敏度,使之變成一個(gè)靈敏度可調(diào)的并輸出方波的可調(diào)霍爾傳感器,改良的電路如上硬件設(shè)計(jì)中的圖3.4所示。

  1. 打印機(jī)子控板,布線太細(xì),打印機(jī)的打印針在打印的瞬間,以及打印機(jī)的點(diǎn)擊在運(yùn)轉(zhuǎn)的時(shí)候都是需要提供大電流的,能達(dá)到幾百mA,瞬間甚至幾個(gè)安培,而在布線的時(shí)候,打印針的地方只用了2.54mm的細(xì)線,在實(shí)際使用的時(shí)候只能打印16x16的大字,當(dāng)打印壓縮的字體時(shí)便變成很模糊的字,主要原因是打印針電流小,力度不夠。

解決方法:手動焊接萬用板來達(dá)到打印的效果,在使用萬用板的時(shí)候也出現(xiàn)部分不能打印的結(jié)果,結(jié)果只是三極管壞掉,也得到了很好的解決。

5.2 軟件調(diào)試

在上面的硬件調(diào)試完畢之后,其實(shí)已經(jīng)完成了一些基本的驅(qū)動,打印機(jī)驅(qū)動,液晶驅(qū)動,霍爾元件驅(qū)動都已經(jīng)完成,在軟件上的主要難題主要有:

  1. DS18B20時(shí)序---作為單總線溫度傳感器,DS18B20是達(dá)拉斯的單總線結(jié)構(gòu)數(shù)字溫度傳感器,由于其是單總線結(jié)構(gòu),所以在時(shí)序的控制上要求非常嚴(yán)格,在做這個(gè)驅(qū)動時(shí)碰到過許多問題,主要是時(shí)序很難控制,最后通過JTAG硬件仿真調(diào)試,解決了這一難題。

  2. 用戶UI界面,以前從來沒坐過多級的菜單,并且菜單層次多,條數(shù)多,如果用簡單的switch,case語句來實(shí)現(xiàn)的話,那將會是一個(gè)非常龐大的代碼,不僅編寫困難,而且不易維護(hù),增減麻煩。所以為了做好這一塊,在網(wǎng)上搜索了大量的資料,最后使用的是基于節(jié)點(diǎn)編號的方法,并進(jìn)行了一些改良,這種方法的結(jié)構(gòu)圖如上圖軟件設(shè)計(jì)中的圖4.3所示

6. 欲求目標(biāo)

6.1 要求達(dá)到的目標(biāo)

要實(shí)現(xiàn)的功能主要如下:

  1. 顯示實(shí)時(shí)速度和平均速度

  2. 顯示總里程和單次行車?yán)锍?/p>

  3. 顯示時(shí)間和溫度

  4. 節(jié)電保護(hù)

  5. 行車信息存儲

  6. 用戶菜單UI界面

  7. 時(shí)間修改

  8. 輪徑設(shè)置,里程設(shè)置,等一些參數(shù)的設(shè)置

  9. 打印行車記錄統(tǒng)計(jì)信息

  10. 貪吃蛇小游戲

6.2 產(chǎn)品優(yōu)缺點(diǎn)

優(yōu)點(diǎn):該產(chǎn)品的最大優(yōu)點(diǎn)是顯示實(shí)時(shí)速度和里程精確,誤差小,并且可調(diào)節(jié)度大,能適應(yīng)輪胎圓周10—250cm的自行車,使用用戶UI界面,并且顯示的全是淺顯易懂的中文,顯示更加人性化和方便,傳感器靈敏度高,并且還具有打印功能,便于用戶管理行車信息。

缺點(diǎn):本產(chǎn)品的最大缺點(diǎn)是成本高,打印機(jī)以及液晶都是比較昂貴的,這點(diǎn)需要改進(jìn)。另一個(gè)缺點(diǎn)便是沒有包裝,只是達(dá)到了實(shí)驗(yàn)級的產(chǎn)品,沒有達(dá)到產(chǎn)品級別,這點(diǎn)在量產(chǎn)產(chǎn)品之后可以進(jìn)行改良。

附錄一

主控板系統(tǒng)原理圖:

附錄二

驅(qū)動板原理圖:

霍爾傳感器原理圖:



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉