基于MSP430F149的高精度低功耗電能消耗計量裝置_第1頁
基于MSP430F149的高精度低功耗電能消耗計量裝置_第2頁
基于MSP430F149的高精度低功耗電能消耗計量裝置_第3頁
基于MSP430F149的高精度低功耗電能消耗計量裝置_第4頁
基于MSP430F149的高精度低功耗電能消耗計量裝置_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、山東科技大學(xué)電子學(xué)院通信工程專業(yè)方向課程設(shè)計年級學(xué)號: * 姓 名:* 指導(dǎo)教師: * 設(shè)計時間: 2015.9.72015.9.20 目錄摘要3關(guān)鍵字31目的與內(nèi)容42硬件系統(tǒng)設(shè)計42.1電壓采樣方案52.2電流采樣方案62.3電壓、電流有效值測量方案63單元模塊設(shè)計原理73.1電壓采樣電路73.2電流采樣電路83.3電流電壓測量電路83.4短信模塊93.5過流報警和過流保護模塊103.6防竊電模塊103.7智能電能表與電腦的通信114、總的電路原理圖及仿真輸出波形125、系統(tǒng)特點與性能126、心得體會13參考文獻 15附錄16摘要本系統(tǒng)以MSP430F149單片機為控制核心,設(shè)計并制作了高

2、精度低功耗電能消耗計量裝置。該系統(tǒng)硬件電路簡單穩(wěn)定,可靠性較高;該系統(tǒng)由阻容降壓供電電路,電壓測量電路,電流測量電路,顯示電路等部分組成。電壓測量部分是220v電壓經(jīng)過變壓器降壓后經(jīng)過整流橋得到1.7v半波電壓,輸入單片機之后經(jīng)采樣和數(shù)據(jù)處理,可得到電壓的峰值,周期,頻率,有效值等參數(shù);電流參數(shù)測量電路是采用了50A/62.5mA互感器將負載上的大電流轉(zhuǎn)換成較小的電流,并將小電流通過定值電阻,電阻兩端的電壓輸入單片機從而計算得到電流峰值,有效值等參數(shù);采用的是全球鷹SIM900A V3.7模塊,固定時間給用戶發(fā)送短信,讓用戶了解目前耗電情況。題目中要求的參數(shù)均經(jīng)單片機計算輸出到OLED液晶屏模

3、塊上予以顯示。關(guān)鍵詞:MSP430F149 低功耗 ADC采樣SIM900A V3.7模塊1目的與內(nèi)容 隨著國民經(jīng)濟的不斷發(fā)展,電力已經(jīng)成為國家的最重要能源。長期以來,我國生產(chǎn)的交流電度表均為感應(yīng)式機械電度表,幾十年來不得不采用人工抄讀電表的原始方式。這種方法不但勞動強度大、效率低,而且還會存在抄表不到位、估抄、漏抄、錯抄、錯算及抄表周期長等問題,對竊電的防治更無從談起。在社會走向信息化,網(wǎng)絡(luò)化,電力系統(tǒng)大踏步現(xiàn)代化的今天,手工抄表更是與無人值班等高度的自動化形成了鮮明對比,成為制約供電系統(tǒng)現(xiàn)代化管理的一大障礙。正是由于以上背景,智能電能表應(yīng)運而生。2硬件系統(tǒng)設(shè)計由民用單相電的火線和零線接入電

4、能表接入口,在火線入口處接有一個繼電器,用于過流(短路)保護?;鹁€在電表內(nèi)分成并聯(lián)的兩路:一路經(jīng)過變壓器變?yōu)殡p6V,然后經(jīng)過峰值檢波電路,將交流變?yōu)橹绷?,然后?jīng)過分壓電路分壓,通過IAP15F2K61S2單片機AD口采集,得到電壓數(shù)據(jù);另一路通過電流互感器,感應(yīng)出交流電流,通過放大電路和峰值檢波電路后,通過IAP15F2K61S2單片機的AD口采集數(shù)據(jù)。然后通過OLED液晶屏將數(shù)據(jù)顯示出來。具體如下框圖1所示。系統(tǒng)可以將用戶的電壓、電流以及耗電量顯示出來。另外,本系統(tǒng)還帶有過流報警與過流保護裝置、防竊電裝置、短信通知用戶每月耗電情況功能以及能夠?qū)崟r的將電表狀態(tài)及數(shù)據(jù)發(fā)送到電網(wǎng)公司電腦終端的功能

