Arbeiten Sie mit dem chinesischen Chip ADC Hx711

Der Grund für das Schreiben dieses Beitrags ist der Wunsch, sich mit dem 24-Bit-Delta-Sigma-ADC-Wandler des Moduls zu befassen, der auf dem Hx711-Chip basiert. Der Wandler selbst wird in Form eines vorgefertigten Moduls gemäß dem vom Hersteller empfohlenen Schaltkreis (????) zusammengebaut. Es gibt Kommentare zum Betrieb dieses Moduls auf dieser Website in Andrey Gerasimenkos Blog "ADC NX711 von 3,3 V - glauben Sie nicht der chinesischen Dokumentation und nicht nur ..." .

Um dieses Modul zu testen, wurde eine Schaltung basierend auf dem ATmega16-Mikrocontroller, dem ADC-Modul, dem zweizeiligen LCD BC1602, basierend auf dem HD44780-Controller, vier Tasten zusammengebaut. Als Entwicklungsumgebung verwendeten wir das Code Vision AVR-Programm, Version 1.25.9 Professional, AVR Studio 4, Version 4.09.0.338, den AVR JTAG USB-Programmierer, mit dem nicht nur der Kristall programmiert, sondern bei Bedarf auch Schritt für Schritt die Programmausführung im Mikrocontroller verfolgt werden kann. fast in Echtzeit.



Als Signalquelle für den ADC wurde eine in China hergestellte Wägezelle mit einer maximalen Gewichtsgrenze von 40 kg ausgewählt. und Standard-Sensor-Einfügeeinheit. Es ist zu beachten, dass Sie durch die Verwendung von "nativen" Integrationseinheiten alle postulierten Ausgabedaten von einem Einzelpunkt-Dehnungsmessstreifen, Modell CZL A6, abrufen können. Daher sind Dehnungsmessstreifen vom Typ Single Point bei Verwendung der in den technischen Spezifikationen der Plattform angegebenen Größe für den Standort der gewogenen Ladung so ausgelegt, dass das Unwuchtsignal der Zugbrücke nicht von der Position der Last auf der Plattform abhängt. Es sind die MECHANISCHEN Eigenschaften des Sensorkörpers: Geometrische Abmessungen, die Position der geklebten Dehnungsmessstreifenfilme, insbesondere der „Knochen“ -Ausschnitt in der Mitte des Sensorkörpers, die Größe der Plattform, die das auf den Sensorkörper ausgeübte Drehmoment beeinflusst, bestimmen diese Unabhängigkeit.



Nun, die letzte Quelle ist "GOST 29329-92". Waage zum statischen Wiegen. Allgemeine technische Anforderungen. “ Dieser GOST definiert die Eigenschaften von Gewichtsmessgeräten. Es ist auch wichtig, mit dem EXCEL-Office-Programm zu arbeiten. Ich verwende EXCEL 2003 XP3. Auf diese Weise können Sie die Ergebnisse schnell mit vorgefertigten Methoden verarbeiten.

Ich hoffe, dass alle Informationen, die zur Wiederholung meiner Experimente erforderlich sind, vollständig sind.

Nun das Programm selbst, mit dem ich mit dem Modul arbeite. Das Programm konzentriert sich auf CHECK und kaum direkt, d.h. Ohne Änderungen kann es für einige angewandte Anforderungen angewendet werden. Obwohl, wie sie sagen, "je nachdem, wo man sich bewirbt."

Das Programm selbst ist eine Blockstruktur. Es besteht aus 4 Routinen und der fünften Hauptleitung. Die erste Unterroutine: ReadCount, liest Daten aus dem ADC-Modul und generiert sie in die Variable Count.

CreatInput generiert aus 32 Werten ein Eingabearray mit Konvertierungsdaten.

CreatOutput generiert ein Ausgabearray mit ADC-Konvertierungsdaten, indem ein gleitender Durchschnitt mit einer Fenstergröße von 16 Daten organisiert wird.

Keys, ein einfaches Programm zum Reagieren auf Tastenanschläge.

Das ist also alles. Die Variablen sind im Grunde alle global, zumal Mega-Ressourcen erlaubt sind.



Das Hauptprogramm erstellt zunächst das CreatInput-Eingabearray. Anschließend werden die Eingabedaten mithilfe der Methode des gleitenden Durchschnitts gefiltert. Die Auswahl dieses Filters basiert auf Folgendem. Wenn das Programm ausgeführt wird, ändern die Daten auf dem Display ihren Wert in einem ziemlich großen Bereich. Ich habe die Werte des ADC ohne Aufwand auf der Plattform genommen und tabellarisch aufgeführt. Die Werte wurden mithilfe des JATAG USB-Debuggers in der AVR Studio-Umgebung ermittelt.



