Fork me on GitHub

Quadrofly Building a quadrocopter

5Feb/130

I2C mit dem Raspberry PI

I2C Kommunikation mit dem Raspberry PI

Da ich sehr gute Erfahrungen mit der I2C-Kommunikation zwischen den Komponenten auf dem Quadrocopter gemacht habe und der Raspberry PI über seine GPIO I2C zur Verfügung stellt, kam mir die Idee, das Telemetrie-Modul mit einem Raspberry PI auszustatten. So kann ich I2C-Befehle per SSH auf den Bus schreiben und später einen Webserver implementieren um Telemetriedaten auf dem Quadrocopter in Echtzeit anzuzeigen und Variablen während der Laufzeit anzupassen.

Zum Testen der I2C-Kommunikation habe ich mir folgende Schaltung mit einem ATTiny2313 auf einem Breadboard gesteckt:

ATTiny I2C Schaltung

ATTiny I2C Schaltung

Anschließend habe ich eine vorhandene I2C-Softwareimplementierung angepasst und auf den ATTiny geflasht. Die erweiterte Firmware gibt es bei GitHub: https://github.com/ni-c/raspberry2c

Damit man die I2C-Schnittstelle auf dem Raspberry PI nutzen kann, muss man erst das dazugehörige Kernelmodul aktivieren. Dazu öffnet man die Datei /etc/modprobe.d/raspi-blacklist.conf:


$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

sucht nach der Zeile:


blacklist i2c-bcm2708

und kommentiert sie aus:


#blacklist i2c-bcm2708

Dann kann man die benötigten Kernel-Module laden:


$ modprobe i2c-bcm2708
$ modprobe i2c_dev

Um komfortabel auf den I2C-Bus schreiben zu können, installiert man noch die I2C-Tools:


$ sudo apt-get install i2c-tools

Nun kann man sich die Geräte auf dem I2C-Bus 0 mit folgendem Befehl anzeigen lassen (Bei neueren Raspberry PI Modellen sind I2C-Bus 0 und 1 vertauscht, in diesem Fall liegt I2C-Bus 1 auf dem GPIO des Raspberry PI):


$ i2cdetect -y 0

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Der ATTiny wurde unter der Adresse 0x1a gefunden. Um das I2C-Register des ATTinys auszugeben, benutzt man den Befehl i2cdump:


$ i2cdump -y 0 0x1a

Und um nun den Wert 0xff an Adresse 0x00 des Gerätes mit der Adresse 0x1a zu setzen und damit die LED anzuschalten führt man i2cset aus:


$ i2cset -y 0 0x1a 0x00 0xff

10Okt/120

Telemetrie mit RS-232 und Java

Da es beim Entwickeln der Algorithmen von großem Vorteil ist, die Werte der Sensoren und die Ergebnisse der Algorithmen in lesbarer Form angezeigt zu bekommen, loggt der Quadrocopter diese Daten über die UART-Schnittstelle des ATMega644. Zum Darstellen dieser Daten habe ich das Java-Programm Quadrometrics entwickelt, welches die Daten auf der seriellen Schnittstelle empfängt und in einem Swing-Fenster anzeigt.

Quadrometrics

Bis die Übertragung der Daten über Funk stattfindet, nutze ich den bereits vorhandenen Pegelwandler des Telemetriemoduls zur Pegelwandlung zwischen UART und RS-232.

Der nächste Schritt ist nun die Implementierung eines Rückkanals, um die Werte der Algorithmen zur Laufzeit anpassen zu können.

24Jun/120

Zusammenbau

Quadrofly mit Spektrum-Fernbedienung

23Jun/120

Motorcontrollerboard v1.0

Lochrasterentwurf Motorcontrollerboard

Das Motorcontrollerboard ist für die Ansteuerung der vier Motor-ESCs (Electronic speed control) und den Empfang der Funksignale der RC-Fernbedienung verantwortlich.

Die Elektronik auf diesem Board benötigt eine Spannung von 5 Volt, welche durch einen MAX-604 Spannungsregler erzeugt wird. Zum Empfang der Spektrum DSM2-Signale einer DSM2-Fernbedienung kommt ein Deltang Rx35 6-Kanal-Empfänger zum Einsatz welcher mit einem ATMega88-Microcontroller verbunden ist. Dieser decodiert das Summensignal des Empfängers und sendet es über I2C an das Controllerboard, außerdem empfängt er die Sollwerte für die Motoren über I2C und generiert daraus ein PWM-Signal zur Ansteuerung der ESCs.

Schaltplan Motorcontrollerboard

Das Motorcontrollerboard wird über einen 5-poligen Anschluss mit dem Hauptcontrollerboard verbunden, über diesen läuft die Spannungsversorgung sowie die I2C-Kommunikation mit dem Controllerboard.

Motorcontrollerboard V1 Lochraster-Layout
Motorcontrollerboard V1 Lochraster-Layout
motorcontrol.bb
Version: 1.0
38.4 KiB
1043 Downloads
Details...
Motorcontrollerboard V1 Schaltplan
Motorcontrollerboard V1 Schaltplan
motorcontrol.sch
Version: 1.0
325.1 KiB
951 Downloads
Details...

15Apr/120

Chassis und Antrieb fertiggestellt

Chassis mit Reglern und Motoren

Motorhalterung mit 2mm Goldsteckern

Reglerstromversorgung

Um das Chassis leicht zu halten ist es aus Kohlefaser aufgebaut. Vier CFK-Quadratrohre dienen als Motorausleger und sind im Kreuz mit zwei CFK-Platten verschraubt.

Die Brushless-Motoren sind außen an den Motorauslegern befestigt und über 2mm Goldkontaktstecker mit jeweils drei 0,75mm² Kabeln verbunden, die in den CFK-Hohlrohren zum Inneren des Quadrocopters führen. Dort sind die vier Brushless-Regler für die Motoren mit Klettband an der Centerplate befestigt und ebenfalls über 2mm Goldkontaktstecker mit den Kabeln in den Quadratrohren verbunden.

Die Stromversorgung der Brushless Regler erfolgt über 4mm Goldkontaktstecker, die mit einen Kabelverteiler (1,5mm²) verbunden sind. Dieser wiederrum ist über 4mm Goldkontaktstecker mit der LiPo-Stromversorgung verbunden.

Materialliste:

  • 2 x CFK-Platte, 100 x 100 x 1,0 mm (R&G Faserverbundwerkstoffe, 13,56 €)
  • 1 x CFK-Quadratrohr, 10 x 10 mm / Ø 8 mm, Länge 1000mm (R&G Faserverbundwerkstoffe, 12,49 €)
  • 2 x 10 Muttern Edelstahl + 10 Schrauben Din 912 M3 x 16 mm (eBay, 5,64 €)
  • 40 x Unterlegscheibe DIN 125 M3 Aluminium schwarz eloxiert (eBay, 4,90 €)
  • 4 x TowerPro w18A Brushless Speed Controller (Hobbyking, 36,37 €)
  • 1 x Klettstreifen, schwarz (Reichelt, 4,15 €)
  • 5 x Paar 4mm Goldkontaktstecker mit Schrumpfschlauch (eBay, 3,99 €)
  • 24 x Paar 2mm Goldkontaktstecker mit Schrumpfschlauch (eBay, 16,59 €)
  • 4 x EMAX CF2822 1200KV Outrunner Motor (eBay, 35,56 €)
  • 4 x GWS EP Propeller (RD-1047 254x119mm) (Hobbyking, 4,40 €)
  • 4 x GWS EP Counter Rotating Propeller (RH-1047 254x119mm) (Hobbyking, 4,40 €)
  • 4 x Propsaver für 3mm Welle (eBay, 14,90 €)
  • 1 x 10 m Schaltlitze 0,75 mm² schwarz (Reichelt, 1,95 €)
  • 1 x 10 m Schaltlitze 0,75 mm² braun (Reichelt, 1,95 €)
  • 1 x 10 m Schaltlitze 1,5 mm² schwarz (Reichelt, 3,00 €)
  • 1 x 10 m Schaltlitze 1,5 mm² braun (Reichelt, 3,00 €)
  • 1 x Schrumpfschlauch Sortiment (Pollin, 2,95 €)

Materialkosten 169,80 €

10Apr/120

Controllerboard v1.0

Lochrasterentwurf Controllerboard

Die erste Version des Controllerboards ist fertig. Das Controllerboard enthält einen ATMega644-PU Microcontroller zur Steuerung, ein RFM12BS-Funkmodul zur drahtlosen Übertragung der Telemetriedaten, ein 6-DoF-Modul MPU-6050 zur Lagebestimmung, einen MAX-603 Spannungsregler zur Erzeugung der benötigten 3.3 Volt und jede Menge Hühnerfutter.

