19.01.2026

HX711 Wägezelle - MIDI-Controller

Arduino
HX711 Load Cell - MIDI Controller

Table of contents

Einführung Was ist eine Wägezelle? Wann würden Sie eine Wägezelle verwenden? HX711 Wägezellen-Verstärker Einfaches Lesebeispiel HX711 Midi-Controller-Projekt Umwandlung von Gewicht in MIDI-Daten
Table of contents
Einführung Was ist eine Wägezelle? Wann würden Sie eine Wägezelle verwenden? HX711 Wägezellen-Verstärker Einfaches Lesebeispiel HX711 Midi-Controller-Projekt Umwandlung von Gewicht in MIDI-Daten

Einführung

Wir sind alle schon einmal im Leben auf eine Waage gestiegen, um schnell unser eigenes Gewicht zu überprüfen. Oder Ihr Gepäck wurde vor einem Flug gewogen. Manchmal in der Küche, beim Portionieren der Zutaten. Da so viele moderne Waagen digital sind, haben die meisten von ihnen ein Schlüsselelement gemeinsam: Wägezellen (Load Cells).

Da Mikrocontroller immer leistungsfähiger und erschwinglicher werden und Sensormodule einfacher zu integrieren sind, sind Technologien, die einst kommerziellen und industriellen Wägesystemen vorbehalten waren, jetzt auf einem einfachen Breakout-Board auf Ihrem Schreibtisch verfügbar. Das bedeutet, dass Sie genaue, reale Gewichtsmessungen in Ihre eigenen DIY-Projekte implementieren können.

In diesem Artikel erfahren Sie, wie Wägezellen funktionieren. Wie man den HX711 Wägezellen-Verstärker verwendet und ihn mit einer Wägezelle verbindet, um grundlegende Gewichtsmesswerte zu erhalten. Zum Schluss zeigen wir Ihnen ein lustiges kleines Projekt, bei dem Sie Soundfilter auf einen Ton anwenden können, basierend auf der Gewichtseingabe der Wägezelle.

Was ist eine Wägezelle?

Eine Wägezelle ist eine Art von Wandler, der eine Kraft (Druck, Zug oder Drehmoment) in ein messbares elektrisches Signal umwandelt. Die Größe dieses Signals ist direkt proportional zur ausgeübten Kraft, die dann in eine lesbare Ausgabe wie ein Gewicht auf einer Waage umgewandelt wird.

Eine typische Wägezelle besteht aus zwei Teilen: dem Hauptkörper und einer angebrachten elektrischen Schaltung. Der Hauptkörper trägt das Gewicht oder die Kraft und macht den Großteil der Größe der Wägezelle aus. Um Zuverlässigkeit und eine vorhersagbare Dehnungsverteilung zu gewährleisten, besteht er normalerweise aus hochwertigem Stahl oder Aluminium. 

Die elektrische Schaltung ist im Inneren der Wägezelle untergebracht und fest mit dem Hauptkörper verbunden. Die Schaltung enthält Dehnungsmessstreifen, spezialisierte Teile der Schaltung, die dazu dienen, die Verformungen des Hauptkörpers (wenn Kraft ausgeübt wird) zu erfassen.

Dehnungsmessstreifen bestehen aus dünnem, leitfähigem Draht oder Folie. Wenn sie entlang ihrer Länge gedehnt oder gestaucht werden, ändert sich ihr elektrischer Widerstand geringfügig, was es uns ermöglicht, winzige Verformungen zu erkennen – und letztendlich physische Kraft in elektrische Signale umzuwandeln.

Wann würden Sie eine Wägezelle verwenden?

Eine Wägezelle misst mechanische Kraft, vor allem das Gewicht von Objekten. Heutzutage verwenden fast alle digitalen Waagen Wägezellen aufgrund der Genauigkeit, mit der sie Gewicht messen können. Sie werden in einer Vielzahl von Bereichen eingesetzt, die Genauigkeit und Präzision erfordern. Es gibt verschiedene Klassen von Wägezellen, und jede Klasse unterscheidet sich in Bezug auf Genauigkeit und Kapazität.

HX711 Wägezellen-Verstärker

Der HX711 Wägezellen-Verstärker wurde entwickelt, um ein schwächeres elektrisches Signal von einer Wägezelle aufzunehmen und zu verstärken, damit das digitale Signal anschließend von einem Mikrocontroller verarbeitet werden kann. Der HX711 Verstärker arbeitet mit hoher Auflösung und geringem Stromverbrauch, was ihn ideal für Anwendungen wie Waagen und Kraftmesssysteme macht.


Der HX711 verfügt über zwei differentielle Eingangskanäle, die direkt mit einer Wägezelle verbunden werden können. Er misst die kleinen Spannungsänderungen, die von der Wägezelle unter Druck erzeugt werden. Er verwendet eine  24-Bit-A/D-Wandlung, um das verstärkte analoge Signal in ein hochauflösendes digitales Signal umzuwandeln. Dies sorgt für genaue Messungen mit minimalen Störgeräuschen. Sobald das Signal umgewandelt ist, überträgt er die digitalen Daten über eine serielle Schnittstelle.

Einfaches Lesebeispiel

Nun gehen wir durch, wie man die Wägezelle und den Verstärker verwendet, um einfache Gewichtsmesswerte zu erhalten. Unser HX711-Verstärker-Board gibt es in zwei Versionen:

  • Standardversion - verwendet eine serielle Schnittstelle zur Kommunikation, die zwei Hauptpins sind Data (DOUT) und Clock (PD_SCK)
  • I2C-Version - verwendet ein Qwiic/easyC-Kabel zur Kommunikation (Standardadresse 0x30)

Verbinden der Wägezelle mit dem HX711:

Wägezellen-Kabel

HX711 Breakout-Board

Rot

E+

Schwarz

E-

Grün

A-

Weiß

A+

Nachdem Sie die Wägezelle mit dem Verstärker-Board verbunden haben, können wir uns nun dem Code-Beispiel widmen. In diesen Beispielen verwenden wir die HX711 Arduino Bibliothek.

Code-Beispiel:

Unten finden Sie den Code zum Lesen des Gewichts in einer eingestellten Einheit. Bevor wir jedoch Werte von der Wägezelle in Einheiten lesen, müssen wir eine Testmessung durchführen, um die Waage zu kalibrieren:

  1. Nehmen Sie einen Gegenstand, dessen Gewicht Sie kennen (zum Beispiel ein 0,5 kg Gewicht)
  2. Führen Sie diesen Sketch aus, ändern Sie den SCALE_UNITS-Wert vorerst nicht
  3. Nachdem Sie den Sketch ausgeführt haben, platzieren Sie das bekannte Gewicht auf der Wägezelle
  4. Notieren Sie den angezeigten Wert, nennen wir ihn X
  5. Ihr SCALE_UNITS ist X / bekanntes Gewicht, stellen Sie ihn darauf ein
  // Include the library

#include "HX711-SOLDERED.h"
// Define pins used for DAT and SCK here
#define PIN_DAT 4
#define PIN_SCK 3
// Scale units
#define SCALE_UNITS 1.0
// Create the HX711 object on the right pins
HX711 hx711(PIN_DAT, PIN_SCK);
void setup()
{
Serial.begin(115200); // For debugging
// Init HX711
hx711.begin();
// Wait a bit until it initializes fully delay(200);
// While calibrating - don't put any load on the load cell! hx711.setZero();
// Set calculated scale units hx711.setScale(SCALE_UNITS); }
void loop() { // Make reading in units double readingInUnits = hx711.getReadingInUnits(); // You may also call getReadingInUnits(n) for the result to be an average of n readings // Print the reading // Try reading this over the serial plotter! Serial.print("HX711 Reading: "); Serial.println(readingInUnits); // Wait a short while until the next reading // This serial print is quite fast because it looks better on the serial plotter delay(200); }

 

HX711 Midi-Controller-Projekt

Jetzt wollen wir etwas Spaß mit der Wägezelle haben! In diesem Projekt verwenden wir einen ESP32-S3 als Midi-Controller. Das Gerät fungiert als Musikinstrumenten-Schnittstelle und sendet Echtzeitdaten von einer Wägezelle über USB an Ihren Computer. Da der ESP32-S3 MIDI CC (Control Change)-Nachrichten oder andere MIDI-Ereignisse über USB übertragen kann, können wir mit Surge XT (einem kostenlosen Open-Source-Software-Synthesizer) MIDI-CC-Nachrichten auf Parameter wie Filter-Cutoff, Resonanz, Hüllkurven usw. abbilden.

Umwandlung von Gewicht in MIDI-Daten

Um Ihre Wägezelle in einen musikalischen Controller zu verwandeln, müssen Sie den rohen elektrischen Widerstand in einen standardmäßigen MIDI-Control-Change (CC)-Wert im Bereich von 0 bis 127 umwandeln. Dies erreichen Sie, indem Sie den Ruhezustand und den maximalen Druckpunkt Ihres Sensors definieren und diesen Bereich dann auf das MIDI-Protokoll abbilden.

Der folgende Ausschnitt demonstriert die Kernlogik zur Erfassung des Gewichts und zur Umwandlung in ein Signal, das Ihr Computer verstehen kann. Durch die Begrenzung (Constraining) der Rohdaten stellen wir sicher, dass die MIDI-Daten stabil bleiben und die vom virtuellen Synthesizer geforderten Grenzen nicht überschreiten:


// Get raw reading from load sensor
long raw = hx711.getRawReading();

// Map the raw sensor range to MIDI (0-127)
// RAW_MIN is the resting state, RAW_MAX is the full-pressure state
long r = constrain(raw, RAW_MAX, RAW_MIN);
int ccVal = map(r, RAW_MIN, RAW_MAX, 0, 127);

// Send MIDI Control Change if the value has changed
if (ccVal != lastCC)
{
  MIDI.controlChange(CC_NUMBER, (uint8_t)ccVal, MIDI_CHANNEL);
  lastCC = ccVal;
}

In diesem Artikel erwähnte Produkte

Verwandte Artikel