Sowohl an dem Projekt als auch diesem Artikel darüber wird noch gearbeitet!


Hintergrund | Aus Interesse habe ich vor einiger Zeit begonnen, mich ein wenig mit Dehnungsmesstreifen (DMS) und Wägezellen zu beschäftigen. Als ich mir in diesem Rahmen verschiedene Möglichkeiten der elektronischen Auswertung angesehen habe, bin ich auf den HX711 von Avia Semiconductor gestoßen. Dieses IC enthält im Wesentlichen alles, was zum Verstärken und Digitalisieren der Messbrücke einer Wägezelle nötig ist. Um ein wenig praktische Erfahrung mit Wägezellen zu sammeln, habe ich eine kleine Laborwaage auf dieser Basis aufgebaut. Obwohl von vornherein klar war, dass eine Auflösung im Milligrammbereich mit den gegebenen Mitteln kaum realisierbar sein würde, wollte ich probieren, wie weit ich zumindest in diese Richtung vorstoßen kann.
Mechanischer Aufbau | Das Gehäuse der Waage wurde aus eloxiertem Aluminium und PVC hergestellt. Für die Oberschale wurde zunächst ein Aluminiumstreifen mit allen erforderlichen Ausschnitten (aber noch nicht allen Bohrungen) aus einem Blech auf einer Wasserstrahlmaschine herausgeschnitten. Um die drei Abkantungen durchführen zu können, durch die das Blech in seine Form für das Gehäuse überführt wird, wurden auf einer Kreissäge an den entsprechenden Stellen Nuten in das Blech geschnitten. Die Biegevorgänge fanden auf einer manuellen Abkantbank statt. Die Seitenteile für das Gehäuse wurde aus PVC angefertigt. Jedes Seitenteil wurde aus zwei Einzelteilen hegestellt, die dann mit Quellschweißmittel "kalt" miteinander verschweißt wurden. Dass das Innenteil der Gehäuseseiten aus hellgrauem PVC besteht, liegt nur daran, dass zu dem Zeitpunkt kein schwarzes Material der gewünschten Stärke zur Hand war - hat also keinen technischen Grund.
  

  

  

Die Wägezelle (dazu siehe unten) wurde über Sechskantbolzen von unten mit der Gehäuseoberschale verschraubt. Auf der gegenüberliegenden Seite der Zelle befinden sich ebenfalls Sechskantbolzen, die durch ein Loch des Gehäuses hindruchragen und an denen der Wägeteller befestigt ist. Ursprünglich hatte ich eine etwas aufwändiger Aufnahme für den Wägeteller geplant, daher das große Loch, das für die jetzige Konstruktion natürlich keinen Sinn macht - aber auch nicht stört. Die Platine mit der Elektronik (dazu siehe unten) wird über die Befestigungslöcher des LCDs mit dem Gehäuse verschraubt. Stromversorgungsbuche, Ein-Aus-Schalter und USB-Buchse befinden sich in der Gehäuserückwand, die entsprechende Verkabelung läuft "frei fliegend" durch das Gehäuse. Die verwendete USB-Buchse ist eigentlich für Print-Montage gedacht, ich habe sie einfach in den Ausschnitt auf der Gehäuserückseite eingeklebt. Das ist keine übermäßig elegante Lösung, macht aber bisher einen stabilen Eindruck.

  

Um den Wägeteller einerseits mechansich gegen zu viel Druck von oben zu schützen und ihn außerdem ein wenig gegen Luftzug u. ä. abzuschirmen, ist er von einem Acrylring umgeben. Dieser liegt innerhalb von vier Schraubenköpfen, kann also bei Bedarf einfach abgenommen werden.

  

  


Dehnungsmesssteifen (DMS) | Das zentrale Element einer elektronischen Waage ist der Messumformer, der die Gewichtskraft des zu wiegenden Objektes in eine elektrische Größe umwandelt. Diese Uwandlung geschieht hier mittels einer sog. Wägezelle. Die eigentlichen Sensoren der hier verwendeten Wägezelle sind Dehnungsmessstreifen (DMS). Wie deren Name andeutet, registrieren diese mechanische Deformation. Sie werden auf einen Körper aufgebracht und regisitrieren dann dessen Verformung durch die einwirkende Kräfte.
Die Funktion eines DMS beruht darauf, dass elektrische Leiter (und Halbleiter) ihren Widerstand bei Deformation ändern. Die relative Widerstandsänderung ΔR/R0, d.h. die Änderung des Widerstandes ΔR im Verhältnis zum Grundwiderstand R0 vor der Änderung, hängt von der relativen Dehnung ε = Δl/l0, also der Änderung der Länge Δl im Verhältnis zur Grundlänge l0 vor der Änderung ab:
ΔR/R0 = k * ε = k * Δl/l0
Die Bedeutung des Faktors k, auf Deutsch oft als "k-Faktor", im Englischen als "gauge factor" bezeichnet, wird durch Umstellen obiger Gleichung deutlicher:
k = (ΔR/R0) / ε = (ΔR/R0) / (Δl/l0)
Der k-Faktor gibt also an, in welche relative Widerstandsänderung eine relative Längenänderung vom DMS "übersetzt" wird: je größerer k-Faktor, je größere Widerstandsänderung bei einer Dehnung.
Verantwortlich für die Widerstandsänderung eines Leiters bei Dehnung ist zum einen ein rein geometrischer Effekt: Je größer die Länge l eines Leiters bei konstantem Querschnitt wird, je größer wird sein Widerstand R, und je größer die Querschnittsfläche A bei konstanter Länge wird, je kleiner wird der Widerstand R. Es gilt somit R ∝ l/A. Der Proportionalitätsfaktor, der dieses Verhältnis quantitativ bestimmt, ist der spezifische Widerstand ρ (roh):
R = ρ * (l/A)
Wird ein Leiter gedehnt, definiert das Verhältnis der relativen Änderung des Durchmessers Δd/d0 zur relativen Änderung der Länge Δl/l0 die Widerstandsänderung. Dieses Verhältnis wird als Possionzahl ν (ny) bezeichnet:
ν = - (Δd/d0)/(Δl/l0)
Die Poissonzahl ist eine dimensionslose Materialkonstante. Sie ist für die meisten Stoffe <0.5, d. h. sie weisen eine stärkere Längs- als Querschnittsänderung auf. Das Volumen dieser Materialien nimmt bei Dehnung also zu. Eine Poissonzahl von 0.5 zeigt an, dass die Dehnung ohne Volumenänderung des Körpers stattfindet.
Neben dem geometrisch Effekt führt bei Dehnung eines Leiters außerdem der Piezoresistive Effekt zu einer Widerstandsänderung. In diesem Falle führt die Dehnung des Kristallgitters eines Materials zu einer veränderten Beweglichkeit der freien Elektronen und somit zu einer Leitfähigkeitsänderund. Der Piezoresistive Effekt kann als relative Änderung des spezifischen Widerstandes Δρ/ρ eines Materials unter dem Einfluss einer Dehnung ε beschrieben werden. Fast man den geometrischen sowie den piezoresistiven Effekt auf die relative Widerstandsänderung ΔR/R0 zusammen, ergibt sich:
ΔR/R0 = Δρ/ρ0 + Δl/l0 - 2Δd/d0
Das vordere Glied beschreibt den Piezoresistiven Effekt als relative Änderung des spezifischen Widerstanden, die letzten beiden Glieder beschreiben den geometrischen Effekt, Δl/l0 die Längsdehnung, 2Δd/d0 die Änderung des Querschnitts. Mit ε = Δl/l0 und ν = - (Δd/d0)/ε (siehe oben) lässt sich das Umformen zu:
ΔR/R0 = ε ((Δρ/ρ0)/ε + 1 + 2ν)
Wie man sieht, entspricht der Term (Δρ/ρ0)/ε + 1 + 2ν dem k-Faktor. Für Legierungen, die oft zur Herstellung von DMS verwendet werden, ist ν ≈ 0.5. Sieht man vereinfachend vom Piezoresistiven Effekt ab, würde dieser Wert eine Ausdehnung des Materials ohne Volumenänderung bedeuteten, die Widerstandserhöhung durch Verlängerung sich also in gleichem Maße wie die Widerstandserhöhung durch Verringerung des Leiterquerschnitts auswirken. Für diesen Fall würde ΔR/R0 dann also:
ΔR/R0 = ε (1 + 2 * 0.5) = 2ε
das heißt, dass
k = (ΔR/R)/ε = (ΔR/R0)/(Δl/l0) = 2
Ein Material das sich mit einer Poissonzahl von 0.5 ausdehnt, würde also einen k-Faktor von 2 aufweisen, wenn der Piezoresistive Effekt vernachlässigbar ist.
Bei metallischen DMS ist ein k-Faktor von etwa 2 oft anzuftreffen. Dieser verhältnismäßig kleine k-Faktor bedeutet, dass nur kleine Widerstandsänderungen durch Dehnungen hervorgerufen werden. So würde für k = 2 eine Längenänderung von 0.1% eine Widerstandsänderung von nur 0.2% nach sich ziehen. Um derart kleine Widerstandsänderungen zuverlässig auswerten zu können, ist ein gewisser schaltungstechnischer Aufwand nötig.
 
