Spannungsmessung mit AD-Wandler am Raspberry Pi

Damit das für den minibot angeschaffte OLED-Display auch einen vernünftigen Nutzen hat, soll es unter anderem für die Überwachung der Akku-Spannung genutzt werden. Dazu sind drei Schritte notwendig: Spannungsmessung mit AD-Wandler am Raspberry Pi weiterlesen

[130 Aufrufe]

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:

[2 Aufrufe]

Schematischer Aufbau direcs1

Auf dieser Seite ist der aktuelle schematische Aufbau des Roboters direcs1 dargestellt:

Stand: 04.04.2011

 

[1949 Aufrufe]

Allgemeiner Aufbau direcs1

Auf dieser Seite sollen die einzelnen Bestandteile des Roboters direcs1 näher beschrieben werden.

Das Grundgerüst des Roboters sieht wie folgt aus:

Als Rahmen wurden Aluminium-Profile verwendet, die verhältnismäßig günstig sind:

 

Bezugsquelle: Kalms Flightcase GmbH

Die Räder sind so genannte Mecanum-Räder. Diese versetzen den Roboter in die Lage

  • sich auf der Stelle um sich selbst zu drehen
  • links und rechts seitwärts zu fahren
  • ganz normal vorwärts und rückwärts zu fahren oder
  • diagonal, also schräg nach vorne oder hinten links oder rechts zu fahren:

 

Die im rechten Bild zu sehenden Aluminium-Halter sind Eigenentwicklungen.

Bezugsquelle: About AndyMark, Inc.

Die Motoren sind vom teuren Conrad. 1-12V Getriebemotoren Modelcraft . Der Roboter besitzt vier 1-12V Getriebemotoren Modelcraft (RB350050-22723R) mit 6200 UPM und 1:50 Untersetzung was dann 110 UPM ergibt. Der Stromverbrauch beträgt je Motor maximal 0,75A wobei sie maximal 0,695 Nm leisten [und nicht 5 Nm wie im Datenblatt fälschlicherweise angegeben]:


Im Bild bereits zu sehen, dass der Motor um einen stabileren Halter aus den obigen Aluminiumprofilen erweitert wurde.

Bezugsquelle: Conrad Electronic SE

Der Antrieb wurde mittels Zahnriemen und Zahnriemenscheiben realisiert:

Bezugsquelle: Conrad Electronic SE

Die Stromversorgung des Roboters erfolgt über vier 12V-Akkus mit jeweils 7Ah zwei LiPo-Akkus: Einen 4S und einem 6S mit jeweils 5000 mAh und C30:

11-1V-30c-5000mAh-3-Cells-Li-Po-Rechargeable-Battery-With-Deans-T-Plug  Mystery_22_2V_30C_5000mAh_6S_RC_LiPo_Battery_Deans_plug

Bezugsquelle: Pollin Electronic GmbH Ebay

Auf dem Roboter direcs1 stehen drei verschieden Spannungen in zwei verschiedenen Stromkreisen zur Verfügung

  • 24V für den Laserscanner in Stromversorgungskreis 1
  • 12V für das Commel Mainboard in Stromversorgungskreis 1
  • 5V für den Microcontroller und sonstige Sensoren / Schaltkreise in Stromversorgungskreis 1
  • 12V für die Motoren in einem eigenen Stromversorgungskreis 2.

Erzeugt werden diese Spannungen mittels Schaltregler auf den folgenden Platinen:

 

Bezugsquelle: reichelt elektronik GmbH & Co. KG

Die Schaltkreise sind über Sicherungen geschützt:

Bezugsquelle: reichelt elektronik GmbH & Co. KG

Über ein zentrales Panel können die Spannungen (und damit der Roboter) eingeschaltet werden. Der silberne Taster ganz links dient zum Einschalten des fit-PCs. Der Not-Aus-Schalter unterbricht lediglich die Stromzufuhr zu den Motoren:

Bezugsquelle Lochblech: Praktiker Deutschland GmbH
Bezugsquelle Bauteile: reichelt elektronik GmbH & Co. KG

Die Low-Level-Steuerung, also die Ansteuerung der Motorcontroller erfolgt über ein Atmel-Board mit einem AVR2560 STM32F4-Discovery-Board mit ARM-Prozessor:

Auf dem Bild ebenfalls erkennbar diverse Steckverbinder zu weiteren Platinen, Eingänge zum A/D-Wandler, welcher die Akkuspannungen überwacht, ein Optokoppler zum Ansteuern der Warnleuchte (siehe auch Folgefotos), diverse Spannungsversorgungsstecker und ein USB-Seriell-Wandler.

Bezugsquelle: watterott.com

Die Motorsteuerung bzw. Regelung der Geschwindigkeiten erfolgt über die folgenden Boards:

Bezugsquelle: robotikhardware.de

Ein weiterer verwendeter Sensor ist ein 3D-Kompass befindet sich mit auf dem STM32F4-Board, ist aber derzeit noch nicht im Einsatz.

Der größte „Sensor“ ist sicher der SICK Laserscanner (rechts im Bild):

Links im Bild ist noch der zuvor verwendete Laserscanner älterer Bauart (PLS 101-312) zu sehen, der aktuell durch ein moderneren namens S30B-2011BA (S300 Standard) ersetzt wurde. Dieser weist zudem eine Auflösung von 0,5° (gegenüber 1°) und ein Überwachungsfeld von 270° (gegenüber 180°) auf.

Bezugsquelle: eBay

Das eigentliche „Herz“ des Roboters ist ein fit-PC2 vollwertiges pico ITX Mainboard LP-170G von Commell mit Atom-Prozessor, 2 GB RAM, 2,5″ Festplatte, 4 USB-Ports, 2 seriellen Ports, 2 PS/2-Ports, Gigabit-LAN, WLAN, CF-Kartenleser, Audio-Ein und Ausgang und VGA-Ausgang:

  

Bezugsquelle: HRT Informationstechnik

Zur Anzeige diverser Stati und späteren Steuerung dient ein 7″ Touchscreen von Faytech dessen Eingangssignal über einen Wandler von HDMI nach VGA gewandelt wird:

  

Bezugsquelle: reichelt elektronik GmbH & Co. KG

Damit der Roboter auch etwas „sieht“, hat er eine Logitech Webcam seit neuestem eine Microsoft Kinect Kamera, deren Bild per WLAN zu eine separaten Applikation oder auf eine beliebige Webseite per motion überträgt:

 

Da direcs1 auch über eine Sprachausgabe verfügt, sind zwei Lautsprecher mit integriertem Verstärker ebenfalls vorhanden:

 

Um den Roboter über einen externen Joystick oder Gamepad manuell zu steuern, wurde eine externe USB-Buchse von Neutrik montiert (hier noch ein altes Foto mit dem alten Laserscanner rechts):

 

Bezugsquelle: reichelt elektronik GmbH & Co. KG

Als letztes hat er natürlich auch eine Warnleuchte, wie es sich für einen richtigen Roboter gehört:

Und so sieht er nun (01.09.2012) vollständig aus:

    

 

 

[7839 Aufrufe]

Überwachen der Akkuspannungen realisiert

Nach mehreren Aktionen, bei denen die Akkus des Roboters genau dann leer waren, wenn man ihn mal vorführen wollte, wurde nun endlich eine einfache Akku-Überwachung über die AD-Wandler des Atmel-Prozessors hinzugefügt. So sieht die Schaltung aus:

Wichtig dabei ist es, das Poti/den Trimmer vorher so einzustellen, dass an dem Atmel-AD-Wandler-Eingang maximal 2,56 V anliegen! Wie immer gilt: Ein Nachbau erfolgt auf eigene Gefahr!

Und das sind die Tests und Messungen:

 

Nun noch die 24V aus das zentrale Controller-Board gelegt, die Ad-Wandler "verkabelt" und die Messwerte mittels Netzteil überprüft:

Im Hauptprogramm erfolgt das Auslesen der Akkus automatisch in der Klasse SensorThread. Die Anzeige in der GUI sieht so aus:

Vielleicht wird irgendwann noch einmal eine Strommessung hinzugefügt; dieses Modul soll gut dafür geeignet sein.

[380 Aufrufe]