Schaltplan Controllerboard V1

Über den 5-poligen Anschluss auf der rechten Seite kann eine weitere Platine mit Strom versorgt und über I2C mit dem Microcontroller verbunden werden. Für zukünftige Erweiterungen wie GPS-Modul und DSM2-Empfänger ist noch genügend Platz auf der Lochrasterplatine.

Controllerboard V1 Lochraster-Layout
Controllerboard V1 Lochraster-Layout
controllerboard_v1.bb
Version: 1.0
47.0 KiB
929 Downloads
Details...
Controllerboard V1 Schaltplan
Controllerboard V1 Schaltplan
controllerboard_v1.sch
Version: 1.0
354.0 KiB
848 Downloads
Details...

9Apr/121

Motoransteuerung

Am Wochenende habe ich mich mit der Ansteuerung der Brushless-Motoren "Emax CF-2822 1200KV Brushless Outrunner" beschäftigt. Diese Art von Motoren benötigt zusätzliche Elektronik zur Ansteuerung, sogenannte ESCs (Electronic Speed Controls). Für meinen Quadrocopter benutze ich ESCs vom Typ "TowerPro w18A Brushless Speed Controller".

ESCs erwarten standardmäßig ein PWM-Signal mit einer Frequenz von 50 Hz und einer Pulslänge zwischen 1ms und 2ms. Die Pulslänge gibt dabei die gewünschte Motordrehzahl an. Zur Generierung dieses PWM-Signals verwende ich einen ATMega88, der per I2C mit dem Steuerungs-Microcontroller kommuniziert und das PWM-Signal softwareseitig erzeugt. Erste Versuche der PWM-Erzeugung kann man im obigen Video sehen.

1Apr/120

Telemetriemodul fertiggestellt

Telemetriemodulplatine

Nach ausgiebigen Tests auf dem Breadboard habe ich das Telemetriemodul nun auf eine Lochrasterplatine verewigt. Es ist in der Lage empfangene Daten des RFM12 Chips an eine RS-232-Schnittstelle weiterzuleiten. Umgekehrt können auch Daten von der RS-232-Schnittstelle über den RFM12 Chip versendet werden.

Im groben besteht das Modul aus den folgenden vier Teilen: Einem Spannungsregler vom Typ MAX603 der Eingangsspannungen von 2,7V bis 11,5V auf die benötigten 3,3V regelt. Einem MAX3232CPL Pegelwandler, der den TTL-Pegel des Microcontrollers auf RS-232-Pegel umzuwandelt. Ein RFM12BS mit Breakout-Board zum Senden und Empfangen von Daten im 433 MHz Band. Und ein ATMega644/ATMega1284 Microcontroller zur Ansteuerung des RFM12BS Moduls und der UART-Schnittstelle.

Schaltplan Telemetriemodul

 

Telemetriemodul Schaltung
Telemetriemodul Schaltung
telemetrics.sch
Version: 1.0
670.4 KiB
859 Downloads
Details...

14Mrz/120

RFM12BS Funkmodul Breakout

RFM12BS Breakout Board

Zur kabellosen Übertragung der Telemetriedaten des Quadrocopters habe ich mir zwei RFM12BS Funkmodule mit 433 MHz besorgt.

Da diese auf Platinen mit einem Rastermaß von 2,00 mm sind, die Quadrocopter-Elektronik aber auf 2,54 mm Lochrasterplatine aufgebaut ist, habe ich mir ein Breakout Board für die RFM12BS-Platinen gelötet. Wie das aussieht, kann man auf dem oberen Foto sehen.

Mit den beiden Stiftleisten kann man die Funkmodule zum Testen auf ein Breadboard stecken. Auf der Lochrasterplatine des Quadrocopters werden später zwei Buchsenleisten angebracht, in die das Funkmodul gesteckt werden kann. Dadurch sind sie bei späteren Umbauten der Elektronik leichter austauschbar.

10Mrz/120

Ein Chassis aus Kohlefaser

Quadrocopter Chassis

Nach ein wenig Sägen, Bohren und Schrauben ist das Kohlefaser-Chassis des Quadrocopters fertig. Inklusive Schrauben kommt es auf ein Gesamtgewicht von 84 Gramm und eine Größe von 283 x 283 mm. Die Grundplatte misst 100 x 100 mm und die Motorausleger haben vom Mittelpunkt gemessen eine Länge von 200 mm.