【《基于STM32F103C6T6單片機的數(shù)字化水平儀設(shè)計》16000字】_第1頁
【《基于STM32F103C6T6單片機的數(shù)字化水平儀設(shè)計》16000字】_第2頁
【《基于STM32F103C6T6單片機的數(shù)字化水平儀設(shè)計》16000字】_第3頁
【《基于STM32F103C6T6單片機的數(shù)字化水平儀設(shè)計》16000字】_第4頁
【《基于STM32F103C6T6單片機的數(shù)字化水平儀設(shè)計》16000字】_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

緒論1.1課題研究背景和意義在現(xiàn)代城市中的高樓或者鐵路橋梁等各類大型建筑施工設(shè)備行業(yè),對于各種建筑物本身在各個特殊水平面上的整體傾斜受力程度需要進行精確測量和分析處理,需要一個同時可以連續(xù)工作運行幾個半多月乃至一年以上的超高采樣率和精度極高的大型數(shù)字特殊水平儀檢測系統(tǒng),這就直接決定了該檢測系統(tǒng)必須同時要求一個具備高采樣精度和高顯微功耗的特殊水平檢測處理功能。水平儀由過去簡單的新型氣泡電子水平儀技術(shù)改變而來,現(xiàn)在的新型電子氣泡水平儀也已經(jīng)陸續(xù)經(jīng)歷了多次的技術(shù)更新。電子小徑水平測試計數(shù)器是一種極其廣泛亟需的用于測量小徑和角度的水平測試標準量具。隨著精密電子裝備機械制造企業(yè)工藝技術(shù)的逐步改進和不斷發(fā)展,已有的大型數(shù)顯式精密電子測量水平儀已經(jīng)無法完全滿足較高精度的測量要求,國內(nèi)外的數(shù)顯式精密電子測量水平儀的測量靈敏度,反應(yīng)時間等都與國外產(chǎn)品相比,差距較大。研究者提出一種對于分辨率要求越高,性能越佳的自動智慧型人體電子運動水平高度檢測儀器就具備重要的現(xiàn)實意義。為了不斷改善測量水平儀科學(xué)測量的工作精度,擺脫目前傳統(tǒng)測量水平儀的測量智能化應(yīng)用程度低、數(shù)據(jù)處理反應(yīng)能力弱、抗震干擾性能差等不良優(yōu)勢,必須充分運用各種現(xiàn)代科學(xué)信息技術(shù)手段來進行設(shè)計--是一種新型的測量水平儀。在MEMS數(shù)字傳感器、數(shù)字信號圖像處理、單片機的新型智能自動水平儀的應(yīng)用上將逐漸成為今后智能水平儀技術(shù)發(fā)展的一個主導(dǎo)技術(shù)方向,它們將被廣泛應(yīng)用在城市建筑、石油、煤礦和自然地質(zhì)科學(xué)考察等工業(yè)領(lǐng)域[2]。1.2數(shù)字水平儀的發(fā)展現(xiàn)狀和趨勢中國最早引入數(shù)字水平計算機技術(shù)是在20世紀90年代的中后兩個階段,盡管這一階段的時間并不是非常長,但近些年來這種數(shù)字水平計算機在我國各個行業(yè)和領(lǐng)域各個應(yīng)用范圍都已經(jīng)十分普遍。我國近幾年在研發(fā)制造水平儀的技術(shù)水平有著顯著提高。目前,電感式液位計和電容式液位計廣泛應(yīng)用于工業(yè)生產(chǎn)和日常生活中。他們的基準是基于重物的鉛垂線。由于數(shù)碼電容傳感器的內(nèi)部結(jié)構(gòu)比較簡單,運行后結(jié)果可信,且對輸出能量要求低,輸入極小的動力就是可以獲得相對較大的變化量,所以該電容傳感器被廣泛地應(yīng)用于各種數(shù)字電子水平計算機中。另外,還有一個電容式電子傾角測量儀,它的輸出電壓信號會根據(jù)不同的情況而變化。原理是兩個差動電容式傳感器的固定極板分別安裝到電子傾角測量儀底座上。當一個電子傾角測量儀在水平狀態(tài)下處于活動極板時,會將其放置在兩個固定的極板中間。此時可動極板與固定極板間空隙相等,因此電容量也相等,電橋平衡,這時輸出電壓信號為零。但當?shù)鬃幱诜撬綘顟B(tài)時,兩塊固定極板也隨之發(fā)生傾斜,可動極板與固定極板間空隙發(fā)生變化,破壞了電橋的平衡狀態(tài),導(dǎo)致電容量不等,進而此時輸出的電壓信號將反應(yīng)水平儀的傾斜量[1]。目前,國內(nèi)的數(shù)字化水平儀研究開發(fā)技術(shù)水平已逐漸得到提高,然而,與國外的數(shù)字化水平儀在設(shè)計和制造技術(shù)上的能力相比,我國在生產(chǎn)技術(shù)上的能力和其他領(lǐng)域仍然是比較落后。就是說,數(shù)據(jù)處理技術(shù)不足、數(shù)字化程度仍然有待提高、無法進行一次性精確地測量得到待測量平面上的方位角和傾斜度等不足之處。此外,現(xiàn)有的電子傾角測量儀已難以滿足日常生產(chǎn)活動和生活應(yīng)用中的要求。國外的生產(chǎn)廠家相比于國內(nèi)來說數(shù)量繁多,而且種類也比較齊全,他們所生產(chǎn)的產(chǎn)品無論在測量速度還是功耗方面都具有相當大的優(yōu)勢。他們生產(chǎn)的產(chǎn)品在測量速度和功耗方面具有絕對優(yōu)勢。國外先進的數(shù)字電子水平儀在線技術(shù)主要包括:美國聯(lián)邦公司v-4683電子水平儀在線控制系統(tǒng),法國eda公司,德國diatest公司以及瑞士聯(lián)wyler公司等先進的電子水平儀。其中,瑞士威勒公司研制出的nt系列新型計算機電子水平計算儀最為出名。該系列在測量微小角度時具備獨特優(yōu)勢。主要用來測量各種機械零部件的幾何誤差和對工件表面平面程度。這一系列其中的nt11型平面電子水平計算機已經(jīng)具備了數(shù)字化的顯示功能,有兩種不同的讀數(shù)方式分別為角度讀數(shù)和mm/m讀數(shù),其最高分辨率可達0.001mm/m。在國內(nèi)的其他同類產(chǎn)品中,能夠有一些與之相當?shù)漠a(chǎn)品也并非一無所有,例如青島前哨的所研發(fā)的SDSIO和SDS11型水平儀,其最高精度也均可達到0.001mm/m[2-3]。在國內(nèi),能達到較高生產(chǎn)水平的除臺灣以外,大陸的上海華虹與海爾等企業(yè)也具備較強的研發(fā)能力和生產(chǎn)技術(shù)。1.3本文主要內(nèi)容本次的畢業(yè)設(shè)計的內(nèi)容主要是設(shè)計一個能實現(xiàn)對水平傾角的測量和顯示數(shù)字化水平儀,此水平儀主要器件有六軸加速度傳感器MPU-6050、STM32F103C6T6單片機和OLED液晶顯示屏。在本次設(shè)計的系統(tǒng)中要求完成了對單片機的主控電路、液晶顯示電路、傳感器的數(shù)據(jù)采集電路等硬件原理圖的設(shè)計要求,以及系統(tǒng)軟件設(shè)計,完成硬件調(diào)試和制作,最終實現(xiàn)水平傾角的測量和顯示。本次設(shè)計的測量范圍在90度以內(nèi),通過三個軸的正負加速度值完全可以判斷角度的傾斜方向。因此具有三軸測量方向且為數(shù)字量輸出的MPU-6050芯片成為本系統(tǒng)的傳感器,在顯示模塊就選用了OLED液晶顯示屏。本系統(tǒng)設(shè)計是利用c語言進行編程,并且下載在keil軟件中進行實現(xiàn),單片機通過i2c無線通信連接傳感器;用一種數(shù)學(xué)方法可以推導(dǎo)得出的傾斜角度計算公式如下圖所示:最后,通過OLED液晶顯示屏來顯示測量結(jié)果。2數(shù)字水平儀總體設(shè)計2.1數(shù)字水平儀設(shè)計思路本次工程設(shè)計原理框圖如下表2.1所示。從圖中我們可以清楚地看出,本測量系統(tǒng)主要包括四個重點模塊:單片機主控部分、傾角傳感器感應(yīng)位置的變化采集數(shù)據(jù)部分、oled顯示屏部分以及電源管理部分。主要設(shè)計思路是當一個水平儀稍微向外傾斜時,該傳感器在其相對位置上就會產(chǎn)生相應(yīng)變化,用傳感器MPU-6050芯片感應(yīng)待測面的加速度,然后通過STM32F103C6T6單片機中的程序進行的控制與運算,計算出水平面的傾斜角度,最后通過OLED液晶顯示屏來顯示最后的傾斜角度值。同時系統(tǒng)中還有兩個輔助鍵:復(fù)位鍵可以重啟整個系統(tǒng);暫停鍵可以鎖定當前顯示的角度數(shù)據(jù)。待測角度傾角傳感器顯示模塊單片機待測角度傾角傳感器顯示模塊單片機電源管理系統(tǒng)電源管理系統(tǒng)圖2.1水平儀總體設(shè)計系統(tǒng)原理框圖在本次畢業(yè)設(shè)計中,在單片機方面使用了存儲器容量更大一點的STM32F103C6T6單片機;數(shù)據(jù)采集傳感器選用了高精度、低誤差的MPU-6050傾角加速度傳感器;顯示屏模塊部分選擇了液晶OLED顯示屏。三者來共同完成本次設(shè)計。2.2模塊設(shè)計方案2.21數(shù)據(jù)采集模塊在本系統(tǒng)中用來采集數(shù)據(jù)的模塊用到了三軸傾角加速度傳感器MPU-6050芯片。用于測量傾角的芯片很多種。通過對比,MPU-6050具備數(shù)字量輸出的功能,可以計算出物體總的傾斜角度,所以精度更高(3.9mg/LSB),誤差也更小,因此就選用了該芯片。2.22控制模塊經(jīng)過多年的對比,stm32f103c6t6單片機的算術(shù)和運算功能強大,不易被破譯,超強抗干擾,不需要任何編程器,自由度大,簡單易學(xué),算法類型繁多,并且有著超低功耗,體積很小,運行速度快,可靠性好,性價比高等特征,適用范圍也很廣泛。因此本系統(tǒng)的控制模塊中的主控制器就選用了STM32F103C6T6單片機。2.23顯示模塊本系統(tǒng)中的顯示器選擇了OLED,它可以顯示總的加速度值以及傾斜角值。1602液晶數(shù)字顯示器因為產(chǎn)品具有顯示功耗超低、體積小、簡單易學(xué)、超薄、重量輕、無輻射無毒危害、能夠準確地測量顯示在水平面上的角度和數(shù)值及穩(wěn)定的顯示無閃爍等六大特性,被廣泛應(yīng)用在袖珍式計量儀表和低功耗的工業(yè)應(yīng)用顯示系統(tǒng)上。3.適用范圍硬件設(shè)計3.1芯片模塊3.11芯片概述mpu-6050芯片的規(guī)格分別為3×5×1(單位mm),14引腳的小型超薄塑料密封。該芯片是ADI公司首個推出的一款身材小巧且超低功耗,且輸出數(shù)字信號的三軸加速度傳感器。它是移動設(shè)備的理想選擇,其分辨率(3.9mg/lsb)它能夠?qū)崿F(xiàn)測量微小到0.25°的傾角和溫度變化,并且其中的數(shù)字輸入和補碼信號是16位二進制補碼,芯片的測量范圍為±16g之間。在一些稱為傾斜式的檢測應(yīng)用中,它們也可以被廣泛地用來計算和測量動態(tài)或者是動態(tài)的加速度,無論是由于重力引起的還是振動或沖擊引起的。該裝置還同時具有多種特殊的爆震檢測功能:具有爆震檢測功能,即可檢測任何一個方向的單振動和雙重振動;自由墜體檢查功能用于檢測裝置是否有墜落;靜態(tài)和動態(tài)的感知功能,它們可以用來檢測物體是否發(fā)生了移動[4];并且活動和非活動檢測功能可以用來檢測運動過程中有沒有發(fā)生,這些檢測功能都可以通過獨立地映射給兩個輸入中斷引腳之一[5]。其中一個采用32級別的fifo數(shù)據(jù)緩沖器可以作為用于數(shù)據(jù)庫管理存儲的一個集成型數(shù)據(jù)存儲器進行管理操作系統(tǒng),這樣就已經(jīng)能夠有效地大大減少了整個管理系統(tǒng)在虛擬主機和內(nèi)存處理器上的驅(qū)動功耗。在極低功耗的情況下可以實現(xiàn)閾值感知和運動加速度測量。MPU-6050芯片可通過SPI或I2C數(shù)字接口進行訪問。圖3.2MPU-6050芯片MPU-6050的性能指標如下:(1)在一個測量模式下輸出電流范圍為40μa,在一個電源等待模式下2.5v(典型值)電流僅為0.1μA,因此其功耗極低;(2)測量范圍可選擇2g(10位)、4g(11位)、8g(12位)、16g(13位),測量精度可達到4mg/LSB;(3)電源電壓適用范圍2.0V-3.6V;(4)兩種通信模式:SPI模式和I2C模式;(5)與處理器通信有32級FIFO協(xié)調(diào);(6)可用帶寬為1.6KHz;(7)在使用時的溫度區(qū)間可以從-40攝氏度調(diào)整到85攝氏度;(8)可以接受10000g的沖擊;(9)可以應(yīng)用于電源去耦、敲擊檢測,在醫(yī)療器械、個人導(dǎo)航設(shè)備等領(lǐng)域使用甚廣[6]。下面介紹一下MPU-6050的工作原理。芯片功能框圖如圖3.3所示。由模擬轉(zhuǎn)換器輸出的信號為16位二進制補碼。這一點和以前所學(xué)習(xí)到的課程中計算機系統(tǒng)輸出的數(shù)字信號相同。首先,在MPU-6050芯片上處于前端的傳感器感知待測的加速度,隨后有一個可以捕捉到電信號的裝置將測得的加速度轉(zhuǎn)換成模擬信號,這個模擬信號也就是電信號,因為在裝置中只有電信號才可以被識別[6]。接下來就有可能需要對芯片進行a/d轉(zhuǎn)換了,但是mpu-6050芯片并不必再需要,因為在mpu-6050中裝有一個模擬數(shù)字轉(zhuǎn)換器,此轉(zhuǎn)換裝置可以把上述方法中采集得到的模擬信號轉(zhuǎn)換成整個系統(tǒng)中所需要的模擬數(shù)字信號,再由轉(zhuǎn)換器進行輸出。數(shù)字濾波器把一個在轉(zhuǎn)換器中輸入的由電子信號進行轉(zhuǎn)換而來的數(shù)字信號放大后立刻接入32級別的fifo緩沖器,此操作需要基于控制和中斷邏輯單元的控制下,最后微控制器就可以通過SPI或I2C的串行通信方式接口讀取MPU-6050中所測量并處理過的數(shù)據(jù)了[7]。要想實現(xiàn)對MPU-6050芯片的控制就需要單片機通過寄存器操作,然后通過SPI或I2C的串行通信方式發(fā)送串行端口讀寫命令。圖3.3芯片功能框圖mpu-6050傳感器采用的是一種微機械加工的結(jié)構(gòu),它主要是把多晶硅放置在一個晶圓的頂部,這主要是為了提供抗力,可以用于測量加速度。該傳感器輸出信號的頻率和幅值與加速度是否成正比主要原因是因為這種頻率使得加速度不穩(wěn)定受到影響主要因素包括兩個:偏轉(zhuǎn)慣性質(zhì)量和不平衡的差動電容。相位敏感解調(diào)是用來確定加速度時的幅值和極化。差動電容是由兩個主要部分共同組成:一個可以移動的質(zhì)量連接板和一個單獨的固定板,可以被廣泛地用來檢測結(jié)構(gòu)不平衡。3.12角度測量原理將代測量的角度和x、y、z軸用數(shù)學(xué)模型符號表示了出來,如圖3.4所示。x軸用da表示,y軸用db來表示,那么z軸則用dg來表示,且da與db是垂直。由下式如下圖,假設(shè)α就是da與其他水平面的一個夾角,β就是db軸與其他水平面之間的一個夾角公式為,γ就是dab與其他水平面之間的一個夾角。如果,點E是垂直腳,則∠DAE=α,∠DBE=β。從數(shù)學(xué)模型來看,我們可以把它當作一條輔助線,過點d當作一條水平面上的垂直線和相交點c。∠dce就是一個平面eab與一個水平面之間的夾角,它本身就是在該系統(tǒng)中需要進行測量和展現(xiàn)出來的角度。然后,就是要求α、β和γ三者的關(guān)系。假定為DE為單位1,DE⊥AE且DE⊥BE求得:圖3.4水平儀測量角度數(shù)學(xué)模型Ax=g*cos(90-α)=g*sinα(3.1)Ay=g*cos(90-β)=g*sinβ(3.2)Az=g*cos(90-δ)=g*sinδ=g*cosγ(3.3)DA=1/sinαDB=1/sinβ(3.4)因為ΔADB為直角三角形,所以:AB^2=DA^2+DB^2(3.5)將AB帶入(3.5)式得:(3.6)又因為ΔDEC為直角三角形,所以:(3.7)由上述公式推導(dǎo)可得:(3.8)因為sinα=Ax/g,sinβ=Ay/g,所以:(3.9)由cosγ=Az/g,得:(3.10)即可得出被測面與水平面的夾角:(3.11)根據(jù)角度圖3.4可知,dab與兩個水平面之間的直線夾角角度是其意指在自然光學(xué)坐標系下位于z點的軸與角度傳感器中位于z點的軸之間的角度夾角。由此,同理我們由此可得,可以通過公式求得在一個新的自然矢量坐標系下的點在y上點軸與一個測量傳感器點在y上的軸的角度夾角而將公式定義為:(3.12)同理,自然科學(xué)坐標系系統(tǒng)中的稱為x的兩軸和電子傳感器中稱為x的兩軸之間的一個夾角是在公式中的定義方程為:(3.13)只要把帶有上述公式算法的程序燒錄至單片機中,該系統(tǒng)就可以計算簡單的反三角函數(shù),所需的傾角可以用程序中的公式(3.11)計算出來,通過轉(zhuǎn)換就可以直接顯示傾斜的角度值。在本次畢業(yè)設(shè)計中,為了滿足老師的要求,無論z軸的加速度是正還是負,測量值取0-90度之間。3.13寄存器映射mpu-6050傳感器總共包含有30個寄存器,如表3.1所示[8]。單片機主要通過閱讀寄存器實現(xiàn)對mpu-6050芯片的控制。如果訪問到寄存器,它就會首次發(fā)送一個數(shù)據(jù)字節(jié)上的讀取和地址。寄存器的位置為每個字節(jié)中的第1至5位;讀寫結(jié)構(gòu)類型位為第6位,“0”是單個值的讀寫,“1”是多個值的讀寫;第7位是操作類型位,“0”則代表寫過程,“1”則代表讀過程。當進行讀寫過程時,MPU-6050中的30個寄存器的任何一個寄存器都可以選擇用來實現(xiàn)mpu-6050傳感器的初始化和各種功能的控制與實現(xiàn)。表3.1MPU-6050寄存器地址名稱類型復(fù)位值描述十六進制十進制0x000x01-0x1C0x1D0x1E0x1F0x200x210x220x230x240x250x260x270x280x290x2A0x2B0x2C0x2D0x2E01-28293031323334353637383940414243444546DEVID保留THRESH_TAPOFSXOFSYOFSZDURLatentWindowTHRESH_ACTTHRESH_INACTTIME_INACTACT_INACTT_CTLTHRESH_FFTIME_FFTAP_AXESACT_TAP_STATUSBW_RATEPOWER_CTLINT_ENABLER-RR/R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/11100101-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000器件ID保留不操作敲擊閾值X軸偏移Y軸偏移Z軸偏移敲擊持續(xù)時間敲擊延遲敲擊窗口活動閾值靜止閾值靜止時間軸使能控制活動自由落體閾值自由落體時間單擊/雙擊軸控制單擊/雙擊源數(shù)據(jù)速率及功率模式控制省電特性控制中斷使能控制3.14主要寄存器介紹ofsx,ofsy,和ofsz(0x1e,0x1f,和0x20)分別是8位的寄存器,它們向用戶提供的偏差系數(shù)調(diào)整以一種二進制代碼的格式來進行設(shè)置,比例系數(shù)是15.6mg/lsb。在我們進行實際測量的這時候,這些8位的寄存器就可以作為一種方法,來在每一軸的偏轉(zhuǎn)量被確定了之后就可以存儲它們的數(shù)據(jù)。其中,存儲在主要目的就是一種可以用來存放和處理輸出的數(shù)據(jù)寄存器中的數(shù)據(jù),此時這些數(shù)據(jù)會被自動地添加到一個帶有相同的加速度值并被保留地存儲在一個偏移的寄存器中。速率位(0x2c)可選擇如下表中所示的設(shè)備輸出數(shù)據(jù)的速率和帶寬。默認值為100赫茲的輸入數(shù)據(jù)速率,可表示為0x0A。在本次的設(shè)計中應(yīng)用到該協(xié)議所需要輸出的數(shù)據(jù)速率和頻率分別為0x08,也就是12.5赫茲的i2c通信協(xié)議串行方式,其當該協(xié)議所需要輸出的數(shù)據(jù)率太高時,通信的速度相對過低,數(shù)據(jù)的傳輸將有可能會發(fā)生失敗,隨之采樣也會丟失。表3.2MPU-6050主要寄存器輸出數(shù)據(jù)速率(Hz)帶寬(Hz)速率代碼I(uA)32001600800400200100502512.56.253.131.560.780.390.20.11600800400200100502512.56.253.131.560.780.390.20.10.0511111110110111001011101010011000011101100101010000110010000100001409014014014014090605045403423232323

