[PRZYKŁAD] Waga elektroniczna – HX711, Arduino i belka tensometryczna
Połączenie wszystkich elementów projektu jest bardzo proste. Nakładkę z ekranem LCD należy założyć na płytkę KAmduino UNO. Przewody zasilania belki należy połączyć z pinami „E+” i „E-” modułu z układem HX711, natomiast sygnał z kanałem A przetwornika. Sam moduł można zasilać napięciem 5V, zaś porty danych należy podpiąć do portów analogowych, których numery następnie trzeba podać w kodzie programu. Poniżej znajduje się schemat połączenia:
Połączenie przedstawiono również w poniższych tabelach:
| Kolor przewodu belki tensometrycznej |
Pin modułu z układem HX711 |
| Czerwony | E+ |
| Czarny | E- |
| Biały | A- |
| Zielony | A+ |
| Pin modułu z układem HX711 | Pin KAmduino Uno |
| GND | GND |
| DT | A1 |
| SCK | A2 |
| VCC | +5V |
Połączony układ przedstawiono na poniższym zdjęciu:

Rys. 7. Zdjęcie zmontowanego układu
Po zmontowaniu części sprzętowej układu można przejść do oprogramowania platformy Arduino. (Pełny kod znajduje się w sekcji „do pobrania”)
Do obsługi modułu z układem HX711 można użyć bibliotek dostępnych w internecie. Ja użyłem biblioteki dostępnej pod tym linkiem. Na początku kodu należy zaimportować biblioteki odpowiedzialne za obsługę układu HX711 oraz ekranu LCD. Inicjalizowane są także instancje klas zawartych w ww. bibliotekach oraz zmienne globalne.
#include "HX711.h" #include <LiquidCrystal.h> HX711 waga; LiquidCrystal lcd(8, 9, 4, 5, 6, 7); char odczyt[6]; float ciezar;
W funkcji setup() uruchamiane są moduły wyświetlacza i wzmacniacza HX711. Dokonuje się też tutaj wstępna kalibracja wagi. Funkcja tare odczytuje aktualny poziom zera na wadze. Argument informuje funkcję z ilu pomiarów powinna uśrednić wynik. Podczas wykonywania tej funkcji waga powinna być nieobciążona. Funkcja set_scale skaluje odczyt wagi. Podana wartość jest zmierzoną „surową” wartością (podawaną przez przetwornik) dla obciążenia odważnikiem 20 dag, dla belki tensometrycznej o maksymalnym obciążeniu do 1 kg. Aby otrzymać wartości wyskalowane w gramach, należy podzielić wartość przez ciężar odważnika w gramach. Aby otrzymać na ekranie „surowe” wartości z przetwornika, można uruchomić funkcję set_scale bez argumentu.
void setup() {
waga.begin(A1, A2);
lcd.begin(16,2); //inicjalizacja ekranu
lcd.setCursor(0,0);
waga.set_scale(419341.0/200.0);
waga.tare(20);
}
W funkcji loop() odczytywana jest aktualna wartość wagi za pomocą funkcji get_units. Argumentem funkcji jest ilość pomiarów, które są potem uśredniane. Funkcja dtostrf dokonuje formatowania wyjścia – z jednym miejscem po przecinku. Następnie wynik pomiaru wyświetlany jest na ekranie LCD. Na koniec każdej pętli przetwornik jest wyłączany i włączany.
void loop() {
ciezar=waga.get_units(10);
dtostrf(ciezar,6,1,odczyt);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Odczyt wagi:");
lcd.setCursor(0,1);
lcd.print(odczyt);
lcd.print(" g");
waga.power_down();
delay(100);
waga.power_up();
}
Poniższy film wideo demonstruje działanie przykładu:


Dominik Bednarski porównuje STM32MP1 i OpenSTLinux oraz Raspberry Pi 5
Nordic poszerza opcje rozwojowe serii nRF54L o płytkę nRF7002 EBII do łączności Wi-Fi 6
Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym 