Das linke Bild zeigt einen DMS. Auf einer Trägerfolie sind einige dünne metallische Bahnen angeordnet. Diese sind jeweils an ihren Enden verbunden, so dass sich ein langer unverzweigter Leiter ergibt. Wird diese Struktur in ihrer Längsachse gedehnt, werden die einzelnen Leiterbahnen länger, gleichzeitig nimmt ihr Querschnitt ab. Das hat wie eben ausgeführt zur Folge, dass sich der Widerstand der gedehnten Bahnen erhöht. Umgekehrt führt eine Stauchung der Struktur zu verringerter Länge und erhöhtem Querschnitt der Bahnen, also insgesamt zu einer Widerstanderniedrigung des DMS.


Wägezelle | Bei Wägezellen wie der hier verwendeten werden typischerweise vier DMS eingesetzt. Diese sind dann auf einem metallischen Verformungskröper wie im Bild unten links gezeigt verklebt. Zur Verwendung der Wägezelle wird eine Seite fest gelagert, während auf die andere Seite die zu messende Kraft einwirkt. Der hantelförmige Ausschnitt in dem Körper sorgt dafür, dass sich die Struktur unter Last als Parallelogramm verformt. Dadurch bleibt die Fläche, auf die die Kraft einwirkt, senkrecht zur Kraft orientiert und die Verformung unabhängig davon, wo die Kraft einwirkt. Hier kommt also das gleiche Prinzip zum Einsatz, wie bei der klassischen Roberval Waage. Die DMS sind natürlich dort angebracht, wo die Verformung auftritt, wie die Bilder zeigen. Bei Belastung wird auf der Ober- und Unterseite der Wägezelle jeweils ein DMS gestaucht und einer gedehnt.
   
Die DMS auf der Wägezelle sind als Wheatstone'sche Brücke verschaltet. Man kann sich diese als zwei parallelgeschaltete Spannungsteiler vorstellen, die in diesem Falle mit einer konstanten Spannung versorgt werden. Die Differenzspannung zwischen den beiden Teilern wird durch einen Differenzverstärker ausgewertet. Wie die nebenstehnde Abbildung zeigt, ist die Brücke so verschaltet, dass Dehnung und Stauchung der DMS auf Ober- und Unterseite der Zelle die Teiler gegeneinander "verschieben", sodass die Differenzspannung bei mechanischer Belastung zunimmt. Da wie oben ausgeführt die relativ geringen Längenänderungen der DMS zu entsprechend geringen Widerstandsänderungen führen, sind auch die resultierenden Differenzspannungen klein. Für die Wägezelle, die ich verwende, ist eine Ausgangsspannung von 0.5 ± 0.1 mV/V angegeben. Unter maximaler Nennlast (in diesem Falle 100g) und 5 V Speisespannung würde die Brückenspannung demnach 2.5 ± 0.5 mV betragen.
Elektronik | Die Schaltung wurde auf einer doppeltseiten Platine in SMD aufgebaut. Die Größe der Platine wird durch das Dislplay bestimmt, nur für die Elektronik hätte sie deutlich kleiner ausfallen können.
   
