Über den Beitrag
Über Dehnungsmessstreifen (DMS) ist schon sehr viel geschrieben worden. Allerdings gibt es recht wenige Artikel, die wirklich konkret zeigen, wie ihr die DMS beschaltet und die Messwerte mit einem Microcontroller auswertet. Diese Lücke möchte ich mit diesem Beitrag schließen. Im Einzelnen behandele ich die folgenden Themen:
- Allgemeines über Dehnungsmessstreifen
- Wheatstonesche Brückenschaltung
- DMS Messungen mit dem HX711
- DMS Messungen mit Operationsverstärkern
- Für die Bequemen: eine vorgefertigte Lösung
Allgemeines über Dehnungsmessstreifen (DMS)
Was ist ein DMS und wie funktioniert er?
Ein DMS ist ein dehnbarer Widerstand, dessen Widerstandswert sich mit der Dehnung linear ändert. Es gibt die unterschiedlichsten Formen und Materialien. Der Klassiker, den ihr für wenig Geld in Online-Shops bekommt, ist der Folien-DMS:
Der Folien-DMS besteht aus einer Trägerfolie, auf der sich eine dünne Metall-Leiterbahn befindet. Als Metall kommt häufig Konstantan oder eine andere, wenig temperaturabhängige Legierung zum Einsatz. Eine Übersicht über verschiedene DMS-Bauformen findet ihr auf den Seiten von HBM.
Die Wirkungsweise eines DMS ist im Prinzip simpel. Der Widerstand eines Körpers hängt (unter anderem) vom spezifischen Widerstand des Materials, dem Querschnitt und der Länge ab. Wird der DMS gestreckt, so verringert sich der Querschnitt der Leiterbahn und die Leiterbahn wird länger. Folglich nimmt der Widerstand zu. Bei der Stauchung ist es hingegen umgekehrt.
DMS Charakterisierung
Ein Dehnungsmessstreifen hat einen bestimmten Basiswiderstand. Am weitesten verbreitet sind DMS mit 120 oder 350 Ohm. Diese Werte sind nicht normiert, sondern haben sich einfach etabliert. Die Empfindlichkeit des DMS wird durch seinen sogenannten k-Faktor beschrieben. Für einen Widerstand R und eine Länge l gilt:
\frac{\Delta R}{R}=k\cdot\frac{\Delta l}{l} \;\;\;\;\;\Rightarrow\;\;\;\;\;\Delta R=k\cdot\frac{\Delta l}{l}\cdot R
Die maximale Dehnung handelsüblicher Folien-DMS ist meistens mit 2 % angegeben. Der k-Faktor liegt üblicherweise bei 2 bis 2.2. Daraus ergibt sich die folgende, maximale Widerstandsänderung für einen 120 Ohm DMS:
\Delta R_{max}=2.2\cdot 0.02\cdot 120 = 5.28\; [\Omega]
In den meisten Fällen arbeitet man aber weit unterhalb der maximalen Grenzen. Entsprechend gering sind die zu messenden, relativen Widerstandsänderungen. Da Widerstände durch die über sie abfallenden Spannungen gemessen werden, gilt dasselbe für die Spannungen. Typischerweise müssen folglich Bruchteile von Millivolt bestimmt werden.
Die Wheatstonesche Brückenschaltung
Die Messung von geringen Spannungen ist an sich auch kein Problem. Der Knackpunkt ist die geringe relative Änderung durch den großen Basiswert. Und um diesen zu eliminieren, benutzt man die Wheatstonesche Brückenschaltung:
Mit der Erklärung möchte ich nicht zu weit ausholen. Wenn ihr Nachholbedarf habt, empfehle ich auch hier die entsprechenden HBM Seiten. Hier die wesentlichen Punkte:
- R1 und R2 bzw. R3 und R4 sind hintereinander geschaltete Widerstände.
- Die resultierenden Widerstände R1+R2 und R3+R4 sind parallel geschaltet.
- Wenn R1 = R2 = R3 = R4 ist, dann ist der Gesamtwiderstand R1.
- R1 und R2 bzw. R3 und R4 sind Spannungsteiler. Die Spannung an den Punkten A und B wird entsprechend durch das Verhältnis von R1 zu R2 bzw. von R3 zu R4 bestimmt.
- Die Brücke ist abgeglichen, wenn die Spannung zwischen A und B null ist (bei U0 ≠ 0). Für den Fall gilt:
\frac{R1}{R2} = \frac{R3}{R4}
Wenn ihr also als R1 einen DMS einsetzt, R2 dem Basiswert des DMS entspricht und R3 gleich R4 ist, dann ist die Brücke abgeglichen. Entsprechend messt ihr nur die Spannung, die durch die Dehnung oder Stauchung des DMS verursacht wird.
Mehrere Dehnungsmessstreifen einsetzen
In der Praxis werden oft mehrere DMS eingesetzt. Die Anordnung der DMS in der Wheatstone Brücke hängt davon ab, welche von ihnen gedehnt oder gestaucht werden. Setzt ihr zwei DMS ein, und beide werden gleichzeitig gedehnt oder gestaucht, dann müsst ihr sie schräg gegenüberliegend einbauen (R1/R4 oder R2/R3). Wird ein DMS gedehnt und der andere gestaucht, so müssen sie auf einer Seite positioniert werden (R1/R2 oder R3/R4). Bei Verwendung von vier DMS müsst ihr genauso verfahren: die Antagonisten kommen zusammen auf eine Seite, die „im Gleichtakt“ arbeitenden DMS werden schräg gegenüber positioniert.
Verschiedene Gründe sprechen dafür, mehrere DMS einzusetzen:
- stärkeres Signal
- geringeres Rauschen
- Ausgleich thermischer Ausdehnung
- Trennung von Normal- und Biegedehnung
Eine ausführliche Betrachtung findet ihr hier.
Aufkleben und Verbinden der Dehnungsmessstreifen
Das Aufkleben von Dehnungsmessstreifen ist eine Wissenschaft für sich. Die Auswahl des Klebers richtet sich unter anderem nach der Anwendungstemperatur, der Oberflächenrauheit und der zu erwartenden Dehnung. Auch hier empfehle ich einen Blick in die HBM Seiten. Das Problem ist, dass diese Kleber ziemlich teuer sind. Die gute Nachricht ist jedoch, dass ihr bei vielen Nicht-Präzisionsanwendungen und nicht zu großen Dehnungen einfachen Cyanacrylatkleber (Sekundenkleber) verwenden könnt. Auch für die Schutzabdeckung der DMS gibt es spezielle Produkte. Bei mir tat es schlichtes Klebeband.
Falls ihr DMS mit vorhandenen Anschlusskabeln verwendet, müsst ihr prüfen, ob die Kabel isoliert sind und entsprechende Maßnahmen treffen. Haben eure DMS keine Kabel, solltet ihr sie vor dem Aufkleben auflöten. Das ist ein wenig fummelig, es geht aber. Außerdem wird empfohlen, die Anschlusskabel zu verdrillen (was ich zu spät gelesen habe!).
Seid vorsichtig beim Aufkleben, dass ihr nicht eure Finger festklebt. Ich habe die DMS mit Haushaltsfolie aufgedrückt. Und weniger ist mehr! Dicke Klebeschichten sind kontraproduktiv.
Ich hatte zunächst zerschnittene Steckbrückenkabel an die DMS gelötet und mir die Wheatstone Brücke auf dem Breadboard zusammengesteckt. Ich dachte, das sei eine gute Idee, um für meine Versuche flexibel zu bleiben. Davon rate ich jedoch ab. Die Kontaktwiderstände sind nicht zu vernachlässigen. Jede Berührung der Kabel veränderte meine Messwerte. Erst, als ich Wheatstone Brücke fest verlötet hatte, wurden meine Messwerte stabil.
DMS Messungen mit dem HX711
Vielleicht hat sich der eine oder andere von euch zuvor mit HX711 basierten Waagen beschäftigt. Die Wägezellen und das HX711 Modul werden im Set verkauft. Ich habe mal die Schutzschicht einer Wägezelle entfernt und siehe da: es kommen vier Dehnungsmessstreifen (zwei oben, zwei unten) zum Vorschein. Es liegt also nahe den HX711, oder – bequemer Weise – ein HX711 Modul für die Messungen mit Dehnungsmessstreifen zu benutzen.
Der HX711
Der HX711 ist ein 24 Bit (!) A/D Wandler, der besonders gut für Spannungsmessungen an Wheatstone Brücken geeignet ist. Er wird mit 2.6 bis 5.5 Volt betrieben. Die Anschlüsse E+ und E- liefern die Speisespannung für die Wheatstone Brücke (U0 gemäß meiner Abbildung weiter oben). Die Ausgangsspannung der Brücke (Punkte A und B in meiner Zeichnung) wird an den Pins A+ und A- (Kanal A) ausgelesen.
Ihr könnt zwischen zwei Verstärkungen (Gain), nämlich 128 und 64 wählen. Bei 5 Volt Eingangsspannung entspricht das einem Messbereich von +/-20 bzw. +/-40 mV. Alternativ könnt ihr den Kanal B (Anschlüsse B+/B-) nutzen. Jedoch hat dieser nur einen Verstärkungsfaktor 32. Das ergibt bei 5 Volt Eingangsspannung einen Messbereich von +/-80 mV.
Das Modul hat eine Wandlungsfrequenz von 10 Hz voreingestellt. Um es auf 80 Hz umzustellen, müsst ihr den (Null-)Widerstand bei der 10 Hz Markierung auslöten und die Kontakte rechts neben „80Hz“ überbrücken. 10 Hz sollte aber für die meisten Anwendungen reichen.
Mehr Einstellungen gibt es nicht. Ein Datenblatt zum HX711 gibt es z.B. hier.
Anschluss an den MCU
Hier ein Beispiel für den Anschluss des HX711 an eine Wheatstone Brücke (im Folgenden vereinfacht dargestellt) und einen Microcontroller:
Auslesen / Steuern des HX711
Der HX711 gibt seine Messwerte über DOUT aus. Im Grundzustand ist DOUT HIGH. Die Steuerung des HX711 erfolgt einzig über den SCK Pin. Dessen Level stellt ihr zunächst auf LOW ein.
Wenn ein Messwert zum Abruf bereitsteht, geht DOUT auf LOW. Dann könnt ihr den Messwerte bitweise auslesen, beginnend mit dem MSB, also dem höchsten Bit. Dazu schaltet ihr SCK kurz HIGH und wieder LOW. Ist das MSB (Bit 23) des Messwertes eine 1, ist DOUT jetzt HIGH, sonst LOW. Ihr lest DOUT, dann sendet ihr wieder ein kurzes SCK Signal. Nun zeigt der Zustand von DOUT, ob das Bit 22 gesetzt ist. So setzt sich das bis zum Bit 0 fort. Den Messwert setzt ihr so Bit für Bit zusammen.
Nach dem Auslesen von Bit 0 geht DOUT mit dem nächsten (also dem 25sten) SCK Signal dauerhaft auf HIGH. Belasst ihr es dabei, dann bekommt ihr den nächsten Messwert mit Verstärkungsfaktor 128 über den Kanal A. Schickt ihr ein weiteres SCK Signal, dann bekommt ihr den nächsten Messwert über Kanal B mit der Verstärkung 32. Schickt ihr noch ein weiteres SCK Signal, dann erhalten ihr den nächsten Messwert über Kanal A mit der Verstärkung 64. Damit ist eine Auslese- und Einstellsequenz beendet. Dann geht wieder alles von vorne los mit dem Absenken des DOUT Levels. Ihr steuert also während des Auslesens des aktuellen Messwertes die Parameter für die nächste Messung.
So sieht das schematisch aus:
Das Datenblatt enthielt einen kleinen Fehler. Bei Gain 64 muss Channel A stehen. Das habe ich in meiner Darstellung hier korrigiert.
Der Messwert wird als Zweierkomplement geliefert. Der Zahlenbereich geht von 0x800000 (= -8388608) bis 0x7FFFFF (= +8388607). Auch wenn ihr die Messwerte als vorzeichenbehaftete „long“ Variable (32 Bit) definiert, würden die negativen Zahlen ohne weitere Vorkehrungen falsch als positive Zahlen interpretiert. Das liegt daran, dass das höchste, 31. Bit (Zählung beginnt bei null) immer 0 ist. Der Trick: ihr dreht das Bit Nr. 23 einfach um. Dadurch wird der Wertebereich nach 0 bis 16777216 verschoben.
Sketch zum Lesen der Rohdaten
Das mag alles etwas verwirrend erscheinen. Jedoch ist die Programmierung sehr einfach:
#define GAIN_128 25 #define GAIN_64 27 const int doutPin = 4; const int sckPin = 5; void setup() { Serial.begin(57600); pinMode(doutPin, INPUT); pinMode(sckPin, OUTPUT); } void loop() { unsigned long raw = readHX711(); Serial.println(raw); delay(500); } unsigned long readHX711(){ unsigned long data = 0; uint8_t dout; while(digitalRead(doutPin)){} // wait until value is available for (uint8_t i=0; i<GAIN_128; i++){ //highest Gain //delayMicroseconds(1); // uncomment for fast MCUs digitalWrite(sckPin, 1); //delayMicroseconds(1); // uncomment for fast MCUs digitalWrite(sckPin, 0); if (i < (24)){ dout = digitalRead(doutPin); data = (data << 1) | dout; } } data = data ^ 0x800000; // flip bit 23 return data; } void powerDown(){ digitalWrite(sckPin, LOW); digitalWrite(sckPin, HIGH); } void powerUp(){ digitalWrite(sckPin, LOW); }
Noch ein paar Erklärungen:
- Die SCK Signale (also die HIGH und LOW Phasen) sollten mindestens 0.2 µs lang sein. Schnelle MCUs wie der ESP32 können diese Zeiten unterschreiten, sodass ihr delays einfügen müsst.
- Ist der SCK Pin für länger als 60 µs im HIGH Zustand, dann geht der HX711 in einen Power-Down Zustand und verbraucht nur 1.5 µA Strom. Auch die Stromversorgung für die recht stromhungrige Wheatstone Brücke wird dabei unterbrochen.
Ein praktischer Versuch mit DMS und HX711
Mein Ziel war es, mithilfe von DMS, einem Metallstreifen und dem HX711 eine primitive Waage zu bauen. Weniger, um wirklich eine Waage zu haben, sondern um zu prüfen, wie genau und reproduzierbar man mit DMS und einem einfachen Versuchsaufbau messen kann. Den Metallstreifen habe ich einfach auf zwei Holzstücke gelegt. Aufgelegte Gewichte biegen den Streifen und das habe ich mit DMS gemessen.
Einen ersten Versuch habe ich mit einer Halbbrücke durchgeführt, einen Zweiten mit einer Vollbrücke. Bei dem Halbbrückenversuch habe ich 120 Ohm DMS verwendet und 100 Ohm Widerstände auf der gegenüberliegenden Seite. Da ich nur einen kleinen Ausschnitt des Messbereichs des HX711 genutzt habe, musste ich die Brücke nicht abgleichen.
Bei meinem Versuch mit der Halbbrücke war das Metall nicht gut geeignet. Beim Auflegen von Gewichten wurde ein stabiler Messwert nur langsam erreicht. Beim Herunternehmen der Gewichte ging es auch nur langsam und lediglich annähernd zum Nullpunkt zurück. Sprich: das Metall hat sich nicht nur elastisch, sondern auch plastisch verformt.
Der Träger in meinem Vollbrückenversuch war besser geeignet. Durch Auflegen eines bekannten Gewichtes (54 g) habe einen Steigungsfaktor (rawToWeight) bestimmt und die „Waage“ so kalibriert. Außerdem habe ich ihr einen Tara-Taster spendiert. So sah der Sketch dazu aus:
const int doutPin = 4; const int sckPin = 5; const int taraPin = 7; const float rawToWeight = 11296.3; // units per gram long tara = 7385000; void setup() { Serial.begin(57600); pinMode(doutPin, INPUT); pinMode(taraPin, INPUT); pinMode(sckPin, OUTPUT); } void loop() { unsigned long raw = readHX711(); if(digitalRead(taraPin)){ tara = raw; } float weight = ((long)raw - tara)/rawToWeight; Serial.print("Raw result: "); Serial.println(raw); Serial.print("Weight [g]: "); Serial.println(weight); Serial.println("****************"); delay(500); } unsigned long readHX711(){ unsigned long data = 0; uint8_t dout; while(digitalRead(doutPin)){} for (uint8_t i=0; i<25; i++){ //delayMicroseconds(1); digitalWrite(sckPin, 1); //delayMicroseconds(1); digitalWrite(sckPin, 0); if (i < (24)){ dout = digitalRead(doutPin); data = (data << 1) | dout; } } data = data ^ 0x800000; // flip bit No 23 return data; } void powerDown(){ digitalWrite(sckPin, LOW); digitalWrite(sckPin, HIGH); } void powerUp(){ digitalWrite(sckPin, LOW); }
Und hier ist die Ausgabe bei Auflage verschiedener, bekannter Gewichte. Dazu habe ich die Ausgabefrequenz heruntergesetzt, um genügend Zeit zu haben, die Gewichte zu wechseln.
Gar nicht so schlecht, oder? Eine gewisse Abweichung ist bei dieser Bauform einer Waage dadurch bedingt, dass man das Wiegegut immer exakt auf dieselbe Stelle legen muss. Wie zuvor erwähnt, ging es mir nicht um den Bau einer Waage. Ich wollte lediglich zeigen, dass man DMS ausgezeichnet in Kombination mit dem HX711 verwenden kann.
DMS Messungen mit Operationsverstärkern
Allgemeines über OpAmps
Mit dem Thema Operationsverstärker (kurz: OpAmp für Operational Amplifier) könnte ich mühelos mehrere Beiträge füllen. Deswegen werde ich sie hier nicht im Detail erklären. Wenn ihr euch näher ihnen beschäftigen wollt, empfehle ich diese Stelle. Nur soviel:
- OpAmps dienen der Spannungsverstärkung.
- Sie besitzen einen invertierenden („-„) Eingang, einen nicht-invertierenden Eingang („+“) und einen Ausgang (VOUT).
- Die Spannungsversorgung ist oft symmetrisch (also von +x Volt bis -x Volt), es gibt aber auch Anwendungen mit V+ / GND. Der Einfachheit halber verwende ich hier letztere Methode.
- Der OpAmp erhält seine Funktion erst durch Beschaltung mit weiteren Bauteilen (primär durch Widerstände).
- OpAmps können als invertierende oder nicht invertierende Verstärker, als Differenzverstärker, Integrierverstärker, Summierverstärker, u.v.m. eingesetzt werden.
Die OpAmp ICs in DIP Form mit 8 Pins enthalten zwei OpAmps. Hier ein paar gängige Vertreter:
Das Pinout Schema ist für alle obigen Vertreter gleich:
Instrumentenverstärker
Als Erstes habe ich die sogenannte Instrumentenverstärkerschaltung probiert. Es gibt sie mit drei OpAmps, aber auch eine einfachere Version mit zwei OpAmps. Ich habe letztere Version gewählt.
Die Schaltung verstärkt die Spannungsdifferenz zwischen V1 und V2 gemäß der folgenden Gleichung:
V_{out}= \left( 1+ \frac{R_2}{R_1}+\frac{2\cdot R_2}{R_{gain}}\right)\cdot \left( V_2 - V_1 \right)
V1 und V2 sind dabei die Spannungen an den Punkten A und B (s.u.) der Wheatstone Brücke. Dabei gibt es etwas Wichtiges zu beachten. Wenn V1 größer als V2 ist, dann müsste VOut negativ sein. Das würde aber nur funktionieren, wenn ihr den OpAmp mit symmetrischer Spannung versorgt. Die Lösung: Ihr bringt noch ein Poti an, mit dem ihr die Brückenspannung zwischen A und B justieren könnt. Bringt die Ausgangsspannung so weit in den positiven Bereich, dass ihr die zu erwartenden Zustände messen könnt. Das Poti sollte eher hochohmig sein, denn dann könnt ihr die Einstellung feiner vornehmen. Ich habe ein 1 MΩ Poti verwendet.
Die verstärkte Spannung könnt ihr direkt mit dem A/D-Wandler eures Microcontrollers messen. Allerdings sind diese internen Wandler oft nicht besonders genau, wie z.B. beim Arduino UNO oder dem ESP32. Besser ist ein externer A/D-Wandler wie der ADS1115.
Praktisches Beispiel für DMS Messungen mit dem Instrumentenverstärker
Ich habe wieder meinen Metallstreifen mit der DMS Vollbrücke verwendet und versucht, damit Gewichte zu messen. Für den Instrumentenverstärker habe ich folgende Widerstände eingesetzt:
- R1 = 10 kΩ
- R2 = 100 kΩ
- RGain = 330 Ω
Daraus ergibt sich ein Verstärkungsfaktor von ~617.
So sah die Schaltung schematisch mit Fritzing aus:
Und so die Realität:
Und hier noch der Sketch:
#include<ADS1115_WE.h> #include<Wire.h> #define I2C_ADDRESS 0x48 const int taraPin = 7; const float milliVoltToWeight = 12.15; ADS1115_WE adc = ADS1115_WE(I2C_ADDRESS); void setup() { Wire.begin(); Serial.begin(9600); adc.setVoltageRange_mV(ADS1115_RANGE_6144); adc.setMeasureMode(ADS1115_CONTINUOUS); } void loop() { float weight = 0.0; static float tara = 0.0; float voltage = adc.getResult_mV(); if(digitalRead(taraPin)){ delay(2000); voltage = adc.getResult_mV(); tara = voltage; } weight = (voltage - tara)/milliVoltToWeight; voltage = adc.getResult_mV(); Serial.print("Voltage 0 vs GND [mV]: "); Serial.println(voltage); Serial.print("Weight [g]: "); Serial.println(weight); delay(500); }
Ich hatte festgestellt, dass das Drücken des Tara-Tasters den Messwert beeinflusst. Deswegen habe ich das delay(2000)
in Zeile 21 eingefügt.
Mit einem bekannten Gewicht habe ich den Umrechnungsfaktor von Millivolt in Gramm (milliVoltToWeight) bestimmt. So sah dann die Ausgabe nach Drücken der Tara-Taste und nach Auflage eines 54 g Gewichtes aus:
Auch nicht so schlecht, wie ich finde. Über Mittelwertbildung oder Dämpfungsfunktionen kann man die Werte noch sehr viel konstanter bekommen.
Differenzverstärker
Alternativ könnt ihr eine Differenzverstärkerschaltung einsetzen. Diese benötigt nur einen OpAmp und einen Widerstand weniger.
Wenn R1 = R2 ist und R3 = R4, dann gilt:
V_{out}=\frac{R_3}{R_1}\cdot \left( V_2-V_1\right)
Auch hier muss man dafür Sorge tragen, dass (V2 – V1) nicht negativ wird. Deshalb habe ich wieder ein Poti zum Einstellen der Brückenausgangsspannung eingebaut.
In meinen Versuchen habe ich wieder Vollbrücke verwendet. Die Widerstände R1 und R2 für den OpAmp betrugen 330 Ohm, R3 und R4 betrugen 680 kOhm. Das ergibt einen Verstärkungsfaktor von ~2061. Damit konnte ich ähnlich gute Ergebnisse erzielen wie mit der Instrumentenverstärkerschaltung.
Für Bequeme: eine fertige Lösung
Wenn ihr keine Lust habt zu löten und ihr mit einem einzelnen DMS auskommt, dann kann ich euch eine solche, fertige Lösung empfehlen:
Auf dem Modul befindet sich eine LM358 basierte Verstärkerschaltung mit festem Verstärkungsfaktor. Das Potenziometer dient der Einstellung des Nullpunktes. Im Prinzip also wie bei den zuvor beschriebenen Schaltungen. Ihr müsst lediglich 5 Volt anschließen und könnt die Ausgangsspannung direkt abgreifen. Ich habe ein solches Teil ausprobiert und es funktionierte tadellos. Ihr bekommt diese Module auf eBay oder AliExpress für ein paar Euro. Sucht nach „DMS Biegesensor“ bzw. „strain gauge“.
Danksagung
Die Dame mit der Dehnübung auf dem Beitragsbild verdanke ich Pexels auf Pixabay.
Den HX711 als Fritzing Bauteil hat Bruce Tsao erschaffen. Ihr bekommt es hier auf GitHub.
Danke für HX711_raw_data.ino, jetzt habe ich endlich wirklich verstanden was das HX711 tut und kann beliebig viele (im Rahmen des Stromflusses an SCK) HX711 mit nur einem SCK Signal parallel auslesen. Der Groschen ist endlich gefallen. 1000 Dank!
Vielen Dank für den guten Beitrag!
Ich habe einen ähnlichen Versuchsaufbau erstellt (HX711 und DMS) und eine Variante mit zwei DMS in der Brückenschaltung getestet. Ein DMS misst hierbei die Biegung, der andere ist an einer unbelasteten Stelle der Wägezelle angebracht und soll Temperatureinflüsse kompensieren. Mein Ziel war es hierbei nicht eine möglichst perfekte Waage zu bauen sondern ich wollte etwas über DMS lernen.
Jetzt ist mir aufgefallen, dass ich ein deutlich stabileres Messignal erhalte wenn ich den HX711 mit 3,3V anstelle 5V speise. Nun kann ich mir das nur so erklären, dass bei höherer Spannung sich die Messstelle stärker erwärmt und diese Temperatureffekte mein Signal mit beeinflussen. Eigentlich hätte ich ja aber erwartet, dass der „passive“ DMS meines Aufbaus eben diese Störeffekte kompensiert.
Ist eine niedrigere Spannung vllt noch aus anderen Gründen vorteilhaft?
Viele Grüße
Andreas
Hallo Andreas,
ich habe diese Erfahrung nicht gemacht, ich habe allerdings auch nicht wirklich danach geforscht, ob ich stabilere Werte bei 5 oder 3.3 V bekomme.
Was du mal probieren könntest, ist den HX711 zwischen Messungen mit der powerDown()-Funktion in den Schlaf zu schicken und mit powerUp() wieder zu wecken. Das könnte die Erwärmung begrenzen. Im Nachhinein weiß ich nicht mehr, warum ich die Funktionen im Sketch implementiert, aber nicht genutzt habe.
Vielleicht musst du nach dem powerUp() ein bsisschen warten, bis stabile Werte kommen.
VG, Wolfgang
Hallo Wolfgang,
vielen Dank für deinen Beitrag. Ich habe ein problem. Und zwar will ich eigentlich eine Zahnstange mit DMS vekabeln und bei dieser dann mittels einer Viertelbrücke die beaufschlagte Kraft messen. Jedoch bringt mir deine Kalibrierungssoftware immer den Kalibrierungswert (KW) 0. Wenn ich mir die Ausgabe vom KW anschaue kommt „nan“. Das heißt er teilt meines Erachtens nach irgendwo durch Null. Man muss dazu sagen ich habe einen DMS mit 350 Ohm und die drei anderen Widerstände habe ich 330 Ohm. Ich habe dann mal drei 330 Ohm Wiederstände und einen Poti geschaltet. Nur wenn ich einen Ableich mittels dem Poti mache bringt mir das Programm einen KW. Sobald ich aber über paar mV Ausgangsspannung habe und ich den das Programm laufen lasse bringt er mir wieder nan. Dann dreh ich am poti und irgendwann kommt „inf“. Letzte Woche hatte ich zwei DMS beide 350 Ohm mit zwei Widerständen von je 220 Ohm geschaltet und das gleiche Problem gehabt, obwohl die Brücke ja bei R1/R2=R3/R4 abgeglichen sein müsste. Hast du so ein Problem mal gehabt?
Sorry habe vergessen zu erwähnen, dass ich die Variante mit HX711 verwendet habe.
Hi Eduard, was bezeichnest du als meine Kalibriersoftware? Den Sketch HX711_raw_data.ino? Der Sketch liefert ja eigentlich nur die Rohdaten und keinen Kalibrierwert. Den Kalibrierwert erhältst du, indem du einmal einen Rohwert ohne Belastung ermittelst und dann einen Rohwert mit Belastung (bei einer Waage wäre das ein Gewicht, es könnte aber auch ein Biegewinkel oder eine Ausdehnung sein). Die Differenz der beiden Rohwerte, geteilt durch die Belastung ergibt den Kalibrierwert, also die Steigung, die ich dann in meinem Beispiel HX711_balance als rawToWeight eingesetzt habe. Bei den Messungen unbekannter Belastungen musst du dann erstmal wieder den Ausgangswert ohne Belastung (Tara) ermitteln. Diesen Wert ziehst du von den Rohwerten unter Belastung ab und teilst die Differenz durch den Kalibrierwert. Das macht der Sketch HX711_balance. Ich bin mir also nicht sicher an welcher Stelle du einen Kalibrierwert „nan“ erhältst. Kannst du das noch einmal spezifizieren?
VG, Wolfgang
Hallo Wolfgang,
einen tollen Blog mit sehr interessanten Artikeln & ausführlichen Anleitungen hast du da.
Mach weiter so & liebe Grüße
Danke schön!
Hallo Wolle,
ich verfolge deine Beiträge auch. Finde ich sehr interessant und detailiert. Zum Thema DMS kann ich eventuell auch etwas beisteuern da ich täglich mit Waagen zu tun habe. Für die Herstellung von Wägezellen werden spezielle Materialien vewendet. Edelstahl, Aluminium oder andere Legierungen. Diese haben spezielle Verformungseigenschaften. Darauf wird vereinfacht gesagt der DMS aufgeklebt. Zusätzlich zum Abgleich der DMS Brücke werden auch Temperaturkompensationswiderstände montiert. Eine geringe Änderung der Temperatur bewirkt schon einiges. Kann man testen mit einen Fön oder Heissluftgebläse. Wenn das Ausgangssignal nach Belastung nicht wieder auf Null geht liegt es wahrscheinlich am Material. Die Dehnungseigenschaften sind nicht optimal. Das ist die Hysterese zwischen Be und Entlastung. Ich habe mit dem HX 711 auch schon einige versuche angestellt. Derzeit werden die Wägezellen mit 5 VDC oder pulsierend gespeist. Der Kennwert der Wägezellen beträgt 1,00mV/V – 3,00mV/V je nach Hersteller. Damit kann man auch eine theoretische Justierung der Waage durchführen. ( 5V Speisespannung x 2,00 mV/V sind 10 mV bei Maximallast der Wägezelle (Bsp. 10kg)). Der Nullpunkt ist als Offset zu sehen und zu berücksichtigen.
Gruß Camillo
Hallo Camillo, vielen Dank für die fundierten Informationen! VG, Wolfgang
Hallo Wolfgang,
danke für deine Antwort. Die Nullpunktstabilität und der Endwert sind bei Einzelversuchen sehr reproduzierbar und erstaunlich genau (stabil). Das Eigenartige war das „wandern“ bei langer Belastung. Das ist aber genau das, was ich für die Propanflasche brauche. Da ich den Test auf dem Wohnzimmertisch gemacht habe, hatte ich an den zwei Abenden auch die gleiche Temperatur. Längere Tests sind am Veto meiner Frau gescheitert. Hole ich aber noch einmal nach. Notfalls muss ich einen Offset reinrechnen. Der Abfall wird sich ja stabilisieren. Für die Gasflasche habe ich auch andere Wägezellen, vielleicht verhalten sich die auch anders. Der Test lief mit einem 1kg Wiegebalken bei rund 90% Belastung.
VG, Lothar
Hallo Lothar, wenn die Werte bei einem Langzeitversuch auf 90% des ursprünglichen Wertes zurückgehen und du dann das Gewicht herunternimmst, geht der Wert dann auf 0 oder in den Minusbereich? Das wäre für die ERklärung des Phänoens wichtig. VG, Wolfgang
Hallo Wolfgang,
deine Seiten sind eine wahre Fundgrube, super erklärt und mit nachvollziehbaren Quellen ergänzt. Jetzt aber mal zu den DMS. Beim Bau einer „Dauerwaage“, soll der Gewichtsverlauf, in meinem Falle einer Gasflasche, über längere Zeit ermittelt werden. Bei Versuchen mit konstantem Gewicht über 24h sank die Anzeige um ca. 3%. Nach abnehmen und wieder auflegen des Gewichts war dieses wieder bei 100%.
In Blogs wo es z.B. um Bienenstockwaagen geht wurde so ein Effekt nicht untersucht.
Ist das erklärbar.
Grüße
Lothar
Hallo Lothar,
das ist in der Tat mysteriös und ich kann auch nur wild spekulieren. Wenn die DMS nicht richtig aufgeklebt sind oder der Kleber nicht geeignet ist, dann könnte sich der gestauchte DMS vielleicht mit der Zeit dehnen bzw. der gedehnte DMS sich zusammenziehen. Dann würde ich allerdings erwarten, dass bei Herunternahme der Messwert nicht (sofort) auf Null zurückgeht. Ist das der Fall?
Beim (schnellen) Auflegen eines Gewichtes kann das Gewicht erstmal über das Ziel hinausschießen, da zusätzlich zu der Gewichtskraft die kinetische Energie des Wägegutes auf die Waage wird. Normalerweise würde das dann aber kurz hin- und herschwingen. Kommst du, wenn du das Gewicht ganz langsam auflegst, auf denselben Gewichtswert?
Oder irgendetwas mit der Temperatur und der Ausdehnung der Wägezelle? Würde allerdings nicht erklären, dass beim erneuten Auflegen wieder der ursprüngliche Wert erreicht wird.
Keiner meiner Erklärungsversuche ist wirklich gut. Vielleicht ist einem anderen Leser so etwas schon passiert?
VG, Wolfgang
Wolfgang, super erklärt das Thema.
Ich bin schon ein paar mal an der Wheatstoneschen Messbrücke vorbei gekommen, das erste mal war es noch analog mit einer Viertelbrücke und abgeglichenen Stromquelle Gewichte zu wiegen, und immer habe ich mich gefragt wie es digital geht, als ich an der hx711 vorbeigekommen bin.
Toll das du dir die Zeit genommen hast das so dezidiert zu erklären, dafür meinen besten Dank.
Schönes Wochenende.
Xaver
Herzlichen Dank!