Raspberry Pi: (Mini-)Displays am Composite-Video-Ausgang

Prof. Jürgen Plate

Raspberry Pi: (Mini-)Displays am Composite-Video-Ausgang

Wer den Raspberry Pi zum ersten Mal in Betrieb nimmt und das Raspbian-Linux von derSD-Karte startet, wird oft einen herkömmlichen Monitor für die ersten Schritte verwenden. Der RasPi ist mit HDMI- und Composite-Video-Ausgang gut bestückt. Hat man nur einen VGA- oder DVI-Monitor, hilft ein HDMI-Adapter. Mit Composite Video kommen sogar noch die einfachsten TV-Geräte zurecht. Das Bild ist zwar alles andere als toll, aber zumindest zur Konfiguration reicht es aus. Zusammen mit USB-Tastatur und Maus wird der Raspberry Pi so zu einem PC-ähnlichen Mini-Computer.

Beim Einsatz des Raspberry Pi als Embedded System werden Bildschirm und grafische Oberfläche sowieso nicht gebraucht, da sich der RasPi wunderfein per SSH über das Netzwerk warten und administrieren lässt. Trotzdem gibt es Fälle, in denen ein Monitor als Ausgabegerät nützlich ist. Etwa als Terminal für Raspberrys, die nicht im Netzwerk hängen oder für den Dialog mit dem Benutzer. Hier muss es auch nicht unbedingt ein Touchscreen sein, meist reicht das, was früher jedes Mobiltelefon hatte: fünf Tasten, die als Raute angeordnet waren (rechts, links, oben, unten und in der Mitte "OK").

Es gibt inzwischen zahlreiche LCD-Bildschirme, die parallel, über SPI oder per I2 angestuert werden. Nachteilig dabei ist, dass die sowieso schon raren GPIO-Ports blockiert werden. Warum also nicht auch für ein Embedded System einen Monitor nutzen? Das kann ein Standardmonitor mit voller Auflösung sein, aber auch ein ganz kleiner Monitor für 15 - 30 Euro.

Kleine HDMI-Monitore sind teuer, da sie meist bei professionellen Videoaufnahme zur Bildkontrolle dienen. Solche Profi-Geräte kosten zwischen 180 und 300 Euro. Die billigste und einfachste Möglichkeit, einen Raspberry mit einem kleinen Monitor zu versehen, bietet deshalb der Composite-Video-Ausgang zusammen mit einem Kleinbildschirm um die 10 cm Bildschirmdiagonale. Solche LCD-Monitore werden typischerweise in Kraftfahrzeugen für Rückfahrkameras verwendet und sind Massenware. Die Stromversorgung erfolgt über ein externes 12-V-Netzteil. Die Bildqualität ist nicht überwältigend, aber nach einigen Anpassungen des Systems durchaus brauchbar.

Die Geräte kann man inzwischen bei etlichen Versendern bekommen oder man ordert über Amazon beim Chinesen. Da dauert es dann zwar ca. zwei Wochen, bis man sinen Monitor in Händen hält, dafür sind Preis und Abwicklung attraktiv. Ich habe mir zum Test durch eine eher zufällige Auswahl zwei Monitore besorgt:

Der erste nennt sich "Misswonder Mini 3,5-Zoll-TFT-LCD-Farbmonitor Rückfahr Digital Monitor". Der Hersteller bzw. Lieferant heisst deshalb auch "Misswonder". Die technische Daten lauten:

Bildschirmgröße:   3,5" (4:3)
Abmessungen:       107 mm x 67 mm x 16 mm
Visuellbereich:    68 mm x 52 mm
Stromversorgung:   12 V DC (9 - 14 V)
Resolution:        480 x 240
Video:             PAL/NTSC
2 Video Eingänge:  V1, V2 (inv.)
Preis:             EUR 15,29

Der zweite Monitor nennt sich "3.5 Zoll PAL/NTSC modische Digital Mini Klar TFT LCD Monitor für Rückfahrkamera Rückspiegel" und ist von "The BlingBling". Die technische Daten lauten:

