如何使用稱重傳感器構(gòu)建高精度數(shù)字秤
你可能會(huì)想,一個(gè)沒有明顯機(jī)械運(yùn)動(dòng)的秤是否可能存在。事實(shí)上,如果通過應(yīng)變計(jì)(DMS)讀取,鋁塊的極微小彎曲就足以以高精度測(cè)量質(zhì)量。
在本教程中,我們使用稱重傳感器(附帶應(yīng)變片)和24位ADC HX711讀取測(cè)量信號(hào)。ESP8266或ESP32(以下簡稱“ESP”)運(yùn)行MicroPython來處理數(shù)據(jù)并在OLED屏幕上顯示重量。
在上面的測(cè)壓元件中,鋁塊被擰在右邊的底板上,而左邊則是稱重平臺(tái)。即使是非常輕的物體(比如0.9克的一張紙)也會(huì)在金屬中引起微小但可測(cè)量的變形。
應(yīng)變片是在塑料基板上的極薄導(dǎo)電軌道。當(dāng)測(cè)壓元件彎曲時(shí),這些軌跡變得稍微更長和更窄,導(dǎo)致電阻的微小變化。在橋接電路中,這個(gè)微小的信號(hào)被HX711放大并數(shù)字化。
HX711模塊放大這個(gè)非常小的電信號(hào),并使用24位ADC進(jìn)行轉(zhuǎn)換,從而實(shí)現(xiàn)非常精細(xì)的測(cè)量。
程序和固件
?flash和編程ESP32/ESP8266通過thony IDE或μPyCraft。
?MicroPython固件:最新版本(例如v1.19.1版本)。
這個(gè)項(xiàng)目的MicroPython模塊:
?ssd1306.py - OLED顯示器的硬件驅(qū)動(dòng)程序
?OLED顯示的API
?用于數(shù)字顯示的大字體集
?HX711 .py -用于HX711的API
?Scale.py -主要應(yīng)用程序代碼
自動(dòng)啟動(dòng)和測(cè)試
要使程序在啟動(dòng)時(shí)自動(dòng)運(yùn)行,請(qǐng)將其重命名為boot.py并將其上傳到ESP。在重置時(shí),它將自動(dòng)運(yùn)行。
Thonny允許您手動(dòng)運(yùn)行腳本(例如,按F5)進(jìn)行即時(shí)調(diào)試- MicroPython在傳統(tǒng)Arduino工作流上的關(guān)鍵優(yōu)勢(shì)。
下面是與ESP8266和ESP32使用相同HX711模塊的接線圖。確保使用不干擾ESP啟動(dòng)過程的GPIO引腳,并正確連接I2C總線(ESP8266: GPIO4=SDA, GPIO5=SCL;Esp32: gpio21 = sda, gpio22 = scl)。
HX711 MicroPython模塊
HX711不是I2C傳感器;它通過輸出和DPCLK引腳串行通信。每個(gè)24位轉(zhuǎn)換之后是1-3位選擇通道(A/B)和增益設(shè)置。
文件HX711 .py包含HX711類和一個(gè)自定義異常,如果模塊沒有響應(yīng)。在下面的示例代碼片段中,您可以看到如何逐位請(qǐng)求數(shù)據(jù):
首先傳輸MSB(最高有效位)。channel參數(shù)選擇使用哪個(gè)通道(A/B)和增益因子。
使用稱重傳感器HX711和ESP (ESP8266或ESP32),您可以構(gòu)建非常精確的秤。MicroPython使讀取和顯示測(cè)量結(jié)果變得簡單,即使實(shí)際的金屬變形是在原子尺度上。HX711仍然能夠產(chǎn)生穩(wěn)定的、可重復(fù)的讀數(shù)。
本文編譯自hackster.io