Wägedrucksensor mit Wägezelle (1kg) HX711AD

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abb. 1: Wägedrucksensor mit Wägezelle HX711AD
Autor: Felix Neubauer
Studiengang: Business and Systems Engineering
Modul: BSE-M-2-1.03, Hausarbeit in Angewandte Informatik gehalten von Prof. Dr.-Ing. Schneider
Semester: Sommersemester 2024
Abgabetermin: 28.07.2024

Einführung

In der Lehrveranstaltung Angewandte Informatik ist im Sommersemester 2024 eine semesterbegleitende Arbeit zu leisten. Jeder Student konnte sich einen Sensor seiner Wahl aussuchen und an diesem Sensor, die vorgegebenen Aufgaben abarbeiten. Die Aufgaben können in Tabelle 1 eingesehen werden.In diesem Kapitel geht es um eine Wägezelle (1 kg), die in Kombination mit dem Verstärker HX711AD betrieben wird. Der Sensor wird mithilfe des Microcontrollers Arduino Uno R3 ausgelesen. Die Software, um die Werte auszulesen wird in Simulink entworfen. Es werden außerdem in Simulink, die Signale gefiltert und für den weiteren gebrauch verarbeitet. Hier werden gelernte Methoden aus dem Modul Signalverarbeitende Systeme, welches ebenfalls in dem Studiengang BSE angeboten wird, angewendet.

Aufgabenstellung

Messen Sie die Masse mittels Wägezelle.

  • Thema/Fragestellung: Messung des Gewichts mittels Wägezelle (1kg) und HX711AD verstärker
  • Hypothese: Das Gewicht lässt sich mit der Wägezelle auf eine Genauigkeit ±0,02% F.S auslesen.
  • Einordnung in den Lehrplan

Die Lehrveranstaltung angewandte Informatik baut auf das Modul Signalverarbeitende Systeme auf. Zum Abschluss und zum vertiefen der gelernten Methoden bietet sich die Hausarbeit, mit der praktischen Anwendung (auslesen eines Sensors) gut an.

Projektbeschreibung

Tabelle 2: Materialliste
# Anzahl Material
1 1 PC mit MATLAB/Simulink R2023b
2 1 Wägezelle 1 kg
3 1 Arduino Uno R3
4 1 Streckbrett
5 5 LCD Modul 16x02 I2C
6 6 HX711AD

Beschreibung Funktionsweise der verwendeten Hard- und Software

Arduino Uno R3

Der Arduino Uno R3 ist ein kleiner preiswerter Microcontroller der mit 3,3 - 5V betrieben werden kann. Er besitzt einen AtMega328P Prozessor um Rechenoperationen durchzuführen. Außerdem besitzt er einen 32 KB Flash Speicher um Programme auf dem Arduino speichern zu können und diese können dann dauerhaft ohne PC ausgeführt werden. Um mit dem Uno kommunizieren zu können gibt es eine integrierte USB- Schnittstelle. Damit z.B Sensordaten eingelesen werden können besitzt der Arduino 14 Digitale I/O Pins und 6 Analog Input Pins.

Wägezelle 1 kg mit HX711 AD Wandler

Mit einer Wägezelle ist es möglich, das Gewicht von Gegenständen zu messen. Eine Wägezelle besteht in der Regel aus einem Metallkörper. Auf diesem Metallkörper sind an strategischen Punkten Dehnungsmessstreifen aufgebracht. Die Streifen bestehen aus einem dünnen Draht, welcher bei Dehnung oder Stauchung, eine elektrische Widerstandsänderung aufweist. Durch das auftragen eines Gewichts auf den Metallkörper verformen sich die Dehnungsmessstreifen und es kann eine Widerstandsänderung festgestellt werden. Die Widerstandsänderung kann anschließend über den Microcontroller in ein Gewicht umgerechnet werden. Die Wägezelle kann man allerdings nicht direkt an den Arduino anschließen, da der verbaute AD Wandler mit 10 Bit nicht ausreichend ist, um das Gewicht genau zu bestimmen. Hier wird der HX711 AD Wandler mit in die Schaltung integriert. Der HX711AD hat eine Auflösung von 24 Bit und eignet sich somit besser, zur genauen Gewichtbestimmung.