5、。2.1電壓采樣方案 方案一:直接在電網(wǎng)中并入1M的電阻采集電壓信號,串入一段小電阻銅絲,再加差放采集電流信號。該方案成本較低,但是采集電路會污染電網(wǎng),不能使用。 方案二:采用光耦芯片HCNR200對電網(wǎng)進行耦合采集。但是光耦芯片較為昂貴,抗高壓的能力不足,在電網(wǎng)的電壓或者電流較大情況下,測量將受到限制。 方案三:采用變壓器降壓后在用大電阻分壓,分壓后得到適合ADC采樣輸入電壓,經(jīng)ADC轉(zhuǎn)換后得到數(shù)字信號,最后按比例還原成原來的被測電壓的大小。綜上所述,我們選用了方案三。2.2電流采樣方案 方案一:直接在被測用電器上串聯(lián)小阻值大功率電阻,通過測量小阻值電阻兩端的電壓從而測得電路中的電流。次方案

6、的測量電阻的消耗功率大,同時會是測量系統(tǒng)連上單相電的火線,使得整個系統(tǒng)有安全隱患。 方案二:直接在被測用電器上串聯(lián)小阻值大功率電阻,小阻值電阻兩端的電壓加給光電耦合器,用光電耦合法測量電路中的電流,起到電器隔離的作用,使得測量系統(tǒng)安全可靠,但光電藕線性度不是很高,而且易受到干擾。 方案三:采用儀用精密高線性度交流互感器測量交流電流,線性度高,安裝簡單,調(diào)試方便,同時還能起到電氣隔離的作用,安全可靠。通過以上方案的比較,顯然選擇方案三是三個方案中最好的。2.3電壓、電流有效值測量方案 方案一:采用普通峰值檢波電路,實現(xiàn)電壓、電流峰值的采集,再根據(jù)正弦波峰值和有效值的轉(zhuǎn)換關(guān)系,得出有效值。此方案簡

7、單,易于實現(xiàn),但是此電路會使用二極管來半波整流,二極管上會有壓降,從而引入誤差,另外,檢波的值和前端峰值不成線性比例關(guān)系,測量困難。方案二:由正弦波與基準電壓相比較得到的脈寬再和基準電壓通過相關(guān)公式算出有效值。 圖3 它的主要優(yōu)點是無需A/D轉(zhuǎn)換就能快速測量交流電壓有效值,且能消除直流分量對測量結(jié)果的影響。但是其測量值只在較小范圍內(nèi)線性,不能符合本題0到20V的測量要求。 方案三:采用精密峰值檢波電路,電路中運用跟蹤和保持模式對正弦波精密采集,克服了方案一不線性的缺陷,且測量值精確,符合本題要求。綜上所述,我們選取方案三。3、單元模塊設(shè)計原理3.1電壓采樣電路 電壓采樣電路是先通過變壓器降壓后

8、,再用分壓電阻網(wǎng)絡(luò)采樣被測電壓。電路中采用了變壓器起到了電氣隔離的作用,系統(tǒng)安全,其電路如圖 1 圖43.2電流采樣電路 用高線性度的儀用電流互感器來測量電路中的電流,起到電器隔離的作用,測量方便簡潔,電路如Error! Reference source not found.,互感器感應(yīng)產(chǎn)生的電流在電阻上的壓降,經(jīng)OP07運算放大器組成的電壓更隨器輸出給ADC測量。 圖53.3電流電壓測量電路 把采樣到的電流、電壓信號經(jīng)過AC_DC轉(zhuǎn)換電路后得到對應(yīng)的電壓信號的真有效值,把真有效值信號輸入到ADC就能測量其大小,電路圖如 圖 圖6其中DCV模塊是交流轉(zhuǎn)直流電路,其電路如 圖 圖 73.4短信模

