18.April 2024    
   homeProjekteHardwareIP-Reset-Controller mit Raspberry

 

Hobby 234x60
reichelt elektronik – Elektronik und PC-Technik
Seite zuletzt geändert: 09.11.2012 09:18

IP-Reset-Controller auf Basis des Raspberry Pi

Auf Grundlage der Raspberry-I2C-Relaisplatine und des Raspberry-Watchdogs entstand jetzt ein komplett neuer IP-Reset-Controller.

Das Projekt ist noch im Aufbau, daher ist noch nicht alles hier verfügbar. Das sollte aber in den nächsten Tagen abgeschlossen sein (Stand: 2012-1029).

Eine kleine Anmerkung vorab zu den Platinen. Da ausreichend Platz vorhanden war, habe ich geschaut, dass ich einen Bestand an alten Teilen aufarbeiten kann. Daher sind die Platinen recht groß geworden und mit zum Teil mit Teilen bestückt, die sicher auch ins Museum passen würden. Aber wie gesagt - auf die Größe kam es nicht an, nur auf die Funktionsfähigkeit.

Meine favorisierte Platinengröße ist halbes Euro-Format (80x100mm). Daher sind bis auf wenige Ausnahmen auch alle Platinen in dieser Größe angelegt.

Die Schaltungen sind natürlich alle getestet, eine Garantie für die Funktionsfähigkeit oder dafür, dass die Schaltung nie und unter keinen Umständen Schaden am Pi oder an anderen Geräten verursachen können, kann ich NICHT übernehmen. Es sind reine Bastelprojekte! Beim Nachbau also gesunden Menschenverstand walten lassen, ich bin für Hinweise aber dankbar!

 

Stromversorgung, Watchdog und Datenverteilung

Die Stromversorgung wird zunächst von einem älteren Notebook-Netzteil sichergestellt, welches am Ausgang eine Spannung von 19V bei 2,6A zur Verfügung  stellen kann.

Es fällt vermutlich nicht nur dem Laien auf, dass diese Werte doch recht ungünstig sind für den Betrieb des Raspberry und seine Peripherie.

Dementsprechend erzeuge ich die benötigten Spannungen (5V und 12V für die Festplatte, 5V für den Raspberry sowie 5V, 12V und 3,3V für diverse Peripherie), indem die 19V in einen 1A-Schaltwandler für 12V (mit LM2575) und einen 3A-Schaltwandler für 5V (mit LM2576) geleitet werden. Aus den 5V werden mit einem kleinen "LP2950 ACZ3,3" die 3,3V erzeugt. Der letztere Chip kann bis zu 150mA zur Verfügung stellen, das sollte für die verschiedenen 3,3V-Bereiche ausreichen.

Auf der Platine werden die drei Spannungen über die vom PC bekannten Stecker herausgeleitet und an die anderen Platinen verteilt.

Für die Schaltregler habe ich die "ADJ" gewählt, also die Version, bei der über externe Widerstandskombinationen einstellbare Ausgangsspannungen erzeugt werden können. Grund dafür ist, dass ich bei dem heiklen Umgang des Raspberry mit der Betriebsspannung sicherstellen wollte, dass am Raspberry wirklich mindestens die 5V ankommen. Die von mir gewählte Dimensionierung liefert an den Prüfpunkten des Raspberry eine Spannung von ca. 5,18V (Berechnung der Spannungen siehe Fußnote 2).

Wer das nicht möchte, kann jeweils die Fixspannungsversion wählen, bis auf die Widerstands-Außenbeschaltung ändert sich nichts weiter.

Beide Schaltregler werden auch bei Last nur mäßig warm, einfache Fingerkühlkörper reichen aus, um die Abwärme abzuleiten. Hier kann man sich die Eigenschaft der verwendeten Schaltregler zunutze machen, dass die Kühlfahnen der ICs GND-Verbindung haben. Sofern das Gehäuse aus Metall ist und nicht ein anderes Potential als GND hat, kann man hier also das Gehäuse oder mit dem Gehäuse verbundene Metallteile zur Kühlung nutzen. Ebenso kann man beide Schaltregler gemeinsam an ein Kühlprofil klemmen oder schrauben ohne dass man sich wegen der Isolierung Gedanken machen muss.

