基于AVR單片機(jī)的自行車行車記錄儀,軟硬件協(xié)同
圖4.4 打印機(jī)點(diǎn)在打印紙上的分布
本文引用地址:http://cafeforensic.com/article/201609/303916.htm由以上硬件設(shè)計(jì)中的圖3.7所示知,控制打印機(jī)運(yùn)轉(zhuǎn)的主要有4種信號(hào):
復(fù)位控制信號(hào)Reset Decetor
時(shí)序控制信號(hào) Timing Decteor
電機(jī)運(yùn)轉(zhuǎn)控制信號(hào) Motor
四個(gè)打印針控制信號(hào) Print Solenoid
打印機(jī)點(diǎn)在打印紙上的分布如上圖4.4所示,當(dāng)打印機(jī)從左往右運(yùn)動(dòng)時(shí),分別產(chǎn)生96個(gè)Timing Dector信號(hào),單片機(jī)以這個(gè)信號(hào)為基準(zhǔn)進(jìn)行打點(diǎn)控制,每一個(gè)信號(hào)分別控制一個(gè)點(diǎn),總共96個(gè)信號(hào)對(duì)應(yīng)96個(gè)點(diǎn),打打印完一行后,打印機(jī)需通過(guò)點(diǎn)擊回到起始原點(diǎn),當(dāng)回到原點(diǎn)時(shí),打印機(jī)通過(guò)Reset Decotor信號(hào)輸出低電平開始新的一行的打印。
而打印機(jī)在打印的時(shí)候,每個(gè)打印針電路上的瞬間電流都是很大的,所以必須要通過(guò)驅(qū)動(dòng)電路實(shí)現(xiàn),其驅(qū)動(dòng)電路已經(jīng)在上面硬件電路設(shè)計(jì)中的打印機(jī)模塊講明了。
Timing Dector信號(hào)如下圖4.5所示
圖4.5 打印機(jī)Timing Dector信號(hào)
如上圖4.5所示,打印機(jī)輸出的為正弦波信號(hào),通過(guò)驅(qū)動(dòng)電路把信號(hào)轉(zhuǎn)換成方波,此時(shí)的波形頻率為需要的波形頻率的1/2,這里可以通過(guò)兩種方法進(jìn)行改良:一種是硬件進(jìn)行分頻,另一種是利用單片機(jī)的雙邊沿促發(fā)功能。
第一種方法比較麻煩,需要拖入較大硬件,而第二種方法只要所選的單片機(jī)具有雙邊沿促發(fā)功能便可以很好的解決問(wèn)題。
而這里選用的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)試過(guò)程中碰到過(guò)許多問(wèn)題,并且經(jīng)過(guò)分析和實(shí)踐意義解決,接下去分析在硬件調(diào)試過(guò)程中碰到的各類問(wèn)題與解決方法。
遇到的問(wèn)題:
主控板電源,電流不夠,當(dāng)初設(shè)計(jì)的時(shí)候主要是為了降壓在主控板的電源之后加了一個(gè)二極管來(lái)限制電壓,結(jié)果是焊接了一個(gè)IN4148的小電流二極管,導(dǎo)致液晶很暗,并且不能調(diào)處液晶對(duì)比度,電源模塊的電路圖如圖5.1所示
圖5.1 主控板電源模塊
解決方法是,使用大電流的二極管,SS26,很好的解決了這一問(wèn)題。
霍爾傳感器,感應(yīng)靈敏度太低,在設(shè)計(jì)電路的時(shí)候以為霍爾元件在周期性磁場(chǎng)的作用下能直接輸出單片機(jī)能接收的方波,但是實(shí)際測(cè)試并非如此,單用霍爾元件直接接單片機(jī),靈敏度很低,要固定也不方便,原設(shè)計(jì)圖霍爾傳感器接口如圖5.2所示
圖5.2 霍爾元件接口
解決方法是,使用運(yùn)算放大器對(duì)信號(hào)進(jìn)行放大,并使用滑動(dòng)變阻器來(lái)調(diào)節(jié)靈敏度,使之變成一個(gè)靈敏度可調(diào)的并輸出方波的可調(diào)霍爾傳感器,改良的電路如上硬件設(shè)計(jì)中的圖3.4所示。
打印機(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òng)焊接萬(wàn)用板來(lái)達(dá)到打印的效果,在使用萬(wàn)用板的時(shí)候也出現(xiàn)部分不能打印的結(jié)果,結(jié)果只是三極管壞掉,也得到了很好的解決。
5.2 軟件調(diào)試
在上面的硬件調(diào)試完畢之后,其實(shí)已經(jīng)完成了一些基本的驅(qū)動(dòng),打印機(jī)驅(qū)動(dòng),液晶驅(qū)動(dòng),霍爾元件驅(qū)動(dòng)都已經(jīng)完成,在軟件上的主要難題主要有:
DS18B20時(shí)序---作為單總線溫度傳感器,DS18B20是達(dá)拉斯的單總線結(jié)構(gòu)數(shù)字溫度傳感器,由于其是單總線結(jié)構(gòu),所以在時(shí)序的控制上要求非常嚴(yán)格,在做這個(gè)驅(qū)動(dòng)時(shí)碰到過(guò)許多問(wèn)題,主要是時(shí)序很難控制,最后通過(guò)JTAG硬件仿真調(diào)試,解決了這一難題。
用戶UI界面,以前從來(lái)沒坐過(guò)多級(jí)的菜單,并且菜單層次多,條數(shù)多,如果用簡(jiǎn)單的switch,case語(yǔ)句來(lái)實(shí)現(xiàn)的話,那將會(huì)是一個(gè)非常龐大的代碼,不僅編寫困難,而且不易維護(hù),增減麻煩。所以為了做好這一塊,在網(wǎng)上搜索了大量的資料,最后使用的是基于節(jié)點(diǎn)編號(hào)的方法,并進(jìn)行了一些改良,這種方法的結(jié)構(gòu)圖如上圖軟件設(shè)計(jì)中的圖4.3所示
6. 欲求目標(biāo)
6.1 要求達(dá)到的目標(biāo)
要實(shí)現(xiàn)的功能主要如下:
顯示實(shí)時(shí)速度和平均速度
顯示總里程和單次行車?yán)锍?/p>
顯示時(shí)間和溫度
節(jié)電保護(hù)
行車信息存儲(chǔ)
用戶菜單UI界面
時(shí)間修改
輪徑設(shè)置,里程設(shè)置,等一些參數(shù)的設(shè)置
打印行車記錄統(tǒng)計(jì)信息
貪吃蛇小游戲
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)級(jí)的產(chǎn)品,沒有達(dá)到產(chǎn)品級(jí)別,這點(diǎn)在量產(chǎn)產(chǎn)品之后可以進(jìn)行改良。
評(píng)論