為了提高電子秤的抗干擾性和數(shù)據(jù)的準(zhǔn)確性,介紹基于均值滑動(dòng)濾波算法和STM32 電子秤的設(shè)計(jì)。選用電阻應(yīng)變片構(gòu)成的惠斯通電橋傳感器采集重物信號(hào),24 位 HX711 A/D 模塊完成電信號(hào)的放大和轉(zhuǎn)換,在 STM32 內(nèi)實(shí)現(xiàn)軟件濾波,采用滑動(dòng)均值濾波算法,減小誤差,提高數(shù)據(jù)的準(zhǔn)確度。通過(guò)軟硬件結(jié)合的方法進(jìn)行校正。矩陣鍵盤(pán)輸入控制指令實(shí)現(xiàn)設(shè)置單價(jià)、計(jì)算物品金額并實(shí)現(xiàn)金額累加和去皮等功能。實(shí)驗(yàn)測(cè)試表明,該電子秤測(cè)量范圍是0~500 g,誤差不超過(guò)±1 g,稱重反應(yīng)靈敏,5 s 左右讀數(shù)穩(wěn)定。
電子秤是一種通過(guò)作用在物體上的重力來(lái)測(cè)定該物體質(zhì)量的一種計(jì)量?jī)x器。因其操作簡(jiǎn)單、稱量準(zhǔn)確、體積小、稱量速度快、讀數(shù)方便,被廣泛應(yīng)用于商業(yè)貿(mào)易、醫(yī)院、學(xué)校、企業(yè)等部門(mén)。而懸臂式電子秤是一種鐵質(zhì)懸臂梁固定在支架上,懸臂梁上粘貼電阻應(yīng)變片作為稱重傳感器進(jìn)行感應(yīng)相應(yīng)重量變化的電子秤。提出一種在懸臂梁上粘貼電阻應(yīng)變片構(gòu)成惠斯通電橋作為稱重傳感器采集數(shù)據(jù),HX711 作為 A/D 轉(zhuǎn)換器,STM32為主控器的電子秤,采用滑動(dòng)均值濾波算法[4],減小各種干擾和提高數(shù)據(jù)的準(zhǔn)確性。
1.系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)以 STM32 為控制核心,采用電阻應(yīng)變片和精密電阻構(gòu)成惠斯通電橋電路作為稱重傳感器,通過(guò)電子秤專用的 HX711 A/D 芯片轉(zhuǎn)換成電信號(hào)并進(jìn)行放大處理,處理后的數(shù)據(jù)送到 STM32 中進(jìn)行處理,從數(shù)據(jù)中總結(jié)出,重量與電壓或者電阻的關(guān)系。通過(guò)它們之間的關(guān)系可以根據(jù)電壓變化得出相應(yīng)的重量。TFT 液晶屏用于顯示各種參數(shù),用矩陣鍵盤(pán)通過(guò) STM32 主控系統(tǒng)設(shè)置的指令執(zhí)行相應(yīng)的命令。系統(tǒng)框圖如圖1 所示。
1.1 電子秤的工作原理
設(shè)計(jì)選用電阻應(yīng)變片粘貼在懸臂梁上作為稱重傳感器來(lái)進(jìn)行重量信號(hào)的變換,把重量變換成電信號(hào)。當(dāng)有重物放置到秤盤(pán)上時(shí),懸臂梁發(fā)生彎曲,彎曲程度與放置物重量有對(duì)應(yīng)關(guān)系。粘貼在上面的電阻應(yīng)變片感應(yīng)到相應(yīng)的信號(hào),輸出微弱的電壓信號(hào)。HX711 對(duì)這個(gè)電壓信號(hào)進(jìn)行放大和 A/D 轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字信號(hào)送給 STM32 控制核心進(jìn)行處理,先對(duì)數(shù)字信號(hào)進(jìn)行數(shù)字濾波等處理,在TFT 液晶屏上顯示出來(lái)。電子秤的結(jié)構(gòu)圖如圖2 所示。
1.2稱重傳感器
將電阻應(yīng)變片貼在鐵質(zhì)懸臂梁適當(dāng)?shù)奈恢蒙?,使它里面的金屬箔材隨著尺子的彎曲一起伸縮,這樣電阻應(yīng)變片的電阻就會(huì)隨著應(yīng)變片的伸縮按一定的規(guī)律變化。應(yīng)變片就是應(yīng)用這個(gè)原理,通過(guò)測(cè)量電阻的變化而對(duì)應(yīng)變進(jìn)行測(cè)定。其電阻變化率為常數(shù),與應(yīng)變成正比例關(guān)系,即:
式中:R 為應(yīng)變片的原電阻值; R 為伸長(zhǎng)或壓縮所引起的電阻變化;K 為材料的靈敏系數(shù);ε 為測(cè)點(diǎn)處應(yīng)變。
電阻的變化率可以通過(guò)惠斯通電橋間接測(cè)量。先對(duì)測(cè)量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析,然后用公式進(jìn)行計(jì)算。最終得出 R 與 R 的比例系數(shù)。使用惠斯通電橋[3] 電路,將電阻應(yīng)變片的電阻變化轉(zhuǎn)換為電壓信號(hào)的變化,具有結(jié)構(gòu)簡(jiǎn)單、靈敏度高、測(cè)量范圍大、線性度好且易實(shí)現(xiàn)溫度補(bǔ)償?shù)忍攸c(diǎn)。
對(duì)電橋電路的選擇進(jìn)行了簡(jiǎn)單的實(shí)驗(yàn)后發(fā)現(xiàn)單臂的性能比雙臂和全橋的差,而雙臂和全橋的性能在各方面相差不大,從節(jié)省元件方面出發(fā),故采用雙臂電橋電路。惠斯通電橋電路如圖3 所示,圖中 R2 和 R3 為電阻應(yīng)變片,R1 和 R4 為精密電阻阻值均為 1 kΩ,其電阻應(yīng)變片初始阻值均為1 kΩ。P1 為Uo,BT1 為E,則該電橋輸出電壓為:
由式(3)可知,Uo 與 R3 R3 成線性關(guān)系,差動(dòng)電橋無(wú)非線性誤差,而且電橋電壓靈敏度 Ku = E2 ,是單臂工作時(shí)的兩倍,同時(shí)還具有溫度補(bǔ)償作用。
1.3A/D 轉(zhuǎn)換器的選擇
HX711 是一款電子秤專用的高精度 24 位 A/D 轉(zhuǎn)換器芯片。芯片內(nèi)部集成了電源、時(shí)鐘振蕩器等其他電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。與后端MCU 芯片的接口和編程非常簡(jiǎn)單。工作時(shí)是通過(guò)簡(jiǎn)單的數(shù)字控制和串口通信:所有控制由管腳輸入,芯片內(nèi)寄存器無(wú)需編程,輸出數(shù)據(jù)編碼二進(jìn)制補(bǔ)碼。電路簡(jiǎn)單,易于控制和使用。芯片的分辨率高,系統(tǒng)測(cè)得的數(shù)據(jù)比較精確。電路如圖4 所示。
2.軟件設(shè)計(jì)
2.1模塊化子程序的設(shè)計(jì)
本程序設(shè)計(jì)使用的是 Keil Software 公司開(kāi)發(fā)的 MDK5 軟件,使用模塊化思想進(jìn)行編程,液晶屏顯示、矩陣鍵盤(pán)、A/D 模塊、極大極小值滑窗均值濾波子程序、定時(shí)器中斷以及字符字模處理顯示等子程序都以模塊的結(jié)構(gòu)方式編寫(xiě)在不同的C 文件中,函數(shù)與參數(shù)變量使用頭文件進(jìn)行傳遞,使得程序結(jié)構(gòu)清晰明朗,出現(xiàn)問(wèn)題易于查找糾正。程序流程圖如圖5 所示。
2.2滑動(dòng)均值濾波算法
經(jīng)過(guò) A/D 轉(zhuǎn)換后的數(shù)據(jù)信號(hào)存在著很多干擾的信號(hào),需要把無(wú)用的信號(hào)濾除掉,采用了極大極小值滑窗均值濾波算法。該算法是由均值滑動(dòng)算法演變而來(lái)。令 u(n) 為稱重傳感器 n 時(shí)刻的采樣值,L 為滑窗均值濾波器的窗口長(zhǎng)度,則 n 時(shí)刻濾波器的輸出值 x(n) 為:
(4)由式(4)可知,滑動(dòng)均值濾波算法采集 L 個(gè)數(shù)據(jù)并分別存入 L 個(gè)內(nèi)存單元,完成 L 個(gè)稱重?cái)?shù)據(jù)的初次采樣后,
每采樣一次 L 個(gè)內(nèi)存單元按順序移出一個(gè)最初的數(shù)據(jù),并移入本次采樣的數(shù)據(jù),去除本次 L 個(gè)數(shù)據(jù)的最大最小值后,求取剩余 L - 2 個(gè)數(shù)據(jù)的均值。通過(guò)實(shí)驗(yàn)和根據(jù)選用的A/D 轉(zhuǎn)換速率,選取 L = 10 ,這樣,在編程處理A/D模塊輸出的數(shù)據(jù)時(shí),使用了去最值取均值的數(shù)字濾波法,從A/D 模塊讀回的每一個(gè)數(shù)據(jù)都要與前9 個(gè)數(shù)據(jù)中的最大最小值比較,并將比較后的10 個(gè)數(shù)中的最大最小值剔除,對(duì)剩余的8 個(gè)數(shù)據(jù)求平均,實(shí)現(xiàn)對(duì)誤差較大的數(shù)據(jù)進(jìn)行剔除,提高了系統(tǒng)的穩(wěn)定性和抗干擾性。
3.實(shí)驗(yàn)測(cè)試
通過(guò)軟硬件結(jié)合設(shè)計(jì),對(duì)該系統(tǒng)進(jìn)行測(cè)試。測(cè)試使用標(biāo)準(zhǔn)砝碼,測(cè)試結(jié)果保留兩位小數(shù)。
加入標(biāo)準(zhǔn)砝碼,將砝碼的質(zhì)量和相應(yīng)的A/D 輸出值記錄在表 1,通過(guò)表 1 的數(shù)據(jù)找出砝碼質(zhì)量與 A/D 輸出值的關(guān)系。根據(jù)表1 的數(shù)據(jù)做出二維折線圖,如圖6 所示。
由上述對(duì)表1 的數(shù)據(jù)計(jì)算和它的相應(yīng)曲線圖(圖6)可以得出,A/D 輸出值與砝碼質(zhì)量的比值逐漸減小,但是變化不大。因此可以根據(jù) K 值和 A/D 輸出值來(lái)計(jì)算出物品的質(zhì)量。又因?yàn)槌咦影l(fā)生彈性形變后,由于各種原因不能恢復(fù),所以測(cè)量值會(huì)存在一定的誤差。
加入標(biāo)準(zhǔn)砝碼,記錄砝碼質(zhì)量和實(shí)測(cè)質(zhì)量,并且計(jì)算出它的相對(duì)誤差,見(jiàn)表2。
4.結(jié) 論
本文研究基于均值滑動(dòng)濾波算法和 STM32 電子秤的設(shè)計(jì)與實(shí)現(xiàn),將電阻應(yīng)變片構(gòu)成的惠斯通電橋作為稱重傳感器采集重量信號(hào),應(yīng)用 HX711 完成信號(hào)的放大和轉(zhuǎn)換成數(shù)字信號(hào),在 STM32 運(yùn)用均值滑動(dòng)濾波算法對(duì)數(shù)據(jù)進(jìn)行濾波處理,減小干擾,提高數(shù)據(jù)的準(zhǔn)確性。通過(guò)實(shí)驗(yàn)測(cè)試,該電子秤可以測(cè)量 0~500 g 質(zhì)量,測(cè)量誤差小,具有一定的應(yīng)用價(jià)值。