Die Auswertung der Wägezelle besorgt der HX711 des chinesischen Herstellers Avia Semiconductor. Das IC enthält einen Programmable Gain Amplifier (PGA), der die Brückenspannung mit einem Gain von wahlweise 32, 64 oder 128 verstärkt. Zur Versorgung der Brücke steht ein Linearregler mit Bandgap Referenz (UBG = 1.25V) im IC zur Verfügung, der allerdings extern um einen Transistor ergänzt werden muss. Die Ausgangsspannung des Reglers wird über einen externen Spannungsteiler eingestellt. Ein 24 Bit Analog-Digital-Wandler (ADC) übersetzt die Brückenspannung in einen digitalen Wert, der über ein einfaches synchron serielles Signal ausgegeben wird (s.u.). Der HX711 kann mit interner Taktung bis zu 80 Werte in der Sekunde nehmen.
Ich verwende den HX711 entsprechend dem Applikationsbeispiel aus dem Datenblatt. Um eine möglichst hohe Spannung der Brücke zu erzielen, wird der Linearregler des HX711 so eingestellt, dass seine Ausgangsspanung knapp unter der Betriebsspannung des ICs liegt. Für R8 wird 20kΩ gewählt, für R11 8.2kΩ, sodass die Brücke mit
UAVDD = UBG * (R8 + R11) / R11 = 1.25V * (20kΩ + 8.2kΩ) / 8.2kΩ ≈ 4.23V
versorgt wird. Diese Spannung stellt indirekt auch den Referenzwert für die AD-Wandlung im HX711 dar. Für AVDD = 4.23V und Gain 128x ist der Messbereich des ADCs laut HX711 Datenblatt
VINP-VINN = ±0.5 (AVDD/Gain) = ±16.52 mV
Dieser Spannungbereich wird mit 24 Bit aufgelöst, es ergibt sich also ein Auflösung von 1.97 nV/LSB für den ADC.
Pin 14 (XI) liegt auf Masse und gibt damit vor, dass der HX711 auf internem Takt läuft. Pin 15 (Rate) liegt auf +5V und stellt damit die Datenausgaberate auf 80 Hz. Der zweite Messkanal des Bausteins, Pin 9 und 10, wird nicht verwendet und liegt deshalb auf Masse. Der Rest der Beschaltung des HX711 dient der Filterung bzw. Siebung.
Der zentrale Controller der Schaltung ist ein Atmel AVR mega168. Er erzeugt ein Taktsignal (PD_SCK), das die Datenbits (DOUT) aus dem HX711 rausschiebt. Die Daten werden dann im Controller aufbereitet, insbsondere in eine Masse umskaliert und auf einem LCD dargestellt. Beim Display handelt es sich um ein 128 x 64 Pixel GLCD mit einem KS108 kompatiblen Controller. Ansonsten hängen noch drei Tasten zur Bedienung der Waage am AVR. Der µC wird über K4 programmiert. Ein verpolungsgeschützter 7805 erzeugt 5V für die gesamte Schaltung.
Für die USB Verbindung kommt ein FT232RL zum Einsatz. Dämlicherweise habe ich einen Schaltungsfehler bei der ersten Version der Platine gemacht: der FT232 hängt dort nicht am Hardware-UART des AVRs. Deswegen muss die serielle Kommunikation über einen Software UART erfolgen (siehe Software). Bei einer zweiten Revision der Platine (falls es sie gibt) sollte das behoben werden.



