Nachdem die Minimallösung einer X-Copter-Steuerung (X steht stellvertretend für Quad, Hexa, Okto, ...) mit dem SD746 von SensorDynamics nichts geworden ist, Invensense aber mit einem weiteren 6 DOF-Chip auf den Markt gekommen ist, der auch noch hier in Deutschland für (vergleichsweise) kleines Geld zu kaufen ist, habe ich ein weiteres Design ausgeheckt, das wesentliche Teile des Layouts und der Schaltung der IMUguide noS übernommen hat, aber zusätzlich noch den Servo-Anschluss beherbergt. Der kann natürlich weg gelassen werden, so dass auch die Steuerung eines Quad oder Hexa möglich ist, dass aber ebenso der Tri nicht außen vor stehen muss.
Die Schaltung ist wenig aufregend, man findet die wesentlichen Bestandteile aus Williams Original gepaart mit einem level shifter, der die unterschiedlichen Versorgungsspannungspegel von ATMega328 und MPU6050 auf dem I²C-Bus aneinander anpasst und eben diesem IMU-Chip. Für die Versorgung des IMU-Chip gibt es einen zweiten Spannungsregler, der die vom IMU-Chip benötigten 3 V bereit stellt. Der Servo bekommt seinen Strom von einem der ESCs, die ja für eben diesen Zweck mit BEC ausgerüstet sind.
Das Board ist ca. 28,5 x 36,5 mm groß, einseitig entflochten, beherbergt aber mehrere TH-Bauelemente (TH = through hole, bedrahtete Bauteile), die von der Unterseite bestückt werden. Ebenfalls erwähnenswert ist sicher die Bauform des IMU-Chip, der in einem TQFN24-Gehäuse sitzt, 4 x 4 mm groß ist und eigentlich im Reflow-Ofen aufgelötet werden muss.
Es sind durch die Beschränkung auf einseitige Entflechtung noch vier Luftlinien übrig geblieben, die mit jeweils einem Draht von Pad zu Pad (die dafür vorgesehenen, runden Lötkleckse) verbunden werden müssen.
Die Anbindung des IMU-Chip MPU6050 an den Hauptrechner Mega328 erfolgt über I²C, wobei sich IMU und ESCs diesen Bus teilen müssen. Der MPU6050 muss beim PowerOn eine recht umfangreiche Initialisierung erfahren damit er tut, was er soll, der Code der Tricopter-Steuerung muss also entsprechend erweitert werden. Genauso muss das Auslesen der Gyro- und ACC-Werte umgeschrieben werden. Anstelle von analogen Messwerten werden beim MPU6050 die gesuchten Daten aus Registern über I²C ausgelesen.
Nähere Einzelheiten dazu entnimmt der geneigte Programmierer dem Datenblatt des MPU6050, das bei Invensense herunter geladen werden kann.
Ich habe mir die Geschichte mit der Verlagerung der TH-Bauelemente auf die Unterseite nochmal durch den Kopf gehen lassen. Nachdem ich bei den I²C-PWM-Konvertern die Stecker für die ESCs schon auf die Oberseite der ebenfalls einseitig entflochtenen Platinen löten konnte (was mir schon das eine oder andere Mal Löterei für das Einlernen der ESCs erspart hat), sollte das bei der hier vorliegenden Schaltung ebenfalls möglich sein. Unterhalb der Plastikteile der Stecker ist erfahrungsgemäß ausreichend Platz zum Anlöten derselben, wenn die durchgesteckten Pins gerade eben mit der Unterseite der Platine abschließen. Bei den beiden Spannungsreglern setze ich das ebenfalls voraus, so dass bei der IMUguide V3.1 keine TH-Bauteile mehr auf die Unterseite der Platine wandern müssen.
Dadurch ist zum einen die Befestigung der Platine mittels doppelseitig klebendem Spiegelklebeband sehr einfach durchführbar, zum anderen sitzt der IMU-Chip dann richtig herum auf dem Tricopter, was ggf. Probleme mit der Umrechnerei der Messwerte erspart.
Zusätzlich habe ich die von Nils im Forum eingebrachte Ansteuerung eines Piezopiepsers berücksichtigt und dafür einen weiteren Stecker vorgesehen, der natürlich weg gelassen werden kann, wenn die Drähte des Piepsers fest angelötet werden. Der Piezopiepser muss das Gepiepe im Übrigen selbst erzeugen (also eine Elektronik enthalten - ein einfacher Piezolautsprecher tut es nicht), die IMUguide schaltet nur die Betriebsspannung für den Piepser.
Die überarbeitete Platine sieht jetzt so aus:
Einen Eindruck des fertigen Layouts gibt die Povray-Renderung, die ich immer wieder gerne erstelle :-)
Der IMU-Chip MPU6050 sowie der Quarz sind nicht abgebildet, weil die passenden Gehäuse in Eagle3D fehlen. Das Gleiche gilt für den Levelshifter MAX3372, dem im Bild 5 Beinchen fehlen. Ansonsten dürfte die fertige Platine der Darstellung erfahrungsgemäß ziemlich gut entsprechen.
Das zugehörige Schaltbild ist dieses...
...und kann in besserer Auflösung durch Click auf das Bild angeschaut werden.
Die Anbindung des IMU-Chip MPU6050 an den Hauptcontroller erfolgt übrigens über den Hardware-I²C-Anschluss des Mega328 (SDA = Pin 27, SCL = Pin 28, siehe Schaltbild). Das muss bei der Anpassung des Programms zusätzlich beachtet werden. Der MPU6050 hat im gezeigten Design die I²C-Adresse 59H.
Die Schaltunterlagen im Eagle 5.2-Format liegen hier zum Download bereit.
Da ich bereits einen Teil der Bauelemente in der Größe 0603 vorgesehen hatte, habe ich das Layout noch einmal daraufhin abgeklopft, ob nicht noch weitere Bauteile auf diese Größe geschrumpft werden könnten. Das funktionierte natürlich prima, so dass ich nicht umhin kam, eine weitere Variante der Platine zu designen,
Das Schaltbild ist unverändert (bis auf ein zusätzliches Lötpad).
Hier die Übersicht über die vorhandenen Schnittstellen auf der letzten Version:
Diese Variante der Platine ist 28,4 x 36,3 mm groß.
Die hier vorgestellten Varianten der IMUguide sind meines Wissens bisher leider noch nicht verwirklicht worden. Dennoch waren die Arbeiten nicht umsonst, denn ich konnte in einem weiteren Projekt, dem sNQ, darauf zurück greifen.