Am Stecker K5 kann eine LED angeschlossen werden zur Anzeige der Betriebsbereitschaft.

Mit auf der Platine befindet sich ein 26poliger Wannenstecker, der mehrere Zwecke erfüllt:

  • er versorgt den Raspberry mit den benötigten 5V
  • er gibt an den Raspberry KEINE 3,3V weiter, da dieser diese Spannung selbst in ausreichendem Maß erzeugt
  • an dem Wannenstecker werden über Pins die nicht anderweitig benötigten Signale zur Verfügung gestellt (z.B. für den von den anderen Platinen benötigten I2C-Bus)
  • über eine Signalleitung kann der Raspberry den Watchdog steuern

Der Watchdog ist die bekannte Schaltung aus meinem Vorentwurf (siehe hier). 

Schaltplan und Layout im Target-3001!-Format

Schaltplan als PDF

Platine (Kupferseite) als PDF

Bestückungsplan als PDF

Reichelt-Bauteilliste
(alle Preise inklusive Mehrwertsteuer, zuzüglich Versandkosten von 5,60€ je Lieferung bis 10kg, bei Nachnahme 8,06€ zzgl. 2€ Postentgelt)
Bauteil-IDStückzahlTypBauteilbezeichnungEinzelpreis (EUR)Gesamtpreis (EUR)
Bu11HEBW 21
C11RAD 10/100RAD 10/100 - Elektrolytkondensator, 6,3x11mm, RM 2,5mm0.040.04
C21RAD 2.200/16RAD 2.200/16 - Elektrolytkondensator, 13x25mm, RM 5,0mm0.130.13
C31X7R-2,5 100NX7R-2,5 100N - Vielschicht-Keramikkondensator 100N, 10%0.050.05
C4, C92RAD 470/16RAD 470/16 - Elektrolytkondensator, 10x12,5mm, RM 5,0mm0.050.10
C5, C72RAD 220/35RAD 220/35 - Elektrolytkondensator, 10x12,5mm, RM 5,0mm0.050.10
C6, C82RAD 470/63RAD 470/63 - Elektrolytkondensator, 13x25mm, RM 5,0mm0.130.26
C101RAD 100/35RAD 100/35 - Elektrolytkondensator, 8x11mm, RM 3,5mm0.040.04
D111N 41481N 4148 - Planar Epitaxial Schaltdiode, DO35, 100V, 0,15A0.040.04
D211N 40011N 4001 - Gleichrichterdiode, DO41, 50V, 1A0.040.04
D31SB 3100SB 3100 - Schottky Diode, DO201, 100V, 3A0.250.25
D41SB 1100SB 1100 - Schottky Diode, DO41, 100V, 1A0.060.06
D511N 54011N 5401 - Gleichrichterdiode, DO201AD, 100V, 3A0.060.06
F1 (Halter)1PL 112000PL 112000 - Sicherungshalter, 5x20mm, max. 6,3A-250V0.160.16
F1 (Sicherung)1TRÄGE 2,5A
IC11NE 555 DIPNE 555 DIP - Timer, DIP-80.160.16
IC21LM 2575 T-ADJLM 2575 T-ADJ - Spannungsregler, 1A, 1,23 - 37V, 45Vs, TO-220-51.151.15
IC31LM 2576 T-ADJLM 2576 T-ADJ - Spannungsregler, 3A, 1,23 - 37V, 45Vs, TO-220-51.151.15
IC41LP 2950 ACZ3,3LP 2950 ACZ3,3 - Spannungsregler, +3,3V, 0,16A, TO-920.330.33
IC5-IC128PSS 254/2GPSS 254/2G - Printstecker, Einzelstecker, gerade, 2-polig0.020.16
IC131PSS 254/4GPSS 254/4G - Printstecker, Einzelstecker, gerade, 4-polig0.050.05
K1-K5, K7, K87SL 1X36G 2,54SL 1X36G 2,54 - 36pol. Stiftleiste, gerade, RM 2,540.171.19
K61WSL 26GWSL 26G - Wannenstecker, 26-polig, gerade0.160.16
R111/4W 10K1/4W 10K - Kohleschichtwiderstand 1/4W, 5%, 10 K-Ohm0.100.10
R2, R4, R531/4W 3,3K1/4W 3,3K - Kohleschichtwiderstand 1/4W, 5%, 3,3 K-Ohm0.100.30
R311/4W 100K1/4W 100K - Kohleschichtwiderstand 1/4W, 5%, 100 K-Ohm0.100.10
R611/4W 391/4W 39 - Kohleschichtwiderstand 1/4W, 5%, 39 Ohm0.100.10
R711/4W 47K1/4W 47K - Kohleschichtwiderstand 1/4W, 5%, 47 K-Ohm0.100.10
R8, R1321/4W 1501/4W 150 - Kohleschichtwiderstand 1/4W, 5%, 150 Ohm0.100.20
R91METALL 9,53KMETALL 9,53K - Metallschichtwiderstand 9,53 K-Ohm0.080.08
R101METALL 1,02KMETALL 1,02K - Metallschichtwiderstand 1,02 K-Ohm0.080.08
R111METALL 3,74KMETALL 3,74K - Metallschichtwiderstand 3,74 K-Ohm0.080.08
R121METALL 1,15KMETALL 1,15K - Metallschichtwiderstand 1,15 K-Ohm0.080.08
REL11FIN 36.11 5VFIN 36.11 5V - Finder-Subminiaturrelais, 1x UM, 250V 10A, 5V0.910.91
T1, T32BC 549BBC 549B - Transistor NPN TO-92 30V 0,1A 0,625W0.040.08
T21BC 328-40BC 328-40 - Transistor PNP TO-92 25V 0,8A 0,625W0.050.05