9、塊 采用的是全球鷹SIM900A V3.7模塊,固定時間給用戶發(fā)送短信,讓用戶了解目前耗電情況。其中部分短信發(fā)送模塊代碼如下。 if(SIM_ONE=0&Count2400) PrintString1(AT+CMGF=1rn); DelaySec(3);PrintString1(AT+CSMP=17,167,2,25rn);DelaySec(3);PrintString1(AT+CSCS=UCS2rn);DelaySec(3);PrintString1(AT+CMGS=00310035003700360034003200340036003000370031rn);/此處修改為對方的電話號Del

10、aySec(3);PrintString1(sms_text);/修改短信內(nèi)容TX1_write2buff(0x1a);DelaySec(3);SIM_ONE=1; 3.5過流報警和過流保護模塊 該模塊采用的是聲光報警方式。用戶可以自行設(shè)置報警電流閾值,當電表監(jiān)測到用戶的電流大于該閾值的時候,警示燈會立即點亮、報警聲響起,與此同時,控制火線的繼電器會斷開火線,使用戶財產(chǎn)不會遭受進一步損失。3.6防竊電模塊 系統(tǒng)采用多種方法來防止竊電行為的發(fā)生。第一,本系統(tǒng)時刻監(jiān)測著電表兩端的電壓值,一旦有竊電行為,電表兩端電壓接近零伏,本裝置就會發(fā)送信息島電腦終端;第二,本系統(tǒng)采用在零線上接一個氖管,一旦出現(xiàn)

11、將零火線反接的竊電行為時,氖管就會發(fā)光,提示有竊電行為發(fā)生。3.7智能電能表與電腦的通信為了方便管理和消除傳統(tǒng)抄表的繁瑣,我們自己編寫了一款上位機,實現(xiàn)了智能電表與電網(wǎng)公司的電腦進行通信的功能。系統(tǒng)能夠?qū)⒂脩舻暮碾娗闆r實時的傳輸?shù)诫娔X的軟件終端,并且可以將是否有竊電行為顯示到電腦上,能夠及時的預(yù)防竊電行為的發(fā)生。上位機軟件界面如下圖8所示。 圖84、總的電路原理圖及仿真輸出波形 電路原理圖 5、系統(tǒng)特點與性能第一,功耗低,本系統(tǒng)采用STC公司的低功耗單片機IAP15F2K61S2、OLED低功耗液晶屏,而且電路結(jié)構(gòu)簡單,功耗很低。第二,精度高,本系統(tǒng)充分利用IAP15F2K61S2的AD資源,

12、數(shù)據(jù)的精度值得信賴。第三,實現(xiàn)了人工智能,我們利用準確計時模塊,以固定時間間隔給用戶發(fā)送信息,通知用戶本月耗電情況,并提醒用戶計時繳電費,以免停電。第四,過流報警與過流保護,一旦用戶的家用電器發(fā)生短路,電表會及時斷開火線,以免用戶財產(chǎn)遭受進一步損失。第五,防竊電功能,本系統(tǒng)實現(xiàn)多種防竊電方法。第一,本系統(tǒng)時刻監(jiān)測著電表兩端的電壓值,一旦有竊電行為,電表兩端電壓接近零伏,本裝置就會發(fā)送信息到電腦終端,通知電網(wǎng)管理人員;第二,本系統(tǒng)在穿過電流互感器的電線上加了氖管,如果有反接零火線的竊電行為,氖管就會點亮。本設(shè)計實現(xiàn)了對電網(wǎng)質(zhì)量的測試,利用互感器對電流,電壓信號進行信號采集,用多種方法實現(xiàn)對電壓、