Simulink R2023b

Simulink ist eine Software des Unternehmens MathWorks. Simulink eignet sich um z.B Sensordaten auszulesen. Der Vorteil von Simulink ist, dass man keinen Code in einer Programmiersprache entwickeln muss. In Simulink können einzelne Blöcke, die eine bestimmte Funktion erfüllen, zu einem Gesamtsystem zusammengesetzt werden. Dies geht in der Regel einfacher und schneller als einen Code z.B in C++ zu schreiben und erleichtert somit die Arbeit. Um Simulink nutzen zu können, muss man ebenfalls MATLAB installieren. MATLAB ist ebenfalls eine Software des Unternehmens MathWorks.


Steckbrett

Das Steckbrett eignet sich für einen schnellen und einfachen Aufbau einer elektrischen Schaltung. Die elektrischen Bauteile können leicht miteinander verbunden werden, indem sie an die richtigen Plätze auf dem Steckbrett gesteckt werden. Die einzelnen Reihen auf dem Steckbrett sind hier miteinander verbunden. Die Spalten hingegen nicht. Einzig die Spalte + und - sind nach unten hin verbunden. So ist es möglich mit einer Spannungsquelle zu arbeiten. So kann eine Schaltung mit unterschiedlichen Bauteilen einfach und schnell realisiert werden.

Buzzer

Der Buzzer ist ein akustisches Signalgerät, welches einen Ton oder ein Geräusch erzeugen kann. Es gibt verschieden Arten von Buzzern. Es gibt die Mechanische, Piezoelektrischen und die Elektromagnetischen Buzzer. In diesem Fall wird ein Piezoelektrischer Buzzer verwendet. Bei dieser Art von Buzzer werden piezoelektrische Materialien verwendet, die sich unter elektrischem Einfluss zusammenziehen und so Schallwellen erzeugen. Durch das erzeugen von unterschiedlichen Schallwellen und Frequenzen, kann eine breite Palette von unterschiedlichen Tönen und Geräuschen erzeugt werden.


Technische Daten

Messbereich 0 - 1000 g
Genauigkeit +- 0.02% F.S
Versorgungsspannung 2,6V - 5,25 V
Stromverbrauch < 1,5 mA
Abmessung Wägezelle 75mm • 20mm • 2mm
Kabellänge ca. 25 cm
Gewicht 33,5 g

Pinbelegung

Pin Belegung Signal
1 Masse GND 0 V
2 Data Digitalisierte Messwerte
3 Serial Clock Taktleitung für den Microcontroller
4 Versorgungsspannung 5 V

Versuchsaufbau und Durchführung

Versuchsaufbau

In den Abbildungen 8 - 10 ist der Anschlussplan, der Schaltplan und der Versuchsaufbau dargestellt. Zu sehen ist jeweils der Arduino Uno, die Wägezelle, der HX711 AD Wandler, das Steckbrett und der Buzzer. Der Anschlussplan liefert hierbei eine groben Überblick über die verschiedenen Komponenten und die Verdrahtung untereinander. Der Schaltplan hingegen geht mehr ins Detail. Mit dem Schaltplan ist es möglich, den Versuchsaufbau exakt nachzustellen. Auf dem Foto des Versuchsaufbaus ist zusehen, wie der Ganze Versuch in der Realität aussieht.



Versuchsdurchführung

Code für Arduino IDE

#include "HX711.h"

const int LOADCELL_DOUT_PIN = 5;
const int LOADCELL_SCK_PIN = 4;
const int ledPin = 2;
HX711 scale;

typedef union{
  float number;
  uint8_t bytes[4];
} FLOATUNION_t;

void setup() {
  Serial.begin(9600);

  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(); // Initialize with a known scale factor if available
  scale.tare(); // Reset the scale to 0

   pinMode(ledPin, OUTPUT);
}

