- Arduino Waagen arbeiten
- Erforderliche Komponenten für Arduino-basierte Waage
- Arduino-basierte Waage - Schaltplan
- Schaltung auf einem gepunkteten Perfboard machen
- Bau eines Gehäuses für eine Arduino-basierte Waage
- Arduino Waage - Code
Digitale Lastskalen sind ein weiteres Wunder der modernen Technik und Konstruktion. Ja, wir sprechen über die Waage, die wir oft in den meisten Lebensmittelgeschäften und an anderen Orten sehen, aber haben Sie sich jemals gefragt, wie eine Waage funktioniert? Um diese Frage zu beantworten, werden wir uns in diesem Projekt die Wägezelle und ihre Funktionsweise ansehen. Schließlich werden wir mit dem HX711-Gewichtssensor eine tragbare Lastskala auf Arduino-Basis bauen, mit der Gewichte bis zu 10 kg gemessen werden können.
Diese Waage ist perfekt für lokale Geschäfte geeignet, in denen Artikel in großen Mengen verpackt werden. Wie bei kommerziellen Produkten verfügt auch unsere Waage über einen Nullknopf, mit dem die Waage auf Null gesetzt wird. Es besteht auch die Möglichkeit, das Gewicht für die Messung einzustellen. Wenn das Messgewicht das eingestellte Gewicht erreicht, piept ein Summer schnell und stoppt, wenn das eingestellte Gewicht dem Messgewicht entspricht. Auf diese Weise kann der Benutzer es nur durch Hören des Tons verpacken und muss nicht auf das Display schauen. Da dies ein sehr einfaches Projekt ist, werden wir es sehr einfach mit Komponenten wie Arduino und DMS-Wägezelle bauen. Lassen Sie uns also ohne weitere Verzögerung gleich loslegen.
In einem früheren Artikel haben wir Projekte wie den Raspberry Pi-basierten Gewichtssensor und den IoT Smart Container mit E-Mail-Benachrichtigung und Webüberwachung mit dem beliebten HX711-Wägezellenverstärkermodul durchgeführt. Überprüfen Sie dies, ob dies Ihre Anforderung ist.
Arduino Waagen arbeiten
Die Hauptkomponente dieses Projekts ist ein Wägezellen- und HX711-Wägezellenverstärkermodul. Wie Sie sehen können, ist eine Seite mit zehn Kilogramm markiert. Sie können auch eine Art weißen Schutzkleber über der Wägezelle bemerken und vier verschiedene Farben von Drähten kommen heraus, die das Geheimnis unter dem weißen Schutzkleber und die Funktion dieser vierfarbigen Drähte später in diesem Artikel aufdecken.
Eine Wägezelle ist ein Wandler, der Kraft oder Druck in elektrische Leistung umwandelt. Es hat zwei Seiten, sagen wir die rechte und die linke Seite, und es besteht aus Aluminiumblöcken. Wie Sie in der Mitte sehen können, wird das Material durch Einsetzen eines großen Lochs verdünnt. Aus diesem Grund verformt sich dieser Punkt, wenn eine Last auf die Montageseite gelegt wird. Stellen Sie sich nun vor, dass die Zelle auf der rechten Seite an der Basis montiert ist und auf der linken Seite die Last platziert ist. Diese Konfiguration verformt die Wägezelle des Dehnungsmessers aufgrund des riesigen Lochs in der Mitte.
Wenn eine Last auf die Wastseite der Wägezelle gelegt wird, wird der obere Teil unter Spannung und der untere Teil unter Druck gesetzt. Deshalb biegt sich die Aluminiumstange auf der linken Seite nach unten. Wenn wir diese Verformung messen, können wir die Kraft messen, die auf den Aluminiumblock ausgeübt wurde, und genau das werden wir tun.
Nun bleibt die Frage, was sich in dem weißen Schutzkleber befindet. In diesem Schutzkleber finden wir eine sehr dünne elastische Komponente, die als Dehnungsmessstreifen bezeichnet wird. Ein Dehnungsmessstreifen ist eine Komponente, mit der die Dehnung gemessen wird. Wenn wir uns diese Komponente genauer ansehen, sehen wir zwei Anschlussflächen, und dann haben wir ein leitendes Drahtmuster mit sich wiederholenden Auslenkungen. Dieser leitende Draht hat einen definierten Widerstand. Wenn wir es biegen, ändert sich der Widerstandswert? Wenn wir also ein Gewicht auf die andere Seite der Aluminiumstange legen, wird eine Seite des Dehnungsmessers an einer Stelle montiert und befestigt. Dadurch wird der Dehnungsmessstreifen gebogen, was zu einer Änderung des Widerstands führt. Wie passiert das eigentlich? Das Leitungsmuster des Dehnungsmessers besteht aus Kupfer. Dieser Draht hat eine bestimmte Fläche und Länge, sodass diese beiden Einheiten den Widerstand des Drahtes angeben. Der Widerstand eines Drahtes wirkt dem Stromfluss entgegen. Jetzt ist es offensichtlich, dass, wenn die Fläche dieses Drahtes kleiner wird,Es könnten weniger Elektronen passieren, was einen geringeren Strom bedeutet. Wenn wir nun die Fläche vergrößern, erhöht sich der Widerstand eines Leiters. Wenn auf diesen Draht eine gewisse Kraft ausgeübt wird, wird der Bereich gedehnt und gleichzeitig wird er kleiner, der Widerstand steigt. Diese Widerstandsschwankung ist jedoch sehr gering. Wenn wir den Dehnungsmessstreifen dehnen, erhöht sich der Widerstand und wenn wir ihn komprimieren, wird der Widerstand geringer. Um die Kraft zu messen, müssen wir den Widerstand messen. Das direkte Messen des Widerstands ist nicht immer praktikabel, da die Änderung sehr gering ist. Anstatt den Widerstand zu messen, können wir einfach Spannungen messen. In diesem Fall müssen wir also die Messleistung von Widerstandswerten in Spannungswerte umwandeln.Wenn auf diesen Draht eine gewisse Kraft ausgeübt wird, wird der Bereich gedehnt und gleichzeitig wird er kleiner, der Widerstand steigt. Diese Widerstandsschwankung ist jedoch sehr gering. Wenn wir den Dehnungsmessstreifen dehnen, erhöht sich der Widerstand und wenn wir ihn komprimieren, wird der Widerstand geringer. Um die Kraft zu messen, müssen wir den Widerstand messen. Das direkte Messen des Widerstands ist nicht immer praktikabel, da die Änderung sehr gering ist. Anstatt den Widerstand zu messen, können wir einfach Spannungen messen. In diesem Fall müssen wir also die Messleistung von Widerstandswerten in Spannungswerte umwandeln.Wenn auf diesen Draht eine gewisse Kraft ausgeübt wird, wird der Bereich gedehnt und gleichzeitig wird er kleiner, der Widerstand steigt. Diese Widerstandsschwankung ist jedoch sehr gering. Wenn wir den Dehnungsmessstreifen dehnen, erhöht sich der Widerstand und wenn wir ihn komprimieren, wird der Widerstand geringer. Um die Kraft zu messen, müssen wir den Widerstand messen. Das direkte Messen des Widerstands ist nicht immer praktikabel, da die Änderung sehr gering ist. Anstatt den Widerstand zu messen, können wir einfach Spannungen messen. In diesem Fall müssen wir also den Messausgang von Widerstandswerten in Spannungswerte umwandeln.Der Widerstand wird geringer. Um die Kraft zu messen, müssen wir den Widerstand messen. Das direkte Messen des Widerstands ist nicht immer praktikabel, da die Änderung sehr gering ist. Anstatt den Widerstand zu messen, können wir einfach Spannungen messen. In diesem Fall müssen wir also die Messleistung von Widerstandswerten in Spannungswerte umwandeln.Der Widerstand wird geringer. Um die Kraft zu messen, müssen wir den Widerstand messen. Das direkte Messen des Widerstands ist nicht immer praktikabel, da die Änderung sehr gering ist. Anstatt den Widerstand zu messen, können wir einfach Spannungen messen. In diesem Fall müssen wir also den Messausgang von Widerstandswerten in Spannungswerte umwandeln.
Wir können dies mit Hilfe der Wheatstone-Brücke tun. Wir platzieren den Dehnungsmessstreifen in der Wheatstone-Brücke, wenn die Brücke ausgeglichen ist. Die Spannung im Mittelpunkt sollte Null sein (zuvor haben wir ein Projekt erstellt, in dem wir beschrieben haben, wie eine Wheatstone-Brücke funktioniert. Sie können dies überprüfen, wenn Sie möchten mehr über das Thema wissen). Wenn der Dehnungsmessstreifen seinen Widerstand ändert, wird die Brücke aus dem Gleichgewicht gebracht, und auch die Spannung ändert sich. Auf diese Weise wandelt die Wheatstone-Brücke Widerstandsänderungen in Spannungswerte um.
Diese Spannungsänderung ist jedoch immer noch sehr gering. Um dies zu erhöhen, müssen wir das HX711-Modul verwenden. HX711 ist ein 24-Bit-Differential-ADC. Auf diese Weise können wir sehr kleine Spannungsänderungen messen. es werden Werte von 0 bis 2 exponentiell 24 angegeben.
Erforderliche Komponenten für Arduino-basierte Waage
Um dieses Projekt so einfach wie möglich zu gestalten, haben wir sehr generische Komponenten verwendet, die Sie in jedem örtlichen Hobbygeschäft finden können. Das Bild unten gibt Ihnen eine Vorstellung von den Komponenten. Darüber hinaus haben wir die unten aufgeführte Stückliste.
- Wägezelle (Wir verwenden eine 10 kg Wägezelle)
- Verstärkermodul HX 711
- Arduino Nano
- I2C LCD 16X2 - I2C kompatibel
- 1k Widerstand -2 Nr
- LEDs -2Nos
- Summer
- Gemeinsame Leiterplatte
- 7,4 V Batterie (wenn Sie es tragbar wollen)
- Spannungsregler LM7805
Arduino-basierte Waage - Schaltplan
Die Wägezelle hat vier Drähte, die rot, schwarz, grün und weiß sind. Diese Farbe kann je nach Hersteller variieren, daher ist es besser, sich auf das Datenblatt zu beziehen. Verbinden Sie Rot mit E + der HX711-Karte, Schwarz mit E-, Weiß mit A + und Grün mit A-, Dout und Clock der Karte mit D4 bzw. D5. Verbinden Sie ein Ende der Drucktasten mit D3, D8, D9 und die anderen Enden mit dem Boden. Wir haben I2C LCD, also verbinden Sie SDA mit A4 und SCL mit A5. Verbinden Sie die Erdung von LCD, HX711 und Arduino mit der Erdung und VCCs mit dem 5-V-Pin von Arduino. Alle Module arbeiten mit 5 V, daher haben wir einen Spannungsregler LM7805 hinzugefügt. Wenn Sie es nicht als tragbares Gerät verwenden möchten, können Sie das Arduino direkt über ein USB-Kabel mit Strom versorgen.
Schaltung auf einem gepunkteten Perfboard machen
Wir haben alle Komponenten auf ein gemeinsames gepunktetes Perfboard gelötet. Wir haben weibliche Header verwendet, um das Arduino und den ADC mit der Leiterplatte zu verlöten. Außerdem haben wir Drähte verwendet, um alle Drucktasten und LEDs zu verbinden. Nachdem der gesamte Lötvorgang abgeschlossen ist, haben wir sichergestellt, dass der LM7805 die richtigen 5 V liefert. Schließlich haben wir einen Schalter zum Ein- und Ausschalten der Schaltung gesetzt. Als wir alle fertig waren, sah es aus wie auf dem Bild unten.
Bau eines Gehäuses für eine Arduino-basierte Waage
Wie Sie sehen können, hat die Wägezelle einige Schraubengewinde, sodass wir sie auf einer Grundplatte montieren können. Wir werden eine PVC-Platte als Basis für unsere Skala verwenden. Dazu schneiden wir zuerst ein Quadrat von 20 * 20 cm und vier Rechtecke von 20 * 5 aus der PVC-Platte. Dann klebten wir mit hartem Kleber jedes Stück und machten ein kleines Gehäuse.
Denken Sie daran, dass wir eine Seite nicht repariert haben, da wir die Drucktasten, LEDs und das LCD darauf platzieren müssen. Dann haben wir eine Plastikplatte für die Oberseite der Skala verwendet. Bevor wir dieses Setup dauerhaft machen, müssen wir sicherstellen, dass vom Boden bis zur Wägezelle genügend Platz vorhanden ist, damit sie sich biegen kann. Deshalb haben wir Schrauben und Muttern zwischen Wägezelle und Basis platziert Einige Kunststoffabstandshalter zwischen Wägezelle und Oberteil. Wir haben eine runde Plastikfolie als Top-Balance verwendet.
Dann platzierten wir das LCD, die LEDs und die Drucktasten an der Vorderseite und alles, was mit einem langen isolierten Kabel verbunden war. Nachdem wir den Verkabelungsprozess abgeschlossen haben, haben wir die Frontplatte mit einer gewissen Neigung auf die Hauptbasis geklebt, damit wir die Werte sehr einfach vom LCD ablesen können. Schließlich haben wir den Hauptschalter an der Seite der Waage angebracht und fertig. So haben wir den Körper für unsere Waage gemacht.
Sie können mit Ihren Ideen entwerfen, aber denken Sie daran, die Wägezelle wie im Bild zu platzieren.
Arduino Waage - Code
Da wir nun mit dem Erstellungsprozess für unsere digitale Waage fertig sind, können wir mit dem Programmierteil fortfahren. Für eine einfache Programmierung verwenden wir die HX711-Bibliothek, die EEPROM-Bibliothek und die LiquidCrystal-Bibliothek. Sie können die HX711 - Bibliothek aus dem offiziellen GitHub - Repository herunterladen oder gehen Tool > gehören Bibliothek > verwalten Bibliothek, dann Bibliothek Suche Schlüsselwort HX711, nachdem die Bibliothek herunterzuladen, es in Arduino IDE installieren.
Zuerst müssen wir die Wägezelle kalibrieren und diesen Wert im EEPROM speichern. Gehen Sie dazu zu Datei> Beispiele> HX 711_ADC und wählen Sie dann den Kalibrierungscode aus. Stellen Sie die Waage vor dem Hochladen des Codes auf eine stabile ebene Fläche. Laden Sie dann den Code auf Arduino hoch und öffnen Sie den seriellen Monitor. Ändern Sie dann die Baudrate auf 572600. Überwachen Sie nun den Monitor und fragen Sie nach dem Gewicht. Dazu müssen Sie t drücken und eingeben.
Jetzt müssen wir das bekannte Gewicht auf die Waage legen, in meinem Fall 194 g. Geben Sie nach dem Platzieren des bekannten Gewichts das Gewicht auf dem seriellen Monitor ein und drücken Sie die Eingabetaste.
Der serielle Monitor fragt Sie nun, ob Sie den Wert im EEPROM speichern möchten oder nicht. Geben Sie also Y ein, um Ja auszuwählen. Jetzt können wir das Gewicht auf dem seriellen Monitor sehen.
Der Hauptcode dieses Projekts, den wir aus der Beispielskizze der HX711-Bibliothek entwickelt haben. Sie können den Code dieses Projekts von unten herunterladen.
Im Codierungsabschnitt haben wir zuerst alle drei Bibliotheken hinzugefügt. Die HX711-Bibliothek dient zur Erfassung der Wägezellenwerte. EEPROM ist die integrierte Bibliothek von Arduino ide, die zum Speichern von Werten im EEPROM verwendet wird, und die LiquidCrystal-Bibliothek ist für das l2C-LCD-Modul vorgesehen.
#einschließen
Dann definierte Ganzzahlen für verschiedene Pins und zugewiesene Werte. Die Wägezellenfunktion HX711_ADC dient zum Setzen des Dout- und Clock-Pins.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; langes t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; float buttonPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Im Setup-Bereich haben wir zuerst den seriellen Monitor gestartet. Dies dient nur zum Debuggen. Dann haben wir die Pin-Modi definiert, alle Drucktasten werden als Eingang definiert. Mit Hilfe der Arduino PULL UP-Funktion setzen wir die Pins normal auf ein logisches Hoch. Deshalb wollen wir dafür keine externen Widerstände verwenden.
pinMode (tpin, INPUT_PULLUP); PinMode (6, OUTPUT); PinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Die folgenden Codezeilen dienen zum Einstellen des I2C-LCD. Zuerst haben wir den Begrüßungstext mit der Funktion LCD.print () angezeigt. Nach zwei Sekunden haben wir die Anzeige mit lcd.clear () gelöscht. Das heißt, am Anfang zeigt das Display ARDUINO BALANCE als Begrüßungstext an und nach zwei Sekunden werden die Messgewichte gelöscht und angezeigt.
lcd.init (); LCD-Rücklicht(); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("Lass uns messen"); Verzögerung (2000); lcd.clear ();
Dann haben wir begonnen, die Werte aus der Ladezelle mit der Funktion loadCell.begin () zu lesen. Danach haben wir das EEPROM für die kalibrierten Werte gelesen und dies mit der Funktion EEPROM.get () . Das heißt, wir haben den Wert bereits mithilfe einer Kalibrierungsskizze in der EEPROM- Adresse gespeichert. Wir nehmen diesen Wert einfach erneut auf.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, kalibrierungswert);
Im Loop-Abschnitt prüfen wir zunächst mit LoadCell.update (), ob Daten aus der Wägezelle verfügbar sind. Wenn verfügbar, lesen und speichern wir diese Daten. Dazu verwenden wir LoadCell.getData () . Als nächstes müssen wir den gespeicherten Wert im LCD anzeigen. Dazu haben wir die Funktion LCD.print () verwendet. Außerdem drucken wir das eingestellte Gewicht. Das eingestellte Gewicht wird mit Hilfe des Druckknopfzählers eingestellt. Das wurde im letzten Abschnitt erklärt.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("weight:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Als nächstes setzen wir den Tara-Wert, dafür lesen wir zuerst den Status der Tara- Taste mit der Funktion digitalRead () . Wenn der Status niedrig ist, tarieren wir dieses Gewicht auf Null. Die Tara-Funktion dieser Waage besteht darin, die Messwerte auf Null zu bringen. Wenn wir zum Beispiel eine Schüssel haben, in die die Dinge geladen sind, ist das Nettogewicht das Gewicht der Schüssel + das Gewicht der Dinge. Wenn wir den Tara-Knopf mit der Schüssel auf der Wägezelle drücken, bevor wir Dinge laden, wird das Gewicht des Korbs negiert und wir können das Gewicht der Dinge alleine messen.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Jetzt müssen wir die Bedingungen für verschiedene Anzeigen wie das Einstellen der Verzögerung des Summers und des LED-Status festlegen. Wir haben das unter if- Bedingungen gemacht, wir haben insgesamt drei Bedingungen. Zuerst berechnen wir die Differenz zwischen eingestelltem Gewicht und Messgewicht und speichern diesen Wert in der Variablen k.
float k = buttonPushCounter-i;
1. Wenn der Unterschied zwischen dem eingestellten Gewicht und dem Messgewicht größer oder gleich 50 g ist, piept der Summer mit einer Verzögerung von 200 Millisekunden (langsam).
if (k> = 50) { digitalWrite (6, HIGH); Verzögerung (200); digitalWrite (6, LOW); Verzögerung (200); }}
2. Wenn der Unterschied zwischen dem eingestellten Gewicht und dem Messgewicht weniger als 50 und mehr als 1 Gramm beträgt, piept der Summer mit einer Verzögerung von 50 Millisekunden (schneller).
if (k 50 && k 1) { digitalWrite (6, HIGH); Verzögerung (50); digitalWrite (6, LOW); Verzögerung (50); }}
3. Wenn das Messgewicht gleich oder größer als der eingestellte Wert ist, wird die grüne LED ein- und ausgeschaltet und der Summer und die rote LED ausgeschaltet.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, HIGH); }}
Wir haben zwei weitere Leerfunktionen () zum Einstellen des eingestellten Gewichts (zum Zählen des Tastendrucks).
Die Funktion erhöht den eingestellten Wert bei jedem Drücken um 10 g. Dies erfolgt mithilfe der digitalRead- Funktion von Arduino, wenn der Pin niedrig ist. Dies bedeutet, dass die Taste gedrückt wird und der Wert um 10 g erhöht wird.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }}
Ähnlich, Beim Checkdown wird der eingestellte Wert für jede Presse um 10 g verringert.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }}
Dies markiert das Ende des Programmierteils.
Diese elektronische Waage auf Arduino-Basis eignet sich perfekt zum Messen von Gewichten bis zu 10 kg (wir können diese Grenze durch Verwendung einer Wägezelle mit höherer Nennleistung erhöhen). Dies entspricht zu 99% den ursprünglichen Messungen.
Wenn Sie Fragen zu dieser auf Arduino basierenden LCD-Gewichtsausgleichsmaschine haben, posten Sie diese bitte im Kommentarbereich. Vielen Dank!