Bildschirmgröße:   3,5" (4:3/16:9)
Abmessungen:       115 mm x 99 mm x 15 mm
Visuellbereich:    96 mm x 56 mm
Resolution:        480 x 234 (640 x 480?)
Video:             PAL/NTSC
Stromversorgung:   12 V DC (6 - 32 V)
2 Video Eingänge:  V1, V2 (inv.)
Preis:             EUR 22,39

Beide Monitor besitzen übrigens auf der Rückseite drei Knöpfe für die Einstellung von Helligkeit, Kontrast, Farbsättigung, Modus usw. Die Bedienung erfolgt über On-Scrren-Display.

Konfiguration

Nun geht es an die Konfiguration. Eventuell mussten Sie schon vorher an die Datei /boot/config.txt ran, um HDMI-Einstellungen vorzunehmen. Nun wird diese Datei wieder editiert (als root!), um den Composite-Video-Ausgang zu konfigurieren. Dazu deaktivieren Sie mit vorangestelltem Kommentarzeichen # die HDMI-Einträge wieder. Dafür suchen Sie in der Datei die Zeile " uncomment for composite PAL" und nehmen Sie dort folgende Einträge vor:

# uncomment for composite PAL
hdmi_ignore_hotplug=1
sdtv_mode=2
sdtv_aspect=3
Die Einträge haben folgende Bedeutung. Der sdtv_mode legt das Videoformat fest und sdtv_aspect das Seitenverhältnis:

sdtv_modeModus
0Normales NTSC
1Japanisches NTSC
2Normales PAL
3Brasilianisches PAL
 
sdtv_aspectModus
14:3
214:9
316:9

Auch der Framebuffer muss gegebenenfalls angepasst werden. Dazu tragen Sie die Auflösung der Kleinmonitors in der Datei /boot/config.txt ein, indem Sie die eventuell vorhandenen, beiden unten aufgelisteten Zeilen auskommentieren und anpassen.

#framebuffer_width=1280
#framebuffer_height=720
Für den "Bling Bling" würden Sie beispielsweise folgenden Eintrag vornehmen:
framebuffer_width=480
framebuffer_height=240

Nach dem Speichern der geänderten Datei muss der Raspberry Pi neu gestartet werden. Jetzt sollten Sie schon Boot-Meldungen auf dem Bildschirm sehen, wenn auch in viel zu kleiner Schrift und schlecht lesbar. Das wird nun geändert. Dazu starten Sie als root das Konfigurationsprogramm:

sudo dpkg-reconfigure console-setup
beim ersten Bildschirm wählen Sie UTF-8 aus:

Beim nächsten Bildschirm wählen Sie "Guess optimal character set" bzw. "Vermutlich optimaler Zeichensatz":

Danach geht es um den Font. "VGA" ist zwar lesbar, mir persönlich gefällt aber "Terminus" besser. Aber da können Sie ja munter experimentieren.

Bei der Schriftgröße wählen Sie auf jeden Fall die Framebuffer-Größen aus. Für die Terminus-Schrift sind 16x32 Pixel schön lesbar. Bei VGA würde man eventuell 16x28 wählen.

Nach der letzten Eingabe dauert es einige Sekunden und dann sehen Sie den Bildschirm im neuen Erscheinungsbild. Die Konfiguration wird übrigens in der Datei /etc/default/console-setup. Die Anpassungen lassen sich natürlich auch die Bearbeiten dieser Datei vornehmen. Sie müssen dann nur den Konsolen-Setup neu starten:

/etc/init.d/console-setup restart

Gegebenenfalls verschwindet jetzt noch ein kleiner Teil der Bildschirmausgabe an einem der Räder. Beim "Blingbling" fehlte z. B. der erste Buchstabe. Das läßt sich wieder in der Datei /boot/config.txt reparieren. Hier habe ich bei "overscan_left" den Kommentar entfernt. Der Default-Wert 16 passte. Hier der Ausschitt aus der Datei:

   ...
overscan_left=16
overscan_right=16
#overscan_top=16
#overscan_bottom=16
   ...

Wenn es mit der Klebe-Halterung der Displays nicht hinhaut, kann auch konfigurationstechnisch getrickst werden. Der Treiber erlaubt das Rotieren der Darstellung in 90-Grad-Schritten. Bei den Hochkant-Darstellungen (auch "Portrait-Mode" genannt) braucht die GPU aber mehr Speicher. Zuständig dafür ist die Variable "display_rotate" in der Datei /boot/config.txt:

