User Tools

Site Tools


Sidebar

Für Profis

Helpers

Tags


aok:elektronik:digitalsensoren

DigitalSensoren

Ab Softwareversion V35 werden weitere Digitalsensoren neben den HMC 5843/5883 unterstütz. Neu sind hier Gyro/ACC und Luftdrucksensoren, die über I²C-Bus angeschlossen werden.

Prinzipiell gilt: die Anschlusskabel am I²C-Bus sind immer so kurz wie nur irgendwie möglich zu halten!

Wichtig ist darauf zu achten, das der I²C-Bus mit passend dimensionierten PULL-UP-Widerständen ausgerüstet ist! Diese sollten auf einen Gesamtwert von ca. 860 Ohm gegen 3,3 Volt kommen! Parallelschaltungen sind entsprechend zu berechnen… Zu große Pull-ups führen meist zu einem Einfrieren des Prozessors!

Lesenswert ist dieser Artikel über den Effekt der Pullup-Widerstände (Englisch)

Alle bis heute unterstützen Digitalsensoren:

HMC 5843L/ HMC 5883L

Schaltungstechnisch gleich dem 5843…halt der Nachfolger.. Unterstützung ab v0.26 / v0.33 Deutlich besser als der MM3 Kompass

MPU6050

- Kombinierter ACC & Gyro-Sensor

aktuell das Maß der Dinge - Man sollte ihn aber direkt mit den 3V3 von der Flightcontrol/Prozessor betreiben.

SRF08

- Ultraschall Sensor zur Höhenmessung

MS6511

- Luftdrucksensor

Deutlich höhres Grundrauschen wie die alten MPXH6115 → schlechter

BMP085

- Luftdrucksensor

Deutlich höhres Grundrauschen wie die alten MPXH6115 → schlechter

Vorteil: Hohe Langzeitstabilität ohne wirklich spürbarer Temperaturdrift. Damit die Höhenregelung ungefähr so “gut” wie mit dem MPX Sensor ist (k_h, k_v bei ca. 1500, 1000), müssen diese Werte beim BMP wesentlich anders sein. Vorgeschlagene Werte: k_h=200, k_v=160. Damit wird das Schwergewicht der Kalman-Filterung in Richtung ACC-Z verschoben.

Die Sensoren sind Wahlweise: Wird kein Haken unter Options im Tool gesetzt, gelten die (analogen) Standardsensoren

IMU-Boards

Das ganze gibt es natürlich auch schon auf sogenannten IMU-Boards zusammengefaßt…

Das hat aber den Nachteil, das a) schlechtere Luftdrucksensoren verwendet werden und man b) den Kompaß nicht weg von störenden Magnetfelder plazieren kann..

DROTEK 10DOF

- MPU6050, HMC5883L + MS6511===

GY-87 10DOF

- MPU6050, HMC5883L + BMP180

gy-87.jpg

gy-87_back.jpg

Das Board hat einen eigenen 3V3 Regler. Auf der Stiftleiste gibt es einen Kontakt für die Reglereingangsspannung (VCC_IN). Alternativ kann man den Kontakt 3V3 direkt anschließen (3.3V) - der liegt dann hinter dem OnBoard-Regler. Je ein 2K2 Pull-Up liegt gegen VCC_IN!!! Wird statt VCC_IN die 3.3V benutzt, dann liegen rückwärts über den Regler 3,3V an VCC-IN und damit an den PullUps. offene Fragen: Hier ggf. besser eine Lötbrücke zwischen 3.3V und VCC_IN setzen? Erkenntisse: Im Test… (StompSC)

Anschaltung der digitalen Sensoren via I2C

Hier ein paar allgemeine Gedanken zum Thema I2C am Armokopter, Spannungsaufbereitung und Pullups - anwendbar auf alle unterstützten Hauptplatinen:

Prinzipiell haben wir beim I2C Bus in unserem Fall 2 Teilnehmer und benötigen Pullups:

  • Der ARM Prozessor läuft mit 3.3V
  • Die Sensor-Breakouts je nach Typ mit 3.3V oder 5V, eventuell mit eigenem Spannungsregler der aus den 5V wiederum 3.3V am Breakout erzeugt.
  • Für I2C benötigen wir natürlich Pullups auf SDA und SCL
  • Auf einigen Breakouts und auf einigen Versionen der Armoplatinen sind Serienwiderstände in den I2C Leitungen verbaut

Daraus resultierende Problemzonen:

  • Ein I2C Bus mit Teilnehmern welche an unterschiedlichen Versorgungspannungen (und damit Pullups auf eine der beiden Spannungen) betrieben wird birgt Problempotential
  • Läuft der ARM mit 3.3V und das Breakout das mit 5V versorgt wird erzeugt sich selbst 3.3V, müssen diese beiden 3.3V Pegel nicht exakt gleich sein
  • Serienwiderstände beschränken den maximal möglichen Strom, eventuell kann es dadurch zu einem Zustand kommen in dem einer der I2C Teilnehmer die I2C Leitungen nicht mehr auf GND ziehen kann.

Um diese Probleme generell zu verhindern, sollten also Sensoren und ARM Prozessor am gleichen Spannungsregler betrieben werden, dem folgend der eventuell vorhandene Spannungsregler am Breakout nicht verwendet werden.

Des weiteren ist Sicherzustellen das die Pullups natürlich auf die gleiche Spannung verbunden sind. Parallelschaltungen von Pullups verändern natürlich den Gesamtwiderstand und sollten vermieden werden. Funktioniert die Anbindung mit den meist üblichen 4k7 Widerständen nicht, sollten 1 - 10k Widerständ probiert werden.

Am wenigsten Probleme gibt es wenn man folgende Grundregeln beachtet:

  • Alle Sensoren mit der gleichen Spannung mit der der ARM Prozessor läuft (3.3V) versorgen
  • Eventuelle Serienwiderstände im I2C Bus überbrücken
  • Als Startwert für die Pullups beim ARM sind 1k zu empfehlen
  • Am Slave I2C Bus einer MPU6050 haben sich 4k7 Pullups als brauchbar erwiesen

Falsche Pullups können ganz ominöse Fehler verursachen die sehr schwer zu finden sind !

Vorsicht bezüglich Pullups/Lötjumper: Je nach Breakout kann der typischerweise vorhandene Lötjumper zum Aktivieren der Pullupwiderstände ab Werk verbunden sein - auch wenn am Lötjumper kein Zinn ist - es kann eine kleine Kupferverbindung zwischen den PADs vorhanden sein!

Kaskadierung von Sensoren

MPU Breakouts haben einen “Slave” I2C Bus, an diesen kann z.B. ein Kompass angeschlossen werden. Dabei ist zu beachten, das dieser I2C Bus komplett getrennt vom I2C Bus zwischen ARM und MPU ist - d.h. auch für diesen Bus braucht es eigene Pullups - meist lassen sich diese am Kompass-Breakout per Lötjumper aktivieren.

aok/elektronik/digitalsensoren.txt · Last modified: 29.10.2014 12:18 by ufo-hans