Fork me on GitHub

Quadrofly Building a quadrocopter

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.

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
858 Downloads
Details...

9Mrz/120

ATMega644 Entwicklungsboard

ATMega Entwicklungsboard

Zum ordentlichen Testen der für den ATMega644 entwickelten Software braucht man immer wieder eine ATMega Grundschaltung. Diese kann man natürlich auf dem Steckbrett aufbauen, dort verbraucht sie aber viel Platz. Da man die Schaltung immer wieder benötigt, werde ich mir ein ATMega644 Entwicklungsboard auf Lochraster aufbauen. Als Basis dafür dient die Grundschaltung mit MAX-232 aus dem Artikel "Let's talk about RS-232", denn die RS-232 Schnittstelle aus dieser Schaltung kann man zum debuggen der Software gut gebrauchen.

Um mir eine grobe Übersicht über die Anordnung der Bauteile auf der Platine zu verschaffen, erstelle ich regelmäßig Lochraster-Platinenlayouts. Dafür benutze ich die Open Source Software BlackBoard Breadboard Designer. Die BlackBoard-Datei der Platine sowie die Eagle-Datei des Schaltplans kann man am Ende dieses Artikels finden.

Schaltplan und Platinenlayout:

ATMega Grundschaltung mit RS-232

ATMega644 Entwicklungsboard (oben)

ATMega644 Entwicklungsboard (unten)

Downloads:

ATMega644 Entwicklungsboard
ATMega644 Entwicklungsboard
Entwicklungsboard.bb
Version: v0.1beta
50.5 KiB
786 Downloads
Details...
ATMega RS-232 Schaltung
ATMega RS-232 Schaltung
rs232.sch
Version: 1.0
715.4 KiB
829 Downloads
Details...
5Mrz/120

Let’s talk about RS-232

Serial Port (CC BY-NC 2.0 Joe Plocki)

Um die Wartezeit auf die ersten Bauteile zu verkürzen, verbesserte und erweiterte ich heute die ATMega644 Grundschaltung aus dem vorherigen Beitrag.

Folgende Verbesserungen nahm ich vor: Da ich zum Programmieren des Microcontrollers einen DIAMEX USB ISP benutze und dieser einen 6-poligen Anschluss verwendet, ersetzte ich den 10-poligen Anschluss durch einen 6-poligen (SV1). Um den Microcontroller neu zu starten falls er mal in einer Endschlossschleife verweilt, wurde der Taster (S1) hinzugefügt, der den RESET-Port des Microcontrollers auf HIGH zieht. Zur Spannungsstabilisierung und Vermeidung von Messungenauigkeiten sind die vier 100 nF Abblockwiderstände (C11, C12, C13, C14) an den Stromversorgungsports der Microcontroller (IC1, MAX232) vorgesehen. Die Spule (L1) erhöht die Messgenauigkeit des eingebauten A/D-Wandlers ebenfalls.

Anschließend erweiterte ich die Schaltung um einen seriellen RS-232 Anschluss, um Daten zwischen Microcontroller und PC austauschen zu können. Da die RS-232-Schnittstelle PC-seitig mit -12V/+12V Signalen arbeitet, der Microcontroller aber mit 0V/+5V Signalen, kommt ein Pegelwandler (MAX232) zum Einsatz. Diesen wurde, wie im Datenblatt angegeben, mit vier 4,7 µF Kondensatoren (C7, C8, C9, C10) ausgestattet. Damit die Übertragung zwischen ATMega644 und PC über RS-232 funktioniert, muss eine bestimmte Frequenz eingehalten werden. Der interne Taktgeber des ATMega ist dafür zu ungenau. Aus diesem Grund schliesste ich einen 20 MHz Quartz (Q1) mit den benötigten zwei 22 pF (C2, C3) Kondensatoren am ATMega an.

Nun heißt es auf die bestellten Bauteile warten, um die Schaltung anschließend auf dem Breadboard aufzubauen und zu testen.

Bauteile:

Part     Value          Device

C2       22pF           C2.5/6
C3       22pF           C2.5/6
C4       100µF          CPOL-EUE5-6
C5       100nF          C2.5/6
C6       100nF          C2.5/6
C7       4,7µF          CPOL-EUE2,5-6E
C8       4,7µF          CPOL-EUE2,5-6E
C9       4,7µF          CPOL-EUE2,5-6E
C10      4,7µF          CPOL-EUE2,5-6E
C11      100nF          C2.5/6
C12      100nF          C2.5/6
C13      100nF          C2.5/6
C14      100nF          C2.5/6
IC1      ATMEGA644-20PU ATMEGA644-20PU
IC2                     7805
IC3      MAX232         MAX232
JP1                     PINHD-1X3
JP2                     PINHD-1X3
L1       10µH           L-EUIRF-3
Q1       20Mhz          CRYSTALHC49U70
R1       10k            R-EU_0207/10
S1                      31-XX
SV1                     ML6

Downloads:

ATMega RS-232 Schaltung
ATMega RS-232 Schaltung
rs232.sch
Version: 1.0
715.4 KiB
829 Downloads
Details...