display_rotateModus
0keine Rotation (default)
1Rotation um 90° im Uhrzeigersinn
2Rotation um 180° im Uhrzeigersinn
3Rotation um 270° im Uhrzeigersinn
0x10000horizontal flip
0x20000vertical flip

Der Test mit beiden Monitoren ergab, dass mit den Einstellungen der "Blingbling" recht gute Ergebnisse (Lesbarkeit) brachte. "Misswonder" liess sich dagegen nur mühsam auf halbwegs brauchbare Werte einstellen. Hier wurde mit der Einstellung auf VGA, 16x32 ein passabler Output erreicht. Man sollte also auf jeden Fall einen 16:9-Monitor verwenden.

Unter anderem funktioniert auch der "TaoTronics TT-CM05 4,3 Zoll PAL/NTSC modische Digital Mini Klar TFT LCD Monitor" sehr gut am RasPi - wie auch viele andere.

Nach einiger Zeit ist dann plötzlich die Herrlichkeit vorbei - der Screensaver schlägt zu und der Bildschirm wirde dunkel. Nachdem das "Aufwecken" an die Tastatur gekoppelt ist, die es nicht gibt, ist das natürlich der totale Blackout. Deshalb muss auch noch der Screensaver abgeschaltet werden. Für die Textkonsole ist dazu die Datei /etc/kbd/config zu ändern. Die beiden Einträge für BLANK_TIME und POWERDOWN_TIME werden auf Null gesetzt, was den Bildschirmschoner abschaltet:

   ...
BLANK_TIME=0
   ...
POWERDOWN_TIME=0
   ...
Läuft die grafische Oberfläche X, geht dort das Abschalten mit den folgenden Kommandos:
xset s off      # Screensaver nicht aktivieren
xset -dpms      # Energysparmodus ausschalten
xset s noblank  # Schwarzen Bildschirm verhindern
Diese Befehle können Sie dauerhaft in der Datei /etc/X11/xinit/xinitrc oder auch in der Steuerung für das Desktop_environment, /etc/xdg/lxsession/LXDE/autostart verewigen - Sie müssen bei letzterer nur jedem Befehl einen "@" voranstellen (@xset s off usw.). Sie können dann noch zusätzlich den Befehl @xscreensaver -no-splash hinzufügen. Oder Sie wählen über das LXME-Menu "Preferences" den Screensaver und dort die Option "Mode: Disable Screen Saver".

Ausgabe auf dem Mini-Monitor

Da man ja über SSH eingeloggt ist oder die Ausgabe durch Skripte/Programme automatisch erfolgen soll, stellt sich die Frage, wie das gehen soll. Der RasPi zeigt ja nach dem Booten auf dem Monitor einen Login-Prompt an. Da kommt einem das Linux-Konzept "alles ist Datei" entgegen. Die Konsolausgabe im Textmodus erfolgt auf das Gerät /dev/console (oder auch /dev/tty0). Man kann also die Ausgabe eines beliebigen Programms auf dieses Gerät umleiten, z. B. durch das Kommando ls -l > /dev/console .

Einziger Nachteil: Das darf nur der root-User. Das ist aber nicht so schlimm, denn Automatismen werden häufig über Skripte in der Startdatei /etc/rc.local oder über /etc/crontab gestartet und da ist sowieso root daran. Auch die Syslog-Meldungen landen auf der Konsole. Wenn Sie erste Versuche anstellen, probieren Sie es nicht mit sudo foobar >/dev/console, denn da gibt es ein "nicht erlaubt". Werden Sie root mit sudo su, dann klappt auch ein echo "Hello" > /dev/console-Kommando.

Escape-Sequenzen

Beim Programmieren keimt recht schnell der Wunsch auf, den Bildschirm anzusteuern, z. B. den Bildschirm zu löschen, den Cursor zu positionieren etc. Es existieren verschiedene Möglichkeiten, dies zu realisieren. In den frühen Jahre von UNIX gab es zahlreiche Anbieter von Bildschirmterminals und jedes dieser Terminals wurde mit anderen Kombinationen von ASCII-Zeichen angesteuert. Selbst unter MS-DOS wurde diese Tradition noch gepflegt - in Form des ANSI-Treibers.

