Idee
Seit wir in der Robotik-AG Power-Banks als Stromversorgung verwenden, brauchen wir auch eine Möglichkeit, diese aufzuladen. Dafür haben sie eine Micro-USB-Buchse wie auch bei Handys üblich. Natürlich kann man mehrere preiswerte Handy-Ladegeräte anschaffen und in eine lange Steckerleiste einstecken, aber je nach Steckerleiste blockieren sie sich eventuell gegenseitig und irgendwie fehlt es dabei am Coolness-Faktor. Die Idee ist daher, einen 8-fach-Lader zu bauen, also ein Ladegerät, mit dem man bis zu 8 Roboter gleichzeitig laden kann:
Dabei können auch gleich die Reste der Mini-USB-Verlängerungskabel verarbeitet werden, die beim Bau der Roboter-Stromversorgungen durch die Power-Banks anfielen.
Natürlich soll das Gerät nicht nur 8 Mini-USB-Kabel zum Laden der Roboter bieten, sondern auch jeweils eine Duo-LED zum Anzeigen des Ladezustands, damit man sehen kann, ob der Akku leer (rot), fast voll (orange) oder voll ist (grün). Dabei wird diese Anzeige einfach von der Höhe des Ladestroms abhängig gemacht, der bei jedem Anschluss über einen Shunt gemessen wird. Nun könnte man natürlich eine Menge von Operationsverstärkern oder Komparatoren verbauen, mit sorgfältig eingestellten Schaltschwellen und – viel Lötarbeit.
Stattdessen verwenden wir hier einfach preiswerte Mikrocontroller-Module, die gerade bei Pollin sehr preiswert erhältlich sind, und die sowieso einmal ausprobiert werden wollten. Da ein Modul nicht genug Pins für alle 8 Ladestrom-Messungen und 8 Duo-LEDs hat, verwenden wir eben zwei Module, wobei jedes für 4 Ladestrom-Messungen und 4 LEDs zuständig ist. Die Firmware der beiden Module ist exakt gleich.
Bauteile
Nein, es hat keinen Sinn, es zu leugnen: ich bin Pollin-Fan! Nein, ich werde für diese Aussage leider nicht bezahlt, sondern sage das ganz freiwillig. Man kann immer wieder recht nützliche und preiswerte Bauteile finden, die auch einen gelegentlichen Fehlkauf wettmachen. Leider sind sie meist nur kurzzeitig verfügbar, wodurch folgende Liste der verwendeten Bauteile vermutlich nicht lange gültig sein wird:
Stück | Bezeichnung | Quelle | Bestell-Nr. | Schaltplan |
---|---|---|---|---|
1 | Schaltnetzteil ASTEC LPS42, 5 V-/11 A | Pollin | 351986 | |
2 | Entwicklungsboard ATMEL ATmega168PA | Pollin | 810366 | MOD1, MOD2 |
8 | USB 2.0 Verlängerungskabel HAMA 54557, Micro-USB, 0,75 m, schwarz | Pollin | 712878 | |
1 | Euro-Netzkabel mit Zugentlastung | Pollin | 562065 | |
10 | Widerstand 0,1 Ohm, Belastbarkeit mind. 1A | R17 .. R24 | ||
16 | Widerstand 150 Ohm | R1 .. R16 | ||
8 | Duo-LED, rot/grün, gemeinsame Kathode | LD1 .. LD8 | ||
3 | Widerstand 1,2 kOhm | R25, R27, R29 | ||
2 | Widerstand 2,2 kOhm | R26, R30 | ||
1 | Wannenstecker, gerade, 6-polig | Pollin | 451166 | JP17 |
4 | Buchsenleiste 1x12 | |||
4 | Stiftleiste 1x12 | |||
2 | Stiftleiste 1x3 | JP18 .. JP19 | ||
2 | Jumper | Umschaltung SCK und RST | ||
Flachbandkabel 34pol. | ||||
1 | Wannenstecker, gerade, 34-polig | SV1 | ||
1 | Pfostenbuchse für Flachbandkabel, 34-polig | SV2 | ||
16 | Lötnägel | JP1 .. JP16 | ||
1 | Punktrasterplatine | Pollin | 440260 | |
1 | Universal-Gehäuse 180 x 205 x 70 Polystyrol (EPS) Schwarz | Conrad | 523380 | |
1 | Polystyrolplatte, glatt, klar, 2mm | toom | ||
versch. Schrauben, Unterlagscheiben, Distanzbolzen |
Schaltung
Die Schaltung ist recht einfach und verzichtet sogar auf eine Glättung der über die Shunts gemessenen Spannungen. Im oberen Teil des Schaltplans ist das Verbindungskabel zu den Duo-LEDs zu sehen. Dafür wurde ein altes 34-poliges Festplattenkabel verwendet. So lässt sich die Platine einfach von den Duo-LEDs trennen. Ganz unten sind mit JP1 bis JP16 die Lötstifte bezeichnet, an welche die USB-Kabel zum Laden der Power-Banks gelötet wurden. Darüber liegen die 8 Shunt-Widerstände R17 bis R24. Bei ihrem Wert von 0,1 Ohm fallen bei einem erwarteten maximalen Ladestrom von 1 A also 0,1 Volt ab, was von den Power-Banks sicher toleriert wird. Diese Spannung wird direkt von den Mikrocontrollern gemessen, ohne Signalverstärkung oder Glättung. Die Widerstände R1 bis R16 sind die Vorwiderstände für die Duo-LEDs. Sie wurden so bemessen, dass nur ca. 10 mA durch die LEDs fließen, um den Mikrocontroller nicht zu sehr zu stressen. Zwar kann jeder Port-Pin durchaus 20 mA treiben, aber insgesamt dürfen pro Port gewisse Grenzen nicht überschritten werden.
MOD1 und MOD2 sind die beiden Mikrocontroller-Module, die mit einpoligen Stiftleisten versehen und in entsprechende Buchsenleisten auf der Platine eingesteckt wurden. Solche Module sollte man besser nie direkt einlöten. JP17 bildet einen 6-poligen Standard ISP-Stecker zur Programmierung von Atmel AVR-Controllern. Dabei ist allerdings zu beachten, dass diese Schnittstelle normalerweise mit 5V-Pegeln arbeitet (zumindest meine selbstgebauten Programmer), daher werden die Pegel mit den Widerständen R25/R28 und R29/R30 auf 3,3 Volt-Niveau abgesenkt. Bei RST war das so nicht möglich, da der auf Masseseite liegende Widerstand einen Dauer-Reset verursacht hätte, wenn kein Programmer angeschlossen ist oder dieser kein aktives High-Signal liefert. Daher ist nur R27 vorhanden, der zumindest einen eventuell zu hohen Pegel im Strom begrenzt. Über JP18 und JP19 wird selektiert, welcher der beiden Mikrocontroller an der ISP-Schnittstelle hängt. Da die Signale MOSI und MISO vom Programm nicht verwendet werden, also hochohmig sind, können sie jeweils direkt miteinander verbunden werden. Nicht so SCK, das auch für die auf dem Modul liegende rote LED verwendet wird und dadurch jeweils vom anderen Mikrocontroller gestört würde. Zum Umschalten der ISP-Schnittstelle zwischen den beiden Mikrocontrollern müssen immer beide Jumper auf 1-2 (linker Controller) oder 2-3 (rechter Controller) gesetzt werden.Die 5V-Versorgung stammt vom eingebauten Schaltnetzteil und muss zu den USB-Leitungen hin möglichst dick ausgeführt werden.
Aufbau
Da die Befestigungslöcher von Gehäusen meist nicht für die beabsichtigten Module und Platinen passen, wurde eine durchsichtige Plastikplatte aus Polystyrol vom Baumarkt als Trägerplatte zurechtgesägt und mit Befestigungslöchern versehen, so dass darauf das Netzteil und die Elektronikplatine montiert werden konnte. Zur Sicherheit wurde als Berührungsschutz über dem Netzteil noch eine etwas kleinere Platte angebracht.
Die elektronischen Bauteile wurden ungefähr so platziert, wie sie auch im Schaltplan dargestellt sind:
Software
Das Programm (main.c) wurde auf Eclipse mit dem „AVR Eclipse Plugin“ erstellt und kompiliert. Es sollte durch die Kommentare im Sourcecode selbsterklärend sein. Die Fuses wurden folgendermaßen gesetzt:
Fuse = 0xFF
Fuse High = 0xDD
Fuse Ext = 0xF9 (kein Bootloader, entspricht Atmel Hersteller-Einstellung)
Lock = 0xFF
Die Fuses der CPU-Module waren schon von Anfang an passend für die Hardware gesetzt (3,3Volt Versorgung, externer 16MHz-Quarz) und es war ein Bootloader konfiguriert (Fuse Ext = 0xF8). Da wir keinen solchen verwenden, setzen wir Fuse Ext auf 0xF9.