Letzter Schritt vor Atmel-Austausch?

Nachdem nun bereits PWM sicher auf dem Atmel-Nachfolger STM32F4 funktioniert, wurde als nächstes der AD-Wandler implementiert. Hier galt es den Spannungsteiler anzupassen, damit das STM-Board nicht mehr als 3,3 Volt an den Eingangs-Pins erhält – und natürlich überhaupt den Code für den AD-Wandler für den ARM-Prozessor zu implentieren. Eine Besonderheit dabei ist DMA (Direct Memory Access).

Der STM32F4-Prozessort unterstützt mehrere DMA-Streams mit jeweils mehren Kanälen. Das bedeutet, man gibt in seinem Sourcecode unter anderem eine Speicheradresse innerhalb der CPU an, die sozusagen direkt mit dem Inhalt einer Variable verbunden wird. Das heißt, man aktiviert zum Programmstart einmalig die AD-Wandlung die danach kontienuierlich im Hintergrund läuft, ohne Interrupt, while-loops oder ähnliches. Der aktuelle Wert der Analog-Digital-Wandlung liegt jederzeit abrufbereit in der gewünschten Variable. Und durch DMA auch noch ohne die CPU zu belasten! Man kann sich an dieser Stelle durchaus fragen, warum Leute noch Atmel-Prozessoren verwerden…

Ach so, die Wandlung wird auf dem Roboter benötigt, um die Akku-Spannungen zu überwachen. Das heißt, die 24 Volt und die 12 Volt gehen „in den Spannungsteiler hinein“ und landen dann zum Messen am Pin des STM42F4-AD-Wandlers.

Hier wie immer die Fotos der Tests. Als erstes das übliche Steckbrett mit einer der zu überwachenden Spannungen (hier 24 Volt):

Hier das „Ergebnis“ wie es „in den Port“ des AD-Wandlers rein geht (wie gesagt, nicht mehr als 3,3 Volt!):

 
In diesem Bild sieht man, dass es 2,85 Volt für den AD-Wandler ergibt. Hintergrund ist, dass zwei 12 Volt-Blei-Gel-Akkus eine Spannung >24 Volt aufweisen. Darum wurde der Spannungsteiler so gewählt, dass maximal 25 Volt am Eingang anliegen, welches im Programm dann dem Dezimalwert 4095 entspricht.

Als letztes noch die verwendete Schaltung (leider etwas unscharf) mit Z-Diode zum Schutz des Ports:

Und sie dreht sich doch… Ein HDMI auf VGA Konverter

Oder anders gesagt (und nicht mit Galileo Galileos angeblichem Zitat): Und es geht doch!

Entgegen vieler Informationen im Web kann man sehr wohl einen VGA-Monitor an einen HDMI-Ausgang anschließen – mit guter Bild-Qualität! Nach langer Suche im Web halfen dabei folgende Teile bzw. Adapter:

Da der fit-pc2 „leider“ einen echten HDMI-Ausgang hat, der Touchscreen aber nur analoge Eingänge (konkret: VGA), war ein Adapter nötig. Oder besser drei. Das Kabel ganz rechts ist ein günstiges Kabel von Reichelt welches von HDMI auf DVI-D (D = digital) wechselt.

Der entscheidende Adapter in der Mitte ist der HDFury (blue edition, das bedeutet mit VGA-Ausgang): Dieser wandelt 1A von DVI-D zu VGA!

Da der Touchscreen nur über einen VGA-Stecker am Ende des Spezial-Anschlusskabels verfügt, musste noch ein VGA-Gender-Changer dazwischen. Fertig! :-)

Anmerkung: Die Qualität des Bildes ist hier aufgrund der geringen Größe (7″) aber der hohen Auflösung sowie der davorliegen Touchscreen-Folie nicht sehr gut erkennbar.

Sicher auch für Nutzer einer Playstation 3 interessant, wenn ein hochwertiger, älterer Bildschirm ohne HDMI-Eingang angeschlossen werden soll! Nicht verschwiegen werden soll der Nachteil: Der Preis von derzeit 90 EUR für den HDFury.

Montage 2. Rad-Encoder

Kein leichtes Unterfangen. Wie man sieht, musste das halbe Arbeitszimmer bei der Aktion mit „dran glauben“:

Als erstes wurde das Rad demontiert und und zwei Löcher in das sehr massive Stahlblech gebohrt:

Anmerkung: Mit normalen HSS-Bohrern war das übrigens nicht möglich. Erst mit Titan-beschichteten HSS-G-Bohrern ging das problemlos.

 

Durch die gebohrten Löcher kam eine passend gesägte 6mm Edelstahlwelle gehalten von zwei Durchführungs- und Lagerbuchsen A6 aus Super-Ployamid (selbstschmierend):

 

Zusätzlich auf die Achse kam ein Zahnrad, welches durch den Zahnriemen die Achse antreiben soll. Das Rad vom Roboter wurde danach auch wieder montiert:

 

Danach kam die Encoderscheibe auf die Achse:

Und dann die Gabellichtschranke:

Und so  sieht das Ergebnis für heute aus:

Die andere Seite, also den zweiten Encoder mit Achse usw., werde ich wohl ein andern Mal montieren, da die Arbeiten heute schon ein paar Stunden in Anspruch nahmen. :-(

Wenigstens ist Verkabelung des Sensors schon erledigt, da die Stecker usw. ja schon auf dem Controllerboard drauf waren – siehe alte Fotos

Montage 1. Rad-Encoder

Ein nicht einfaches Thema in der Robotik ist die Selbstlokalisierung. Soll heißen: Der Roboter muss selbst wissen, wo er ist. Einen Anfang dazu bilden Sensoren, die z.B. an den Rändern montiert werden, damit festgestellt werden kann, wieweit der Bot in welche Richtung gefahren ist. Möglich machen das Rad-Encoder. Diese bestehen i.d.R. aus einer Lichtschranke und einer sogenannten Schlitzscheibe. Dreht sich nun das Rad und unterbricht mit den Markierungen auf der Scheibe die Lichtschranke. Diese Unterbrechungen lassen sich an der Lichtschranke abfragen und zählen. Weiß man dann, wieviele Impulse einer Radumdrehung entsprechen, muss man nur noch den Umfang des Rades messen und hat so die zurückgelegte Entfernung. Eine Geschwindigkeitmessung ist damit dann natürlich auch leicht möglich (m/s).

In diesem Bild sieht man die von mir verwendeten Rad-Enconder :

Praktischerweise passten diese nach leichtem Aufbohren direkt auf meine Motoren:

DAnn war echte Präzisionsarbeit oder „Fummelkram“ angesagt. Es galt, die Gabellichtschranken zu montieren. Als erstes wurde mit sanfter Gewalt die Schutzkappe vom Getriebe der Motoren entfernt:

Danach wurde die Lichtschranke an der roten Schutzkappe montiert:


( Wohlgemerkt: Die Schrauben, die hier die Lichtschranke halten, sind nur 3 mm im Durchmesser!)

Glock gehabt: Es passte wirklich „auf den Millimeter“:

Das diese Arbeit an beiden Rändern erforderlich war, dürfte wohl klar sein…  Aber, wer hätte es gedacht, alle Kabel blieben heil, der teure Encoder und die Lichtschranken haben alles überlebt, wie die erste Testmessung zeigte: