Raspberry Pi-2/3 Power-Switch++

elektronikjogi

Moderator
Hi an alle ArduMower-Fans,

Nach dem Alexander hier
http://www.ardumower.de/index.php/d...berry-pi-als-wlan-router-fuer-ardumower#10467
den Pi schon so schön eingeführt hat. Möchte ich dieses Thema von einer anderen Seite weiter aufgreifen.

Worum geht es...

Grundlegend geht es darum, dass der Pi nicht ungeregelt ausgeschaltet werden darf. Das geht zwar meistens gut aber manchmal auch nicht. Schlicht es darf nicht sein, dass der Pi einfach abgeschaltet wird. Dazu hat die Schaltung einen Power Source und einen Power Backup Anschluss. Für unsere Zwecke muss man sich das so vorstellen. Der Power Source von der Schaltung hängt im Hauptzweig der Akku-Versorgung in dem sich auch ein Hauptschalter, Notaus, Spannungsüberwachung etc. befindet. Das Power Backup hängt nach der Akku-Sicherung direkt am Akku. Wird der Pi eingeschaltet (hochgefahren) aktiviert die Schaltung augenblicklich den Backup Zweig. Selbst wenn jetzt jemand den Notaus drückt oder den Hauptschalter ausschaltet wird der Pi über Power Backup weiter versorgt. Er kann also ganz gemütlich seinen Programmen nachgehen ohne aus dem Leben gerissen zu werden. Natürlich merkt der Pi über das Power-Good Signal das Power Source ausgefallen ist und leitet jetzt ein geregeltes Shutdown ein. Er macht also alle Files die er gerade bearbeitet zu. Wenn das alles erledigt ist schaltet der Pi die Versorgung über Power Backup für sich selbst aus und belastet das System nicht weiter. Schaltet jetzt jemand den Hauptschalter wieder ein oder/und entriegelt den Notaus, bekommt das die Schaltung mit und fährt den Pi automatisch hoch sodass das Gesamtsystem wieder betriebsbereit ist. Natürlich kann man den Pi auch einfach über den Taster im Bedienfeld (Taster On/Off) durch drücken hoch und runter fahren (wie beim PC). Je nach dem wie der Pi ausgeschaltet wird kann er einen Höllenlärm machen mit unterschiedlichen Zeiten versteht sich. Dazu dient der Buzzer. Da der aber freiprogrammierbar ist kann man natürlich auch noch andere Alarme damit ausgeben. Ein eventuell vorhandener Pi-Monitor (7"-Touch) wird mit dem Pi ein und ausgeschaltet ebenso wie ein möglicher USB-HUB und/oder noch ein kleiner LAN-Switch. Ein potentialfreier Kontakt signalisiert einer externen Schaltung ob der Pi läuft oder nicht. Dieser Kontakt kann 6A bei 30V schalten. Zusätzlich sind noch zwei weitere Relais auf dem Board die frei programmierbar sind. Ebenso gibt es zwei Eingänge die mit dieser Auslegung direkt 5V vertragen. Möchte man mehr muss man einen anderen Widerstand einsetzen. Da der Pi ja keine Uhr hat und das nur über NTP geht habe ich Ihm gleich noch eine von unseren RTC-Modulen verpasst. Es gibt auf dem Board drei I2C Anschlüsse einen direkten 3,3V vom Pi (man beachte der Pi hat schon 2x1K8 PullUp on Board), einen internen I2C mit 5V und einen externen mit 5V der geschützt nach außen geführt ist. Um das ganze noch abzurunden ist auch noch ein 3,3V 1Wire Anschluss vorhanden an dem man einen DHT11 oder DHT22 anschließen kann.

Board1.png

So wird das fertige PCB aussehen.


IMG_1030.jpg

Der Labor-Aufbau zum Testen der Schaltung.


IMG_1029.jpg

Der Pi3 mit Pi-Monitor 7"-Touch hängt zum Test dran.


Schaltung.png

Schaltplan


Belegung40p.png

Belegung der 40pol Stiftleiste


Pi-GPIO-header_large.png

Übersicht der GPIO's

Kleiner wichtiger und gewollter Nebeneffekt der Schaltung ist, dass der Pi den Arduino sofern er am USB hängt nicht über diesen versehentlich versorgt, was für den Pi tödlich enden kann.

Hier noch das BASH Script das ich für mich geschrieben habe. Die Python Programme für das Senden der Mails sind hier nicht dabei. Bei Interesse passe ich das alles gerne noch auf den ArduMower allgemein an.

Code:
!/bin/bash

#DIRBOXLOG=/home/pi/boxlog

#this is the GPIO pin connected to the lead on switch labeled ON-OFF-KEY
GPIOpin1=23

#this is the GPIO pin connected to the lead on switch labeled SYSTEM-UP
GPIOpin2=24

#this is the GPIO pin connected to the lead on switch labeled Power Good
GPIOpin3=25

#this is the GPIO pin connected to the lead on switch labeled Buzzer
GPIOpin4=22

echo "$GPIOpin1" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio$GPIOpin1/direction
echo "$GPIOpin2" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$GPIOpin2/direction
echo "1" > /sys/class/gpio/gpio$GPIOpin2/value
echo "$GPIOpin4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$GPIOpin4/direction
echo "0" > /sys/class/gpio/gpio$GPIOpin4/value
echo "$GPIOpin3" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio$GPIOpin3/direction
LOGTIME=$(date)
LOGTXT='--Das System wurde eingeschaltet'
if [ -e $DIRBOXLOG/Boxlog.txt ]; then
  echo $LOGTIME$LOGTXT >> $DIRBOXLOG/Boxlog.txt
else
  echo $LOGTIME$LOGTXT > $DIRBOXLOG/Boxlog.txt
fi
sleep 120
sudo /home/pi/mailmsg/userupmail.py
while [ 1 = 1 ]; do
power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
good=$(cat /sys/class/gpio/gpio$GPIOpin3/value)
if [ $power = 0 ]; then
 if [ $good = 1 ]; then
  echo "1" > /sys/class/gpio/gpio$GPIOpin4/value
  LOGTIME=$(date)
  LOGTXT='--Das System hat einen Versorgunsfehler festgestellt.'
  if [ -e $DIRBOXLOG/Boxlog.txt ]; then
    echo $LOGTIME$LOGTXT >> $DIRBOXLOG/Boxlog.txt
  else
    echo $LOGTIME$LOGTXT > $DIRBOXLOG/Boxlog.txt
  fi
  sudo /home/pi/mailmsg/powerfailmail.py
  sleep 5
  sudo poweroff
 fi
 sleep 1
else
 echo "1" > /sys/class/gpio/gpio$GPIOpin4/value
 LOGTIME=$(date)
 LOGTXT='--Das System wurde von einem Anwender beendet.'
 if [ -e $DIRBOXLOG/Boxlog.txt ]; then
   echo $LOGTIME$LOGTXT >> $DIRBOXLOG/Boxlog.txt
 else
   echo $LOGTIME$LOGTXT > $DIRBOXLOG/Boxlog.txt
 fi
 sudo /home/pi/mailmsg/userdownmail.py
 sleep 1
 sudo poweroff
fi
done



Wer mit einem RPi3 arbeitet ist gut beraten Kühlkörper einzusetzen. Nähere Informationen findet ihr hier.:
https://www.elektormagazine.de/news...234335561&mc_cid=371f1deef4&mc_eid=2a6a7bb9ea
Hier die Bilder vom Labor-Aufbau mit der Prototypen-Platine.

Labor01.jpg

Bild Labor-Aufbau 1

Labor02.jpg

Bild Labor-Aufbau 2

Labor03.jpg

Bild Labor-Aufbau 3

Wird auf Wunsch hier Erweitert.

Euer Jürgen


RaspberryPiPowerSwitch-Plaene.zip
 
Hallo,

mein lieber Mann, das ist ja eine interessante Lösung.
Ich muss gestehen, vieles habe ich nicht verstanden. Das Problem ist mir klar, aber die Lösung hier scheint ja eine ganze Menge mehr zu beinhalten.

Soll die Platine mal das gesamte Interface zu einem RPi darstellen? Das riene Power Management lässt sich ja bestimmt mit deutlich weniger Aufwand realisieren.

Bitte nicht als Kritik verstehen, die Arbeit ist toll. Ich möchte nur gerne verstehen, was da noch alles hinter steckt.
 
Hallo Patrick,

die Platine hat mit dem Power-Management was den Akku oder den Mower angeht nichts zu tun. Ich habe diese Schaltung nur dem einzigen Zweck gewidmet und das ist der Pi selbst. Sie löst aber eine Menge Detailprobleme die hier im Forum wenn überhaupt nur sehr oberflächlich behandelt wurden. Z.B. das Thema der Rückspannung das in solchen Systemen mit mehreren Boards auftreten kann etc. Es ist auch keine ArduMower spezifische Lösung sondern sehr universell einsetzbar. Ich habe diese Schaltung in erster Linie für mich entwickelt, will diese aber gerne mit Euch teilen da eine Menge an Möglichkeiten auch für den ArduMower drin stecken.

Gruß

Jürgen
 
will haben !

Hallo Jürgen das ist genau das was ich für meinen Home fhem Sever suche.

Sind die gpios durchgeschleift ?
 
Hallo Stefan,

ja alles ist durchgeschleift. Man kann den Pi einfach auf eine der 40pol Stiftleisten stecken und einen weiteren Zusatz auf die andere Stiftleiste. Natürlich muss man die für die Schaltung verwendeten GPIO's berücksichtigen. Aber da sind ja noch viele davon über.

Gruß

Jürgen
 
Hi Jürgen,

gibt es den Schaltplan in einer lesbaren Form? Ich würde die Schaltung gerne auf das wesentliche reduzieren. ;)

Viele Grüße
Rajiva
 
Hi Jürgen,


Jürgen Lange schrieb:
die Pläne hängen jetzt als ZIP-Datei dran.

danke! Bin aber gerade etwas ins grübeln gekommen. Machen wir uns da nicht die Funktion des Notausschalters kaputt? Wir haben ja einen Einschalttaster in der Unterspannungsabschaltung, könnte man den nicht auch zum runter fahren verwenden? Ich meine einen PC schaltet man ja auch nicht einfach ab, obwohl mir der Gedanke natürlich sehr gefällt!

Grüße
Rajiva
 
Zuletzt bearbeitet von einem Moderator:
Hi,

eigentlich ist das genaue Gegenteil der Fall die Schaltung schützt den Pi vor einfachem Ausschalten durch Not-Aus und co..

Mit dem Ardumower-Start Taster geht das leider so nicht. Sobald Power Source Stromlos ist erkennt das die Schaltung der Pi wird jetzt über Power-Backup versorgt. Power-Backup wird dann auch vom Akku getrennt wenn der Pi runtergefahren ist.
Hab es oben im Text beschrieben. Am besten zeichnet man sich das auf da es am Anfang etwas verwirrend sein kann. Aber ich kann dir versichern die Schaltung läuft perfekt da ich diese als Prototyp schon mehrere Wochen im Einsatz habe.

