揭開精準(zhǔn)背后的秘密,基于HX711的高精度電子秤設(shè)計全解析
時間: 2021-10-10 23:19:15 瀏覽次數(shù):0
在菜市場的電子秤上稱量食材,在實驗室的天平上稱量試劑,在工業(yè)流水線上檢測產(chǎn)品重量 - 精準(zhǔn)的重量測量早已滲透到我們生活和生產(chǎn)的各個角落。而這一切的核心,都離不開一個關(guān)鍵元件——高精度稱重傳感器及其強大的信號處理搭檔。今天,我們就來深入探討如何利用HX711這款高性價比的24位模數(shù)轉(zhuǎn)換器(ADC)芯片,設(shè)計出一款穩(wěn)定可靠的高精度電子秤。
一、 稱重基石:應(yīng)變式稱重傳感器的工作原理
稱重傳感器是電子秤的”心臟”,其中應(yīng)變式傳感器應(yīng)用最為廣泛。其核心在于惠斯通電橋原理:
- 壓力→形變→電阻變化: 當(dāng)外力作用于傳感器彈性體時,彈性體發(fā)生極微小的形變。
- 應(yīng)變片感知: 粘貼在彈性體上的精密電阻應(yīng)變片隨之產(chǎn)生拉伸或壓縮,其電阻值發(fā)生相應(yīng)改變。
- 電壓信號輸出: 組成惠斯通電橋的四片應(yīng)變片(或兩片半橋需外部補齊),其電阻變化打破了電橋平衡,輸出一個與所受力(重量)成正比的微弱差分電壓信號(通常在毫伏級別)。
二、 信號放大與數(shù)字化的核心:HX711詳解
傳感器輸出的毫伏級模擬信號極其脆弱且易受干擾,需要高精度、低噪聲的放大和數(shù)字化處理。這就是HX711芯片大顯身手的舞臺:
核心優(yōu)勢:
超高精度24位ADC: 提供高達(dá)224 (約1670萬) 的分辨率,能精細(xì)捕捉傳感器輸出的微小電壓變化,這是實現(xiàn)高精度稱重的關(guān)鍵。
可編程增益放大器 (PGA): 提供128倍或64倍增益選擇,能有效放大傳感器輸出的微弱差分信號,適應(yīng)不同靈敏度的傳感器(常見1mV/V或2mV/V)。
內(nèi)置穩(wěn)壓電路: 可直接為傳感器橋路供電(AVDD或DVDD),簡化外部電源設(shè)計,并能抑制電源噪聲對測量的影響。
低噪聲設(shè)計: 專門針對稱重應(yīng)用優(yōu)化,有效降低測量中的噪聲分量。
簡單的串行接口: 僅需兩個數(shù)字引腳(DATA和SCK)即可與微控制器(如Arduino,ESP8266/32, STM32等)通信,極大地簡化了系統(tǒng)連接和編程。
工作流程:
- HX711 向其驅(qū)動的傳感器電橋提供穩(wěn)定的激勵電壓。
- 傳感器輸出的差分電壓信號被送至HX711的模擬輸入端 (A+, A-)。
- 信號經(jīng)過內(nèi)部PGA進行高倍數(shù)、低噪聲放大。
- 放大后的模擬信號被24位Σ-Δ ADC 轉(zhuǎn)換為高分辨率的數(shù)字值。
- 微控制器通過簡單的時序控制SCK引腳,從DOUT引腳讀取轉(zhuǎn)換完成的24位數(shù)據(jù)(二進制補碼格式)。
三、 電子秤系統(tǒng)硬件設(shè)計要點
一個穩(wěn)定可靠的電子秤設(shè)計,除了HX711和傳感器,還需關(guān)注以下硬件細(xì)節(jié):
- 傳感器選擇與安裝: 根據(jù)量程和精度需求選擇合適的傳感器(如常見的懸臂梁式、S型)。確保安裝平整穩(wěn)固,避免側(cè)向力或彎矩干擾測量結(jié)果,良好的機械結(jié)構(gòu)是準(zhǔn)確的基礎(chǔ)。
- 供電穩(wěn)定與濾波: HX711和傳感器對電源噪聲敏感。推薦使用線性穩(wěn)壓電源(如LM1117),并在HX711的電源引腳及傳感器激勵電壓輸入腳就近添加濾波電容(如10uF電解電容并聯(lián)0.1uF陶瓷電容)。
- 信號走線與屏蔽: 傳感器輸出到HX711輸入的模擬信號線盡量短。如果必須較長,建議使用屏蔽雙絞線,并將屏蔽層單點接地,最大限度抑制電磁干擾。
- 基準(zhǔn)電壓穩(wěn)定性: HX711需要一個穩(wěn)定的基準(zhǔn)電壓進行ADC轉(zhuǎn)換。其內(nèi)置基準(zhǔn)通常足夠好。若要求極高,可考慮外接高精度基準(zhǔn)源。
- 數(shù)字接口: HX711的SCK和DOUT連線也應(yīng)避免過長,靠近微控制器布局。適當(dāng)加入上拉電阻(如果MCU內(nèi)部無上拉)可增強信號穩(wěn)定性。
四、 嵌入式軟件驅(qū)動與算法
軟件是賦予電子秤智能和精度的靈魂:
- 初始化: 配置MCU與HX711通信的GPIO引腳。給HX711上電或復(fù)位(通常拉低PD_SCK一定時間)。
- 檢測數(shù)據(jù)就緒: 輪詢DOUT引腳,當(dāng)其拉低時表示新數(shù)據(jù)已轉(zhuǎn)換完成,可讀取。
- 讀取數(shù)據(jù): 在SCK引腳上產(chǎn)生25到27個脈沖。前24個脈沖用于從DOUT引腳移出24位轉(zhuǎn)換結(jié)果(MSB先行),第25/26/27個脈沖可用于設(shè)置下一周期的通道和增益(如CH.A增益128)。
- 數(shù)據(jù)轉(zhuǎn)換: 將讀取到的24位二進制補碼數(shù)據(jù)轉(zhuǎn)換為有符號整型變量。
- 關(guān)鍵算法實現(xiàn):
- 去皮 (Tare): 在秤盤空載時讀取一個數(shù)值作為零點偏移量,后續(xù)測量值減去此偏移量。代碼實現(xiàn):
weight = read_hx711() - tare_offset;
- 數(shù)字濾波: 傳感器和ADC讀數(shù)會存在微小波動,需進行軟件濾波平滑數(shù)據(jù):
- 均值濾波: 連續(xù)讀取N次取平均值。實現(xiàn)簡單但響應(yīng)稍慢。
- 滑動平均濾波: 維護一個數(shù)據(jù)窗口,每次讀取新值替換最舊值后求平均。資源消耗略高但效果好。
- 一階低通濾波 (或卡爾曼濾波): 更高級的濾波算法,在平滑噪聲和響應(yīng)速度間取得更好平衡。
- 校準(zhǔn) (Calibration): 使用已知精確重量的砝碼進行標(biāo)定,建立 ADC原始讀數(shù) (Raw) 與實際重量 (Weight) 的線性關(guān)系,計算比例系數(shù) (Scale Factor)。單點校準(zhǔn)公式:
scale_factor = (raw_weight - tare_raw) / known_weight; 后續(xù):weight = (current_raw - tare_raw) / scale_factor; 多點校準(zhǔn)能更準(zhǔn)確擬合線性度。
- 單位轉(zhuǎn)換: 將計算出的重量值轉(zhuǎn)換為所需的單位(克g, 千克kg, 盎司oz, 磅lb等)。
五、 追求極致:精度提升策略
達(dá)到基礎(chǔ)稱重功能后,可進一步優(yōu)化精度和穩(wěn)定性:
*