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