Hinzu kommen noch zwei Speicherdrosseln, die bei Reichelt leider nicht zu haben sind, aber dafür bei Darisus.

Für den 12V-Bereich ist das eine DPU330A1 (330µH 1A)

Im 5V-Bereich (3A) kommt eine DPU100A3 (100µH 3A) zum Einsatz.

Wichtig ist einfach, dass es sich um Speicherdrosseln handelt (bei Ringkernen sind die Kerne dann gelb-weiß markiert), nicht um irgendwelche Entstördrosseln oder dergleichen. Für Ministröme gehen die noch, gerade bei Step-Down-Wandlern (da wird halt bei Bedarf die Spannungsdifferenz in Wärme umgewandelt), aber sobald man da etwas höher kommt bei der Belastung, merkt man dann recht schnell, dass eine Speicherdrossel doch etwas besser geeignet ist.

Software

Die Software ist in Python und basiert in ihrem gesamten Daemon-Teil auf dem Beispielcode von Sander Marechal, veröffentlicht auf der Seite www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/. Das Script hat ja eigentlich auch nicht viel zu tun, es muss nur im Hintergrund immer mal wieder den Timer zurücksetzen. Daher beschränkt sich mein eigener Code auf grade mal ungefähr ein Dutzend Zeilen.

Ich habe aktuell darauf verzichtet, eine deb-Datei zu erzeugen, ich denke, die Installation ist auch so nicht gerade besonders kompliziert.

Hier das kleine Archiv

7-Segment-Display und Displaycontroller

Das Display ist nicht so ganz ernstzunehmen, eigentlich eher sowohl eine Übernahme eines lieb gewonnenen Teils aus dem alten Controller und eine Löt- und Designübung, zum anderen ein Rest vom I2C-Test.

Im Normalzustand stellt das Display die aktuelle Uhrzeit dar (Stunde-Minute-Sekunde). Dafür läuft ein kleines C-Programm, welches ständig rotierend die beiden I2C-Slaves auf Basis des PCF8574 mit Daten füttert. Einer der beiden ist dabei für die Auswahl der Anzeigestelle zuständig, der andere gibt die 8 Segmentdaten weiter.

