新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單芯片便攜電子秤重系統實現方案

        單芯片便攜電子秤重系統實現方案

        ——
        作者:德州儀器公司 Andreas Dannenberg 時間:2007-01-26 來源:《世界電子元器件》 收藏

        引言

        傳統上,設計秤重、測力、轉矩及壓力測量系統時,廣泛采用全橋接電阻傳感器的方法。大多數橋接傳感器都要求較高的激勵電壓(通常為10 v),同時輸出較低的滿量程差動電壓,約為2 mv/v。傳感器的輸出通常由儀表放大器加以放大,經過發大后的信號,再由高精度模數轉換器 (adc) 進行數字化,最后再用一個通用的mcu作進一步處理與顯示。通常情況下,adc并不集成在mcu中。這種方法雖然可以實現滿量程的adc輸入電壓,但橋接傳感器的激勵電壓高達10 v,功耗較大,而且使用的芯片數量也較多,加大了電源管理的復雜度。

        本文引用地址:http://www.104case.com/article/20623.htm

        現在,通過在msp430f42x芯片中集成帶有差動輸入的16位 - adc和增益高達32的可編程增益放大器(pga),實現了單芯片秤重系統。整個系統只需用3 v電池供電,不但能效高,且成本低。此外系統還提供lcd驅動器及掉電保護功能。


        硬件描述

        msp430f42x系列是基于快速閃存的超低功耗微控制器,片上集成了三個16位 - adc(sd16),這些adc還帶有pga,能夠將傳送來的信號放大最高32倍。橋接傳感器可以直接連接到微控制器上,圖1給出了該系統的電路圖。

        將全橋接傳感器負激勵信號連接至終端x1-1,正激勵信號連接至終端x1-4,由msp430的端口引腳p2.0與p2.1供電。這樣,在測量期間或在電子秤工作于待機狀態的情況下,就可以不用電橋激勵電壓,從而降低功耗。傳感器的電橋電阻為1 200 (典型值),電源電壓為3 v,激勵狀態下耗電2.5 ma。將橋接傳感器的輸出信號連接至x1-2與x1-3,通過兩個低通濾波器之后輸入sd16的輸入通道a0。

        當最大負載為10 kg時,全橋接傳感器具有2 mv/v的額定滿量程差動輸出電壓。要使傳感器信號能夠實現1 g的精度,總共需要1萬次計數,并顯示在lcd顯示屏上。如果橋接傳感器獲得3 v的激勵電壓,則滿量程輸出電壓為:3 v x 2 mv/v = 6 mv。也就是說,1 g的重量轉換為電壓形式可等效為:6 mv / 10 kg x 1g = 0.6 v。為了實現1 g的測量精度,所用adc的lsb電壓應比上述小四倍,即 0.6 v / 4 = 0.15 v。


        sd16可用內置的1.2 v參考電壓工作,也可用外部連接的參考電壓工作。圖1中給出的是用外部電阻分壓器來提供參考電壓。由于橋接傳感器由相同電壓的電源供電,這樣做的好處是能夠實現獨立于激勵電壓(vcc)的比例輸出原則。如果橋接傳感器由vcc供電而sd16模塊采用內部參考電壓,那么測量結果就會隨vcc在電池使用壽命中的變動而發生差異。當電源電壓為3v時,使用圖1中所示的外部電阻分壓器得到的參考電壓為:

        r9與r10的分壓比(divider ratio)r9/r10的選擇使生成的參考電壓保持在容許的vref范圍內,這時vcc從3 v下降至2.7 v。sd16 模塊的最小電源電壓為2.7 v。其詳細電壓范圍及其他參數,可參考msp430f42x數據表(slas421)。sd16的參考電壓決定著滿量程差分輸入電壓,即vref/2。由于數據轉換器為雙極,因此adc的lsb電壓為:
        該lsb值經過最大增益為32的pga后,電壓值可降至0.605 v。但該值比設計目標值0.15 v仍然高出大約四倍,為此還需要將該值進一步放大。為了不添加外部組件,可以采用更多的 sd16輸出位。sd16模塊內部數字抽取濾波器能夠提供總共24位的訪問。可將數字濾波器輸出的額外兩位添加給16位轉換結果,并將18位輸出信號進行低通過濾(如進行多結果平均),這樣adc的lsb電壓就可降至0.151 v。
        msp430f427的片上lcd驅動器可直接采用接口與一般的 lcd 模塊連接。在本應用中采用了 softbaugh公司的4-mu 7.1數碼lcd—sblcda4。電阻器r5、r7與r8提供了lcd驅動器模塊所用的電壓階梯。采用32 khz的晶振作為系統時鐘參考,用于驅動lcd并在應用工作過程中周期性地從低功耗模式喚醒。此外,系統還為電子秤操作提供了連接至p1.0的按鈕(sw1)。


        軟件描述

        msp430f427 單芯片秤重軟件有c語言(f42x_weigh_ scale.c)與匯編語言(f42x_weigh_scale.s43)兩種版本。兩種源代碼功能相同,但匯編語言版本更小。上電復位時,msp430首先進行外設初始化,包括禁用看門狗定時器,配置lfxt1振蕩器負載電容用于外部晶振,初始化lcd控制器、基本定時器及sd16轉換器模塊。sd16的0通道經過配置,采用雙輸入通道(channel pair)a0,并用sd16模塊內部pga放大信號達32倍增益。轉換器由smclk計時,頻率為1 048 567 hz,并啟用連續轉換模式。關于sd16操作的詳細信息可參考msp430x4xx系列用戶指南(slau056)。圖2為軟件主流程圖。

        在源代碼中,將兩個32位字calmin與calmax分配到msp430閃存段a以便保存校驗數據。上電后,軟件檢查上述常量是否具備有效值。如果兩個位置都包含相同的值(如設備編程后的 0xffffffff),校驗模式則被激活,否則進入測量模式。變量programmode用于跟蹤當前程序狀態(測量模式、校驗模式、斷電模式)并作出相應設置。

        隨后,msp430進入低功耗模式lpm0,啟用中斷。lpm0作為smclk驅動sd16,在應用有效運行且采集adc數據時不得關閉。此后,整個程序流程由中斷驅動,共啟用三個中斷源。基本計時器isr每0.5秒執行一次,主要用于觸發測量進程的啟動(見圖3),端口1 isr用于處理按鈕事件,每次 a/d 轉換后,調用sd16 isr來處理結果(見圖4)。

        在校驗模式中可獲得兩個數據點。變量calmin用于存儲a/d結果,其顯示值等于0 g,而calmax存儲的a/d結果顯示值為10 000 g。cal lo或cal hi顯示出的數據用來說明哪個校驗數據點正被處理。按下按鈕sw1后,當前sd16的轉換結果被讀取并存儲到臨時變量中。校驗結束后,系統內的自動編程將這兩個數據點編入infoa快閃信息存儲器段,這時軟件進入測量模式。

        至此,sd16轉換進程每0.5秒啟動一次,由基本定時器isr定時。轉換中,橋接傳感器上電,dco 啟用。這時msp430在lpm0模式下運行。為了實現所需的精度,軟件采用低通濾波器,采集多個18位a/d轉換結果,并進行累加。每次轉換后,sd16 isr按照sd16采樣率(4 khz)執行。在采集實際數據前,反變量voltagesettlectr逐漸減小為0,這就使電壓能在橋接傳感器上電后12毫秒內達到穩定。sd16 isr采集了256個結果之后,用累加和除以256,得到最后的18位結果。上述過程也可形容為采樣數據由256到1的抽選。包括電壓穩定時間在內,sd16模塊每0.5秒鐘運行約75毫秒。

        隨后,將該18位的計算結果與此前的值進行比較。僅當值變化時才計算新的顯示值并更新顯示。這就能夠避免不必要的32位整數乘法及除法。

        為了將 a/d的測量結果轉換為實際的物理重量值,系統使用了兩點校驗機制。顯示值根據以下公式計算:

        從calmax到calmin的范圍反映到從0到cal_min_max_span的范圍。cal_min_max_span 默認設置為10 000,等于橋接傳感器的最大機械負載10 kg。需注意:由于施加給sd16模塊的差動信號的緣故,18位a/d轉換結果是帶符號的,整個程序中都使用帶符號的代數算法。這樣,也可顯示出負的重量值。測量結束之后,sd16模塊禁用,dco在退出時進入lpm3關閉模式,而橋接傳感器則斷電以降低電流消耗。

        只要按下按鈕sw1會立即使轉換失效,關閉lcd顯示屏并進入lpm3模式。在這種模式下,應用電路吸收的電流不到1 a,而32 khz的振蕩器仍然運行。如果需要的話,也可進入lpm4模式來進一步降低電流消耗。再次按下按鈕sw1,應用便恢復正常的工作。在這種模式下,sd16模塊每0.5秒鐘約運行75毫秒,得出新的計算結果后,顯示屏也隨之更新。在此期間,msp430消耗的電流約1 ma。橋接傳感器的激勵及參考電壓的生成在此期間還需要3 ma的額外電流。在測量間隙內,msp430消耗電流約3 a,其中包括了lcd驅動器用于顯示計算結果的電流。因此,總的平均應用電流消耗量在正常工作期間為600 a。若想在任何時間內重新進入校驗模式,只需按下按鈕sw1至少5秒鐘即可實現。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 界首市| 托克逊县| 合江县| 南岸区| 新晃| 安新县| 辽源市| 邢台县| 娱乐| 米易县| 慈利县| 江城| 河源市| 柳林县| 桃江县| 黔东| 常山县| 平昌县| 温泉县| 临江市| 溧阳市| 华坪县| 富蕴县| 原平市| 阿城市| 象州县| 德江县| 庄浪县| 尼勒克县| 和林格尔县| 南涧| 三都| 邻水| 郸城县| 通化市| 城步| 南召县| 双鸭山市| 奇台县| 晋宁县| 焦作市|