輸出的數(shù)據(jù)速度(hz)帶寬(hz)速度代碼i(uA)下面介紹寄存器的字節(jié)格式。寄存器置1,使能位進行相應(yīng)功能并產(chǎn)生中斷。當設(shè)置到0時,可以有效防止該部分的功能被切換為不同的電源。數(shù)據(jù)準備完成位、使用能位、漏出位和水印位,僅中斷數(shù)據(jù)的輸出,這些功能始終保持在有效的狀態(tài),從而使用戶可以直接讀取寄存器內(nèi)部的數(shù)據(jù)。在本設(shè)計系統(tǒng)中,將該寄存器的電平設(shè)置為高電平,以便實現(xiàn)相應(yīng)的功能,它會產(chǎn)生一個中斷。如果設(shè)置為0,就可以防止使能位被中斷。而且數(shù)據(jù)就緒位,水印位,溢出位會導(dǎo)致中斷輸入,這些功能會一直保持到啟用的狀態(tài)。在本次系統(tǒng)中,我們需要首先對寄存器進行中斷配置,然后再次輸出,最后把所有寄存器內(nèi)部的數(shù)據(jù)都讀出。表3.3寄存器INT_ENABLE(0x2E)字節(jié)格式D7DATA_READYD6SINGLE_TAPD5DOUBLE_TAPD4ActivityD3InactivityD2FREE_FALLD1WatermarkD0Overrun本系統(tǒng)的范圍選擇了16g,分辨率選擇了13位。范圍位(0x31)可以設(shè)置為G范圍,如表3.4所示。表3.4范圍位設(shè)置g范圍D1D0001101012g4g8g16g3.15傳感器通信方式本設(shè)計使用的MPU-6050可采用I2C和SPI數(shù)字通信。本次設(shè)計的加速度數(shù)據(jù)采集通過I2C方式來完成。處于SPI模式時,與I2C模式不同,CS是由總線主機控制的,最高時鐘為5MHZ。在通信開始時,主單片機會自動選擇一個操控開關(guān)的位置,控制一個開關(guān)進行復(fù)位并停止通信,stm32f103c6t6芯片可以為sclk提供串行時鐘。要想在通訊期間同時讀取和寫入多個字節(jié),MB位必須設(shè)置。sdo為一個帶有串行輸入數(shù)據(jù)的數(shù)字輸出輸入信號引腳,sdi為一個帶有串行輸入數(shù)據(jù)的數(shù)字輸入輸出信號引腳,二者采集數(shù)據(jù)均是在時鐘上升沿。當處于讀取在第一個寄存器中的數(shù)據(jù)的狀態(tài)時,MPU-6050芯片會自動指向下一個要讀取的寄存器的地址。SPI通信有兩種連線模式:三線連接模式或四線連接模式,如圖3.5和圖3.6的連接所示。圖3.5三線式SPI連接圖圖3.6四線式SPI連接圖當選擇3線路相互連接的模式時,在寄存器0x31中分別設(shè)定spi的位置,建議將SDO引腳拉至VDDI/O,除此方法外還可以使用10kΩ電阻將其拉至地平面。選擇四線程的串聯(lián)處理模式就一定能自動清除一個spi位。如果一個mpu-6050芯片引腳是在一個專用主處理器的一個時鐘線路極性和芯片相位被進行重新配置之前才能進行二次供電的,則一個cs引腳必須滿足要求它在一個時鐘線的極性和芯片相位沒有發(fā)生重大改變之前與兩個cs引腳之間連接得更高。下面介紹I2C通信方式。簡單而有效的特點是i2c總線的主要優(yōu)勢[9]。有兩點原因。一個是因為接口主要是在零部件上,很低的空間被占用,減少對于電路板進行擴展時所需要的空間和引腳。還有一個原因是總線長度為7.6米,它支持40個零部件能夠在10千位/秒發(fā)送最高傳輸頻率的數(shù)據(jù)。i2c另外的優(yōu)點是它能夠支持多臺主機同時操作。在這種情況下,所有的可傳輸裝置都是主總線上,并且可以控制傳輸和系統(tǒng)時鐘信號的頻率。MPU-6050的I2C通信只需要簡單的兩線式連接。如圖3.7所示,連接CS引腳至電源,此時MPU-6050芯片進入I2C串口通信。同時,I2C通信模式下還支持單或者多字節(jié)的讀取和寫入,還具有快速的數(shù)據(jù)傳輸方式。在使用該通信方式時,當ALTADDRESS(引腳12)置電源時,低7位地址是0x1D,此時,0x3B地址讀取數(shù)據(jù),0x3A地址寫入數(shù)據(jù)。如果將該引腳連接地,就可以使用備用的地址0x53,此時與該引腳置于高電平的情況不同,0xA7地址讀取數(shù)據(jù),0xA6地址寫入數(shù)據(jù)。在上述說明中可以看出,如果想要利用I2C通信時,ALTADDRESS引腳也一定要任意連接至電源或者接地,除此之外,一定要連接CS引腳至電源。由于網(wǎng)絡(luò)通信頻率和速度的特殊性所限制,當我們在使用i2c進行網(wǎng)絡(luò)通信時,其最大輸入和數(shù)據(jù)的速率約為400千赫茲時,也就是800赫茲,即隨著i2c網(wǎng)絡(luò)通信頻率增加而逐漸變大,成正比線性地變化。由此看來,當一個輸出的數(shù)據(jù)速率在運行到最大和最小范圍之外時,就有可能對這些加速度數(shù)據(jù)的測量結(jié)果產(chǎn)生不利的影響,例如說樣本的丟失或者是產(chǎn)生額外的噪聲。圖3.7I2C通信連接圖(地址0x53)在上述兩種情況下,MPU-6050芯片主要作為從機運行。當處于i2c的模式下,應(yīng)始終將cs引腳連接到高電平,使該模式進入一個使能狀態(tài),此時外部的控制器還是可以驅(qū)動mpu-6050芯片,因為當沒有完全連接到cs引腳的時候,當前的狀態(tài)被默認為不存在這種模式,因此,當沒有對cs引腳進行這種連接方式時,可能會直接導(dǎo)致mpu-6050無法進行通信。當處于spi模式下,總線主機可以控制cs引腳。在上述兩種通信模式下,當MPU-6050處于寫入狀態(tài)時,從MPU-6050芯片發(fā)送到主機的數(shù)據(jù)應(yīng)該被忽略。3.16接口設(shè)計該芯片總共有14個引腳,引腳配置如圖3.8所示:圖3.8MPU-6050引腳配置圖在上面的論述中,已經(jīng)詳細介紹了MPU-6050芯片與單片機STM32F103C6T6的基本原理。根據(jù)其模式、原理和引腳的描述,可以進行MPU-6050的接口設(shè)計。如圖3.9所示:圖3.9MPU-6050的接口連接由于STM32F103C6T6單片機的工作電壓為5V,與之不同的是,MPU-6050傳感器的正常工作電壓為2.0-3.6V,因此,為了使整個系統(tǒng)能夠正常工作,此時就需要設(shè)計一個電平轉(zhuǎn)換電路。在本次設(shè)計中,ME6206低壓差電壓穩(wěn)壓器用于將5V的輸入電壓轉(zhuǎn)換為3.3V的輸出電壓。如圖3.10所示:圖3.10MPU-6050電源模塊在本次設(shè)計中,為了方便起見,也是直接購買了MPU-6050模塊。3.2單片機模塊STM32F103C6T6單片機系列采用得是具有極高性能的ARM?Cortex?-M332位的RISC內(nèi)核,其工作頻率為72MHz,內(nèi)置的高速存儲器(可以達到128K字節(jié)的閃存和20K字節(jié)的SRAM),極大地增強了I/O端口和連接到兩條APB總線的外設(shè)。全部型號的器件都包含2個12位的ADC、3個通用16位定時器和1個PWM定時器,并且包含了標準和先進的通信接口:具有2個I2C接口和SPI接口、3個USART接口、一個USB接口和一個CAN接口。STM32F103C6T6單片機中等容量增強型系的列產(chǎn)品供電電壓都為2.0V-3.6V,包括-40°C低溫至+85°C高溫的溫度范圍和-40°C低溫至+105°C高溫的延展溫度范圍。還有一系列的省電模式可以讓低功耗應(yīng)用的要求得到保證。STM32F103C6T6單片機中等容量增強型的系列產(chǎn)品提供包括從36腳至100腳的6種不同的密封形式;根據(jù)不同的密裝形式,器件中的外設(shè)配置也會有區(qū)別。下面也列出了該系列產(chǎn)品中全部外設(shè)的一些基本的介紹。這些比較多的外部設(shè)備和配置,讓stm32f103c6t6的產(chǎn)品中等容量增強型一系列小規(guī)模微控制器可以廣泛地應(yīng)用在多種不同的應(yīng)用場所:利用STM32F103C6T6單片機作為主要的模塊,為了實現(xiàn)無線通信功能,單片機還可以使用串口連接藍牙模塊或其他模塊,對設(shè)計有很大幫助,還可以利用Keil進行編程,將程序燒入單片機內(nèi),使系統(tǒng)可以進行部分仿真等。單片機的電路圖如圖3.11所示。圖3.11單片機主控電路圖STM32F103C6T6單片機的引腳如圖3.12所示。這種器件是由atmel密度非易失性存儲器生產(chǎn)技術(shù)制造而成,且與行業(yè)內(nèi)最先進的mcs-51指令集及其輸出引腳相互兼容。這種單片機本身就是一種僅需要低電壓卻又具有很好的高性能微處理器。它可以實現(xiàn)各種特殊功能,設(shè)有8k字節(jié)的快閃存儲器,可編程、直接擦拭可讀存儲器。圖3.12STM32F103C6T6單片機引腳圖STM32F103C6T6單片機的主要功能如表3.13所示。表3.13STM32F103C6T6單片機主要功能主要功能兼容MCS51指令系統(tǒng)8K可以反復(fù)地擦寫FlashROM32個I/O端口且為雙向256x8bit內(nèi)部RAM3個16位可編程定時器和計數(shù)器中斷時鐘頻率0-24MHz2個串行的中斷可編程UART串行通道2個外部的中斷源共6個中斷源2個讀寫的中斷3級加密位低功耗的空閑和掉電模式低功率消耗睡眠空閑與大量掉電睡眠時間控制模式通過軟件設(shè)置可以自動設(shè)置定時睡眠與自動喚醒等睡眠功能3.3液晶顯示模塊ssd1306是一款采用帶有兩個單片機的cmosoled/pled的激光驅(qū)動控制芯片,它們是能夠直接驅(qū)動所有您需要的有機/聚合式無機發(fā)光晶體二極管的小型點陣激光圖形圖像顯示器。它通常包括128segments,64commons。這種光電芯片主要是專門針對共陰極上的oled光電面板而設(shè)計制造。ssd1306中已經(jīng)成功嵌入了一個可以具有最佳高對比度的圖像控制器、一個液晶顯示器的ram和一個晶振,并因此大大減少了外部控制元件和系統(tǒng)功耗。有256級的大燈亮度可以自動控制。數(shù)據(jù)/串口命令的信息傳輸與數(shù)據(jù)發(fā)送主要可以有三個數(shù)據(jù)接收串口供用戶選擇:6800/8000串口,i2c數(shù)據(jù)接口或是sspi2c接口。適用于多數(shù)用戶個人簡介的管理使用,注入智能手機上和移動通信的超大屏幕頭顯,mp3播放器和平板電腦上的數(shù)字計算器。oled字符體類型液晶顯示屏是一種廣泛應(yīng)用于視頻顯示中。它主要由四個大部分組成:一個是字符式的液晶顯示器、可以延伸驅(qū)動電路、控制驅(qū)動的主電路,還有一些散件,主要是一些少量的電阻、電容元件和結(jié)構(gòu)元件。本課程系統(tǒng)在總體設(shè)計中所說的需要選擇使用的這種直接字符顯示類型的數(shù)字液晶模塊主要的就是用5x7點陣式的圖形顯示方式輸出來對其進行直接顯示字符的比如oled這種液晶數(shù)字顯示器,它的這種數(shù)字液晶顯示器的容量及其大小就是可以直接劃分到形成這么多種類型,有1行16個字符、2行的16個字符,2行的20個字符等。圖3.14OLED顯示屏實物圖在這種設(shè)計中,OLED顯示屏使用標準的8針接口,可以通過10K電位計連接第三個針來調(diào)節(jié)屏幕的對比度,該顯示屏的8位數(shù)據(jù)線直接連接到單片機的PO端口,控制信號線RS、RW和e連接到單片機的P3端口。當連接到正電源時,對比度最弱,而當連接到的電源時,對比度最高。圖3.15液晶顯示結(jié)構(gòu)方框圖圖3.16液晶顯示器原理圖ssd1306mcu接口引腳包括8個模擬數(shù)據(jù)引腳和8個數(shù)據(jù)控制引腳。引腳的選項分配通常是由不同網(wǎng)絡(luò)接口之間的引腳選項分配來進行確定,詳情請參見文件下面列表。不同的的mcu模塊之間的硬件設(shè)置區(qū)別可以從aabs[2:0]中根據(jù)使用硬件配置選項卡的方式表來進行。引腳總線接口Data/Command接口控制信號D7D6D5D4D3D2D1D0ER/W#CS#D/C#RES#8-bit8080D[7:0]RD#WR#CS#D/C#RES#8-bit6800D[7:0]ER/W#CS#D/C#RES#3-wireSPITieLOWNCSDINSCLKTieLOWCS#TieLOWRES#4-wireSpiTieLOWNCSDINSCLKTieLOWCS#D/C#RES#I2CTieLOWSDAoutSDAinSClTieLOWSA0RES#SSD1306采用標準的16腳接口,其中:第1腳:VSS為的電源;第2腳:VDD:+5v電源;第3腳:v0為oled顯示器的視覺對比度進行調(diào)節(jié)端。當連接到一個正電源時,其對比性就是最差了。所以當連接到相同或者接地點的電源,其對比性能是最好的。但是當其對比程度過高,"疊影"將不再能夠被觀察到。當實際應(yīng)用時,對比程度可由10k電位自動進行調(diào)節(jié);第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:rw是一個主要用于數(shù)據(jù)讀寫的數(shù)字信號傳輸接口,在中或高電平上的進行讀寫傳輸讀寫操作,在中或低電平上的進行書寫讀輸操作。例如當我的rs和s與rw都的值是低,則我們就完全可以在整個網(wǎng)絡(luò)上快速寫一個網(wǎng)絡(luò)指令或者在整個網(wǎng)絡(luò)上快速顯示一個網(wǎng)絡(luò)地址,當s和rs的值是低,rw的總和值為高時,我們就完全可以在整個網(wǎng)絡(luò)上快速讀出繁忙的網(wǎng)絡(luò)信號,當s和rs的值是高,rw的總和值為低時,可以將這些信號數(shù)據(jù)全部重新寫入;第6腳:e為用戶使用功能的前端。當從一個高電平模塊到一個低電平模塊發(fā)生溫度改變時,oled兩個模塊將自動停止執(zhí)行所述的指定命令;第7~14腳:D0~D7是8位的雙向數(shù)據(jù)線;第15~16腳:空腳。mcui2c的從機通訊數(shù)據(jù)接口主要包括從機的一個地址信號是一個sa0,i2c數(shù)據(jù)總線的一個數(shù)據(jù)信號(sdaout/d2的數(shù)據(jù)輸出及一個sdain/d1的數(shù)據(jù)輸入)和一個i2c的數(shù)據(jù)總線的和時鐘控制信號以及scl(d0)兩個大部分。而且用于數(shù)據(jù)與視頻時鐘的兩個信號電源線均可能需要另外連接一個使用帶有斯特拉克斯電阻的電源線。res#它可以同時用于對所有設(shè)備文件進行自動初始化。從機地址位(SA0)ssd1306在向多個用戶信息發(fā)送或者用戶接受任意一個用戶信息前必須先明確辨認出來的信息是從哪個機器和地址。設(shè)備將首先的是會對從機的數(shù)據(jù)地址位置進行實時響應(yīng),后面的將是同時跟隨從機的數(shù)據(jù)地址位(sa0位)和從機的數(shù)據(jù)讀寫地址選項位(r/w#位),格式化的列表顯示如下:b7 b6 b5 b4 b3 b2 b1 b00 1 1 1 1 0 SA0 R/W#SA0位對從機地址供應(yīng)了一個位的擴展。0111100或0111101都可以作為ssd1306地從機地址。D/C#引腳作為SA0用于從機地址選擇。R/W#則用來決定I2C總線接口的操作模式。R/W#=1為讀模式。R/W#=0為寫模式。I2C總線數(shù)據(jù)信號sdasda是作為信號傳輸發(fā)送方與接收方之間的一種通信渠道。所有的數(shù)據(jù)與應(yīng)答全部由sda進行發(fā)送。值得注意的一點是當將itod的軌道穩(wěn)壓電阻與itsda引入管腳上的上或下拉穩(wěn)壓電阻將可以轉(zhuǎn)換成成為一個潛在的有源電壓分壓器。其他的結(jié)果也就是在在sda上的使用回歸式邏輯應(yīng)答器的方法很有可能導(dǎo)致無法直接達到有效率的邏輯0。sdain與sdaout綁定并組成了一個稱為sda。sdain的引腳之間必須有sda相互聯(lián)系。sdaout的引腳之間可以是不相互連接的。但是當sdaout的引腳沒有相互連接,應(yīng)答信號將不會被i2c總線所忽略。4系統(tǒng)軟件設(shè)計4.1程序開發(fā)環(huán)境要設(shè)計水平儀首先要進行流程內(nèi)置,一系列的流程才能保證此儀器的正常工作。其中它們既包含了一個主程序的流程,中斷了一個子程序的流程,又有很多其他子程序的流程。編寫程序的語言有C語言和匯編語言[9]。對比兩者,C語言是高級計算機語言,在實現(xiàn)較難的算法時比較方便。由于設(shè)計算法比較復(fù)雜,而且在Keil中用C語言來進行仿真比較常見,所以我用C語言編程。在完成了硬件電路模塊的分析選型之后,為了更好地使得芯片正常工作,就需要自行編寫一套相應(yīng)的硬件程序以驅(qū)動整個單片機。本次課程設(shè)計中主要采用的應(yīng)該是keiluvision2軟件。本次設(shè)計采用c-rom編程,KeiluVision2非常強大,支持多種語言編程,其中就包括c語言。所以本次軟件設(shè)計選擇了軟件KeiluVision2。4.2KeilC51簡介來自德國慕尼黑的凱伊勒克特魯尼克公司和美國德克薩斯州的凱伊軟件公司兩家聯(lián)合運營的Keil公司是行業(yè)內(nèi)獨立微控制器軟件開發(fā)工具供應(yīng)商中的獨角獸,它支持500多種8051變體。ansic軟件編譯器、宏文件匯編器、調(diào)試器、鏈路器、存儲數(shù)據(jù)庫資源管理器、固件及實時正在運行的移動操作系統(tǒng)軟件核心等都已經(jīng)是公司keil公司研究并廣泛地應(yīng)用于軟件生產(chǎn)和開發(fā)銷售的重要工具。有超過十萬名微控制器的研究人員使用大家都認同的一種解決方案。事實上,從1988年引入市場的keilc51編譯器已經(jīng)成為行業(yè)內(nèi)的標準。兩家公司于2015年arm收購keil之后就分別重新改稱美國國貿(mào)公司與德國國貿(mào)公司。keil的首席執(zhí)行官賴因哈德凱爾曾經(jīng)說:"我們將會不斷地在uvision環(huán)境中使用8051和c16x編譯器。隨著32位的微控制器在中國市場上的快速增長,我們的公司也將通過此次的收購可以更好的為中國市場客戶提供一個完整的解決方案。"4.3系統(tǒng)工作流程介紹電子水平計以單片機元件為核心。電容式傳感器通過檢測電路而輸出的信號經(jīng)過adc0809轉(zhuǎn)換,由一個單片機的i/o口進行讀入,根據(jù)該算法來完成被檢測表面的測量,并將其結(jié)果輸出給oled的顯示器上。測量系統(tǒng)上電復(fù)位后,進行初始化,然后再看開始鍵是否按下,如果沒有按下進行測量,依次運行的過程主要有數(shù)據(jù)采集、濾波和計算機處理、數(shù)字信號顯示,這部分過程在一個終止鍵沒有按下之前通過一個循環(huán)來執(zhí)行,當一個終止鍵沒有按下后,再次對一個單片機進行初始化,等待下個測量任務(wù)。流程如下圖所示:圖4.1工作流程圖4.4I2C總線協(xié)議分析用于連接整體電路就是的主要工作。隨著近年我國企業(yè)大規(guī)模的應(yīng)用集成電路和其它相關(guān)應(yīng)用技術(shù)的不斷迅猛發(fā)展,現(xiàn)在的市場需要一種連接總線少且結(jié)構(gòu)簡單的一種擴展方式,在此需求下,飛利浦半導(dǎo)體公司在十多年前就設(shè)計出來了I2C總線協(xié)議的串行方式。眾所周知,單片機及相關(guān)外圍設(shè)備的連接適用范圍線,串行總線兩種擴展方式。本系統(tǒng)中單片機與MPU-6050傳感器之間的通信方式就是I2C串行總線協(xié)議。I2C總線協(xié)議有很多優(yōu)點,它具有以下幾點特征:1.在數(shù)據(jù)傳輸?shù)倪^程中只有兩條總線,分別為串行數(shù)據(jù)線SDA和時鐘線SCL[11];2.在不同的模式下進行數(shù)據(jù)傳輸?shù)念l率也會有所差異,在標準模式下進行數(shù)據(jù)傳輸?shù)乃俾室话隳軌驅(qū)崿F(xiàn)100kbit/s,快速模式下進行的數(shù)據(jù)傳輸頻率一般會比較高,其中傳輸速度大約是標準模式的四倍水平,高速模式下進行的傳輸頻率最高,傳輸過程中的速度能夠達到3.4Mbit/s[11];3.i2c總線在對時鐘信號進行轉(zhuǎn)換和數(shù)據(jù)傳輸環(huán)節(jié)的工作過程中,其中一個時鐘信號可能會因為出現(xiàn)明顯的變化而改變,并最終轉(zhuǎn)換成高電平,在一個時鐘信號發(fā)生轉(zhuǎn)變的工作環(huán)節(jié)中,數(shù)據(jù)傳輸過程中的每一個數(shù)據(jù)必須始終保持較高穩(wěn)定系數(shù),與此同時,只有當一個時鐘的信號開始從一個高電平逐漸轉(zhuǎn)化成低電平時,數(shù)據(jù)才可以逐漸出現(xiàn)變化[11]。在I2C總線中,首先圍繞起始條件S與停止條件P這兩種情況進行明確定義:當SCL線處于高電平狀態(tài)時,通過SDA數(shù)據(jù)線產(chǎn)生的不同變化可以進一步判斷是停止條件還是起始條件。如果數(shù)據(jù)線開始出現(xiàn)下降沿的情況,則說明這種情況是起始條件,反之,如果這個數(shù)據(jù)線出現(xiàn)上升沿的情況,那么則進一步說明這種情況是停止條件[12]。如果在總線的連接器件中已經(jīng)配備了接口硬件,那么充分發(fā)揮這些硬件的功能和優(yōu)勢,能夠有效降低檢測啟動和停止條件的難度系數(shù)。但是,要是沒有配備這種專業(yè)的微控制器設(shè)備,每一個時鐘周期的過程中就必須對SDA線進行不少于兩次的采樣工作,以此進一步判斷線路中是否出現(xiàn)電瓶平切換的問題。圖4.2I2C起始和停止條件信息傳輸?shù)倪^程中必須確保線路中的字節(jié)都是八位的格式,除此之外,每次傳輸過程中可以發(fā)送的字節(jié)數(shù)量不受其他條件的約束。在每個字節(jié)后面必須確保有相應(yīng)的響應(yīng)位,其中,0代表的是確認,1代表的是不確認。第一,對msb數(shù)據(jù)實現(xiàn)精確的傳輸。如果在數(shù)據(jù)傳輸中有無法正常接收或向主機發(fā)送完全的數(shù)據(jù)字節(jié)信號的情況,可以通過外部條件來迫使主機保持一種低電平的狀態(tài)。一旦從機啟動將會對下一個數(shù)據(jù)字節(jié)開始接收,且當它們開始再次釋放時鐘線的同時,這些信號傳輸工作會繼續(xù)進行。發(fā)射器將會在響應(yīng)過程中釋放高電平。采用把sda線路進行拉低的方法,確保此期間的低電平頻率能夠長期地處于穩(wěn)定的狀態(tài)。如果出現(xiàn)由于從機不能響應(yīng)地址的情況,必須要確保數(shù)據(jù)線處于高電平運行狀態(tài),并通過由主機自動產(chǎn)生的停止條件,從而全方位停止對數(shù)據(jù)的傳輸工作,也可以選擇通過重新啟動的方式進行下一輪的全新傳輸。如果我們在傳輸過程中配備了板載接收器,該設(shè)備會充分結(jié)合時鐘最后一個字節(jié)是否發(fā)生響應(yīng)來發(fā)送相應(yīng)的指令使數(shù)據(jù)停止傳輸。這一個操作過程中,從屬變送器必須進一步對數(shù)據(jù)線進行釋放,確保主機能夠自由操作停止或啟動的條件。就當前具體單片機的應(yīng)用情況而言,在單片機開發(fā)中實際應(yīng)用性較高的有51、96系列,這一系列單片機均具有一些短板,就是它們普遍都不能夠配備i2c串行通信接口,因此也導(dǎo)致了這些單片機器件無法在系統(tǒng)中同時進行廣泛的使用。通過前文研究i2c總線接口的時序展開了了一系列的研究與分析內(nèi)容不難看到,可以把51系列單片機的端口模擬成為i2c總線接口,從而進一步地實現(xiàn)了相關(guān)元器件的功能。充分地結(jié)合本文對該總線的有關(guān)規(guī)范我們就能發(fā)現(xiàn),scl線和sda線分別是所有器件在其相應(yīng)的輸出狀態(tài)下所做成的具體結(jié)果。該設(shè)備能夠充分發(fā)揮高電平對低頻輸出功能,使得高速設(shè)備迅快地進入等候狀態(tài),以此來進一步增加SCL狀態(tài)的時長,使不同設(shè)備間時間同步的目標得以完成。從這個角度而言,盡管兩種電平鐘脈沖的持續(xù)時長具有差異性,但是依然能夠達到高效準確的數(shù)據(jù)傳輸目標,除此之外,還可以在充分發(fā)揮軟件強大功能的基礎(chǔ)上,通過軟件對輸入和輸出端口進行精準控制,從而實現(xiàn)I2C接口的制作目標。本設(shè)計采用單片機的通用輸入和輸出端口作為I2C總線接口,通過軟件控制實現(xiàn)單片機與傳感器之間的數(shù)據(jù)傳輸。4.5液晶顯示液晶顯示功能模塊是一個OLED顯示器,主功能可以根據(jù)指令顯示相應(yīng)的信息。在本系統(tǒng)中,OLED液晶顯示屏要成功顯示出數(shù)值,這就要系統(tǒng)中不僅要能控制四個信號,還必要合理的設(shè)定數(shù)值之間的顯示位置。在設(shè)計這個液晶顯示模塊程質(zhì)時還要嚴格遵循一些基本原則:在程序剛剛開始時,液晶顯示模塊的功能已經(jīng)進行了初始化,顯示的格式已由輸入指令來確定,即先在程序中設(shè)置一個顯示的地址,再在程序中寫入一個中文字符進行編碼。請注意,當OLED顯示字符時,其光標不需要手動干預(yù)就會自動向右移動。在傳輸數(shù)據(jù)時,在每次輸入指令之前首先需要讀取BF位標志,BF需為“0”才可接受新指令。此做法是為了判斷液晶模塊是否忙。液晶顯示驅(qū)動程序:voiddelay(unsignedintk);voidInitOLED();//初始化OLEDvoidWriteDataLCM(uchardataW);voidWriteCommandLCM(ucharCMD,ucharAttribc);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidShow_welcome();voidShow_ERROR();voidShow_PleaseReset();voidrst_1();voidrst_2();4.6軟件模塊系統(tǒng)在運行時需要首先對mpu-6050芯片進行初始化的設(shè)置,然后才有機會獲取到加速度傳感器的數(shù)據(jù)。寄存器可以通過i2c通信方式在程序中進行設(shè)定。首先,需要在模式中設(shè)置寄存器0x31和寄存器0x2c,此時我們需要將寄存器的測量區(qū)域定義在±16g之間,13位模式的精度為分辨率并且傳輸速率控制在12.5hz。其次就是選擇一個電源模型并且要使得所有功能data_ready都被中斷,最后就是設(shè)置x、y、z三個軸的偏移。初始化后,stm32f103c6t6控制器將自動讀取并處理傳感器輸出的數(shù)據(jù)。數(shù)據(jù)就緒中斷信號顯示數(shù)據(jù)寄存器中的三軸加速度數(shù)據(jù)正在進行更新。所以當新的數(shù)據(jù)準備好了,它將被設(shè)置為高,使用低--高轉(zhuǎn)換方式來觸發(fā)一個中斷服務(wù)的例程。然后,stm32f103c6t6控制器分別可以從datax0、datax1、datay0、datay1、dataz0和dataz1寄存器中直接讀取這些數(shù)據(jù)。由于mmmpu-6050輸出16位元的二進制碼是補字編碼的一個數(shù)據(jù)文件格式,因此從補碼寄存器中再次獲取一個基于加速度的補碼數(shù)據(jù)后,必須先在編譯程序中再次對它進行補碼編譯。在13位加速模式下,1lsb可以代表3.9mg,如果16位模式代碼定義為0000,則其單位加速度的一個平均值應(yīng)該為0;加速度值為3.9毫克;如果代碼是0001。如果代碼是ffff,加速度的值應(yīng)該是-3.9mg,以此類推。在這個程序中,依次將datax0和datax1寄存器中的數(shù)據(jù)進行合成并乘以3.9就可以使其表現(xiàn)為正確的運算加速度。在計算了三個軸的加速度后,根據(jù)公式(3.11),利用程序中的反三角函數(shù)進行反正切,弧度值γ可以轉(zhuǎn)換成滿足本工程設(shè)計要求的角度值。因為az分別具有一個正值和一個負值,所以必須分別設(shè)置兩個信號處理函數(shù)。即,當az>=0時,其角度平均值定義為γ*180/3.14;例如,當az<0時,其角度取值為-γ*180/3.14。5系統(tǒng)硬件運行與調(diào)試5.1實物總體連接本次畢業(yè)設(shè)計最終實物實物上方是由STM32F103C6T6芯片通過傳感器測得的加速度計算出的水平面傾斜角度值將被顯示在屏幕的左上角,這樣所測水平面的傾斜度就可以直接從屏幕觀察到,剩余部分顯示的數(shù)值是由MPU-6050傳感器測得的x、y和z軸的重力加速度值,理論范圍在±1g之間(有誤差)。本系統(tǒng)中還設(shè)置了一個復(fù)位鍵和暫停鍵。當按下復(fù)位鍵時,整個系統(tǒng)將重新啟動;當按下暫停鍵時,液晶顯示屏幕將保持當前測量到的所有數(shù)值,當再次按下該鍵時,系統(tǒng)將繼續(xù)運行測量,這樣會使測量變得更加方便快捷。5.2結(jié)果根據(jù)設(shè)計,只要將MPU-6050傳感器放置在被測水平面上,就可以正確測量出其放置的水平面的傾斜角度。只要在測試前了解清楚MPU-6050芯片的正負軸分布,就可以根據(jù)屏幕上的正負值來確定被測平面的偏轉(zhuǎn)方向。一般來說,被測表面的角度低于90度,因此,角度計的測量就變得更加方便和迅速,并且可以實現(xiàn)對水平和傾斜角進行高精度的測量。具體總結(jié)如下:1.本設(shè)計中使用到的傳感器MPU-6050是一種低誤差且高精度的三軸傾角加速度傳感器的非接觸式傳感器。2.除了設(shè)計了一個單片機的主控電路,還有一個數(shù)字顯示模塊的電路、按鈕控制器電路、復(fù)位控制器電路。3.本文所要求設(shè)計的程序編制語言選用c++語言,程序的編寫軟件是keil,uVision2軟件,對測量系統(tǒng)的軟件進行了設(shè)計。6總結(jié)水平測量儀是一種通過對采集到的數(shù)據(jù)進行處理能夠?qū)崟r地測量被測平面的傾角和傾斜方位信息的儀器,與傳統(tǒng)的電子數(shù)字化水平儀相比解決了一些在平面傾斜測量中的問題,是一種極具推廣前景的現(xiàn)代測控儀器。本儀器還可以應(yīng)用于各種工業(yè)領(lǐng)域和現(xiàn)場,具有良好的再開發(fā)功能。在本設(shè)計中結(jié)合了STM32F103C6T6單片機與MPU-6050傳感器。首先利用傳感器感應(yīng)待測水平面三個軸的加速度數(shù)據(jù)并通過I2C的通信方式將測量數(shù)據(jù)傳輸給STM32F103C6T6單片機,然后通過燒錄好程序的單片機進行的控制與運算,計算出水平面的傾斜角度,最后通過OLED液晶顯示屏來顯示最后的傾斜角度值。在了解了MPU-6050傳感器的原理之后,本文提出了一種軟硬件結(jié)合的角度自動校測量技術(shù),使本系統(tǒng)變得更加穩(wěn)定、精確和可靠,同時也最大限度地簡化了電路。因此,角度測量變得方便和快速,并且實現(xiàn)了對水平傾斜角的高精度測量。具體總結(jié)如下:1.本設(shè)計中使用到的傳感器MPU-6050是一種低誤差且高精度的三軸傾角加速度傳感器的非接觸式傳感器。2.設(shè)計了單片機主控電路,還設(shè)計了數(shù)碼顯示模塊電路、按鍵電路、復(fù)位電路等。3.本設(shè)計的編程語言選擇了C語言,程序編寫軟件為Keil,uVision2軟件,對測量系統(tǒng)的軟件進行了設(shè)計。參考文獻[1]王鍇磊,劉莎,王春喜,高秋娟.光電式電子水平儀設(shè)計與實現(xiàn)[J].宇航計測技術(shù),2018,38(04):1-6+17.[2]王鵬超,劉愛東.無線差分水平儀設(shè)計[J].計算機與數(shù)字工程,2019,47(06):1512-1516+1520.[3]劉艷玲,胡海華,王洪忠,杜紀柱,趙庶嫻.數(shù)顯傾角儀校準方法[J].上海計量測試,2020,47(05):51-53.