Welche Möglichkeiten der Bildschirmansteuerung gibt es? Ein Terminal reagiert normalerweise auf Zeichenfolgen, die vom Programm aus geschickt werden. Normale Zeichen werden als Buchstaben dargestellt, bestimmte Sonder- zeichen oder Kombinationen bewirken aber bestimmte Funktionen. Da diese Kombinationen meist bestimmte Sonderzeichen enthalten (z.B. ESCAPE), um sie von Text zu unterscheiden, werden die Steuerfolgen auch Escape-Sequenzen genannt. Wenn man nun z. B. den Bildschirm löschen möchte, dann sucht man sich im Manual des Terminals die entsprechende Sequenz für "Bildschirm löschen" heraus und schickt sie vom Programm aus an das Terminal. Weil es auch nichtdruckbare Zeichen sein können, kann es sein, daß man ihre oktale oder sedezimale Verschlüsselung angeben muß. Dazu ein Beispiel. Bei einem VT100-Terminal ist die Sequenz für "Bildschirm löschen" die Zeichenfolge

[;H [2J
Man schickt das beispielsweise aus einem C-Programm heraus mit printf("\033[;H\033[2J") ans Terminal. Dabei ist "\033" die oktale Schreibweise für das Escape-Zeichen.

Bei bildschirmorientierten Programmen wie z. B. einem Editor muß es möglich sein, den Cursor auf dem Bildschirm frei hin und her bewegen zu können. Das geht nicht ohne weiteres, weil die Terminals dafür spezielle Steuercodes, meist ESC gefolgt von einer bestimmten Zeichenkette, erwarten. Auch Fett- oder Kursivschrift lassen sich oft über solche Steuersequenzen ein- bzw. ausschalten. Andere Funktionen sind z. B. das Löschen des gesamten Bildschirms oder bis zum Ende der Zeile. Leider sind die Steuersequenzen für die einzelnen Funktionen nicht einheitlich. Auch haben die vielen verschieden Terminals unterschiedliche Möglichkeiten.

Deshalb gibt es eine Datenbank, in der, bei BSD-UNIX in der Datei etc/termcap im Textformat und bei System V in kompilierter Form in einer Reihe von Dateien unter dem Verzeichnis /usr/lib/terminfo, die Steuersequenzen zur Bildschirmansteuerung bei verschiedenen Terminaltypen gespeichert sind. Die Termcap und Terminfo-Datenbanken sind im wesentlichen äquivalent zueinander.

Curses

Mit termcap kann man flexible Programme schreiben, aber es könnte noch einfacher gehen. Deshalb gibt es eine weitere Bibliothek, die auf termcap aufbaut: "curses". Die curses-Bibliothek ermöglicht sämtliche Terminal-E/A-Funktionen. Zusätzliches Ziel von "curses" ist es, den Update des Bildschirms in optimaler Form durchzuführen, also möglichst schnell mit möglichst wenig Zeichen, die geschickt werden müssen.

Curses geht dabei folgendermaßen vor: es gibt einen virtuellen Bildschirm im Hauptspeicher. Ausgaben werden nun zuerst in diesem internen Speicherbereich aufgebaut. Und erst beim Aufruf der Funktion refresh() werden alle seit dem letzten refresh() angefallenen Aenderungen an den realen Bildschirm geschickt. Zusätzlich ist es möglich, den Bildschirm in Bereiche (Windows, hat aber nichts mit X Windows zu tun) einzuteilen und diese getrennt zu bearbeiten. Am Anfang gibt es für den gesamten zur Verfügung stehenden Bildschirm das vordefinierte Window stdscr.

Wie sieht ein curses-Programm aus? Hier ein Beispielprogramm, das in der Mitte des Bildschirms den String "Hello, world!" invers ausgibt.

#include 

int main(void)
  {
  char *text = "Hello, world!";

  initscr();                 /* Curses-Paket initialisieren */
  clear();			         /* Bildschirm löschen */
  move(LINES/2-1,(COLS-strlen(text))/2-1);
                             /* Cursor zur richtigen Position */
                             /* LINES und COLS sind vordefiniert */
  standout();                /* schalte auf Invers */
  printw("%s\n",text);       /* gib den Text aus */
  standend();                /* wieder auf normal */
  refresh();                 /* reale Ausgabe */
  endwin();	                 /* Ende Curses-Nutzung */
  return 0;
  }
Die Verwendung von Bibliotheken wie termcap oder curses hat natürlich Auswirkungen auf die Portabilität des Programms. Schon verschiedene Unix-Systeme haben verschiedene Curses-Bibliotheken.

Das tput-Kommando

("tput" steht für "terminal put") Das Kommando sendet Steuerbefehle an das Terminal, wobei die "echte" Steuerinfo der terminfo-Datenbasis entnommen wird. Als Parameter dient der symbolische Name der entsprechenden Steuerfunktion. Je nach Terminaltyp sind sehr viele Steuerfunktionen möglich. Derzeit akzeptiert tput nur einen Parameter, mehrere Steuerbefehle müssen also nacheinander gegeben werden. Die in der Praxis am häufigsten gebrauchten Parameter sind:

belSignalton
blink Text auf Blinken schalten
bold Text heller darstellen (hohe intensität)
clear Bildschirm löschen,Cursor in die linke obere Ecke
crCarriage Return
cup Cursor positionieren. Hinter "cup" folgen Zeile und Spalte der Position,
z. B. "tput cup 10 40"
edBildschirm von Cursorposition bis Ende löschen
elVon Cursorposition bis Zeilenende löschen
home Cursor in linke obere Ecke
ind Schirm nach oben rollen
rev Text auf Inversdarstellung schalten
ri Schirm nach unten rollen
rmso Wieder auf normale Zeichendarstellung schalten
setaf Schriftfarbe setzen; Parameter ist Farbnummer
setaf ANSI-Schriftfarbe setzen; Parameter ist Farbnummer
setb Hintergrundfarbe setzen; Parameter ist Farbnummer
setab ANSI-Hintergrundfarbe setzen; Parameter ist Farbnummer
sgr0 Attribute zurücksetzen

Beispiel:

 
    tput bel
    tput bold 
    echo "\nAchtung! Alle Daten werden gelöscht!\n"
    tput rmso
Oder auch Farbenspiele. Hier wird ein Trick angewendet: Zuerst wird die Ausgabe von "tput" in einer Shell-Variablen gespeichert. Danach kann die Variable bei allen möglichen Ausgaben verwendet werden.
fg_rot=$(tput setaf 1)
fg_gruen=$(tput setaf 2)
fg_gelb=$(tput setaf 3)
fg_blau=$(tput setaf 4)
fg_magenta=$(tput setaf 5)
fg_cyan=$(tput setaf 6)
fg_weiss=$(tput setaf 7)
fett=$(tput bold)
invers=$(tput rev)
untersr=$(tput smul)
attr_end=$(tput sgr0)

echo ${fg_rot}rot${attr_end}"
echo ${fg_gruen}gruen${attr_end}"
echo ${fg_gelb}gelb${attr_end}"
echo ${fg_blau}blau${attr_end}"
echo ${fg_magenta}magenta${attr_end}"
echo ${fg_cyan}cyan${attr_end}"
echo ${fg_weiss}(fast)weiss${attr_end}"
echo ${fett}fett${attr_end}"
echo ${invers}reverse${attr_end}"

Die Farbnummer entsprechen bie setaf und setab den ANSI-Farbnummern. Die Farbnummern für setb and setfunterscheiden sich davon, blau und rot sowie cyan und gelb sind vertauscht. Die folgende Tabelle zeigt beide Zuordnungen:

Coloursetf/setbsetaf/setab
Black00
Blue14
Green22
Cyan36
Red41
Magenta55
Yellow63
White77

Figlet und Toilet

Figlet ist ein kleines Programm, das aus einem vorgegebenen Text per ASCII-Art eine große, bannerartige Schrift erzeugt. Der Name "FIGlet" steht für "Frank, Ian and Glen’s letters". Das Programm (und auch "Toilet") kann aus den Paketquellen von Debian installiert werden. Sie können stattdessen (oder zusätzlich) auch die Figlet-Alternative Toilet installieren, die auch Farbausgabe und den Export in verschiedene Formate wie SVG und HTML unterstützt. "TOIlet" steht für "The Other Implementation’s letters".Figlet und Toilet nutzen beide eine Reihe von Schriften. Viele werden schon bei der Installation schon mit installiert. Auf http://www.figlet.org/fontdb.cgi finden Sie noch eine Reihe weiterer Schriftarten zum Download. Die ".flf"-Dateien müssen mit root-Rechten in das Verzeichnis /usr/share/figlet kopiert werden. Die Ausgabe mit dem Standardfont sowie dem Small-Font sieht beispielsweise so aus:

  ____                 _                            ____  _ 
 |  _ \ __ _ ___ _ __ | |__   ___ _ __ _ __ _   _  |  _ \(_)
 | |_) / _` / __| '_ \| '_ \ / _ \ '__| '__| | | | | |_) | |
 |  _ < (_| \__ \ |_) | |_) |  __/ |  | |  | |_| | |  __/| |
 |_| \_\__,_|___/ .__/|_.__/ \___|_|  |_|   \__, | |_|   |_|
                |_|                         |___/           

  ___              _                        ___ _ 
 | _ \__ _ ____ __| |__  ___ _ _ _ _ _  _  | _ (_)
 |   / _` (_-< '_ \ '_ \/ -_) '_| '_| || | |  _/ |
 |_|_\__,_/__/ .__/_.__/\___|_| |_|  \_, | |_| |_|
             |_|                     |__/         
Die Ausgabe von Figlet erfolgt standardmäßig auf die Standardausgabe, also in der Regel auf den Bildschirm. Möchte man eine andere Schrift als die Standardschrift verwenden, so fügt man die Option -f <Schriftname> hinzu. Figlet kennt eine Reihe weiterer Optionen, die in den Manpages aufgeführt sind. Um beide Tools zu installieren, verwenden Sie das Kommando:
sudo apt-get install figlet toilet toilet-fonts

Toilet ist noch in der Entwicklungsphase, aber schon weit gediehen. Es will komplette Figlet-Kompatibilität bieten und zusätzlich weitere Features, die zum Teil schon implementiert sind. Dies sind z. B. Farbausgabe, verschiedene Ausgabeformate oder Unicode-Support. Toilet verwendet, insbesondere für die Farbausgabe diverse "Filter". Eine Liste mit den vorhandenen Filtern erhalten Sie mittels toilet -F list. Eine nähere Erklärung dazu liefert die Manualpage. Um beispielsweise alle Fonts zu listen, reicht ein kurzes Shell-Skript:

for font in /usr/share/figlet/*; do
  toilet Hello -f "$font";
done

Homepages von Figlet und Toilet:
http://www.figlet.org/
http://caca.zoy.org/wiki/toilet

Stromversorgung von Raspberry-Pi-Board und Monitor

Richtig große Monitore werden normalerweise ans Netz angestöpselt, da gibt es keine andere Möglichkeit. Die Mini-Monitore für Rückfahrkameras im Auto sind üblicherweise für 12 V Gleichspannung eingerichtet. Im Kraftfahrzeug kann die Bordspannung jedoch beträchtlich schwanken, Werte zwischen 10 V und 14 V sind möglich. Deshalb haben die Mini-Monitore intern einen Spannungsregler, der die Bordspannung auf 5 V herunterregelt.

Man könnte also den Monitor öffnen, den Spannungsregler identifizieren und entfernen. Dann die Lötpunkte von Ein- und Ausgang des Spannungsreglers überbrücken und an dieser Stelle gleich 5 V einspeisen, die man dem Raspberry-Board entnimmt. Diese Lösung ist mir nicht nur wegen der Bastelei am Display unsympatisch (es gibt immer einen Vollpfosten, der dann doch 12 V anschliesst und das Dink damit killt), sondern auch wegen des Umwegs, den der Strom über das RasPi-Board nehmen soll.

Eine professionelle Lösung wäre dagegen, die Versorgung von Raspberry Pi, Monitor und ggf. vorhandener Peripherie (Relaiskarte, Sensorik uws.) zentral vorzunehmen. Wir brauchen in diesem Fall 12 V, 5 V und eventuell noch 3,3 V. Für die 12-V-Versorgung kann z. B. gleich ein leistungsfähiges Schaltnetzteil verwendet werden, von dem dann die anderen Spannungen abgeleitet werden. Es ist aber genauso möglich, eine ungeregelte Eingangsspannung zu verwenden und die 12 V über einen zusätzlichen Spannungsregler zu erzeugen. Ich gehe im Folgenden von einen geregelten 12-V-Netzteil aus, das 1,5 bis 2 A Strom liefern kann.

Ein linearer Spannungsregler würde sich als suboptimal erweisen, da bei den ca. 1 A Strom für den RasPi eine Leistung von U*I = (12 - 5)*1 = 7 Watt als Wärme "verbraten" würde. Ideal geeignet sich hier Schaltregler, sogenannten Buck-Regler, welche die Spannung sehr energieeffizient reduzieren und kaum Lestung in Wärme umsetzen. Gerade für die Umsetzung von 12 V auf 5 V gibt es zahlreiche Möglichkeiten, z. B. die USB-Ladegeräte für die Autosteckdose (bei denen aber das Gehäuse stört). Aber selbst über Amazon kann man Module bekommen, die fliegende Anschlussdrähte haben. An dieser Stelle will ich auch keine Anleitung für den Selbstbau eines Buck-Converters geben, sondern auf fertige Komponenten zurückgreifen.

Der erste Vorschlag verwendet ein kleines DC/DC-Wandlermodul mit einstellbarem Spannungsregler (Step-Down Schaltregler-Modul DAYPOWER M-SD-LM2596) von Pollin, das sich zum Bau von Netzteilen, zur Stromversorgung von unterschiedlichen Geräten usw. eignet. Die Eingangsspannung darf zwischen 4 und 35 V liegen, die Ausgangsspannung ist per Potenziometer auf 1,25 bis 30 V einstellbar. Der maximale Ausgangsstrom darf bis zu 2 A betragen. Die fertig aufgebaute Platine hat die Masse (LxBxH) 54 mm x 27 mm x 15 mm. Man kann so mehrere Module nebenenander auf einer Trägerplatine (Lochrasterplatte) unterbringen und alle Eingänge parallel speisen. Bei ungeregelter Versorgung nimmt man drei Module (12 V/5 V/3,3 V), bei 12-V-Versorgung nur zwei (5 V/3,3 V). Gibt es Peripherie mit anderen Anforderungen, kommt einfach noch ein Modul dazu. Die Bestellnummer lautet 351389, kosten tut das Modul 3,45 Euro, ab 3 Stück nur noch 3,25 Euro und ab 10 Stück 2,95 Euro.

Noch einfacher in der Beschaltung sind die Module von RECOM. Es sind Schaltregler, die pinkompatibel zu den üblichen dreibeinigen linearen Reglern der Baureihe 78xx sind. Die Ausgangsspannung ist fest und der Ausgangsstrom darf maximal 1 bis 1,5 A betragen. Der Aufbau des "Netzteils" ist genauso einfach, wie mit den Pollin-Modulen. Die Regler haben ebenfalls nur Eingang, Ausgang und Masseanschluß; sie lassen sich also auch ganz einfach auf einer Lochrasterplatte unterbringen und verdrahten. Die Module gelten als sehr zuverlässig, was sich im Preis niederschlägt:

Bei Conrad sind unter anderem folgende Typen erhältlich:

154973  Recom International R-78B3.3-1.0    3,3 V/1,0 A    8,12 Euro
154984  Recom International R-78B3.3-1.5    3,3 V/1,5 A    9,73 Euro
154974  Recom International R-78B5.0-1.0    5,0 V/1,0 A    8,12 Euro
676148  Recom International R-78B5.0-1.5L   5,0 V/1,5 A   10,20 Euro
154975  Recom International R-78B12-1.0    12,0 V/1,0 A    8,73 Euro

Auch Watterott führt diverse Step-Up- und Step-Down-Wandler von Polulu mit unterschiedlicher Leistung.


Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: