<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MSP430單片機(jī)的多功能復(fù)費(fèi)率三相電能表

          基于MSP430單片機(jī)的多功能復(fù)費(fèi)率三相電能表

          作者: 時(shí)間:2010-03-31 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/173398.htm


          另外一種抄表方式是通過GPRS模塊遠(yuǎn)程抄表。本設(shè)計(jì)中采用的GPRS模塊為SonyEricsson公司的GR47模塊。GR47是帶有GSM/GPRS全套語音和數(shù)據(jù)功能的先進(jìn)無線模塊,具有體積小,功能全面的特點(diǎn)。它內(nèi)嵌TCP/IP協(xié)議棧,從而可以最大程度的縮短GPRS產(chǎn)品的研發(fā)周期。GR47提供了3個(gè)UART端口用來和MCU進(jìn)行通訊,因此可以通過F449的另一個(gè)UART端口對(duì)GR47模塊進(jìn)行控制,其控制命令為標(biāo)準(zhǔn)的AT指令。通過GPRS抄表可以方便地獲得各個(gè)中的數(shù)據(jù),同時(shí)也可以對(duì)進(jìn)行廣播校時(shí)。需要指出的是,GR47的峰值耗電電流為2A,所以需要在GR47的供電端加上1000uF左右的電解電容,電源芯片也應(yīng)滿足相應(yīng)的要求,在本設(shè)計(jì)中采用了LM1084穩(wěn)壓芯片,它可以提供高達(dá)5A的輸出電流。
          3.5 停電抄表電路設(shè)計(jì)
          本系統(tǒng)中的電源模塊為開關(guān)電源,因此當(dāng)一相或者兩相交流電斷相時(shí),開關(guān)電源仍能向系統(tǒng)供電。但如果交流電全部斷相時(shí),系統(tǒng)的供電將會(huì)中斷,因此需要考慮在停電后仍能抄表,同時(shí)要能對(duì)停電發(fā)生的時(shí)間進(jìn)行記錄。為了保證停電時(shí),系統(tǒng)的核心部分仍能正常運(yùn)行,我們采用了3.6V鋰電池配合低功耗穩(wěn)壓芯片RH5RL30AA作為系統(tǒng)的后備電源,此外,在停電時(shí)處于休眠狀態(tài),其他芯片的電源都通過三極管關(guān)斷以降低功耗,經(jīng)過測(cè)試,整個(gè)系統(tǒng)在休眠狀態(tài)耗電電流小于10uA。當(dāng)需要停電抄表時(shí),系統(tǒng)可以通過按鍵中斷喚醒,數(shù)據(jù)將會(huì)顯示在液晶上以供抄表。
          停電時(shí)是用電池作為電源,而正常供電時(shí)是使用開關(guān)電源作為電源。如何在電池供電和開關(guān)電源供電兩者之間切換,這是一個(gè)需要考慮的問題,下面給出一個(gè)簡單的方法來解決這一問題。開關(guān)電源供電電路經(jīng)過穩(wěn)壓芯片穩(wěn)壓到3.3V左右,而電池供電電路經(jīng)過穩(wěn)壓芯片穩(wěn)壓到3V左右,在兩個(gè)電路的輸出端都加上肖特基二極管5819,這樣在正常供電時(shí),由于開關(guān)電源供電電路的輸出比電池供電電路高0.3V,電池供電電路由于5819的反向不可導(dǎo)通將被切斷供電;而在停電時(shí),開關(guān)電源供電電路輸出為0,電池供電電路在5819正向?qū)ê髮⑾蛳到y(tǒng)供電。電源切換電路如下圖所示:


          在正常供電時(shí),鋰電池的電壓可以由F449內(nèi)部的12位A/D采樣獲得,這樣當(dāng)電池電壓低于3.3V時(shí),可以通過電池充電電路對(duì)其充電,直到電池電壓上升到達(dá)到鋰電池充電限制電壓4.2V時(shí)再停止充電。電池充電電路可以通過IO口控制三極管開斷穩(wěn)壓芯片輸出來實(shí)現(xiàn)。
          4 系統(tǒng)軟件設(shè)計(jì)
          下面介紹系統(tǒng)功能的軟件實(shí)現(xiàn):
          1)初始化:對(duì)LCD、存儲(chǔ)器進(jìn)行自檢,并對(duì)數(shù)據(jù)進(jìn)行初始化,若系統(tǒng)為第一次上電,所有數(shù)據(jù)都將初始化為0,否則將從存儲(chǔ)器讀取相應(yīng)值對(duì)數(shù)據(jù)進(jìn)行初始化。
          2)時(shí)間模塊:根據(jù)DS3231提供的時(shí)間脈沖進(jìn)行時(shí)間計(jì)量,為系統(tǒng)數(shù)據(jù)處理模塊提供時(shí)間度量并且為用戶提供當(dāng)前時(shí)間顯示。
          3)數(shù)據(jù)處理模塊:本模塊為軟件設(shè)計(jì)的核心,主要作用是將計(jì)量芯片提供的有功無功電能、電壓電流值、頻率和功率因素等數(shù)據(jù)進(jìn)行處理,結(jié)合當(dāng)前時(shí)段和,得到用戶的各各時(shí)段實(shí)際用電量以及最大需量等,并在某一指定時(shí)刻(可設(shè)置)將數(shù)據(jù)保存到存儲(chǔ)器中。本電表可以保存多月數(shù)據(jù),并能夠通過RS485、紅外接口和GPRS模塊向抄表系統(tǒng)提供任意當(dāng)前或已保存數(shù)據(jù)。本模塊還具有記錄斷相時(shí)間、斷流時(shí)間等功能。
          4)校表模塊:為了匹配各種不同的外設(shè),ATT7022提供了校表功能。本模塊用于對(duì)ATT7022內(nèi)部各校表寄存器進(jìn)行設(shè)置使其與外設(shè)匹配以增加測(cè)量精確度。
          5)顯示模塊:通過LCD顯示時(shí)間、四象限有功無功電能、電壓電流值、頻率、功率因素、各時(shí)段各用電量以及最大需量等。并可通過按鈕對(duì)顯示界面進(jìn)行操作。
          6)停電處理模塊:停電時(shí)系統(tǒng)不訪問數(shù)據(jù)處理模塊,整個(gè)系統(tǒng)將進(jìn)入休眠狀態(tài),從而使系統(tǒng)處于超低功耗模式,通過按鍵中斷可以將系統(tǒng)喚醒。
          7) 通訊模塊:通訊模塊分為紅外、RS485和GPRS通訊。
          8)中斷處理模塊:系統(tǒng)主要有三個(gè)中斷處理模塊,分別為定時(shí)、通訊和停電中斷。
          5結(jié)束語
          F449復(fù)費(fèi)率三相集成了多種功能,在電能計(jì)量芯片ATT7022和時(shí)鐘芯片DS3231的配合下對(duì)于電能的計(jì)量可以達(dá)到很高的精度。由于通過多種方式降低系統(tǒng)功耗,經(jīng)過測(cè)試,在停電時(shí)整個(gè)系統(tǒng)的功耗極低,從而保證了停電抄表功能的實(shí)現(xiàn)。整個(gè)系統(tǒng)的生產(chǎn)成本較低,并且各項(xiàng)技術(shù)指標(biāo)都達(dá)到了國內(nèi)關(guān)于三相復(fù)費(fèi)率電能表的技術(shù)標(biāo)準(zhǔn),因此具有良好的市場(chǎng)前景和應(yīng)用價(jià)值。
          本文作者創(chuàng)新點(diǎn):采用了ATT7022計(jì)量芯片和高精度時(shí)鐘芯片DS3231提高測(cè)量精度和降低成本,增加了停電抄表功能使停電后能及時(shí)可靠地抄表,還增加了GPRS和紅外兩種遠(yuǎn)程抄表方式,抄表方式靈活多樣,并且從硬件和軟件上綜合考慮來使系統(tǒng)功耗降至最低。

          電能表相關(guān)文章:電能表原理

          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();