void loop() {
  FLOATUNION_t reading;
  
  if (scale.is_ready()) {
    reading.number = scale.read();
    //Serial.write(reading);

    for (uint8_t i=0; i<4; i++) {
      Serial.write(reading.bytes[i]);
    }


    Serial.write('\n');
  } else {
    //Serial.println("HX711 not found.");
  }
  

  /*
  uint8_t n = 49;
  Serial.write(n);
  Serial.write('\n');
  */
  delay(1); // Adjust the delay as needed

if (Serial.available() > 0) {
    // Lese das empfangene Byte
    char receivedByte = Serial.read();
    
    // Setze den Pin basierend auf dem empfangenen Wert
    if (receivedByte == 1) {
      digitalWrite(ledPin, HIGH); // Schalte den Pin ein
    } else if (receivedByte == 0) {
      digitalWrite(ledPin, LOW); // Schalte den Pin aus
    }
  }

}


Versuchsbeobachtung

Abb. 6: Darstellung des Rohsignals des IR-Entfernungssensors (rote Kurve)
Abb. 7: Darstellung von dynamischen Messwerten des IR-Entfernungssensors

Das Signal des Sensors weist alle 40 ms systematische Ausreisser auf (vgl. Abb. 6, rote Kurve).

Auswertung

Die Messhypothese wurde verworfen. Der Sensor weist systematische Messwertausreisser auf.

Die Ausreisser lassen sich mit einem Signalfilter eliminieren. Hierzu eignet sich ein Rangordnungsfilter (z. B. Median-Filter). Das Filter wird hierzu auf eine Fensterbreite von 30 Werten eingestellt. Das zufriedenstellende Filterergebnis für statische Werte zeigt Abb. 6 als blaue Kurve. Es konnte mit dynamische Werten verifiziert werden (vgl. Abb. 7). Das Datenblatt ([2, S. 6]) belegt die Messungen und bezeichnet die Messausreisser als "instabile Ausgabe" für maximal 5 ms alle 40 ms. Mit 50 Werten erhöht sich die Filterwirkung, es entsteht jedoch ein Delay von 10 ms. Mit 10 Werten ist die Filterwirkung zu gering.

Zusammenfassung und Ausblick

Zusammenfassung der Kapitel 1-4


Diskussion der Ergebnisse


Ausblick

In den nächsten Schritten, könnte man die Wägezelle nun in ein größeres Projekt einbinden und das Gewicht von anderen beliebigen Objekten mit einer hohen Genauigkeit bestimmen. Es ist außerdem möglich das Simulink Modell zu erweitern und weitere Bedingungen oder Funktionen hinzuzufügen. Es könnten außerdem noch weitere Aktuatoren an den Digitalen und Analogen Ein bzw. Ausgängen angeschlossen werden und bei bedarf angesteuert werden.

Selbstreflexion/Lessons learned

Bei dem auslesen der Wägezelle konnten Methoden und Verfahren die zuvor im Modul Signalverarbeitende Systeme erlernt wurden, in der Praxis angewendet werden. Das Auslesen der Wägezelle wurde durch den zwischen geschalteten AD Wandler erschwert. Dies war mit den bekannten Methoden und alleine mit Simulink leider nicht möglich. Hier musste ein zwischen Schritt mit der Arduino IDE gegangen werden, und zunächst ein Code auf dem Arduino implementiert werden, welcher die Rohdaten der Wägezelle direkt an Simulink übertragt. Da diese Hürde allerdings überwunden wurde, konnte das "Projekt" erfolgreich abgeschlossen werden.

Ergebnisvideo

Binden Sie hier Ihr Ergebnisvideo ein.

Anleitung: Videos im Wiki einbinden

Lernzielkrontrolle

Beantworten Sie in Ihrem Artikel die Lernzielkontrollfragen.

Literatur

Zitieren Sie nach DIN ISO 690:2013-10.

Anhang

  • Datenblätter
  • Simulink-Modell
  • Originaldateien (PAP, Schaltplan,... )

→ zurück zum Hauptartikel: BSE Angewandte Informatik SoSe24 | Hausarbeit SoSe24