In der Excel-Datei „Datenerfassung“ wird auf der Registerkarte „Gleitender Durchschnitt“ das Ergebnis der Filterung der schwankenden Eingabedaten InputBuff (Oszillationsspanne 436 Einheiten) mit einem Mittelungsfenster von Intervallen von 3.12.16 angezeigt. Das Ergebnis ist in A37-A40-Zellen gezeigt. Daraus geht hervor, dass in diesem Fall ein gleitender Durchschnitt mit einem Fenster von 16 Stichproben am effektivsten ist.

Gebaute Grafiken zeigen dies deutlich. Die Daten werden von einer Arbeitssteuerung entnommen, die zum Zeitpunkt des Übergangs zur Datenanzeige gestoppt wird. Anschauliche Beispiele für eine solche Datenerfassung sind in den Bildern dargestellt.



Keine Methode zur Datenfilterung durch die Verwendung verschiedener digitaler Filter könnte die Eingangsschwankungen in irgendeiner Weise „zähmen“. Wenn Sie sich das Diagramm der Eingabedaten ansehen, riecht die Gaußsche Verteilung hier nicht einmal. Wie vom Benutzer Nikopol_86 im Blog bestätigt "... glaube der chinesischen Dokumentation nicht"

Nikopol_86 5. Februar 2019 um 09:27 0


Um ehrlich zu sein, hat er in allen Verhältnissen genug Lärm. Ich habe einige Untersuchungen zur Dichteverteilung der ADC-Codes durchgeführt, die mit kurzgeschlossenen Eingangsschaltungen ausgegeben wurden. Daher gibt es eine Streuung von bis zu 1000 1_5 V, und Nifiga ist kein Normalverteilungsgesetz, was darauf hindeutet, dass entweder die Platinenverdrahtung in Schwierigkeiten ist oder der ADC oder alle zusammengenommen . Mir ist auch aufgefallen, dass er auch keine Temperaturstabilisierung hat und der beanspruchte Betriebstemperaturbereich nicht der Realität entspricht. Wenn Sie nur einen 5-kg-Dehnungsmessstreifen an den ADC anschließen und die Temperatur im Raum um 1 Grad ändern, werden die Messwerte um 2 Gramm gemessen. Wenn Sie den Mikrokreislauf mit dem Finger erwärmen, steigen die Messwerte auf 5 bis 7 Gramm. Im Allgemeinen habe ich für mich selbst den Schluss gezogen, dass mit diesem Gerät nur ein Katzenfutterspender hergestellt werden kann.wo Genauigkeit in einer Straßenbahnhaltestelle mehr als genug ist. Und leider sind normale Lösungen nicht billig, da Sie hochwertige ADCs von AO oder T1 verwenden müssen.

Wie Sie sehen können, wurden die Schlussfolgerungen bestätigt.
Richtig , das Gleiche gilt: Jushabrauser 4. Februar 2019 um 12:52 Uhr
Mit einem Signal-Rausch-Verhältnis <1 wird dies niemals helfen.
Auch mit einer Brückenschaltung.

Daher geben unter normalen Bedingungen (ohne spezielle Mathematik und / oder Schaltung) mindestens 8 Bits niedriger Ordnung (höchstwahrscheinlich) Unsinn aus.

24 ehrliche chinesische Stücke für 350 Rubel? Sag es nicht meinen Hausschuhen.
Wenn das Eisen selbst "lügt" - was können Sie dagegen tun?
Hier hilft auch ein nichtlinearer Filter dritter Ordnung nicht, da die Quelldaten kein Kinderspiel sind.

Von hier aus wollte ich untersuchen, wozu dieses Modul in der Zusammensetzung der Skalen in der Lage ist. Das Durchsuchen des Netzwerks nach Problemen mit dem Jitter der letzten Bits des ADC führte zum Forum kazus.ru/forums/showthread.php?t=105320&page=4. Hier ist eine ganze Diskussion über die Stabilisierung der Messwerte. Keine der vorgeschlagenen mathematischen Methoden „beruhigte“ jedoch die Eingabedaten, die ich erhalte. Von der „Hardware“ selbst wurde zur Stabilisierung der Messwerte Folgendes eingeführt: die Verbindung von digitaler und analoger Masse sowie der Kurzschluss von Eingang B mit Masse. Wir haben das Modul vollständig von einer 6-V-Batterie (gefolgt von einem Stabilisator 7805) getrennt von den Steuerkreisen abgeschirmt und mit Strom versorgt. Es gibt kein Ergebnis, die Eingabedaten schwingen ...

