[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:

 

Rys. 6. Schemat układu

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.

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.

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.

Poniższy film wideo demonstruje działanie przykładu:

Do pobrania

O autorze