Digitale EWD Waage selbst gemacht mit Arduino Teil 2

Nachdem ich in EWD Waage selbst gemacht mit Arduino Teil 1 die nötige Hard – und Software vorgestellt habe, soll es hier mit dem Bau weitergehen:

Aufbau der EWD Waage:

Die Schaltung ist sehr einfach. Die beiden Sensoren und das Display werden parallel an den I²C-Bus angeschlossen. SDA an Pin 4 und SCL an Pin 5. Das Ganze versorgen wir dann noch mit 5 Volt und Masse.

Einer der beiden Sensoren bekommt noch einen 10-k-Widerstand zwischen Pin A und GND gelötet. Dadurch hat der Sensor eine andere I²C Adresse und beide Sensoren können angesprochen werden.

Der Rest wird einfach wie auf dem Schaltplan am Arduino angelötet (ich empfehle einen Arduino ohne bereits verlötete Stiftleiste. Das Auslöten macht keinen Spaß).

Schaltplan EWD Waage
Schaltplan EWD Waage

Anpassen der Software:

Ich gehe davon aus, das ihr die Basics à la „wie lade ich einen Sketch auf meinen Arduino“ bereits drauf habt. Andernfalls gibt es jede Menge gute Tutorials online. Ein guter Test ob alles funktioniert ist z. B. der Blink Sketch. Hier gibt es ein sehr gutes Einsteigertutorial dazu Klick.

Je nachdem wo und welche Komponenten ihr gekauft habt, können die I²C Adressen von denen im Sketch abweichen. Nachdem also die Schaltung zusammengebaut ist und ihr sicher seid das alles funktioniert, sollte man erst einmal den I²C Scanner ausführen. Der Serial-Monitor gibt uns nun die Adressen aller angeschlossenen Geräte aus.

1)https://playground.arduino.cc/Main/I2cScanner

 

 

 

Das könnte dann ungefähr so aussehen.

Sollten die Adressen von denen im Sketch abweichen, müsst ihr nun die erhaltenen I²C-Adressen für die Sensoren eintragen:

Und zwar hier

if (!sensor_A.begin(0x1C))

und hier

if (!sensor_B.begin(0x1D))

Und ganz wichtig, die Adresse für das LCD wird hier:

LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7);

eingetragen.

Glückwunsch! Nun sollte die EWD Waage schon einmal funktionieren.

Um die Winkel auf null zu stellen, stellt man die Messbrücken einfach auf eine gerade Oberfläche und haltet den Taster für 3 Sekunden gedrückt. Das Display sollte nun „Reset OK“ Anzeigen, und die Winkel auf null stehen.

Kalibrieren:

Wie ihr vielleicht feststellen konntet, sind die Sensoren noch nicht kalibriert. Dies könnt ihr tun, indem ihr den Kalibrationssketch hochladet. Legt nun die Messbrücken auf jede mögliche Seite, also flach, auf den Kopf etc., und drückt dann immer die Leertaste. Dadurch werden die Maximalwerte der Sensoren eingelesen und Gain und Offset-Werte daraus berechnet.

Update 18.07.2018:

Da mich einige Anfragen zur Kalibrierung erreicht haben, möchte ich hier eine Schritt für Schritt Anleitung nachreichen:

  1. Den Sketch aus der Incidence Meter Calibration Datei auf den Arduino spielen. (Der Sketch befindet sich im ordner „src“. *.cpp Dateien können einfach in *.ino umbenannt werden.)
  2. Den Serial Monitor öffnen.
  3. Die beiden Messbrücken mit den Sensoren auf einen ebenen Tisch stellen und die Leertaste drücken. (Je nachdem welche Programmierumgebung ihr benutzt, müsste ihr die Eingabe dann senden )
  4. Nun stellt ihr die Messbrücken auf den Kopf und drückt wieder die Leertaste.
  5. Das wiederholt ihr so oft, bis ihr beide Messbrücken in wirklich allen Richtung in extremposition eingelesen habt. Die Minima/Maxima Werte müssen um die 4000 liegen.
  6. Offset und Gain sind die errechneten Kalibrationswerte die ihr in den Hauptsketch eintragen müsst. Offset sollte möglichst klein sein (keinesfalls 2000 o.ä.) und Gain sollte bei ca. 1 liegen.

Wenn alle Extrempositionen eingelesen sind, nehmt ihr die Werte für X, Y und Z von hier:

Type key when ready...
-48
Minima Sensor A: -3998 -4056 -3992
Maxima Sensor A: 4032 4124 4112
Offset Sensor A: 85 132 159 
Gain Sensor A: 0.9989011000000 0.9152625400000 0.9020757300000 

und tragt sie im Sketch der EWD Waage ein

/*********************************CALIBRATION VALUES*******************************/
/*****************!!RUN THE CALIBRATION SKETCH AND FILL IN YOUR OWN VALUES!!****************/

#define offset_AX   0       // OFFSET values 
#define offset_AY   0    
#define offset_AZ   0

#define offset_BX   0       // OFFSET values
#define offset_BY   0
#define offset_BZ   0

const double gain_AX = 1;     // GAIN factors
const double gain_AY = 1;
const double gain_AZ = 1; 

#define gain_BX     1     // GAIN factors
#define gain_BY     1
#define gain_BZ     1

Das war nun auch schon alles. Solltet Ihr Fragen zum Bau, Verbesserungsvorschläge etc. haben, könnt ihr diese gerne in die Kommentare schreiben, oder an info@rc-maker.com schicken. Ich würde mich sehr darüber freuen.

Viel Spaß beim bauen!

Quellen   [ + ]

Kommentar hinterlassen

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

Ich akzeptiere