Ich hoffe ich habe Deine Frage richtig verstanden.

Gruß

Jürgen
 
Hi Jürgen,


Jürgen Lange schrieb:
Ich hoffe ich habe Deine Frage richtig verstanden.
erst mal bin ich mir bei Dir sicher dass die Schaltung wie beschrieben funktioniert, das hab ich nicht im geringsten angezweifelt!

Mir ging es um was anderes. Ein NOT AUS ist ja eigentlich ein Schalter der den Strom komplett von dem Robi trennen soll, also jeglicher Defekt wird damit vom Akku getrennt. Dies ist hier nicht mehr der Fall, denn ein Defekt im Power-Switch lässt sich so nicht mehr vom Strom trennen, oder steh ich auf der Leitung? :blush:

Was den Ardumower-Start Taster angeht so kann der doch auch im laufenden Betrieb de­tek­tie­rt werden. :unsure:

Grüße
Rajiva
 
Zuletzt bearbeitet von einem Moderator:
Rajiva schrieb:
Hi Jürgen,


Jürgen Lange schrieb:
Ich hoffe ich habe Deine Frage richtig verstanden.
erst mal bin ich mir bei Dir sicher dass die Schaltung wie beschrieben funktioniert, das hab ich nicht im geringsten angezweifelt!

Mir ging es um was anderes. Ein NOT AUS ist ja eigentlich ein Schalter der den Strom komplett von dem Robi trennen soll, also jeglicher Defekt wird damit vom Akku getrennt. Dies ist hier nicht mehr der Fall, denn ein Defekt im Power-Switch lässt sich so nicht mehr vom Strom trennen, oder steh ich auf der Leitung? :blush:

Was den Ardumower-Start Taster angeht so kann der doch auch im laufenden Betrieb de­tek­tie­rt werden. :unsure:

Grüße
Rajiva

Hi wusste ich doch ich habe Dich falsch verstanden....

Ein Not-Aus hat die Funktion in einer Gefährdungssituation einem Bediener/Anwender die Möglichkeit zu geben alle gefährlichen Teile einer Maschine zu deaktivieren Was bei uns die Motoren sind. Für die Absicherung der Elektrotechnik sind die Sicherungen zuständig und nicht der Not-Aus. Da der Pi oder der Arduino für Menschen und Tiere keine unmittelbare Gefahrenquelle ist sehe ich hier keinen Fehler.

Gruß

Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Hallo an alle ArduMower-Fans,

ganz besonders an die, die den RPi3 einsetzen.

Das der RPi3 wärmer wird als seine Vorgänger ist hinreichend bekannt. Aus diesem Grund hatte ich bei uns im Labor mit unseren Anwendungen auch Temperatur-Messungen gemacht. Da ich ein Fan von möglichst kalter Elektronik bin, waren mir die Ergebnisse schon zu hoch und habe bei meinen RPi's-3 von Anfang an Kühlkörper verwendet.

Das Problem scheint aber noch deutlicher zu sein als das was ich gemessen habe.

Es ist also dringend anzuraten beim RPi3 Kühlkörper einzusetzen.

Wenn es genauer interessiert, findet hier weitere Informationen.
https://www.elektormagazine.de/news...234335561&mc_cid=371f1deef4&mc_eid=2a6a7bb9ea
Gruß

Euer

Jürgen
 
Hi ArduMower Entwickler und Fans,

so mal wieder einen Schritt weiter. Nach dem Uwe die ganze Labor-Leiterkarte von mir aus Eagle ordentlich ins KICAD übertragen hat und noch ein paar Änderungen von Ihm vorgenommen wurden (vielmehr SMD), kann ich Euch heute hier die erste Test-Serie dieser Leiterkarte nebst SMD-Schablone vorstellen. Diese wird jetzt nochmal auf Herz und Nieren geprüft, um sicherzustellen, dass bei der Übertragung ins KICAD auch nichts schief gelaufen ist.

Wenn als so ist wie es sein soll, werden wir die Serien- Leiterkarten mit den SMD-Bauteilen bestücken lassen, so das der Nachbau für Euch ein Kinderspiel sein wird.

ArdumowerRPi3Power-Switch.JPG


ArdumowerRPi3Power-SwitchSchablone.JPG


Euer

Jürgen
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2370/ArdumowerRPi3Power-Switch.JPG/
 
Zuletzt bearbeitet von einem Moderator:
Hallo

ich habe mir den Schaltplan mal angesehen und soweit verstanden, wie der RPI erkennt, ob der Mower noch an ist.
Ich habe aber noch eine Frage zum Abschalten. Wenn Power_good auf low fällt, dann fährt der RPI herunter. Aber wie trennt er die Backup Versorgung? Werden die GPIOs nicht sofort zurückgesetzt sobald der shutdown initiiert wird? Oder bleiben diese bis zum Schluss? Wie ist denn sichergestellt, dass der Backup Zweig erst abgeschaltet wird, wenn das System im HALT-Status ist?

Wie ist sichergestellt, dass der RPI den Arduino nicht der USB versorgt? Würde es reichen, im USB Kabel die 5V zu trennen?

Hintergrund der Frage: ich möchte gerne einen Orange PI Zero verwenden. Der passt natürlich nicht so auf die Platine. Also muss eine eigene her. Soll nicht mehr können als ein-/ausschalten über Notaus sowie Taster für ein/aus + reboot

Habe im Netz auch Lösungen gefunden, bei denen in der Spannungsversorgung ein Relais sitzt. Das Relais wird da per Taster geschaltet (könnte der Arduino per Transistor machen), der RPI übernimmt nach dem booten und hält das Relais. In der Spulenversorgung sitzt dann ein großer ELKO. Wenn der RPI herunter fährt, kappt er die Leitung zur Relaisspule. Der ELKO hält die Spannung der Spule aber für zwei/drei Minuten aufrecht, so dass der RPI Zeit hat zum herunterfahren. Das scheint mir eine simple Lösung zu sein. Dachte an die Verwendung eines MOFSETs statt eines Relais? Gibt es da Einwände?

Bin auf dem Gebiet wirklich absoluter Laie
 
Hallo Jürgen,

ich komme nochmal auf deinen Power Switch zurück. Wie im Thread zum PCB 1.3 erwähnt, brauche ich genau so einen Switch. Leider gibt es den noch nicht zu kaufen, also muss ich selbst basteln. Ich kenne mich da aber bei weitem nicht so gut aus wie du.

Mich beschäftrigen zwei Fragen:
1. du schreibst, dass der PI über Power Backup auch versorgt wird, wenn jemand den Main Schalter betätigt. Wie genau hast du das realisiert? Mein Main Schalter sitzt im Kabel zwischen Akku und PCB. Wenn ich den betätige, ist alles Stromlos.

2. Der PI ermittelt über einen GPIO Pin, ob noch Spannung anliegt (power good). Das Power Good signal liegt sofort an, sobald der Mower eingeschaltet wird. Der PI braucht aber ein paar Sekunden, ehe er gebootet hat. Somit sind für ein paar Sekunden die GPIO undefiniert (Input oder Output). Bringt das keine Probleme mit sich? Immerhin liegt ja bereits eine Spannung an dem Pin an, ehe dieser initialisiert ist.

Wäre toll, wenn Du dazu ein paar Tipps hast.

Grüße
Patrick
 
Hallo Jürgen,

ich bekomme meine Schaltung nicht hin. Wenn es einmal an ist, dann bleibt es immer an, auch wenn alle Eingänge auf LOW gehen.
Die einfachste Lösung für mich waren zwei Relais Karten, die den DC/DC Wandler schalten. Da gibt es für den PI aber auch nichts brauchbares (schaltbar mit 3,3V)

Wie schaut es denn jetzt mit deiner Platine aus? Ist es geplant, diese im Shop zu vertreiben? Hier sitzt auf jeden Fall ein Interessent.

Bis dahin werde ich wohl den PI direkt an das PCB anschließen und mit dem Risiko leben, dass die Karte ggf. kaputt geht. Immer noch besser und günstiger als ein tiefentladener Akku.

Gruß Patrick
 
Oben