Ein paar Informationen zur Schaltung:

  • Die Jumper und Pull-Up-Widerstände an den PCF8574 können entfallen, wenn man die Adressen nicht änderbar haben will. Dann halt nur darauf achten, dass beide PCF8574 unterschiedliche Adressen bekommen und auch sonst im Bus keine Duplikate auftreten.
  • Die 10K-Pull-Up-Widerstände an der Basis der Transistoren auf der Anoden-Seite der LED-Anzeigen sind ein Kompromiss (siehe Fußnote 1):

    • Die PCF8574 können mit H nur eine 100µA-Stromquelle zur Verfügung stellen.
    • Bei H und einer am Ausgang anliegenden Spannung größer als der Versorgungsspannung des IC dürfen maximal 400µA in den IC hineinfließen
    • die Transistoren sollen trotzdem noch schnell und zuverlässig in die Sättigung kommen

  • Die Anoden-Treibertransistoren sollten einen ordentlichen hfe haben (ich habe welche mit Werten um die 120...150 im Einsatz)
  • Die Katoden-Treibertransistoren müssen im ungünstigsten Fall (alle Segmente an, also eine "8" mit Punkt) 8 mal den LED-Durchlassstrom treiben können. Das sind dann bei mir nur um die 160mA, wer hellere Anzeigen möchte, kann kleinere Widerstände als die verwendeten 100Ohm hernehmen (LED-Spezifikation beachten und vorher mal auf einem Steckbrett schauen, ob sich durch eine Stromänderung überhaupt noch eine Änderung der Helligkeit ergibt!!!) und bekommt dann entsprechend einen u.U. deutlich höheren Gesamtstrom. Die verwendeten Transistoren sind "dicke" Teile mit dem Nachteil eines relativ kleinen hfe-Werts. Daher fallen die Pull-Up-Widerstände an der Basis recht klein aus.
  • Die Transistoren vor den Katodentreibern existieren primär aus dem Grund, den Ausgang des PCF8574 zu negieren. Dieser ist nach dem Anschalten auf "H" (bzw. hochohmig bzw. von der 100µA-Quelle gespeist). Das bedeutet, dass standardmäßig nach dem Anschalten alle Digits der Anzeige leuchten würden. Durch die kleinen Transistoren wird das umgekehrt, hat dann dafür den Nachteil, dass im Betrieb die Position der Digits negiert angegeben werden muss (also z.B. 0xfe statt 0x01).

Ansonsten benötigt diese Schaltung vermutlich keine weiteren Kommentare. Die Schaltung lässt sich äquivalent auch auf Anzeigen mit gemeinsamer Anode anwenden. Man muss dazu halt das Teil andersherum aufbauen.

Die Display-Platine ist eigentlich ein reiner Träger für die Anzeigemodule, da steckt außer diesen und dem Steckverbinder nichts weiter drauf.

Aufgrund der Führung der Leiterbahnen auf Display und Displaycontroller ergibt sich für die Segmente folgende Werteverteilung (Zuordnung der Segmentbuchstaben siehe Bild):

SegmentBit des PCF8574Ausgangswert
a

2

0x04
b30x08
c60x40
d70x80
e00x01
f40x10
g50x20
h10x02

Die Digits der Anzeige werden von 0 bis 5 durchgeschalten mit jeweils gleitendem Low am PCF8574. Dabei ist die Stelle "0" die am weitesten rechts liegende.

DigitBit des PCF8574Ausgangswert
000xfe
110xfd
220xfb
330xf3
440xef
550xdf

Für die Darstellung einer "1" an der zweiten Stelle von rechts ergibt sich damit

  • durch das Setzen der Segmente b und c ein Ausgangswert am Segment-PCF8574 von 0x08 + 0x40, also 0x48.
  • am Digit-PCF8574 entsteht ein Ausgangswert von 0xfd

Display: Schaltplan und Platine im "TARGET 3001!"-Format

Display: Schaltplan als PDF

Display: Platine als PDF

Display: Bestückungsplan als PDF

 

