TI邀請賽簡易電子秤(B題)_第1頁
TI邀請賽簡易電子秤(B題)_第2頁
TI邀請賽簡易電子秤(B題)_第3頁
TI邀請賽簡易電子秤(B題)_第4頁
TI邀請賽簡易電子秤(B題)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2012年年TI杯杯模模擬擬電電子子系系統(tǒng)統(tǒng)專專題題邀邀請請賽賽報報告告 29 隊隊 簡易電子秤(簡易電子秤(B 題)題)摘要:摘要:本設計以 TI 的 MSP430FR5739 單片機為核心并使用現(xiàn)場所提供的電阻應變片稱重傳感器、運算放大器等器件,設計并制作一款簡易電子秤,完成題目所要求的 10200g 范圍的稱重和去皮、計價等顯示功能并達到高精度顯示的要求。同時具有休眠等低功耗的系統(tǒng)工作模式,且完成了題目要求的“喚醒”功能。關鍵字:關鍵字:簡易 高精度 休眠 低功耗 喚醒放大器模數(shù)轉換處理器鍵 盤液晶顯示傳感器1、系統(tǒng)結構、系統(tǒng)結構 : 本系統(tǒng)設計的是一個簡易電子秤,系統(tǒng)采用電阻應變片稱重

2、傳感器作為系統(tǒng)傳感器,其中采樣信號從傳感器綠色和白色信號線傳出作為放大器的輸入信號,放大器由兩片 INA333 級聯(lián)構成,信號經(jīng)放大器放大到合適的幅度后再經(jīng)過模數(shù)轉換器傳送給處理器,最終將處理過的數(shù)據(jù)結果經(jīng)由液晶顯示。 圖 1 系統(tǒng)整體方案2、實現(xiàn)方案:、實現(xiàn)方案:本系統(tǒng)要求利用所提供的電阻應變片稱重傳感器、運算放大器等器件,設計并制作一款簡易電子秤。題目要求以數(shù)字方式穩(wěn)定地顯示被測物體重量;稱重范圍為 10200g,并且在全稱重范圍內(nèi)稱重精度優(yōu)于 1%,盡量提高稱重精度;根據(jù)題目要求,本系統(tǒng)可以分為信號采集模塊,信號放大模塊,模數(shù)轉換模塊,處理器模塊,液晶顯示模塊,和鍵盤輸入模塊。一、信號采

3、集模塊設計系統(tǒng)設計信號采集模塊使用的是電阻應變片稱重傳感器,此傳感器共有四根線,分別為紅、白、綠、黑。其中紅線接電源正,白線接地,綠線和黑線都為信號線,當電阻應變片稱重傳感器式傳感器感受到的壓力不同時,綠線和黑線兩根信號線會傳出不同的信號,通過對信號的放大,分析和處理得出電阻應變片稱重傳感器上面受到的壓力。二、信號放大模塊設計系統(tǒng)信號由電阻應變片稱重傳感器產(chǎn)生,由于傳感器產(chǎn)生的信號幅度很小,不利于分析,因此用信號放大器將信號放大后再進行分析和處理。在放大器的制作過程中,選用 INA333 做放大元件,選用 OPA734 做減法器來抑制零點漂移。最后用 RC 濾波器做濾波,得到穩(wěn)定精確的數(shù)據(jù)。三

4、、模數(shù)轉換模塊根據(jù)題目要求,系統(tǒng)在全稱重范圍內(nèi)稱重精度優(yōu)于 1%,并盡量提高稱重精度;并且在實現(xiàn)計算價格功能方面,要求系統(tǒng)可以顯示最大金額為 999.9 元,并且金額誤差不大于 0.1 元;由此可知,系統(tǒng)所需 A/D 位數(shù)應該高于 12 位,因此設計時選用 16 位 ADS1114 作為模數(shù)轉換芯片。四、液晶顯示模塊,題目要求系統(tǒng)低功耗,所以在顯示方面我們選擇了超低功耗的 NOKIA5110顯示屏提供系統(tǒng)數(shù)據(jù)顯示。該顯示屏在關閉背光模式下可以低功耗正常工作。3、電路設計與原理圖:、電路設計與原理圖:一、過壓保護電路設計在電子設計過程中,經(jīng)常出現(xiàn)電壓過大燒毀電路的情況,為了防止此類事故發(fā)生,在設

