版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄1引言 12概述 22.1數(shù)字尋北儀系統(tǒng)概況 22.2本設(shè)計方案思路 22.3研發(fā)方向和技術(shù)關(guān)鍵 22.4主要技術(shù)指標(biāo) 33方案選擇與論證 43.1處理器選擇 43.2磁電傳感器模塊 53.3ADC模塊 53.4步進(jìn)電機(jī)模塊 63.5步進(jìn)電機(jī)驅(qū)動模塊 63.6溫度傳感器與時鐘芯片模塊 63.7顯示模塊 63.8供電模塊 73.9最終方案和系統(tǒng)原理框圖 74硬件設(shè)計 84.1微控制器模塊的設(shè)計 84.1.1概述 84.1.2ATmega16單片機(jī)簡介 84.2磁阻傳感器模塊的設(shè)計 94.2.1磁阻傳感器HMC1052 94.2.2HMC1052的放大電路 104.2.3HMC1052的設(shè)置/復(fù)位電路 104.3ADC模塊的設(shè)計 114.3.1ATmega16內(nèi)部AD簡介 114.3.2ADC外圍電路設(shè)計 114.4電機(jī)與驅(qū)動模塊 124.4.1步進(jìn)電機(jī) 124.4.2步進(jìn)電機(jī)細(xì)分驅(qū)動器TA8435 134.5溫度傳感模塊 154.5.1溫度傳感器DS18B20簡介 154.5.2DS18B20工作原理 154.6時鐘模塊 174.6.1時鐘接口概述 174.6.2DS1302簡介 174.7鍵盤接口電路設(shè)計 194.8顯示模塊 194.8.1液晶顯示器簡介 194.8.2液晶顯示器使用說明 204.9電源模塊 224.10硬件電路的布線與焊接 225軟件設(shè)計 235.1主程序流程圖 235.2尋北子程序流程圖 245.3日歷程序流程圖 255.4溫度測量程序流程圖 265.5液晶顯示流程圖 276制作與調(diào)試 286.1硬件電路的布線與焊接 286.1.1總體特點 286.1.2電路劃分 286.1.3焊接 286.2調(diào)試 287結(jié)論 29參考文獻(xiàn) 31附錄 321引言近年來,尋北儀在軍事和民用方面得到了廣泛的應(yīng)用,引起了業(yè)內(nèi)人士的極大關(guān)注。尋北儀能在靜止?fàn)顟B(tài)下快速地測量出載體縱軸與地理真北的夾角,即初始方位角,它不僅廣泛應(yīng)用于火炮、坦克、汽車等載體中,而且還能為隧道、礦山等地下作業(yè)提供方位基準(zhǔn)。目前,尋北技術(shù)可以分為兩類:慣性尋北技術(shù)和磁電尋北技術(shù)。慣性尋北常用陀羅儀作為傳感器,而磁電尋北技術(shù)主要使用磁電式傳感器。慣性尋北技術(shù)是慣性技術(shù)領(lǐng)域的重要組成部分,是現(xiàn)代信息化戰(zhàn)爭中確保武器系統(tǒng)快速、機(jī)動、精確打擊的重要保障技術(shù)之一。因此,國際上眾多發(fā)達(dá)國家均在發(fā)展高性能戰(zhàn)略、戰(zhàn)術(shù)武器的同時,也投入大量人力、物力研制開發(fā)高精度、快速尋北系統(tǒng)。無論氣浮、液浮、光纖、還是磁懸浮陀螺尋北儀,都可全天候可靠地工作,不受外部環(huán)境如地球磁場、地形、氣候的影響;都可在沒有任何外部方位信息情況下實現(xiàn)自主尋北功能,測出當(dāng)?shù)氐乩肀毕?。磁電尋北技術(shù)是依靠地磁場的分布來確定方位的,相比之下磁電式尋北儀精度不如慣性尋北儀高,但磁電式傳感器具有體積小、功耗低、易于安裝,且溫度特性好、實時性和抗干擾能力強(qiáng)、誤差不隨時間積累等特點,因此在車輛航位推算系統(tǒng)中采用磁電式傳感器具有較高的性價比。慣性尋北儀雖然尋北精度高,但價格昂貴、體積大、對環(huán)境要求高(如要求載體靜止、無振動)、且誤差隨時間積累,因此不適合于要求低成本的車輛導(dǎo)航。進(jìn)入2l世紀(jì)后,尋北儀在軍事上的需求越來越迫切,在隧道施工、礦山開采、大地測量、資源勘測等民用工程中也越來越顯示出廣闊的應(yīng)用前景。而隨著光學(xué)等固體陀螺的問世和技術(shù)上的日益完善,快速反應(yīng),高精度要求,惡劣環(huán)境中的可靠性工作的新型尋北儀已經(jīng)相繼問世,尤其與GPS等高技術(shù)相融合的尋北儀將會進(jìn)一步地改善尋北儀的性能。本次設(shè)計的數(shù)字尋北儀是基于磁阻傳感器HMC1052的磁電式尋北儀,具有自動尋北功能,通過步進(jìn)電機(jī)旋轉(zhuǎn)來指示磁北方向,并能夠顯示步進(jìn)電機(jī)轉(zhuǎn)過的角度,尋北時間短,尋北精度較高(<1°),體積小等特點,因此具有較高的性價比。2概述2.1數(shù)字尋北儀系統(tǒng)概況數(shù)字尋北儀是一種重要的導(dǎo)航工具,已廣泛應(yīng)用于航空、航海、機(jī)器人和車輛導(dǎo)航等領(lǐng)域。一般在飛機(jī)和航海導(dǎo)航系統(tǒng)中使用的慣性導(dǎo)航系統(tǒng),由于價格昂貴、結(jié)構(gòu)復(fù)雜、導(dǎo)航誤差隨時間累計等原因而不適合車載使用;傳統(tǒng)定位裝置如羅盤,雖然價格便宜,但不能工作于像行駛的汽車這種不穩(wěn)定的環(huán)境中。另外,傳統(tǒng)羅盤不能夠電子輸出,其信號不能集成到汽車的控制系統(tǒng)中,給實現(xiàn)基于精確導(dǎo)航的智能交通帶來了不便。當(dāng)今,GPS(GlobePositioningSystem)全球定位系統(tǒng)已日趨成熟,作為一種全新的導(dǎo)航方式在軍用與民用領(lǐng)域都發(fā)揮著巨大作用。但是GPS也有其局限性,如存在定位死區(qū),有累計誤差,對靜止物體無法直接定向等。同時相對于GPS,具有還具有結(jié)構(gòu)簡單,成本低,可靠性高等優(yōu)點。所以即便在GPS越來越普與的今天,數(shù)字尋北儀仍然在諸多領(lǐng)域有著廣泛的應(yīng)用。2.2本設(shè)計方案思路本系統(tǒng)利用磁阻傳感器指向磁北時其阻值為極值的特性設(shè)計一數(shù)字尋北儀器,具體為將磁阻傳感器固定在步進(jìn)電機(jī)轉(zhuǎn)盤上,一邊旋轉(zhuǎn)電機(jī)一邊測量阻值,直到阻值最大為止,傳感器指向磁北。磁阻傳感器是測量地磁場的強(qiáng)度,并將磁場信號轉(zhuǎn)換成電信號,然后通過ADC將模擬信號轉(zhuǎn)換成數(shù)字信號,再將數(shù)據(jù)傳到單片機(jī)進(jìn)行運算處理,從而控制步進(jìn)電機(jī)的轉(zhuǎn)動。液晶顯示器用來顯示步進(jìn)電機(jī)旋轉(zhuǎn)的角度。為了使本設(shè)計更加完美,系統(tǒng)又?jǐn)U展了兩個功能:顯示日期和溫度。2.3研發(fā)方向和技術(shù)關(guān)鍵磁阻傳感器信號前端放大處理。ADC的信號采集。逼近算法的設(shè)計。(4)主控模塊與電機(jī)控制模塊的隔離,避免電機(jī)運轉(zhuǎn)對主控制電路產(chǎn)生干擾而造成誤動作。(5)步進(jìn)電機(jī)細(xì)分驅(qū)動,確保能夠提供電機(jī)工作所需的電流,同時實現(xiàn)細(xì)分控制。(6)磁阻傳感器抗干擾設(shè)計。地磁場強(qiáng)度很微弱,約為0.5~0. 6gauss,因此系統(tǒng)很容易受到外界環(huán)境干擾,步進(jìn)電機(jī)的存在對系統(tǒng)的干擾很大,所以,如何做好步進(jìn)電機(jī)的磁場屏蔽也成為該系統(tǒng)的一大難題。2.4主要技術(shù)指標(biāo)(1)+5V供電,電流小于1A。(2)角度測量精度為1°。(3)響應(yīng)時間<2s。(4)測量和顯示步進(jìn)電機(jī)旋轉(zhuǎn)時的角度。(5)顯示時間,日期,星期。(6)具有校時功能。(7)顯示溫度。(8)能夠指示設(shè)置的任意方位。(9)能夠測量方位角。
3方案選擇與論證數(shù)字尋北儀系統(tǒng)結(jié)構(gòu)的組成框圖如下圖3-1。該系統(tǒng)由處理器模塊、A/D采樣模塊、磁阻傳感器模塊、電機(jī)與驅(qū)動模塊、鍵盤、溫度傳感器、顯示模塊與電源模塊組成。為更好地實現(xiàn)各模塊的功能,我們分別對各模塊的設(shè)計方案并分別進(jìn)行了論證。電機(jī)及驅(qū)動A/D采樣磁電傳感器電機(jī)及驅(qū)動A/D采樣磁電傳感器時鐘芯片溫度傳感器時鐘芯片溫度傳感器微處理器鍵盤顯示電源鍵盤顯示電源圖3-1數(shù)字尋北儀系統(tǒng)總框圖3.1處理器選擇方案一:采用可編程邏輯器件CPLD作為控制器。CPLD可以實現(xiàn)各種復(fù)雜的邏輯功能、規(guī)模大、密度高、體積小、穩(wěn)定性高、IO資源豐富、易于進(jìn)行功能擴(kuò)展。采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)??刂葡到y(tǒng)的控制核心。方案二:采用Atmel公司的ATmaga16單片機(jī)作為主控制器。ATmaga16是一款高性能、低功耗的8位AVR微處理器,片內(nèi)含16k空間的可反復(fù)擦些10,000次的Flash只讀存儲器,具有1Kbytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),32個IO口,兩個具有獨立預(yù)分頻器和比較器功能的8位定時器/計數(shù)器,一個具有預(yù)分頻器、比較功能和捕捉功能的16位定時器/計數(shù)器,四通道PWM,內(nèi)置8路10位ADC。maga系列的單片機(jī)更容易編寫PWM且maga系列的單片機(jī)可以在線編程、調(diào)試,方便地實現(xiàn)程序的下載與整機(jī)的調(diào)試。本系統(tǒng)不需要復(fù)雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是非常高,ATmega16的I/O口、定時器/計數(shù)、中斷邏輯以與ADC等資源足以滿足設(shè)計要求,且單片機(jī)價格較CPLD要低得多,故最終確定選擇ATmega16作為系統(tǒng)的主控制器。3.2磁電傳感器模塊方案一:采用磁通門傳感器。磁通門傳感器分辨率可達(dá)幾十個微高斯,提供了一種低成本的磁場探測方法,但缺點是體積偏大、易碎、響應(yīng)速度較慢。方案二:采用霍爾傳感器?;魻柶骷杀镜土?、體積較小、測量磁場范圍寬,但是精度,線性度較差,響應(yīng)時間較慢,溫度漂移較大。方案三:采用磁阻傳感器。磁電阻傳感器具有體積小、靈敏度高、可靠性高、可作為集成電路生產(chǎn)、易在電路板上安裝等優(yōu)點。此外磁阻傳感器功耗極低,因此非常適合電子指南針、數(shù)字尋北儀等磁定位系統(tǒng)。綜合以上幾點,本設(shè)計最終選定方案三,選用磁阻傳感器HMC1052作為系統(tǒng)的磁電傳感器。3.3ADC模塊方案一:采用專用的ADC芯片。常見的ADC有ADC0809,TLC1549等。專用ADC芯片具有轉(zhuǎn)換精度高,轉(zhuǎn)換時間快,非線性誤差小等優(yōu)點;缺點是功耗較大,價格貴,且占用單片機(jī)口線多,從而也造成布線困難。方案二:使用ATmega16內(nèi)部ADC。ATmega16有一個10位的逐次逼近型ADC。非線性誤差0.5LSB,絕對精度±2LSB,轉(zhuǎn)換時間65-260us,最高采樣率為15KSPS。ADC集成于單片機(jī)內(nèi)部,因此不占用單片機(jī)口線且價格便宜。本系統(tǒng)要求角度測量精度為1°,我們知道,地球表面某點磁場強(qiáng)度隨水平角度的變化而變化,且構(gòu)成了正弦波形,即地磁場在某點從磁北到磁南,場強(qiáng)由大到到小,遵循余弦變化趨勢。并且可知波形的變化率在峰值時最小,因此要保證測量精度<=1°,則要求ADC的最小分辨率<=A(cos0°-cos1°),(A為磁阻傳感器輸出信號經(jīng)放大后的振幅),假如A=1V,則要求ADC的最小分辨率為3.84mV,再考慮到A/D轉(zhuǎn)換器誤差和線性度誤差,ADC的最小分辨率應(yīng)為LSB/2=1.92mV。 ATmega16內(nèi)部ADC的最小分辨率為2.56V/1024=2.5mV>1.92mV,因此實時采樣并不能滿足系統(tǒng)的要求,但可以通過過采樣算法來彌補(bǔ)ADC分辨率的不足,即犧牲采樣率來換取ADC的位數(shù)。假如將ADC的位數(shù)擴(kuò)展到11位,此時ADC的LSB變?yōu)?.56V/2048=1.25mV<1.92mV,但此時ADC的最大采樣率減為15KSPS/4=3.75KSPS,幸好本系統(tǒng)對ADC的采樣率不高,因此,方案二完全可行。3.4步進(jìn)電機(jī)模塊步進(jìn)電機(jī)的選擇需同時滿足步進(jìn)角與轉(zhuǎn)速的要求。本設(shè)計要求系統(tǒng)響應(yīng)時間<2s,即要求電機(jī)在2s內(nèi)至少轉(zhuǎn)過180°,轉(zhuǎn)速>=0.5r/2s=0.25r/s=15r/min,即要求步進(jìn)電機(jī)的轉(zhuǎn)速>15r/min。此外,系統(tǒng)要求角度測量精度為1°,因此要求步進(jìn)電機(jī)的步進(jìn)角<=0.5°。但市場上步進(jìn)角小于0.5°的步進(jìn)機(jī)很不常見,而且價格昂貴,體積較大??紤]到以上兩方面的因素,最終選用一款EPSON公司生產(chǎn)的步進(jìn)機(jī),8歐姆,最大轉(zhuǎn)速1200r/min,步進(jìn)角1.8°,然后經(jīng)過細(xì)分驅(qū)動器將步進(jìn)角1/4細(xì)分為0.45°。3.5步進(jìn)電機(jī)驅(qū)動模塊方案一:采用由達(dá)林頓管組成的H型PWM電路。PWM電路由四個大功率晶體管組成H橋電路構(gòu)成,四個晶體管分為兩組,交替導(dǎo)通和截止,用單片機(jī)控制達(dá)林頓管使之工作在開關(guān)狀態(tài),調(diào)整輸入控制脈沖的占空比,便可調(diào)整電機(jī)轉(zhuǎn)速。這種電路由于管子只工作在飽和和截止?fàn)顟B(tài),效率非常高。H型電路使實現(xiàn)轉(zhuǎn)速和方向的控制簡單化,且電子開關(guān)的速度很快,穩(wěn)定性也很強(qiáng)。缺點是不具有步進(jìn)細(xì)分功能。方案二:采用專用集成芯片TA8435和少量的外圍元件組成電機(jī)的驅(qū)動電路。TA8435是一個細(xì)分二相步進(jìn)電機(jī)驅(qū)動專用芯片,該芯片具有輸出電流大、控制簡單、占用單片機(jī)口線少、價格便宜等優(yōu)點,同時還具有整步、半步、1/4細(xì)分、1/8細(xì)分運行方式可供選擇。因為本設(shè)計要求將步進(jìn)角細(xì)分為小于0.5°,故選擇方案二。3.6溫度傳感器與時鐘芯片模塊作為拓展功能,本系統(tǒng)增加了顯示年、月、日,時、分、秒,星期以與溫度等功能,并具有校時的功能。本設(shè)計使用較常用的溫度傳感器DS18B20來測量外界溫度,使用時鐘芯片DS1302來簡化系統(tǒng)軟件。3.7顯示模塊方案一:使用多個數(shù)碼管顯示。LED數(shù)碼管是利用二極管發(fā)光顯示數(shù)字和字母,具有亮度大、接口設(shè)計比較容易,價格相對較便宜等優(yōu)點。但是由于它工作電流較大、不能顯示字符,顯示的信息量有限。方案二:采用液晶顯示。液晶特別是具有字符顯示功能的液晶顯示器,來實現(xiàn)顯示功能,不僅可以實現(xiàn)基本的顯示信息,而且可以顯示豐富的符號指示信息,信息量豐富且直觀易懂。而且液晶顯示有功耗低,體積小。綜上考慮,本設(shè)計采用方案二,使用LCD1602來顯示。3.8供電模塊方案一:采用兩個電源供電。將電動機(jī)驅(qū)動電源與單片機(jī)以與其周邊電路電源完全隔離。這樣做可以將電動機(jī)驅(qū)動所造成的干擾徹底消除,提高了系統(tǒng)的穩(wěn)定性。方案二:采用單一電源供電。通過光耦將電機(jī)驅(qū)動電路與單片機(jī)與周邊電路隔離;但假如使用該方案,則用到光耦較多,電路相對復(fù)雜,而且成本較高??紤]以上兩方面因素,本設(shè)計選用方案一。3.9最終方案和系統(tǒng)原理框圖經(jīng)過方案論證的過程之后,我們選定了僅采用單片機(jī)作為核心部件的方案,其系統(tǒng)總方框圖如圖所示。液晶顯示液晶顯示內(nèi)部A/D內(nèi)部A/D單片機(jī)(Atmage16)磁阻傳感器鍵盤磁阻傳感器鍵盤溫度傳感器時鐘芯片溫度傳感器時鐘芯片步進(jìn)電機(jī)細(xì)分驅(qū)動器電源步進(jìn)電機(jī)細(xì)分驅(qū)動器電源圖3-2系統(tǒng)原理框圖選用ATmega16作為主控制器。選用磁阻傳感器HMC1052測量磁場強(qiáng)弱。采用ATmega16內(nèi)部ADC采集磁電信號。使用EPSON步進(jìn)電機(jī)指示磁北方向。采用專用芯片TA8435驅(qū)動步進(jìn)電機(jī),并實現(xiàn)步進(jìn)角細(xì)分。采用雙電源為系統(tǒng)供電,使用LM7805作為穩(wěn)壓芯片。使用LCD1602顯示時間、溫度以與電機(jī)轉(zhuǎn)過角度。(8)使用DS18B20測量溫度。(9)用時鐘芯片DS1302來設(shè)計萬年歷。
4硬件設(shè)計4.1微控制器模塊的設(shè)計4.1.1概述單片機(jī)是本次畢業(yè)設(shè)計中控制模塊的核心芯片,可以說單片機(jī)系統(tǒng)就是整個系統(tǒng)的控制核心。而本次畢業(yè)設(shè)計所采用的單片機(jī)是AVR單片機(jī)系列中的ATmega16。4.1.2ATmega16單片機(jī)簡介ATmega16是基于增強(qiáng)的AVRRISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集以與單時鐘周期指令執(zhí)行時間,ATmega16的數(shù)據(jù)吞吐率高達(dá)1MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。AVR內(nèi)核具有豐富的指令集和32個通用工作寄存器。所有的寄存器都直接與算邏單元(ALU)相連接,使得一條指令可以在一個時鐘周期內(nèi)同時訪問兩個獨立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吞吐率。ATmega16有如下特點:16K字節(jié)的系統(tǒng)內(nèi)可編程Flash,512字節(jié)EEPROM,1K字節(jié)SRAM,32個通用I/O口線,32個通用工作寄存器,用于邊界掃描的JTAG接口,支持片內(nèi)調(diào)試與編程,三個具有比較模式的靈活的定時器/計數(shù)器,片內(nèi)/外中斷,可編程串行USART,有起始條件檢測器的通用串行接口,8路10位具有可選差分輸入級可編程增益的ADC,具有片內(nèi)振蕩器的可編程看門狗定時器,一個SPI串行端口,以與六個可以通過軟件進(jìn)行選擇的省電模式。工作于空閑模式時CPU停止工作,而USART、兩線接口、A/D轉(zhuǎn)換器、SRAM、T/C、SPI端口以與中斷系統(tǒng)繼續(xù)工作;掉電模式時晶體振蕩器停止振蕩,所有功能除了中斷和硬件復(fù)位之外都停止工作;在省電模式下,異步定時器繼續(xù)運行,允許用戶保持一個時間基準(zhǔn),而其余功能模塊處于休眠狀態(tài);ADC噪聲抑制模式時終止CPU和除了異步定時器與ADC以外所有I/O模塊的工作,以降低ADC轉(zhuǎn)換時的開關(guān)噪聲;Standby模式下只有晶體或諧振振蕩器運行,其余功能模塊處于休眠狀態(tài),使得器件只消耗極少的電流,同時具有快速啟動能力;擴(kuò)展Standby模式下則允許振蕩器和異步定時器繼續(xù)工作。ATmega16片內(nèi)ISPFlash允許程序存儲器通過ISP串行接口,或者通用編程器進(jìn)行編程,也可以通過運行于AVR內(nèi)核之中的引導(dǎo)程序進(jìn)行編程。ATmega16引腳圖如圖4-1所示。圖4-1ATmega16引腳圖4.2磁阻傳感器模塊的設(shè)計4.2.1磁阻傳感器HMC1052HMCI052是一個雙軸線性磁傳感器,有兩個由磁阻薄膜合金組成的惠斯通橋。當(dāng)橋路加上供電電壓,傳感器將磁場強(qiáng)度轉(zhuǎn)化為電壓輸出,包括環(huán)境磁場和測量磁場。HMC1052包含兩個敏感元件,它們的敏感軸互相垂直。敏感元件A和B,共存于單硅芯片中,完全正交,且參數(shù)匹配。HMC1052的尺寸小,低工作電壓,而且消除了兩個敏感元件引起的非正交誤差。除了惠斯通電橋,HMCI052有兩個位于芯片上的磁耦合帶;偏置帶和置位/復(fù)位帶。敏感元件A和B,都有這兩個帶。置位/復(fù)位帶,用于確保精度。偏置帶,用于校正傳感器,或偏置任何不想要的磁場。HMC1052管腳圖如圖4-2-1所示。圖4-2-1HMC1052引腳圖4.2.2HMC1052的放大電路傳感器電橋的輸出電壓,通過差分放大使信號放大約1000倍,并使輸出電壓偏置在1.25V。在本設(shè)計中,運算放大器選用LMV358。LMV358可以由其他具有與低電壓相容、低成本、小體積與耗電適中等特點的類似的運算放大器所替代。由圖4-2-2可知,(4.1)運算放大器級LMV358被電阻元件R1、R2、R3與R4環(huán)繞。這些電阻通過使用1千歐的輸入電阻和1兆歐的電阻來設(shè)置1000倍的放大比(1M/1k=1000)。通過選擇四至十倍于電橋元件電阻的輸入電阻,這些電橋得以承受最小的負(fù)載,并使由運算放大器級產(chǎn)生的偏差誤差減至最小。為獲得最佳的噪音抑制和最小的偏差,這些電阻的允差只能有公差范圍的1%。電容器C1根據(jù)反饋電阻的值和所要求的電路測量帶寬來選擇。在本設(shè)計中,只選擇了150pF,以滿足剛好超過1kHz帶寬的測量要求。該1kHz帶寬足夠小,可以防止EMI/RFI的放大,但是又足夠快,可以在1秒鐘的時間內(nèi)進(jìn)行許多測量。圖4-2-2HMC1052放大電路4.2.3HMC1052的設(shè)置/復(fù)位電路由于磁阻傳感器在制造過程中選定薄膜長度的方向為軸,當(dāng)玻莫合金薄膜在受到外部強(qiáng)磁場干擾時(大于20G),薄膜磁化極性會受到破壞,傳感器特性也會改變。HMC1052使這個問題得以解決,該芯片上有兩個阻值為4歐姆(典型值)置位/復(fù)位電流帶,對玻莫合金薄膜施加0.5~4A、2us的脈沖電流,通過這一瞬態(tài)的強(qiáng)恢復(fù)磁場來恢復(fù)或保持傳感器特性。置位脈沖或復(fù)位脈沖對傳感器所起的作用基本一樣,唯一的區(qū)別是傳感器的輸出改變正負(fù)號。由圖4-2-3所示,單片機(jī)每10分鐘產(chǎn)生1秒寬度的低電平時鐘信號,該時鐘信號控制CMOS開關(guān)管IRF7105的導(dǎo)通和截止,從IRFT105的3腳接的1uF電容處激勵一大于0.5A的脈沖電流。在IRF7105的3腳和電源間串有200歐姆的降壓電阻起降低噪聲的作用。圖4-2-2HMC1052設(shè)置/復(fù)位電路4.3ADC模塊的設(shè)計4.3.1ATmega16內(nèi)部AD簡介ATmega16有一個10位的逐次逼近型ADC。ADC與一個8通道的模擬多路復(fù)用器連接,能對來自端口A的8路單端輸入電壓進(jìn)行采樣。單端電壓輸入以0V(GND)為基準(zhǔn)。此外器件還支持16路差分電壓輸入組合。兩路差分輸入(ADC1、ADC0與ADC3、ADC2)有可編程增益級,在A/D轉(zhuǎn)換前給差分輸入電壓提供0dB(1x)、20dB(10x)或46dB(200x)的放大級。七路差分模擬輸入通道共享一個通用負(fù)端(ADC1),而其他任何ADC輸入可做為正輸入端。如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。ADC由AVCC引腳單獨提供電源。AVCC與VCC之間的偏差不能超過±0.3V。標(biāo)稱值為2.56V的基準(zhǔn)電壓,以與AVCC,都位于器件之內(nèi)?;鶞?zhǔn)電壓可以通過在AREF引腳上加一個電容進(jìn)行解耦,以更好地抑制噪聲。4.3.2ADC外圍電路設(shè)計為減小AD轉(zhuǎn)換的電源干擾,Mega16芯片有獨立的AD電源供電。官方文檔推薦在VCC串上一只10uH的電感(L1),然后接一只0.1uF的電容到地(C3)。ATmega16內(nèi)帶2.56V標(biāo)準(zhǔn)參考電壓。也可以從外面輸入?yún)⒖茧妷?,比如在外面使用TL431基準(zhǔn)電壓源。不過一般的應(yīng)用使用內(nèi)部自帶的參考電壓已經(jīng)足夠。習(xí)慣上在AREF腳接一只0.1uF的電容到地(C4)。圖4-3ATmega16內(nèi)部AD外圍電路4.4電機(jī)與驅(qū)動模塊4.4.1步進(jìn)電機(jī)步進(jìn)電動機(jī)是純粹的數(shù)字控制電動機(jī),它將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰?,即給一個脈沖,步進(jìn)電機(jī)就轉(zhuǎn)一個角度,因此非常合適單片機(jī)控制,在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,電機(jī)則轉(zhuǎn)過一個步距角,同時步進(jìn)電機(jī)只有周期性的無累積誤差,精度高。圖4-4-1是二相四線制步進(jìn)電機(jī)原理圖。圖4-4-1二相四線制步進(jìn)電機(jī)原理圖步進(jìn)電機(jī)有兩種工作方式:整步方式和半步方式。以步進(jìn)角1.8度四相混合式步進(jìn)電機(jī)為例,在整步方式下,步進(jìn)電機(jī)每接收一個脈沖,旋轉(zhuǎn)1.8度,旋轉(zhuǎn)一周,則需要200個脈沖,在半步方式下,步進(jìn)電機(jī)每接收一個脈沖,旋轉(zhuǎn)0.9度,旋轉(zhuǎn)一周,則需要400個脈沖??刂撇竭M(jìn)電機(jī)旋轉(zhuǎn)必須按一定時序?qū)Σ竭M(jìn)電機(jī)引線輸入脈沖,以上述二相四線制步進(jìn)電機(jī)為例,其半步工作方式和整步工作方式的控制時序如表1和表2所列。表1半步時序表表2整步時序表時序時序A+B-A-B+時序A+B-A-B+1000111001200113001020011401105010030110611007100041100810114.4.2步進(jìn)電機(jī)細(xì)分驅(qū)動器TA8435TA8435是東芝公司生產(chǎn)的單片正弦細(xì)分二相步進(jìn)電機(jī)驅(qū)動專用芯片,該芯片具有以下特點:工作電壓范圍寬(10-40V);輸出電流可達(dá)1.5A(平均)和2.5A(峰值);具有整步、半步、1/4細(xì)分、1/8細(xì)分運行方式可供選擇;帶有復(fù)位和使能引腳;可選擇使用單時鐘輸入或雙時鐘輸入;采用脈寬調(diào)試式斬波驅(qū)動方式;具有正/反轉(zhuǎn)控制功能;在圖4-4-2中,第一個CK時鐘周期時,解碼器打開橋式驅(qū)動電路,電流從VMA流經(jīng)電機(jī)的線圈后經(jīng)RNFA后與地構(gòu)成回路,由于線圈電感的作用,電流是逐漸增大的,所以RNFB上的電壓也隨之上升。當(dāng)RNFB上的電壓大于比較器正端的電壓時,比較器使橋式驅(qū)動電路關(guān)閉,電機(jī)線圈上的電流開始衰減,RNFB上的電壓也相應(yīng)減??;當(dāng)電壓值小于比較器正向電壓時,橋式驅(qū)動電路又重新導(dǎo)通,如此循環(huán),電流不斷的上升和下降形成鋸齒波,其波形如圖3中IA波形的第1段,另外由于斬波器頻率很高,一般在幾十KHz,其頻率大小與所選用電容有關(guān),在OSC作用下,電流鋸齒波紋是非常小的,可以近似認(rèn)為輸出電流是直流。在第2個時鐘周期開始時,輸出電流控制電路輸出電壓Ua達(dá)到第2階段,比較器正向電壓也相應(yīng)為第2階段的電壓,因此,流經(jīng)步進(jìn)電機(jī)線圈的電流從第1階段也升至第二階段2,電流波形如圖IA第2部分,第3時鐘周期,第4時鐘周期TA8435的工作原理與第1、2是一樣的,只有又升高比較器正向電壓而已,輸出電流波形如圖IA中第3、4部分。如此最終形成階梯電流,加在線圈B上的電流,如圖4-4-2中IB,在CK一個時鐘周期內(nèi),流經(jīng)線圈A和線圈B的電流共同作用下,步進(jìn)電機(jī)運轉(zhuǎn)一個細(xì)分步。圖4-4-2TA8435細(xì)分工作原理圖 圖4-4-3是單片機(jī)與TA8435相連控制步進(jìn)電機(jī)的原理圖,引腳M1和M2決定電機(jī)的轉(zhuǎn)動方式:M1=0、M2=0,電機(jī)按整步方式運轉(zhuǎn);M1=1、M2=0,電機(jī)按半步方式運轉(zhuǎn);M1=0、M2=1,電機(jī)按1/4細(xì)分方式運轉(zhuǎn);M1=1、M2=1,電機(jī)按1/8步細(xì)分方式運轉(zhuǎn),CW/CWW控制電機(jī)轉(zhuǎn)動方向,CK1、CK2時鐘輸入的最大頻率不能超過5KHz,控制時鐘的頻率,即可控制電機(jī)轉(zhuǎn)動速率。REFIN為高電平時,NFA和NFB的輸出電壓為0.8V,REFIN為低電平時,NFA和NFB輸出電壓為0.5V,這2個引腳控制步進(jìn)電機(jī)輸入電流,電流大小與NF端外接電阻關(guān)系式為:IO=Vref/Rnf。圖4-4-3中,設(shè)REFIN=1,選用步進(jìn)電機(jī)額定電流為0.4A,R1,R2選用1歐姆、2W的大功率電阻,O、C兩線不接。步進(jìn)電機(jī)按二相雙極性使用,四相按二相使用時可以提高步進(jìn)電機(jī)的輸出轉(zhuǎn)矩,D1-D4快恢復(fù)二極管用來泄放繞組電流。 圖4-4-3步進(jìn)電機(jī)與細(xì)分驅(qū)動器TA84354.5溫度傳感模塊4.5.1溫度傳感器DS18B20簡介DS18B20是一款基于1_WIRE總線的9位數(shù)字溫度計。由于每一個DS18B20有唯一的系列號,因此多個DS18B20可以存在于同一條單線總線上。經(jīng)過單線接口送入DS18B20或從DS18B20送出,因此從中央處理器到DS18B20僅需連接一條線,讀、寫和完成溫度變換所需的電源可以由數(shù)據(jù)線本身提供,而不需要外部電源。除以上所述,DS18B20還有以下一些特點:獨特的單線接口,只需1個接口引腳即可通信。不需要外部元件。可用數(shù)據(jù)線供電。不需備份電源。測量范圍從-55°至+125°,增量值為0.5°。以9位數(shù)字值方式讀出溫度。在1秒內(nèi)把溫度變換為數(shù)字。用戶可定義的,非易失性的溫度告警設(shè)置。4.5.2DS18B20工作原理圖4-5-1的方框圖表示DS18B20的主要部件。DS18B20有三個主要的數(shù)據(jù)部件:1.64位激光ROM2.溫度靈敏元件和3.非易失性溫度告警觸發(fā)器TH和TL。器件從單線的通信線取得其電源,在信號線為高電平的時間周期內(nèi),把能量貯存在內(nèi)部的電容器中,在單信號線為低電平的時間期內(nèi)斷開此電源,直到信號線變?yōu)楦唠娖街匦陆由霞纳娙蓦娫礊橹埂W鳛榱硪环N可供選擇的方法,DS18B20也可用外部5V電源供電。圖4-5-1DS18B20方框圖與DS18B20的通信經(jīng)過一個單線接口。在單線接口情況下,在ROM操作未定建立之前不能使用存貯器和控制。操作主機(jī)必須首先提供五種ROM。操作命令之一:1.ReadROM(讀ROM)2.MatchROM(符合ROM),3.SearchROM(搜索ROM),4.SkipROM(跳過ROM)5.AlarmSearch(告警搜索)。這些命令對每一器件的64位激光ROM部分進(jìn)行操作。如果在單線上有許多器件,那么可以挑選出一個特定的器件,并給總線上的主機(jī)指示存在多少器件與其類型。在成功地執(zhí)行了ROM操作序列之后,可使用存貯器和控制操作,然后主機(jī)可以提供六種存貯器和控制操作命令之一。一個控制操作命令指示DS18B20完成溫度測量。該測量的結(jié)果將放入DS18B20的高速暫存(便箋式)存貯器(Scratchpadmemory),通過發(fā)出讀暫存存儲器內(nèi)容的存儲器操作命令可以讀出此結(jié)果,每一溫度告警觸發(fā)器TH和TL構(gòu)成一個字節(jié)的EEPROM。如果不對DS18B20施加告警搜索命令,這些寄存器可用作通用用戶存儲器。使用存儲器操作命令可以寫TH和TL。對這些寄存器的讀訪問通過便箋存儲器。所有數(shù)據(jù)均以最低有效位在前的方式被讀寫。圖4-5-2為DS18B20與ATmega16的連接圖。圖4-5-2DS18B20電路4.6時鐘模塊4.6.1時鐘接口概述本設(shè)計中擴(kuò)展了時鐘功能模塊,能夠顯示日期,時間和星期,同時具有校時功能。為了簡化系統(tǒng)軟件設(shè)計,這里選用串行日歷時鐘芯片DS1302。與采用串行總線與單片機(jī)進(jìn)行數(shù)據(jù)通信的時鐘芯片相比,DS1302與單片機(jī)的連線大為減少,極大的節(jié)省了單片機(jī)的系統(tǒng)資源。4.6.2DS1302簡介
DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器
圖4-6-2為DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK始終是輸入端。圖4-6-1DS1302的引腳排列4.6.3DS1302的寄存器
DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器與其控制字見表3。表3日歷、時間寄存器與其控制字此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器與與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。
DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖4-6-1示出DS1302與ATmega16的連接圖。圖4-6-1DS1302最小系統(tǒng)4.7鍵盤接口電路設(shè)計在設(shè)計鍵盤電路時我們采用4×1的四鍵鍵盤。單片通過查詢方式對鍵盤掃描。用軟件算法消除按鍵瞬時的抖動。圖4-7:按鍵電路其中,各鍵值代表的含義如下:S1:數(shù)值加;S2:數(shù)值減;S3:進(jìn)入設(shè)置選擇;S4:尋北儀/時鐘切換圖4-7按鍵電路4.8顯示模塊4.8.1液晶顯示器簡介字符型液晶顯示模塊由字符型液晶顯示屏(LCD),控制驅(qū)動主電路HD44780與其擴(kuò)展驅(qū)動電路HD44100,少量阻、容元件,結(jié)構(gòu)件等裝配在PCB板上而成。字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,無論顯示屏規(guī)格如何變化,其電特性和接口形式都是統(tǒng)一的。因此只要設(shè)計出一種型號的接口電路,在指令設(shè)置上稍加改動即可使用.字符型液晶顯示模塊的基本特點:液晶顯示屏是以若干個5×8或5×11點陣塊組成的顯示字符群。主控制驅(qū)動電路為HD44780(HITACHI)與其他公司全兼容電路。具有字符發(fā)生器ROM可顯示192種字符。具有64字節(jié)的自定義字符RAM,可自定義5×8點陣字符或5×11字符。具有80個字節(jié)的RAM。標(biāo)準(zhǔn)的接口特性,適配M6800系列MPU的操作時序。低功耗、長壽命、高可靠性。4.8.2液晶顯示器使用說明1602模塊的設(shè)定,讀寫,與光標(biāo)控制都是通過指令來完成,共有11條指令,如下:指令RSRWD7D6D5D4D3指令RSRWD7D6D5D4D3D2D1D01清屏00000000002光標(biāo)返回00000000013輸入模式000000001*4顯示控制00000001I/DS5光標(biāo)/字符移位0000001DCB6功能000001S/CR/L**7置字符發(fā)生器地址00011DLNL**8置數(shù)據(jù)存儲器地址001字符發(fā)生存儲器地址9讀忙標(biāo)志和地址01BF顯示數(shù)據(jù)存儲器地址10寫數(shù)據(jù)到指令7、8所設(shè)地址10要寫的數(shù)據(jù)11從指令7、8所設(shè)地址讀數(shù)據(jù)11讀出的數(shù)據(jù)1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了不同的點陣字符圖形,這些字符有,阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,其中數(shù)字與字母同ASCII碼兼容。其內(nèi)部還有自定義字符(CGRAM),可用業(yè)存儲自已定義的字符。表5為CGROM和CGRAM中字符與字符圖形對應(yīng)關(guān)系。表51602中字符代碼和字符圖對應(yīng)關(guān)系LCD1602接口簡單,因此很容易與各類單片機(jī)結(jié)合使用,圖4-8為LCD1602液晶顯示電路。圖4-8LCD液晶顯示電路4.9電源模塊為了避免電機(jī)運轉(zhuǎn)過程中對主控制電路與傳感器電路產(chǎn)生干擾而造成誤動作,本設(shè)計中采用雙電源供電。由于系統(tǒng)對電流要求不高,以與考慮到成本等諸多因素,最終選用穩(wěn)壓芯片LM7805為系統(tǒng)提供+5V的電源。電源模塊的具體電路如圖4-9所示。圖4-9電源模塊4.10硬件電路的布線與焊接該系統(tǒng)所涉與的各部分硬件電路,總體的特點是:(1)電路原理復(fù)雜,但所用的器件多為常用器件。(2)由于電路抗干擾要求高,因此,應(yīng)合理布線,以降低焊接難度,降低出錯率,減少干擾。焊接前應(yīng)熟悉各芯片的引腳,焊接時參照電路圖,仔細(xì)地連接引腳。按照以下原則進(jìn)行焊接:(1)先焊接各芯片的電源線和地線,這樣確保各芯片有正確的工作電壓;(2)同類的芯片應(yīng)順序焊接,在一片焊接并檢查好之后,其他的同類芯片便可以參照第一片進(jìn)行焊接。這樣便可大大節(jié)省時間,也可降低出錯率。
5軟件設(shè)計尋北儀的主控制器使用ATmega16單片機(jī),因該單片機(jī)資源豐富,機(jī)器指令短,大大提高了軟件的實用性和有效性。實現(xiàn)本系統(tǒng),所需的單片機(jī)資源有:10位的逐次逼近型ADC(用于采集磁場信號),16位定時器/計數(shù)器(用于定時)。此外使用專用時鐘芯片DS1302可以大大的簡化系統(tǒng)軟件,節(jié)約單片機(jī)資源。本系統(tǒng)還采用了細(xì)分驅(qū)動器TA8435,操作簡單,使程序的編寫得以簡化。5.1主程序流程圖軟件的主程序流程圖如圖所示:有流程圖可知,軟件共包括兩部分:數(shù)字尋北儀流程和萬年歷流程,兩者之間的狀態(tài)切換通過一個按鍵進(jìn)行操作。系統(tǒng)初始化后,當(dāng)單片機(jī)檢測到切換鍵按下時,進(jìn)入萬年歷狀態(tài),LCD顯示年、月、日,時、分、秒,星期以與溫度。當(dāng)系統(tǒng)沒有檢測到切換鍵按下時,則直接進(jìn)入尋北儀狀態(tài),步進(jìn)電機(jī)指示磁北方向,LCD顯示步進(jìn)電機(jī)轉(zhuǎn)過的角度。系統(tǒng)初始化系統(tǒng)初始化NYYNNY切換鍵是否按下?切換鍵是否按下?顯示日歷顯示溫度顯示日歷顯示溫度數(shù)字尋北儀程序切換鍵是否按下?切換鍵是否按下?切換鍵是否按下?切換鍵是否按下?圖5-1主程序流程圖5.2自動尋北子程序流程圖尋北子流程圖采用逼近算法。程序啟動后,首先判斷步進(jìn)電機(jī)是否朝著磁北方向轉(zhuǎn)動,若方向不對,則方向反轉(zhuǎn)。然后大角度步進(jìn)轉(zhuǎn)動,然后判斷AD是否增多,當(dāng)發(fā)現(xiàn)AD減小時,電機(jī)反轉(zhuǎn),并改為小角度旋轉(zhuǎn),并判斷AD是否增大,當(dāng)AD變小時,電機(jī)停止,此時電機(jī)指向即為磁北,誤差范圍在-0.45°—+0.45°之間,滿足任務(wù)書“角度測量精度為1°”的要求。開始開始讀取AD讀取AD電機(jī)轉(zhuǎn)過9電機(jī)轉(zhuǎn)過9°讀取AD讀取ADYNADYNADN+1>ADN電機(jī)反轉(zhuǎn)4.5°電機(jī)反轉(zhuǎn)4.5°保持轉(zhuǎn)向4.5°讀取AD讀取AD讀取AD讀取ADNADN+1NADN+1>ADN電機(jī)反轉(zhuǎn)0.45電機(jī)反轉(zhuǎn)0.45°保持電機(jī)保持YY保持轉(zhuǎn)向4.5保持轉(zhuǎn)向4.5°保持電機(jī)保持NADNADN+1>=ADN電機(jī)停止讀取AD讀取AD保持轉(zhuǎn)向0.45°保持電機(jī)保持Y電機(jī)停止讀取AD讀取AD保持轉(zhuǎn)向0.45°保持電機(jī)保持Y圖5-2自動尋北子程序流程圖5.3日歷程序流程圖DS1302與微處理器進(jìn)行數(shù)據(jù)交換時,先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護(hù);D6=0,指定時鐘數(shù)據(jù),D6=1,指定RAM數(shù)據(jù);D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入),D0=1,指定讀操作(輸出)。
在DS1302的時鐘日歷或RAM進(jìn)行數(shù)據(jù)傳送時,DS1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。
DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個字節(jié)。開始開始變量初始化變量初始化復(fù)位產(chǎn)生1個高電平使DS1302不具備寫保護(hù)復(fù)位產(chǎn)生1個高電平使DS1302不具備寫保護(hù)寫1302地址復(fù)位產(chǎn)生1個高電平寫1302地址復(fù)位產(chǎn)生1個高電平延時一段時間延時一段時間寫1302地址寫1302地址將地址的數(shù)據(jù)讀出延時一段時間將地址的數(shù)據(jù)讀出延時一段時間地址增加向該地址寫數(shù)據(jù)地址增加向該地址寫數(shù)據(jù)數(shù)據(jù)讀完了嗎?地址增加數(shù)據(jù)讀完了嗎?地址增加N數(shù)據(jù)寫完了嗎?數(shù)據(jù)寫完了嗎?NYY顯示數(shù)據(jù)顯示數(shù)據(jù)圖5-3日歷子程序流程5.4溫度測量程序流程圖系統(tǒng)可以測定外界環(huán)境的溫度,對精度要求并不是很高,故只使用溫度傳感器DS18B20的9位數(shù)據(jù)傳輸方式,這樣節(jié)省轉(zhuǎn)換時間,每次轉(zhuǎn)換的時間只需100ms左右,由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。DS18B20的測溫程序流程圖如圖5-4所示。初始化DS18B20寫入CCh,初始化DS18B20寫入CCh,開始溫度轉(zhuǎn)換寫入BEh,讀暫存寄存器寫入BEh,讀暫存寄存器寫入CChSkipROM寫入44h,寫入44h,開始溫度轉(zhuǎn)換讀暫存寄存器讀暫存寄存器等待轉(zhuǎn)換結(jié)果復(fù)位脈沖N等待轉(zhuǎn)換結(jié)果復(fù)位脈沖等待轉(zhuǎn)換結(jié)果Y等待轉(zhuǎn)換結(jié)果發(fā)送復(fù)位脈沖N發(fā)送復(fù)位脈沖Y計算溫度值等待轉(zhuǎn)換結(jié)果NY計算溫度值等待轉(zhuǎn)換結(jié)果圖5-4測溫子程序流程圖5.5液晶顯示流程圖首先,單片機(jī)檢測液晶1602上忙檢測的端口DB7,若檢測到的電平為高電平時,則無法寫指令,若為低電平,單片機(jī)可以向液晶里寫指令,寫數(shù)據(jù)。然后液晶開始初始化,液晶執(zhí)行清屏程序。再然后檢測忙端口,若檢測到為忙則一直檢測直到檢測到不忙繼續(xù)往下執(zhí)行程序,寫入操作指令程序,經(jīng)過單片機(jī)處理在液晶上顯示出來。忙檢測子程序忙檢測子程序?qū)懼噶畛绦驅(qū)懼噶畛绦驅(qū)憯?shù)據(jù)程序?qū)憯?shù)據(jù)程序液晶初始化液晶初始化清屏清屏液晶是否正忙?液晶是否正忙?NY寫入操作指令寫入操作指令寫入數(shù)據(jù)寫入數(shù)據(jù)讀數(shù)據(jù)顯示讀數(shù)據(jù)顯示圖5-4液晶顯示子程序流程圖
6制作與調(diào)試6.1硬件電路的布線與焊接6.1.1總體特點該系統(tǒng)所涉與的各部分硬件電路,總體的特點是:(1)電路原理簡單,所用的器件多為常用器件。(2)由于將電機(jī)驅(qū)動線路和單片機(jī)與周邊電路的布置在一起可能會影響兩者。因此,我采用分開制作,合理布線,以降低焊接難度,降低出錯率,同時防止干擾。6.1.2電路劃分為方便焊接與調(diào)試,把電路劃分為三大塊:(1)電源模塊為一塊電路板;(2)磁阻傳感器模塊、整形電路為一塊電路板;(3)電機(jī)驅(qū)動、液晶顯示和單片機(jī)控制為一塊電路板;6.1.3焊接焊接前應(yīng)熟悉各芯片的引腳,焊接時參照電路圖,仔細(xì)地連接引腳。按照以下原則進(jìn)行焊接:(1)先焊接各芯片的電源線和地線,這樣確保各芯片有正確的工作電壓;(2)同類的芯片應(yīng)順序焊接,在一片焊接并檢查好之后,其他的同類芯片便可以參照第一片進(jìn)行焊接。這樣便可大大節(jié)省時間,也可降低出錯率。6.2調(diào)試整機(jī)焊接完畢,首先對硬件進(jìn)行檢查聯(lián)線有無錯誤,再逐步對各模塊進(jìn)行調(diào)試。(1)調(diào)節(jié)磁阻傳感器產(chǎn)生的信號。調(diào)節(jié)運放的放大倍數(shù),使放大后的信號的振幅為1V,振動中心為1.25V。(2)測試AD采樣子程序。測試信號為1*cos(2π*0.1*t)+1.2V由信號發(fā)生器產(chǎn)生,加入顯示子程序,觀察顯示結(jié)果正常。 (3)加入電機(jī)控制小程序。加速,減速,控制其正反轉(zhuǎn),停機(jī)均正常。(4)綜合幾個子程序,觀察尋北儀是否指北,調(diào)整靈敏度達(dá)最佳效果。(5)加入測溫子程序,觀察溫度顯示是否正常。(6)加入日歷程序,調(diào)試程序,使其工作正常。7結(jié)論在大學(xué)四年得學(xué)習(xí)生活即將過去,在這四年中,老師的辛勤教誨、同學(xué)的幫助,加上自己的刻苦努力,掌握了大部分專業(yè)知識的理論,實際動手能力也大為提高。畢業(yè)設(shè)計是大學(xué)學(xué)習(xí)生活中,對學(xué)生的理論知識和動手能力的一次大檢驗。這次畢業(yè)設(shè)計課題是數(shù)字尋北儀設(shè)計,這也是對我的綜合理論知識的一次大考驗。通過一個學(xué)期的努力,終于完成了我的畢業(yè)設(shè)計。在做畢業(yè)設(shè)計的這段時間內(nèi),我一直在不斷的學(xué)習(xí)中,通過查閱各種與設(shè)計有關(guān)的資料,使我了解了很多從課本上面學(xué)不到的知識。我覺得畢業(yè)設(shè)計的過程,不僅是一個提高自己動手能力的過程,更是證明自己大學(xué)四年學(xué)習(xí)成果的過程。通過對這次的畢業(yè)設(shè)計,使我對自己專業(yè)課的學(xué)習(xí)有了個更直接更全面的了解。雖然以前短學(xué)期也做過一些電子產(chǎn)品,但是這次的畢業(yè)設(shè)計著實讓我對磁阻傳感器、ADC控制和電機(jī)控制有了更新的認(rèn)識,理論和實際同步進(jìn)行使我更深的了解所學(xué)知識的內(nèi)容,并且能更加熟練的使用Protel軟件進(jìn)行電路設(shè)計和PCB的制作,并且基本能熟練使用ICCAVR這個編譯環(huán)境。掌握了電子設(shè)計所常用的軟件。由于整個畢業(yè)設(shè)計,電路的設(shè)計軟件的編程都是我一個人全部做設(shè)計制作的,工作量比較大。所以說,這次的畢業(yè)設(shè)計是對我能力的一個重大考驗,同時也給了我一次展示自我的機(jī)會。在制作的整個過程中,雖然出現(xiàn)了許多意想不到的問題,比如對Protel軟件的一些細(xì)節(jié)操作和對硬件電路的焊接,但是經(jīng)過導(dǎo)師的指導(dǎo)和自己琢磨,我終于還是解決了這些問題。在這次畢業(yè)設(shè)計的之后,給我感觸最深的是,細(xì)心是制作尋北儀成功的關(guān)鍵。因為我發(fā)現(xiàn)在調(diào)試的過程中,經(jīng)常會出現(xiàn)一些莫名其妙的錯誤,其實這些看似很小的錯誤,大部分是由于細(xì)節(jié)問題所引起的。所以說,這次的畢業(yè)設(shè)計給了我一個很大的教育,那就是不管以后做什么事,都要抱著務(wù)實的態(tài)度和嚴(yán)謹(jǐn)?shù)淖黠L(fēng)。這樣才能給自己交一份滿意的答卷。
參考文獻(xiàn)[1]李廣弟,朱月秀等.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版,2001.[2]沈文.AVR單片機(jī)C語言開發(fā)入門指導(dǎo)[M].北京:清華大學(xué)出版社,2003.[4]劉光斌.單片機(jī)系統(tǒng)實用抗干擾技術(shù)[M].北京:人民郵電出版社,2003.[5]胡漢才.單片機(jī)原理與其接口技術(shù)[M].北京:清華大學(xué)出版社,1996.[6]吳紅星.電機(jī)驅(qū)動與控制專用集成電路與應(yīng)用[M].北京:中國電力出版社,2006.[7]王鴻鈺.步進(jìn)電機(jī)控制技術(shù)入門[M].北京:同濟(jì)大學(xué)出版社,1990.[8]魏永廣.現(xiàn)代傳感技術(shù)[M].哈爾濱:東北大學(xué)出版社,2001.[9]何希才.傳感器與其應(yīng)用電路[M].北京:電子工業(yè)出版社,2001.
[10]王保保.傳感器簡明手冊與應(yīng)用電路——線性輸出磁場傳感器分冊[M].西安:西安電子科技大學(xué),2007.
[11]謝嘉奎.電子線路[M].北京:高等教育出版社,2004.[12]龔之春.數(shù)字電路[M].成都:電子科技大學(xué)出版,2004.[13]胡平等.一種新型測向傳感器—磁通門羅盤[J].海洋與湖沼,1992,23(3):318-324.[14]宋海明等.銻化銦霍爾器件在電子羅盤中的應(yīng)用研究[J].電子測量技術(shù),2008,31(3):118-121.[15]李怡達(dá)等.基于磁阻傳感器與微處理器的二維磁電子羅盤的設(shè)計[J].功能材料與器件學(xué)報,2008,14(2):557-560.[16]李希勝等.車用磁電子羅盤的研制[J].傳感器與儀器儀表,2006,22:308-310.[17]鄧滔等.磁阻傳感器在車輛航位推算系統(tǒng)中的應(yīng)用研究[J].自控與測量,2005,4:98-100.[18]ChoSY,ParkCG.TiltCompensationalgorithmfor22axisMagneticCompass[J].ElectronicsLetters,2003,39(22):66-120.[19]WangJ,SatirapodC,RizosC.StochasticAssessmentofGPSCarrierphaseMeasurementsforPreciseStaticRelativePositioning[J].JournalofGeodesy,2002,76(2):147-152.附錄圖1-1主控控制電路圖1-2電源電路圖1-3磁阻傳感器電路/*******************************************************************************/
/* 主函數(shù)程序*/
/*******************************************************************************/
#include"iom16v.h"
#include"Calendar.h"
#include"North_seeker.h"
#include"LCD1602.h"
#include"SYS_init.h"
#defineucharunsignedchar
#defineuintunsignedint
voidmain(void)
{
SYS_init();
while(1)
{
if((PINA&0x80)==0x00)
{
delay_ms(20);
if((PINA&0x80)==0x00)
{
while((PINA&0x80)==0x00);
Calendar();//日歷程序
}
}
else
{
North_seeker(); //尋北儀程序
}
}
LCD_clear();
}/* 尋北儀模塊*/#include"iom16v.h"#include"ADC.h"#include"LCD1602.h"#include"Step_motor.h"#include"key.h"#defineucharunsignedchar#defineuintunsignedint#defineSTEP_OFFPORTC|=(1<<PC0)#defineAmplitude940uintAD[2]={0,0};uintADmin=0;ucharmark;uintset_steps;/****************************各方向磁場對應(yīng)的AD值****************************/constuintAD_data[]= 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 22,24,26,29,31,34,36,39,42,45, 48,52,55,58,62,66,69,73,77,81, 85,89,93,98,102,106,111,116,120,125, 130,135,140,145,150,155,160,166,171,177, 182,188,193,199,204,210,216,222,228,234, 240,246,252,258,264,270,276,282,289,295, 301,307,314,320,326,333,339,345,352,358, 364,371,377,384,390,396,403,409,415,422, 428,434,440,447,453,459,465,471,477,483, 489,495,501,507,513,519,525,530,536,541, 547,552,558,563,569,574,579,584,589,594, 599,604,609,613,618,623,627,631,636,640, 644,648,652,656,660,663,667,671,674,677, 681,685,680,695,700,706,713,720,725,731, 738,743,746,749,752,755,757,758,759,760, 761,762,763,764,765,766,767,768,769,770,/*****************************相鄰相比AD程序******************************/voidCheck_ADC(void) AD[1]=AD[0];//AD[1]讀取上次AD值 AD[0]=samp_ADC();//AD[0]讀取當(dāng)前AD值/******************************自動尋北程序*********************************/voidAuto_seeker(void)Check_ADC();if((AD[0]-ADmin)>15)//角度偏離5度,啟動自動尋北Drc:if(AD[1]>AD[0]) N_steps(10,0,2);//步進(jìn)4.5度,方向保持 Check_ADC(); else N_steps(10,1,2);//步進(jìn)4.5度,方向取反 Check_ADC(); if(AD[1]<AD[0]) gotoDrc; while(AD[1]>AD[0]) N_steps(10,0,2);//步進(jìn)4.5度,方向保持 Check_ADC(); A_step(1,1);//步進(jìn)0.45度,方向取反 while(AD[1]>=AD[0]) A_step(0,2);//步進(jìn)0.45度,方向保持 Check_ADC(); STEP_OFF; ADmin=AD[0];//讀取AD最小值/******************************方位尋找程序**********************************/voidPosition_seeker(void) LCD_write_str(0,0,"Position-Seeker");LCD_write_str(0,1,"Degree:"); Disp_angle(); if((PINA&(1<<PA6))==0)//方位設(shè)置 Seek_key(); Auto_seeker();n_steps(set_steps,mark,2); STEP_OFF; while((PINA&(1<<PA6))==0x40) if((PINA&(1<<PA5))==0x00) break;/******************************方位角確定程序*****************************/voidPosition_measure(void) ucharAngle[4]; uchari; uintAd,ADi,AD_diff=1880; intdiff; uintangle; LCD_write_str(0,0,"Position-Measure");LCD_write_str(0,1,"Degree:"); Ad=read_ADC(); for(i=0;i<180;i++) ADi=ADmin+AD_data[i]; diff=Ad-ADi; if(diff<0)diff=-diff; if(AD_diff>diff) AD_diff=diff; angle=i;Angle[0]=angle/1000+'0';Angle[1]=angle%1000/100+'0';Angle[2]=angle%100/10+'0'; Angle[3]=angle%10+'0'; //LCD_write_char(7,1,Angle[0]);//顯示角度值LCD_write_char(8,1,Angle[1]); LCD_write_char(9,1,Angle[2]); LCD_write_char(10,1,Angle[3]); LCD_write_char(11,1,0xdf);/********************************尋北總程序************************************/voidNorth_seeker(void) while((PINA&0x80)==0x80) LCD_write_str(2,0,"North-Seeker"); LCD_write_str(1,1,"Mode-Selection");//模式選擇界面 if((PINA&(1<<PA6))==0)/******自動尋北*******/ LCD_clear(); delay_ms(10); if((PINA&(1<<PA6))==0) while((PINA&(1<<PA6))==0); LCD_write_str(3,0,"Auto-Seeker");LCD_write_str(0,1,"Angle:"); Check_ADC(); N_steps(10,0,1);//步進(jìn)9度,方向保持 while((PINA&(1<<PA6))==0x40) Auto_seeker(); Disp_Angle(); ADC_converse();//顯示AD值 while((PINA&(1<<PA6))==0); LCD_clear(); if((PINA&(1<<PA5))==0)/****任意方位尋找****/ LCD_clear(); delay_ms(10); if((PINA&(1<<PA5))==0) while((PINA&(1<<PA5))==0); while((PINA&(1<<PA5))==0x20) Position_seeker(); while((PINA&(1<<PA5))==0); LCD_clear(); if((PINA&(1<<PA4))==0)/******方位測量*******/ LCD_clear(); delay_ms(10); if((PINA&(1<<PA4))==0) while((PINA&(1<<PA4))==0); while((PINA&(1<<PA4))==0x10) Position_measure(); while((PINA&(1<<PA4))==0); LCD_clear(); LCD_clear();/* 日歷模塊*/#include"iom16v.h"#include"DS1302.h"#include"LCD1602.h"#include"DS18B20.h"#include"key.h"#defineuintunsignedint#defineucharunsignedcharvoidCalendar(void) while((PINA&0x80)==0x80) DS1302_read_time(); Disp_Time();//顯示時間 Disp_Temp();//顯示溫度 if((PINA&(1<<PA6))==0)//校時程序 delay_ms(10); if((PINA&(1<<PA6))==0) judge_key(); while((PINA&0x80)==0x00); LCD_clear();/* 系統(tǒng)初始化模塊*/#include"iom16v.h"#include"SYS_init.h"#include"ADC.h"#include"LCD1602.h"#include"DS1302.h"#defineuintunsignedint#defineucharunsignedcharvoidPORT_init(void)ucharjtag; PORTA=0x0E; DDRA=0x0E; PORTB=0xFF; DDRB=0xFF; jtag=MCUCSR|(1<<JTD);//PORTC初始化MCUCSR=jtag;MCUCSR=jtag; DDRC=0xFF; PORTC=0xFF; PORTD=0x7F; DDRD=0x8F;voidSYS_init(void) PORT_init(); ADC_init(); LCD_init();DS1302_init();/* A/D采樣模塊*/#include"iom16v.h"#include"LCD1602.h"#defineuintunsignedint#defineucharunsignedcharucharbuf[4];/**********************************讀AD函數(shù)**********************************/uintread_ADC(void) uintADdata,u_ADCH,u_ADCL; ADMUX=0XC0;//內(nèi)部2.56V參考電源,單端0輸入 ADCSRA=(1<<ADSC|1<<ADEN); while(!(ADCSRA&(1<<(ADIF))));//等待AD轉(zhuǎn)換結(jié)束 ADCSRA|=(1<<ADIF); u_ADCL=ADCL; u_ADCH=ADCH; ADdata=(u_ADCH<<8)|u_ADCL;return(ADdata);/********************************均值濾波函數(shù)*********************************/ uintsamp_ADC(void)uchari;uintAD=0;for(i=0;i<8;i++)AD+=read_ADC();AD=AD>>3;returnAD;/*AD初始化函數(shù)*/voidADC_init(void) ADCSRA=(1<<ADEN)|0X06;//AD使能,64分頻/**********************************AD數(shù)值轉(zhuǎn)換函數(shù)******************************/voidADC_converse(void) longtemp; uintadc; temp=(long)samp_ADC()*25
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寶石開采的技術(shù)升級與產(chǎn)業(yè)轉(zhuǎn)型考核試卷
- 農(nóng)村資金互助社農(nóng)業(yè)保險產(chǎn)品設(shè)計與推廣考核試卷
- 云母制品在平板電腦顯示材料中的應(yīng)用考核試卷
- 鋼包課程設(shè)計的書籍
- 2025年全球及中國熔融沉積成型 (FDM) 服務(wù)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 飲食營養(yǎng)與衛(wèi)生課程設(shè)計
- 有氧健身操課程設(shè)計
- 彩色辣椒課程設(shè)計
- 高端母嬰養(yǎng)生館課程設(shè)計
- 橢圓 課程設(shè)計
- 2025年度私立學(xué)校教師聘用合同(初中部專業(yè)學(xué)科)3篇
- 2024年關(guān)愛留守兒童工作總結(jié)
- GB/T 45092-2024電解水制氫用電極性能測試與評價
- 《算術(shù)平方根》課件
- DB32T 4880-2024民用建筑碳排放計算標(biāo)準(zhǔn)
- 2024-2024年上海市高考英語試題及答案
- 注射泵管理規(guī)范及工作原理
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 大唐電廠采購合同范例
- 國潮風(fēng)中國風(fēng)2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測定
評論
0/150
提交評論