Reichelt-Bauteilliste
(alle Preise inklusive Mehrwertsteuer, zuzüglich Versandkosten von 5,60€ je Lieferung bis 10kg, bei Nachnahme 8,06€ zzgl. 2€ Postentgelt)
Bauteil-IDStückzahlTypBauteilbezeichnungEinzelpreis (EUR)Gesamtpreis (EUR)
K11WSL 14WWSL 14W - Wannenstecker, 14-polig, gewinkelt0.210.21
LD1-LD33DX52-11
1PFL 14PFL 14 - Pfostenbuchse, 14-polig, mit Zugentlastung0.140.14

Relaisplatine

Die Relaisplatine läuft bei mir mit einer Reihe von 12V-DIL-Relais. Die 12V dafür werden an der Stromversorgungsplatine abgegriffen. Da die 12V ausschließlich auf der Relaisplatine für die Relais benötigt werden und sonst keinen Einfluss auf die anderen Schaltungsteile haben, kann man ebensogut statt der 12V-Relais auch 5V-Exemplare nehmen und den entsprechenden Spannungs-Stecker mit dem 5V-Ausgang statt dem 12V-Ausgang der Stromversorgungsplatine verbinden.

Auch 6V-Relais funktionieren im Normalfall problemlos, weil die Reichweite der sicheren Betriebsspannung in aller Regel auch die 5V mit umfasst. Bei der Relais-Reihe, die ich benutzt habe, haben die 6V-Relais zum Beispiel eine "Pickup-Spannung" von max. 4,5V. Selbst bei schwachen 5V ziehen die Relais dann also noch sicher an.

Schaltplan und Layout im "TARGET 3001!"-Format

Schaltplan als PDF

Platine als PDF

Bestückungsplan als PDF

 

Gehäuse

noch in Arbeit...

Fußnoten

  1. Laut Datenblatt ist bei H-Pegel und einer Ausgangsspannung, die größer ist  als die Betriebsspannung des IC, ein maximaler Strom von 400µA in den PCF8574 erlaubt.
    Die Ausgangsspannung liegt bei 5V.
    Die Betriebsspannung liegt bei 3,3V und damit in etwa auch die Ausgangsspannung, die die 100µA-Stromquelle am offenen Ausgang zur Verfügung stellen würde.
    Daraus ergibt sich eine Differenz von 1,7V. Bei einem Strom von 400µA würde das einen Widerstand zwischen Ausgang und +5V von 4,25K ergeben.
    Ein gewählter Wert von 10K sollte also dafür sorgen, dass der Strom von 400µA nie überschritten wird (auch wenn man Toleranzen der +5V nach oben und der 3,3V nach unten berücksichtigt).
    Dieser Wert stellt auch sicher, dass auch in dem Fall, dass alle Ausgänge des PCF8574 auf L-Pegel stehen, der maximale Strom in den IC nicht überschritten wird (auch bei einem "L" mit einem Idealwert von 0V würden dann nur 5V/10K = 0,5mA je Ausgang anfallen, insgesamt also 4mA).
    Da der maximale Basisstrom des Steuertransistors durch die 100µA-Quelle und den 10K-Widerstand bestimmt wird, wird kein weiterer Basiswiderstand benötigt.
  2. Die 5V-Spannung ergibt sich aus

    Uout = (1 + R11/R12) * Uref

    Bei Uref = 1.23V, R11=3.74K, R12=1.15K bekommen wir:

    Uout = (1 + 3.74K/1.15K) * 1.23V = 5.23V

    Bei der 12V-Spannung sieht das äquivalent aus, hier haben wir

    Uout = (1 + R9/R10) * Uref = (1+ 9.53K/1.02K) * 1.23V = 12.72V

    Wenn wir R10 mit 1.05K wählen, sind es noch 12.39V; bei R10=1.07K bekommen wir 12.19V. Dabei natürlich immer beachten, dass die Metall-Widerstände auch noch eine Toleranz von 1% haben, was im ungünstigsten Fall (jeweils gegenläufige Abweichung bei den beiden Justierwiderständen) bereits zu erheblichen Abweichungen führen kann. Bei Bedarf nach ganz genauer Einstellung hilft dann nur ein ordentliches Trimmpoti oder man muss sich die Widerstandswerte genau ausmessen.

Keine Kommentare
Kommentar hinzufügen

* - Pflichtfeld

*



*
Copyright © 2008-2017