13、電流、功率的測試,經(jīng)過理論推理,計算出電壓有效值,電流有效值,負載功率,電網(wǎng)阻抗等,整個系統(tǒng)原理較為簡單易于實現(xiàn),測試結(jié)果精度較高。利用SIM900A模塊,實現(xiàn)了固定時間給用戶發(fā)送短信的功能,使用戶能夠及時了解本月耗電情況,并及時繳電費以免被停電。并編寫了上位機,實現(xiàn)了智能電表與電腦的通信,極大方便了電網(wǎng)公司的管理。本系統(tǒng)的設(shè)計充分利用了MSP430F149單片機的資源,其中包括單片機的3路AD口,3個定時器T0、T1和T2,2路外部中斷,以及單片機的2個串口通訊。6、心得體會做這個系統(tǒng)的設(shè)計不僅是對自己過去的所學(xué)的知識做一個總結(jié),同時也增強了自己的動手能力。它不僅是一門文化課程,教會了我們科

14、學(xué)技術(shù),也是一門人生課程。我們學(xué)到了許多在課堂上無法學(xué)到的東西。無論遇到怎樣失敗,我們都要從失敗中爬起,哪怕再失敗。這是我們學(xué)習(xí)這門課程十分寶貴的知識。我們的設(shè)計包含了單片機技術(shù),單片機技術(shù)是現(xiàn)在的熱門技術(shù),單片機的應(yīng)用改變了傳統(tǒng)的設(shè)計思路,以前構(gòu)建一個系統(tǒng)不僅需用很多的數(shù)字模擬器件或者電路單元來構(gòu)建,而且制作的東西還存在可靠性差、缺乏靈活性、維護不便、成本高、無法實現(xiàn)智能化等諸多缺點。單片機的應(yīng)用解決了很多問題,現(xiàn)在只要寫一個軟件,通過單片機和一些簡單的外接電路就可以實現(xiàn)具有很多功能的、而且具有智能化的系統(tǒng),同時可方便升級維護。所以單片機的應(yīng)用廣泛,在日常生活和生產(chǎn)中占用重要位置。我們在使用

15、單片機技術(shù)后也深深的體會到其強大的功能,所以我們意識到掌握好單片機技術(shù)是電子專業(yè)學(xué)生必須的。對英語知識和專業(yè)英語的學(xué)習(xí),掌握了外文閱讀和外文翻譯的能力,在外文翻譯和查閱外文資料時候可以得心應(yīng)手;通過C語言的學(xué)習(xí),在編程的時候也不感覺到非常棘手;計算機知識的學(xué)習(xí),使我能夠熟練使用多種最基本的計算機相關(guān)軟件和專業(yè)軟件的使用方法,包括基本的Windows辦公軟件,還有一些專業(yè)軟件,如Protel99、Altium Designer等。同時,我們作為一個團隊,我們感受到了團隊精神的重要。團結(jié)是整個團隊的凝聚力。在完成這個項目是,需要小組所有成員的共同努力,單憑個人的力量是無法完成的。而每個人的能力都是

16、不同的,我們要根據(jù)每個人的實際情況進行分工。力求其在指定時間里完成任務(wù),這樣才能保證任務(wù)的順利完成。通過以上的設(shè)計過程,我們不但在知識上收獲了,而且發(fā)現(xiàn)了自己的一些不足之處:對以前所學(xué)過的知識理解得不夠深刻掌握得不夠牢固。通過這次設(shè)計把知識溫故知新。同時,我們也對自己的動手能力有所鍛煉,而且一次成功的經(jīng)歷給我增添了不少的信心。在以后的時間里,我將繼續(xù)努力學(xué)習(xí),除此之外,我還將培養(yǎng)自己的動手能力,常動手,把所學(xué)的理論知識與實踐相結(jié)合。我相信長期堅持之后一定會有更大的提升!在此我們還要感謝在這次設(shè)計中所有給予我們幫助的人們,謝謝你們!參考文獻【1】謝自美 電子線路設(shè)計實驗測試武漢:華中理工大學(xué)出版