5、計系統(tǒng)的時候,設計了過壓保護電路,當電壓達到預設的過壓保護臨界點的時候,電路自動斷路,防止電壓過達燒壞后級電路。具體電路如圖2 所示,當電壓達到 10v 時,LM311 會使 8050 三極管導通,從而驅動繼電器,電壓自動關閉,選用二極管 IN4007 的作用為續(xù)流二極管,通過此電路設計,保證了系統(tǒng)能夠長期有效安全的工作。 圖 2 過壓保護電路二、信號采集模塊電路實際信號采集模塊的內(nèi)部電路結構如圖 3 所示,其中 R1、R2、R3、R4 分別是應變電阻,A、B、C、D 分別為四個電阻的連接點,其中,A 點和 C 點與電源連接,B 點與 D 點為信號輸出端,當應變片電阻受到的壓力不同時,電阻的阻

6、值會發(fā)生變化,從而 B 點和 D 點的輸出電壓會發(fā)生變化,這個電壓信號經(jīng)過后級的放大和處理,從而分析出應變片電阻所受壓力大小,完成信號采集、處理功能。 圖 3 應變片電阻傳感器內(nèi)部電路三、信號放大電路設計在信號放大的過程中,使用 INA333 做為信號放大器,如圖 4 所示,其中利用 R1、R2 和 R3、R4 分壓分別獲得基準電壓,利用 OPA2530 做電壓緩沖,OPA734 通過減法運算,抑制了零點漂移。最后利用 RC 濾波器濾去系統(tǒng)產(chǎn)生的紋波,使系統(tǒng)輸出穩(wěn)定準確的信號。 圖 4 信號放大電路原理圖四、模數(shù)轉換電路:在電路設計中,對傳感器輸出的模擬信號,單片機無法直接讀取它的數(shù)值是多少,

7、所以需要一個 A/D 轉換電路將模擬信號轉換為數(shù)字信號,系統(tǒng)采用的是型號為 ADS1114 的 A/D 芯片,這款芯片是具有內(nèi)部基準的超小型、低功耗、16 位模數(shù)轉換器。ABCDF 圖 5 ADS1114 應用電路原理圖五、核心控制電路設計系統(tǒng)選用的單片機是由 TI 提供的 MSP430FR5739,具體原理圖如圖 6 所示。 圖 6 MSP430FR57394、系統(tǒng)校準方法、系統(tǒng)校準方法:020040060080010001200140016001800200010g30g50g70g90g110g130g150g170g190g系列1在對電子稱的測試過程中,我們發(fā)現(xiàn)電子秤稱得的數(shù)據(jù)與電子稱

8、上所放砝碼不滿足嚴格的線性關系。我們發(fā)現(xiàn),在一定小范圍內(nèi)電子秤的線性度較好,因此我們使用分段線性插值的方法,線性運算鎖定在電子秤量程的若干小部分。雖然在整個量程范圍內(nèi),電子秤傳感器的線性度不是很好,但是在量程范圍內(nèi)某個小的區(qū)間內(nèi),電子秤傳感器的線性度還是很好的。在具體操作過程中我們把電子秤的量程平均分為 19 分,由此我們得到 19 個區(qū)間,然后通過測試測得每個區(qū)間邊緣處的電壓值,當測得電壓值在這個區(qū)間時,我們利用線性關系直接算出這點的電壓值,從而得出這點對應的質量值,通過以上處理,對電子秤的非線性性進行了補償,使系統(tǒng)在測量范圍內(nèi)得到的數(shù)據(jù)滿足精度要求。 圖 7 砝碼質量與相關電壓擬合圖5、稱

9、重測試數(shù)據(jù)、稱重測試數(shù)據(jù)一、測試工具:Agilent U1272 萬用表MSO-X 3054A 示波器學生模擬電源砝碼二、測試方法測試任務一:電壓保護電路測試啟動系統(tǒng),在系統(tǒng)正常工作時,將學生電源電壓增大,在測試時我們發(fā)現(xiàn),當系統(tǒng)電壓大于 10v 時,系統(tǒng)可以自動斷電保護電路,這一操作驗證了系統(tǒng)可以自動斷電保護的功能測試任務二:稱重穩(wěn)定時間測試啟動系統(tǒng),在系統(tǒng)穩(wěn)定時用鑷子在電子秤頭盤上放置任意質量的砝碼,同時開始計時,當系統(tǒng)讀數(shù)穩(wěn)定時停止計時,記錄的這段時間就是系統(tǒng)達到穩(wěn)定所需的時間。在測試過程中,進行了多次測量,然后取平均值作為系統(tǒng)穩(wěn)定所需的時間砝碼質量10g20g30g40g50g60g7

10、0g80g90g100g穩(wěn)定時間4s4s3s2.5s4s3.5s3s4s2.5s4s砝碼質量110g120g130g140g150g160g170g180g190g200g穩(wěn)定時間3s3s3.5s4s4s3s3.5s4s3s4s 表 1 穩(wěn)定時間與砝碼質量關系表測試任務三:稱重精確度測試啟動系統(tǒng),用鑷子在電子秤托盤上一次放置 10g、20g、 、 、200g 砝碼,記錄每次放置砝碼時系統(tǒng)顯示屏的讀數(shù),如表 2 所示,觀察并分析可以知道,在測量范圍內(nèi)系統(tǒng)的稱重精度優(yōu)于 1%,滿足題目要求。 砝碼質量10g20g30g40g50g60g70g80g90g100g稱重質量10.05g20.06g30

11、.06g39.94g50.12g60.16g70.20g80.16g90.05g100.05g砝碼質量110g120g130g140g150g160g170g180g190g200g稱重質量110.96g120.12g130.96g139.90g150.48g160.16g169.96g180.02g190.04g199.94g 表二 稱重質量與砝碼質量關系表測試任務四:去皮功能測試啟動系統(tǒng),在電子秤托盤上放置任意砝碼作為皮,通過按鍵輸入去皮功能指令。系統(tǒng)會自動去皮置零,在繼續(xù)放置砝碼時,系統(tǒng)會在零的基礎上稱量出后放砝碼的質量,在計算系統(tǒng)金額的時候,系統(tǒng)自動略去去皮的質量,在實際測試的時候,可

12、以重新設定“零”重量點,滿足題目要求。測試任務五:金額與金額精確度測試啟動系統(tǒng),在電子秤托盤上放置任意砝碼,穩(wěn)定后通過按鍵輸入金額計算指令與單價,系統(tǒng)會自動計算出金額總值。在誤差允許范圍內(nèi),系統(tǒng)金額誤差控制在 0.1 元以下,滿足題目要求。測試任務六:休眠“低功耗”功能測試啟動系統(tǒng),在電子秤托盤上放置 10200g 任意質量砝碼,當系統(tǒng)穩(wěn)定后開始計時,如果系統(tǒng)在 20s 時進入休眠狀態(tài),則說明系統(tǒng)具有低功耗功能,在實際測試時我們可以看到,當系統(tǒng)穩(wěn)定 20s 時系統(tǒng)的顯示屏幕會自動關閉,系統(tǒng)此時進入了低功耗狀態(tài),由此可以驗證系統(tǒng)具有低功耗功能。 6、系統(tǒng)程序設計、系統(tǒng)程序設計系統(tǒng)程序流程圖圖 8

13、 程序流程圖7、參考文獻、參考文獻1 曹磊著;MSP430 單片機 C 程序設計與實踐.北京:北京航空航天大學出版社.2007.72 譚浩強著;C 語言程序設計(第四版).北京:清華大學出版社.2010.6附錄:程序代碼(部分):void Delay_ms(unsigned int);void Delay_us(unsigned int);#include msp430fr5739.h#include Nokia5110.h#include ADS1115_I2C.h#include ADS1115.h#define key_scan P3OUT#define key_read (P1IN &

14、amp; 0 x0f)unsigned char Key_Scan();void LCD_initial();unsigned int V_mes;unsigned int V_zero;int V_mod;int Wt; /0.1gint Wt_tmp;int Wt_zero;int Wtg;int Wtd;unsigned int Pri;unsigned int Pri_m;unsigned char P_flag;float Pri_r;float Tot_r;unsigned int Tot_y;unsigned int Tot_d;/*const float Vth_ar20 =

15、88.5,177.5,266.5,355.5,444.5,535.5,623.5,714.5,802.5,891.5, 980.5,1071.0,1159.5,1248.5,1338.0,1427.5,1517.5,1607.5,1696.0,1783.5;const float Wth_ar20 = 1000.0,2000.0,3000.0,4000.0,5000.0,6000.0,7000.0,8000.0,9000.0,10000.0, 11000.0,12000.0,13000.0,14000.0,15000.0,16000,17000.0,18000.0,19000.0,20000.

16、0;*/const float Vth_ar20 = 88.5,177.5,266.5,355.5,444.5,535.5,623.5,714.5,802.5,891.5, 980.5,1071.0,1159.5,1248.5,1338.0,1427.5,1517.5,1607.5,1696.0,1783.5;const float Wth_ar20 = 1000.0,2000.0,3000.0,4000.0,5000.0,6000.0,7000.0,8000.0,9000.0,10000.0, 11000.0,12000.0,13000.0,14000.0,15000.0,16000,170

17、00.0,18000.0,19000.0,20000.0;void main(void) /Description: Configure ACLK = SMCLK = MCLK = 8MHz WDTCTL = WDTPW + WDTHOLD; / Stop WDT CSCTL0_H = 0 xA5; CSCTL1 |= DCOFSEL0 + DCOFSEL1; / Set max. DCO setting CSCTL2 = SELA_3 + SELS_3 + SELM_3; / set ACLK = MCLK = DCO CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0; /

18、 set all dividers /LCD initializition Nokia5110_initial(); Nokia5110_set_xy(0,0); Nokia5110_write_str( UESTC); Nokia5110_set_xy(0,1); Nokia5110_write_str(ADC:); Nokia5110_set_xy(0,2); Nokia5110_write_str(Wei:); Nokia5110_set_xy(0,3); Nokia5110_write_str(Pri:); Nokia5110_set_xy(0,4); Nokia5110_write_

19、str(Tot:); /Key scan PORT P3DIR |= 0 x0f; /P3.0P3.3 output P1DIR &= 0 xf0; /P1.0P1.3 input /ADC initializition ADS1115_configure(); ADS1115_point_cons(); P1DIR &= BIT6; P1DIR |= BIT7; unsigned char key; unsigned int cnt=0, cnt2=0, cnt3, cnt_sleep=0; float Vdc=0; int tmp; V_zero = 30; Wt_zero

20、 = 0; Pri = 0; while (1) if(key=Key_Scan() != 0 xff) if(cnt_sleep=19) LCD_initial(); cnt_sleep=0; cnt2 = 0; if(key = 0 x0a) V_zero=V_mes; Wt_zero=0; cnt2=0; else if(key = 0 x0b) Wt_zero = Wt; cnt2=0; else if(key = 0 x0c) Nokia5110_set_xy(25,3); Nokia5110_write_str(input ); Delay_ms(800); Nokia5110_s