Die „saubere“ 24. Kategorie kann also nicht erreicht werden, und der Grund hier scheint mir eine m / Schaltung von schlechter Qualität zu sein. Sie müssen also den resultierenden Konvertierungsbereich kürzen. Zu diesem Zweck wurde im ReadCount-Programm eine Linie eingeführt, in der die Daten durch 100 geteilt werden. 100 ist etwas weniger als 2 bis 8 Grad. ZU. Die AD-Konvertierung erfolgt in 16 Bit. Selbst eine solche Einschränkung machte das Zeugnis jedoch nicht zuverlässig. Und der Grund hierfür sind die DMS-Eigenschaften.

Nach Anwendung des Kalibrierungsprozesses (Verknüpfung des ADC-Werts und des Gewichts auf der Plattform) wird das Gewicht in Gramm angezeigt. Er zeigt 500 Gramm als Nummer 500 an, ein kg als 1000. Der Teilungspreis beträgt 1 Gramm. Jene. Wir bekommen mit 40 kg Sensor 40.000 Teilungen. Nach den technischen Daten für die Wägezelle können wir vom Sensor nur 3.000 Teilungen erhalten (Symbol C3 im Namen des Sensors). Der Teilungspreis sollte also (40000/3000) = 13,3 Gramm betragen. Gemäß GOST 29329 funktioniert die Gewichtsmessung jedoch nicht mit der Nummer 3. Es sollten Ziffern verwendet werden:

2.1.3 Der Wert des Kalibrierungsteilungswerts (e), des Skalenteilungspreises (d) und der Leseauflösung (dd) in Masseneinheiten sollte aus den folgenden Optionen ausgewählt werden: 1X10a; 2X10a; 5X10a, wobei a eine positive, negative ganze Zahl oder Null ist.

ZU. Der vom Hersteller garantierte Teilungspreis für diesen Sensor beträgt 10 Gramm. Das heißt, das Ausgabeformat sollte 0,0x kg betragen. wobei x = 1,2,3, ... .0. Versuchen wir, den Teilungspreis von 5 Gramm zu ermitteln. Die relevanten programmatischen Aktionen werden aufgelistet. Nach einer solchen Einschränkung „nehmen“ wir vom Sensor 40.000 / 5 = 8.000 Teilungen, was 2,6-mal mehr ist als zulässig. Nach diesen Annahmen arbeiten die resultierenden Skalen ziemlich stetig.

Die obige Bemerkung zur angewendeten Wägezelle und ihrer „Auflösung“ lässt nicht schlüssig zu, dass dieses Modul keine 24-Bit-Konvertierung erzeugen kann. Ich habe diesen Sensor jedoch für den Betrieb mit einer Auflösung von 1 Gramm auf einem anderen Gerät mit einem anderen AD-Wandler getestet. Bei diesem Gerät kann der Betrieb des Sensors und die Umwandlung als zufriedenstellend angesehen werden, da die Gewichtsschwankung nicht mehr als 3 Gramm betrug.

Was erlaubt die Verwendung dieses ADC im Handel nicht? Nun, das erste und wichtigste ist die Abhängigkeit der Messung von der Temperatur. Zweitens ist es unter Verwendung der in ATMEGA integrierten Divisions- und Multiplikationsoperationen, insbesondere für 8 Bit, schwierig, die Waage über den gesamten Gewichtsbereich unter diesen Bedingungen zu kalibrieren. Es ist zu beachten, dass das Programm in keiner Weise auf die Sensorüberlastung reagiert.

Wie man diese Unannehmlichkeiten überwindet. Geben Sie zuerst den Temperatursensor ein und stellen Sie den Gewichtswert aus dem Temperaturwert ein. Welches ist ziemlich kompliziert. "Billiger" ist die Einführung der Kalibrierungsoption für verschiedene Lasten und je nach dem durch die Temperatur verursachten Fehler das in der Arbeit verwendete Gewicht zu kalibrieren.

Der zweite ist schwieriger. Ersetzen Sie das Multiplikations- und Divisionsverfahren durch Tabellen- und Scheroperationen. Ich denke, dies ist der beste Weg, um dieses Modul in der Praxis des Gewichtsaufbaus zu verwenden.

Um die Beschreibung der Anforderungen für die Erstellung eines Waagenprogramms zu vervollständigen, muss das jeder Waage beigefügte "Programm zur messtechnischen (Zertifizierungs-) Kalibrierung von Waagen" verwendet werden.

Schlussfolgerung:Die Erstellung von Skalen basierend auf m / s Hx711 ist unter Berücksichtigung aller messtechnischen Anforderungen für die Skalen möglich. Die Einführung von Korrekturen für die Temperaturabhängigkeit der Umwandlung muss in einem separaten Verfahren vorgesehen werden. Die Verwendung eines Moduls mit einer Auflösung von mehr als 16 Bit erfordert einen separaten Ansatz und eine separate Steuerung.

Source: https://habr.com/ru/post/undefined/


All Articles