17、社 2000年第二版【2】童詩白 華成英 模擬電子技術(shù)基礎(chǔ) 高等教育出版社【3】邱關(guān)源 電路高等教育出版附錄#include #include #define CPU_F (double)8000000) /External OSC#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0)#define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0)#define DataPort P4OUT#define uchar unsigned char#defin

18、e uint unsigned int#define ulong unsigned long#define RS_CLR P5OUT &= BIT5 /RESET RS#define RS_SET P5OUT |= BIT5 /SET RS#define RW_CLR P5OUT &= BIT6 /RESET RW#define RW_SET P5OUT |= BIT6 /SET RW#define EN_CLR P5OUT &= BIT7 /RESET E#define EN_SET P5OUT |= BIT7 /SET E#define PSB_CLR P5OUT &= BIT0 /RES

19、ET PSB Serial #define PSB_SET P5OUT |= BIT0 /SET PSB,Parallel#define RST_CLR P5OUT &= BIT1 /RESET RST#define RST_SET P5OUT |= BIT1#define Num_of_Results 200#define Time_interval 30 /微秒static unsigned int index1,index2;/static unsigned int A0resultsNum_of_Results; /static unsigned int A1resultsNum_of

20、_Results;static unsigned int VoltageNum_of_Results; static unsigned int CurrentNum_of_Results;static uchar TransOverFlag = 1;static unsigned int periodN;static unsigned int index = 0;void Clock_Init() uchar i; BCSCTL1&=XT2OFF; /Turn XT2 BCSCTL2|=SELM1+SELS; /MCLK:8MHZ,SMCLK:8MHZ do IFG1&=OFIFG; /Cle

21、ar XT2 Error Flag for(i=100;i0;i-) ; while(IFG1&OFIFG)!=0); /Wait For XT2 IFG1&=OFIFG;void Clock_Init_Inc() / DCOCTL = DCO0 + DCO1 + DCO2; / Max DCO / BCSCTL1 = RSEL0 + RSEL1 + RSEL2; / XT2on, max RSEL DCOCTL = 0x60 + 0x00; /DCO 3MHZ,3030KHZ BCSCTL1 = DIVA_0 + 0x07; BCSCTL2 = SELM_2 + DIVM_0 + SELS

22、+ DIVS_0;void WDT_Init() WDTCTL = WDTPW + WDTHOLD; /Stop WDT/*/初始化IO口子程序/*void Port_init()P4SEL = 0x00; P4DIR = 0xFF; /DATA PORT P5SEL = 0x00; P5DIR|= BIT5 + BIT6 + BIT7; /SET Control PIN MODE-OUT/*/顯示屏命令寫入函數(shù)/*void LCD_write_com(unsigned char com)RS_CLR;RW_CLR;EN_SET;DataPort = com; /WRITE COMMANDde

23、lay_ms(5);EN_CLR;/*/顯示屏數(shù)據(jù)寫入函數(shù)/*void LCD_write_data(unsigned char data)RS_SET;RW_CLR;EN_SET;DataPort = data; /WRITE DATAdelay_ms(5);EN_CLR;/*/顯示屏清空顯示/*void LCD_clear(void)LCD_write_com(0x01); /Clear SCREENdelay_ms(5);/*/顯示屏字符串寫入函數(shù)/*void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s)

24、if (y = 0) LCD_write_com(0x80 + x); /THE FIRST ROW else LCD_write_com(0xC0 + x); /THE SECOND ROW while (*s) LCD_write_data( *s); s +; /*/顯示屏單字符寫入函數(shù)/*void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) if (y = 0) LCD_write_com(0x80 + x); /THE FORST ROW else LCD_write_com(0xC0 + x)

25、; /THE SECOND ROW LCD_write_data( data);/*/顯示屏初始化函數(shù)/*void LCD_init(void) LCD_write_com(0x38);/顯示模式設(shè)置 delay_ms(5); LCD_write_com(0x08);/顯示關(guān)閉 delay_ms(5); LCD_write_com(0x01);/顯示清屏 delay_ms(5); LCD_write_com(0x06);/顯示光標移動設(shè)置 delay_ms(5); LCD_write_com(0x0C);/顯示開及光標設(shè)置 delay_ms(5);/*求最大值*/unsigned int ge