21、et_xy(25,3); Nokia5110_write_str( ); Nokia5110_set_xy(25,3); Pri_m=1; Pri=0; P_flag=0; while(key=Key_Scan()!=0 x0f) if(key0 x0a & !P_flag) Nokia5110_write_integer(key); Pri = Pri*10 + key; else if(key = 0 x0e) Nokia5110_write_str(.); P_flag = 1; else if(key0 x0a & P_flag) Nokia5110_write_int

22、eger(key); Pri = Pri*10 + key; Pri_m *= 10; Nokia5110_write_str(); Pri_r = (float)Pri)/(float)Pri_m); if(P1IN & BIT6) if(cnt127) tmp=ADS1115_read(); Vdc+=(float)tmp); cnt+; else V_mes = (int)(Vdc/2048.0); /(11.16)/1.179/2048=1/216.36, *0.998457-8.454738 V_mod = V_mes - V_zero; Vdc=0; cnt=0; if(c

23、nt = 127) if(P1OUT & BIT7) P1OUT &= BIT7; else P1OUT |= BIT7; Nokia5110_set_xy(25,1); Nokia5110_write_integer(V_mod); Nokia5110_write_str( ); Wt_tmp = Wt; if(V_mod=0) Wt = 0; else if(V_modVth_ar19) Wt = (unsigned int)(Wth_ar18 + (V_mod-Vth_ar18)*1000.0/(Vth_ar19-Vth_ar18); else for(cnt3=0;cn

24、t3=18;cnt3+) if(V_mod Vth_arcnt3) Wt = (unsigned int)(Wth_arcnt3 + (V_mod-Vth_arcnt3)*1000.0/(Vth_arcnt3+1-Vth_arcnt3); /*Wt = (int)(1.1198*(float)V_mod) + 1.3308);*/ if(cnt2 =0) Nokia5110_set_xy(25,2); Nokia5110_write_integer(Wtg); Nokia5110_write_str(.); if(Wtd10) Nokia5110_write_str(0); Nokia5110

25、_write_integer(Wtd); Nokia5110_write_str( ); else Nokia5110_set_xy(25,2); Nokia5110_write_str(-); Nokia5110_write_integer(-Wtg); Nokia5110_write_str(.); if(-Wtd40 | Wt_tmp-Wt=0) Nokia5110_set_xy(25,2); Nokia5110_write_integer(Wtg); Nokia5110_write_str(.); if(Wtd10) Nokia5110_write_str(0); Nokia5110_

26、write_integer(Wtd); Nokia5110_write_str( ); else Nokia5110_set_xy(25,2); Nokia5110_write_str(-); Nokia5110_write_integer(-Wtg); Nokia5110_write_str(.); if(-Wtd=19) LCD_initial(); cnt_sleep = 0; if(Wtg*100+Wtd = 0) Tot_r = (float)(Wtg*100+Wtd)*Pri_r/10.0; Tot_y = (unsigned int)(Tot_r/10); Tot_d = (un

27、signed int)(Tot_r - (float)Tot_y*10.0)*10); else Tot_y = 0; Tot_d = 0; Nokia5110_set_xy(25,4); Nokia5110_write_integer(Tot_y); Nokia5110_write_str(.); if(Tot_d10) Nokia5110_write_str(0); Nokia5110_write_integer(Tot_d); Nokia5110_write_str( ); if(cnt_sleep19) cnt_sleep+; else Nokia5110_clear(); nokia

28、5110_rst_l; void Delay_ms(unsigned int m) while(m-) int i=1340; while(i-); void Delay_us(unsigned int u) /10us while(u-);unsigned char Key_Scan() static unsigned char key=0 xff; static unsigned char i; static unsigned char key_scan_tmp; for(i=0;i=3;i+) key_scan_tmp = key_scan = (0 x01i); Delay_ms(2); if(key_read != 0 x00) Delay_ms(5); if(key_read

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論