USB Wägezellen Interface mit AD7797

Dieses Projekt hatte ich bereits 2011 entwickelt und andernorts veröffentlicht, Jahre bevor eine Menge ähnlicher Schaltungen im Internet aufgetaucht sind. Es ist ein klar strukturierter Entwurf mit gut funktionierender und frei verfügbarer Software, um eine Wägezelle über USB anzusteuern. Ich habe Teile einer günstigen Küchenwaage mit Doppelbiegebalken vom Discounter genutzt, um eine USB Waage zu bauen mit einer Auflösung von weniger als 1g.

Foto des Prototyps, links eine Wägezelle mit Doppelbiegebalken aus einer 5kg Küchenwaage

Teil 1: USB Wägezellen Interface Controller

Herzstück der Schaltung ist ein Atmel ATMEGA644 Mikrocontroller, der die A/D-Wandlung steuert und die Daten vom AD7797 liest. Auf der anderen Seite fungiert der Atmel als „low speed USB 1.1 HID device“ mit dem Vorteil, dass für HID Devices kein extra Treiber für das Betriebssystem notwendig ist, mit dem die Hardware verbunden ist.

Der Controller macht zusätzliche eingebaute Funktionen möglich.

  • automatische zyklische Wandlung
  • Offset- und Verstärkungs-Kalibrierung
  • diverse Statistikfunktionen wie Mittelwert, Median, Varianz und Standardabweichung

Als Basis für die Statistiken können die letzten 2 bis 256 Messwerte verwendet werden.

Über die serielle RS232 Schnittstelle des ATMEGA644 können nützliche Informationen zur Fehlersuche ausgegeben werden. Dazu muss in der Firmware das „DEBUG“ Flag gesetzt und diese neu übersetzt werden.

Der USB-Teil der Firmware nutzt V-USB, einen reinen Firmware USB Treiber von Objective Development Software GmbH.

Die Software für den integrierten Mikrocontroller ATMEGA644 ist für die Übersetzung mit avr-gcc in C geschrieben. Sie wurde mit „AVR Studio 4.18“, SP3, entwickelt, einer Entwicklungsumgebung für 8 Bit AVR-Controller von Atmel. Der Quellcode steht unter der „GNU General Public License (GPL)“ frei zur Verfügung und kann hier heruntergeladen werden.

Teil 2: Frontend

Das Frontend für die Wägezelle besteht aus einem 24 Bit A/D-Wandler AD7797 von Analog Devices mit integriertem programmierbarem Verstärker mit einer Verstärkung von 128. Dadurch kann der Wandler direkt und ohne zusätzlichen Verstärker mit einer Wägezelle verbunden werden. Die Referenzspannung wird mit einem ADR441 erzeugt, einer „ultra low noise“ Spannungsreferenz ebenfalls von Analog Devices.

Sowohl Offset als auch Verstärkung des Frontends können kalibriert werden. Die Kalibrierungsparameter werden im EEPROM des Controllers gespeichert und beim Einschalten automatisch geladen.

Nahansicht der Schaltung, das RS232 Debug-Interface links oben, der A/D-Wandler rechts unten

Teil 3: USB Host Software mit GUI

Ich habe eine Software als Beispiel bereitgestellt, welche die USB HID Programmierung sowie alle Funktionen der Schaltung demonstriert. Sie kann für Linux, Windows und eventuell für MacOS übersetzt werden. Die Software ist in C++ geschrieben und mit „Qt Creator“ entwickelt, einer Cross-Plattform Qt IDE von Qt Software und Nokia Corporation. Der Quellcode ist hier veröffentlicht unter der „GNU General Public License“ (GPL).

Bereits kompilierte Programmversionen können hier heruntergeladen werden für linux/x86_64 und win32.

Screenshot Messen
Kalibrierungsfunktionen
Statistiken

Projektbesonderheiten

  • 24 Bit A/D-Wandler, 21 Bit effektive Auflösung
  • integrierte Statistikfunktionen
  • Kalibrierungs- und Startparameter im EEPROM gespeichert
  • USB HID Device – kein Treiber im Betriebssystem notwendig
  • optionale Debug-Ausgabe
  • Grafische Bedienoberfläche für verschiedene Plattformen
  • eindeutige USB-ID: vendor: 0x16c0, product: 0x05df, Manufacturer: „runlevel3.de“, Product: „USB-A/D-Interface“

Das Schaltbild ist hier zum Download verfügbar.

USB-AD-Converter_schematics.pdf

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert