Waage Software Klassen
PlatformIO Initialisierung und main.cpp.
Programmiert wurde in CPP. Visual Studio Code als Entwicklungsumgebung.
Eigentlich wollte ich die Programmierung mit MicroPython durchführen,
jedoch für den ADC-HX711 gibt es keine Bibliothek für meinen speziellen Fall.
Ich brauche die Waage zum Mischen von Epoxidharz und eine gute schlanke
Tara Funktion ist notwendig.
In Zeile 18 und 19 der nachfolgenden
Initialisierungsdatei sind zwei Bibliotheken aufgeführt. Die Bibliothek
für den HX711 findest du hier
und die OLED-Display-Bibliothek ist hier.
Auskommentierte Zeile 20 der PlatformIO-Initialisierungsdatei!
Ich haben an einigen Stellen gelesen, dass der ESP32-Prozessor aufgrund der
HX711-Frequenz verlangsamt werden muss. Ich bin mir nicht sicher, ob das wirklich
nötig ist oder nicht. Ich habe mit und ohne Verlangsamung experimentiert und in
beiden Szenarien hat alles gut funktioniert.
main.cpp, das Hauptprogramm.
In Zeile 19 erfolgt die Initialisierung der Waage. Zeile 27 repräsentiert die kontinuierliche
Abarbeitung der Zustände. In diesem Zusammenhang siehe auch Waage.cpp Zeile 30 und Zeile 165
weiter unten in diesem Kapitel.
display.cpp und display.h.
Auf dem
Heltec-Wifi-Kit 32-Mikrokontroller
ist bereits ein OLED-Display verbaut.
Wird die Klasse U8X8_SSD1306_128X64_NONAME_SW_I2C nur mit dem I2C-Bus (sda, sck)
instanziiert funktioniert das Display nicht, es muss der Reset-Pin 16 (nur dieser Pin)
ebenfalls eingebunden werden. Siehe Zeile 18.
eeprom.cpp und eeprom.h.
Einmalig muss die Waage mit einem Referenzgewicht kalibriert werden.
Der ermittelte Kalibrieroffset wird in einen nichtflüchtigen Speicher EEPROM geschrieben.
waage.cpp und waage.h.
Zeile 33 bis 36: Initialisierung Display, Board-LED und zwei Drucktaster.
Zeile 37 (128 – 135): Lesen des Kalibrieroffsets aus dem EEPROM. Waage auf Null setzen.
Zeile 53-63: Methode Lesen der Drucktasten.
Zeile 68 – 107: Methode Kalibrieren.
Zeile 140 – 160: Methode Gewicht messen. Auffrischung Display nur wenn der neue
gelesene Wert sich mit dem vorherigen Wert unterscheidet.
Zeile 165 – 266: Methode Schrittsteuerung in Abhängigkeit der Drucktaster.
Erfolgt keine Betätigung der Tasten läuft das Programm im kontinuierlichen Messzyklus.
Wie bereits weiter oben erwähnt nutze ich die Bibliothek von
Bogdan Necula.
Diese Library stellt alle Methoden für den HX711-Betrieb zur Verfügung:
double read_average(byte times) // (average = durchschnittlich)
double get_value(byte times)
float get_units(byte times)
void tare(byte times)
float get_scale()
void set_offset(long offset)
long get_offset()
void power_down()
void power_up()
Zur Kalibrierung noch einige Hinweise:
(1) Aufruf set_scale()ohne Parameter.
(2) Aufruf tare()ohne Parameter.
(3) Lege dein bekanntes Gewicht auf die Waage und rufe get_units(10) auf.
(4) Teile das Ergebnis von Schritt (3) durch dein bekanntes Gewicht.
(5) Übergebe das Ergebnis an set_scale().