Rauschen und Drift | Die Spannungsänderungen, die an der Wägezelle bei Belastung auftreten, sind sehr gering. Die Empfindlichkeit der Zelle ist mit 0.5 ± 0.1 mV/V angegeben. Unter maximaler Last (100g) und 4.23V Versorgung der Zelle würde die Brückenspannung demnach nur 2.115 ± 0.423 mV betragen, was umgerechnet einer Empfindlichkeit von 21.15 ± 4.23 µV/g bzw. 21.15 ± 4.23 nV/mg entspricht. Die Messung ist insofern an verschiedensten Stellen anfällig für Störeinflüsse, die im Endeffekt die Genauigkeit des Messergebnisses beeinflussen. Schon auf Ebene des HX711 treten verschiedene Rauscheffekte auf. Das Datenblatt gibt für ±20mV Eingangsempfindlichkeit (128x Gain) 90 nV RMS Rauschen an, was bei 24 Bit immerhin schon 5.2 Bit sind. Dazu addieren sich noch verschiedene andere Rauschquellen. Um eine Idee vom Rauschen des HX711 zu bekommen, habe ich statt Wägezelle einen Festwiderstand von 1kΩ an den Eingang des HX711 angeschlossen. Ich messe auf diese Weise ein Rauschen von 117.6 nV RMS, entsprechend etwa 5.97 Bit. Dieser Wert liegt also tatsächlich relativ nahe an der Datenblattangabe. Durch das Bilden eines gleitenden Durschnitts und einer einfachen Ausreißerkorrektur lässt sich das Rauschen auf etwa 3.18 Bit drücken. Mit angeschlossener Wägezelle ist das Rauschen deutlich größer, nämlich etwa 7.67 Bit ohne Filterung und 4.11 Bit mit Filterung. Das ungefilterte Rauschen entspricht umgerechnet einer Streuung der Gewichtsmessung von etwa 31 mg RMS, das gefilterte Rauschen bedeutet eine Streuung von etwa 2.7 mg RMS. Da es sich hierbei um RMS Werte handelt (strenggenommen um STD Werte, da der Mean nicht berücksichtigt wird), ist die Schwankung der Werte auf dem LCD allerdings "gefühlt" größer.



Um das Driften des Gesamtsystems rudimentär zu charakterisieren, habe ich die Waage über 15 Stunden laufen lassen und die USB Ausgabe aufgezeichnet. Weil zu erwarten war, dass die Drift temperaturabhängig ist, habe ich parallel die Temperatur mitgeloggt. Um Raumtemperaturänderungen herbeizuführen, wurde ein wenig an der Zimmerheizung gedreht. Zumindest für diesen einen Versuch sieht es so aus, als hätte die Temperatur einen starken Einfluss. Wie die folgende Abbildung zeit, folgt der Ausgabewert des HX711 mit einer gewissen Trägheit grob der Raumtemperatur. Ich habe die Temperatur gegen den ADC Wert aufgetragen, der jeweils bei einer Temperatur ausgegeben wurde. Für diese Auswertung habe ich die Verzögerung zwischen den beiden Signalen manuell auszugleichen, d. h. die Kurven aufeinander geschoben. Das Ergebnis kann also nur eine grobe Schätzung sein. Wie das rechte Diagramm der unteren Abbildung zeigt, kann der Temperatureinfluss auf den Ausgabewert der Waage grob linear angenähert werden. Wie die Steigung des Fits zeigt, ändert sich der Ausgabewert des ADCs um etwa 254/°C.
 