[4]馬浩慧,邢敏劍.水平儀的發(fā)展及應(yīng)用[J].計量技術(shù),2018(07):18-21.[5]盧運.電子水平儀系統(tǒng)的設(shè)計[J].電子世界,2018(03):203.[6]王德利,衛(wèi)建東,汪沖,范百興,蘇雪龍.電子水平儀精度分析與測試[J].測繪工程,2018,27(01):68-72.[7]王存堂,陽恩會,張建國,等.全方位電子水平儀的結(jié)構(gòu)及測量原理分析[J].儀器儀表學(xué)報,2006,027(002):183-185.[8]錢帥杰,王存堂,唐立平,等.新型全方位電子水平儀的設(shè)計及誤差分析[J].傳感技術(shù)學(xué)報,2006(02):87-89+94.[9]張玉華,王安敏,王成江.差動電容式傳感器在智能電子水平儀中的應(yīng)用[J].傳感器與微系統(tǒng),2002,021(012):52-55.[10]封維忠,楊麗,呂開亮,等.基于差動電容傳感器和89C51單片機的電子水平儀[J].物理實驗,2009(12):21-23+26.[11]胡現(xiàn)輝,尤相駿,潘國榮.電子水平儀應(yīng)用程序開發(fā)[J].測繪信息與工程,2007,032(005):36-37.[12]安林艷.電子水平儀的設(shè)計[J].黑龍江科技信息,2014,000(024):94-94.[13]LuY,HeQ,ZengT,etal.Highprecisionelectroniclevelmeterbasedplanemirrorhorizontaladjustmentmethod[J].ChineseJournalofentificInstrument,2016.[14]NardecchiaM,RomaninoA,ZieglerR.Treelevelgaugemediation[J].JournalofHighEnergyPhysics,2009,2009(11):112-112.[15]NardecchiaM,RomaninoA,ZieglerR.Treelevelgaugemediation[J].JournalofHighEnergyPhysics,2009,2009(11):112-112.[16]FukutaMitsuhiro,SotaniTakeru,MotozawaMasaaki.Leakageandfrictioncharacteristicsatslidingsurfaceoftipsealinscrollcompressors[J].InternationalJournalofRefrigeration,2021,125(prepublish).[17]SunT,LiuZ,LiuY,etal.All-FiberLiquid-LevelSensorBasedonIn-LineMSMFiberStructure[J].PhotonicSensors,2020(4).[18]RoldánVaronaPablo,PérezHerreraRosaAna,RodríguezCoboLuis,ReyesGonzálezLuis,LópezAmoManuel,LópezHigueraJoséMiguel.LiquidlevelsensorbasedondynamicFabry-Perotinterferometersinprocessedcapillaryfiber[J].ScientificReports,2021,11(1).[19]GerdingM,MuschT.Levelmeteremployingtheradarprinciple[J].US,2011.[20]NardecchiaM,RomaninoA,ZieglerR.GeneralAspectsofTreeLevelGaugeMediation[J].JournalofHighEnergyPhysics,2010,2010(3):1-40.附錄A原理圖附錄BPCB圖附錄C實物圖附錄D主程序/voidRCC_Configuration(void){SystemInit();//72m RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3,ENABLE); //SPI2只能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論