26、tMax(unsigned int temp) unsigned int max=temp0; for(unsigned int i=0;iNum_of_Results;i+) if(maxtempi) max = tempi; index1 = i; if(tempi+1max) break; return max;/*轉(zhuǎn)換最大值至電壓電流*/float maxTOv(unsigned int vParameter) float transResult = vParameter/100.5; return transResult; float maxTOi(unsigned int iPar

27、ameter) float transResult = iParameter/10.5; return transResult; /*獲得周期*/ unsigned int getPeriod(unsigned int temp) unsigned int periodN; unsigned int i,num=tempindex1; for(i=index1;itempi) num = tempi; index2 = i; periodN = 4*(index2 - index1); return periodN; /*獲得相位差*/float PhaseDiff(unsigned int

28、curTemp) float difference; unsigned int i,num=curTempindex1; for(i=index1;iNum_of_Results;i+) if(numcurTempi) num = curTempi; index2 = i; if(curTempi+1num) break; difference = (index2 - index1)/periodN; return difference;/*數(shù)字周期轉(zhuǎn)換至模擬周期*/float transTOperiod(unsigned int temp) return temp/Time_interval

29、;/*數(shù)值提取至數(shù)組用以顯示,*/void deltaExtract(float temp,uint a) unsigned int temp1; if(temp=0) return ; else temp1 = (unsigned int)temp*1000; a2 = temp1%10; /取個位 a1 = (temp1/10)%10; /取十位 a0 = (temp1/100); /取百位 /*數(shù)值轉(zhuǎn)換至ASCII*/void transTOASCII(unsigned int temp,unsigned int num) for(unsigned int i=0;inum-1;i+)

30、tempi+=0; tempnum-1 =0;void main(void) /*初始化*/ WDT_Init(); /Set WDT Clock_Init(); /Clock Initialize Port_init(); /PORT Initialize delay_ms(100); /delay 100ms LCD_init(); /LCD Initialize LCD_clear(); /clear screen LCD_write_str(0,0,OSC); delay_ms(1000); /*AD轉(zhuǎn)換*/ P6SEL = 0x03; / Enable A/D channel inp

31、uts ADC12CTL0 = ADC12ON+MSC+SHT0_8 + REFON +REF2_5V; / Turn on ADC12, extend sampling time / to avoid overflow of results ADC12CTL1 = SHP+CONSEQ_3; / Use sampling timer, repeated sequence ADC12MCTL0 = INCH_0+SREF_1; / ref+=2.5V, channel = A0 ADC12MCTL1 = INCH_1+EOS+SREF_1; / ref+=2.5V, channel = A1

32、end seq ADC12IE = 0x02; / Enable ADC12IFG.3 ADC12CTL0 |= ENC; / Enable conversions ADC12CTL0 |= ADC12SC; / Start conversion _EINT(); /global interrupt while(TransOverFlag); /wait for conversion over LCD_write_str(0,0,ADC); delay_ms(1000); /*處理數(shù)據(jù) */ /* for(unsigned i = 0;iNum_of_Results;i+) Voltagei=

33、A0resultsi; Currenti=A1resultsi; */ unsigned int vMaxNum; unsigned int cMaxNum; float MaxVol; float MaxCur; float POWER; float PERIOD; vMaxNum = getMax(Voltage); /電壓電流最大值 cMaxNum = getMax(Current); MaxVol = maxTOv(vMaxNum); /電壓峰值 MaxCur = maxTOi(cMaxNum); /電壓峰值 float delta; float phaseDiff; float avoltage; float acurrent; float pPara; per

溫馨提示

  • 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

提交評論