Über den Kalibrierungsfaktor von 6491/g (siehe Kalibrierung) ergibt sich daraus eine Temperaturabhängigkeit der Gewichtsmessung von 0.039 g/°C. Es braucht also umgerechnet nur die minimale Temperaturänderung von etwa 0.026°C, um die Wägung um 1 mg zu verfälschen. Wenn ich die Angabe ±0.03%/10K in den technischen Daten der hier verwendeten Wägezelle richtig lese, sind umgerechnet eigentlich nur ±0.003 g/°C Temperatureinfluss zu erwarten. Der von mir gemessene Wert liegt also etwa eine Größenordnung ungünsitger.
Kalibrierung | Um den Zusammenhang zwischen den ADC Werten vom HX711 mit den entsprechenden Gewichten auf dem Wägeteller möglichst exakt zu ermitteln, habe ich definierte Volumina destilliertes Wasser auf die Waage gegeben und dazu den ADC Wert ausgelesen. Ich verwende hier eine kalibrierte einstellbare Mikropipette ("Eppendorf-Pipette") um jeweils 1000 µl bidestiliertes Wasser in ein Schälchen auf der Waage zu pipettieren. Diese Pipetten sind einigermaßen genau, in diesem Volumenbereich haben sie (nach ISO 8655) aber immer noch einen Fehler von ± 1.4% (± 14 µl).

  

Den 1000 µl Pipettierschritt habe ich 58 Mal wiederholt, sodass in Schritten von etwa 1 g ein Gewichtsbereich von knapp 60 g abgedeckt wurde. In der folgenden Abblildung unten zeigt das obere Diagramm den kontinuierlich von der Waage ausgegebenen ADC Wert. Dieser Wert ist bereits deutlich gefiltert (siehe Software), aber ansonsten unskaliert. Der etwas unregelmäßige Kurvenverlauf resultiert daraus, dass ich nicht immer exkat die gleiche Zeit bis zum nächsten Pippetierschritt gewartet habe.
Um jetzt möglichst einfach die Abstände der Plateauwerte ermitteln zu können, wurde ein Histogramm der aufgenommenen ADC Daten berechnet (mittleres Diagramm in der folgenden Abbildung). Dieses zeigt über den gesamten ADC Wertebereich, wie häufig jeder einzelne Wert auftritt. Da nach jeder Erhöhung der Wassermenge auf der Waage eine gewisse Zeit gewartet wurde, treten die Plateauwerte gehäuft auf und bilden somit lokale Maxima im Histogramm. Die ADC Werte, die diesen Peaks entsprechen wurden halbautomatisch aus dem Histogramm ermittelt (rote Kreuze).
Da jeder Peak einer gewissen Wassermenge im Wägeschälchen entspricht, kann nun die der Wassermenge korrespondierende Masse gegen den zugehörigen ADC Wert aufgetragen werden (unteres Diagramm in der folgenden Abbildung). Die Umrechnung des Wasservolumens in eine Masse erfolgt über die Dichte des Wassers. Da diese temperaturabhängig ist, sollte sie aus einer Tabelle für die tatsächliche Wassertemperatur ermittelt werden. Bei 21.2°C beträgt die Dichte von Wassers 0.997974 g/ml (unter Vernachlässigung einiger weiterer Randbedingungen).
Der Zusammenhang aus Masse auf dem Wägeteller und ADC Wert kann sehr gut mit einem einfachen linearen Modell beschrieben werden. Der ADC gibt einen Wert 6491 pro Gramm aus, wie man an der Steigung der Geradengleichung sieht. Die Umkehrfunktion der Geradengleichung gibt an, welcher Masse ein gemessener ADC Wert entspricht. Diese wird dementsprechend in der Firmware verwendet.


Der Kalibrierungsfaktor von 6491/g bedeutet umgerechnet eine tatsächliche Empfindlichkeit der verwendeten Wägezelle von 6491/g * 1.97 nV/LSB = 12.78 µV/g, die einem Wert von 21.15 ± 4.23 µV/g aus der Beschreibung der Zelle gegenübersteht. Meine Wägezelle ist also nur etwa halb so empfindlich wie die technischen Daten behaupten.
|
Kommentare
noch nicht ... ;-) Der Artikel ist noch nicht fertig, ich schreib noch was zur Firmware und dann poste ich auch den Quellcode hier.
sind die Quellen öffentlich?
Alle Kommentare dieses Beitrages als RSS-Feed.