RasPiCar Projekt Forum

Normale Version: Raspberry Pi USV
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Ja, fast. Am Anfang nicht ganz richtig. Die 12-Zündung schaltet nicht das Relais durch, sondern versorgt direkt den Spannungswandler (man braucht ja einen, der aus den 12V die 5V macht, die der RPi braucht). Und sobald der RPi an ist, sind auch seine USB-Ausgänge an (da kommen 5 Volt raus). Und diese 5V lassen das Relais geschlossen. Rest stimmt wie du geschrieben hast.
So weit aber die Theorie. Ich will heute diese Schaltung mal in der Praxis aufbauen.

Nachtrag: Habe das nun in der Praxis getestet: spätestens 5 Sekunden nach dem der RPi mit Strom versorgt wird kommen aus seinem USB die 5 Volt raus. Das ist ja ganz OK. Aber beim Ausschalten gibt es ein Problem: der RPi schaltet seine USB-Anschlüsse aus ca. 3 Sekunden vor dem Abschließen des shutdown. Das Problem müsste man zuerst noch lösen.
Bzw. wie kann ich feststellen, dass der shutdown fertig ist?
Nachtrag2: Habe mal geschaut wie die von mausberry das machen. Die arbeiten mit GPIO-24. Diesen Pin schalten die auf 3,3V und die Schaltung stellt dann wohl fest wann da wieder 0V anliegt. Aber auf 0V wird dieser Pin geschaltet noch bevor der shutdown abgeschlossen ist: gerade getestet - die grüne LED blinkt noch, aber aus den 3,3V werden schon während dessen 0V.
Nachtrag3: Also entweder baut man doch einen fetten Elko oder man baut fürs Relais eine Ausschaltverzögerung.
Nachtrag4: Habe noch etwas nachgedacht. Relais mag ich aufgrund beweglicher Teile nicht. MOSFET ist da schon besser.
Also nehme ich doch 1F Kondensator - er dient als Puffer, falls die Bordspannung nicht sauber ist und gleichzeitig ist es die Ausschaltverzögerung von einigen Sekunden (am Ende beim shutdown). Alles handelsübliche Teile, die man so in seiner Bastelkiste hat. Als Shutdown-Script kann man einfach das von Mausberry klauen. Geht aber bestimmt besser und kürzer.
Nachtrag5: Professionell wäre eigentlich den Baustein NE 555 als Ausschaltverzögerung einzusetzen.
Code:
echo '#!/bin/bash

#Verzögerung in Minuten
delay=0

echo "23" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio23/direction
let minute=$delay*60
SD=0
SS=0
SS2=0
while [ 1 = 1 ]; do
power=$(cat /sys/class/gpio/gpio23/value)
uptime=$(</proc/uptime)
uptime=${uptime%%.*}
current=$uptime
if [ $power = 1 ] && [ $SD = 0 ]
then
SD=1
SS=${uptime%%.*}
fi

if [ $power = 1 ] && [ $SD = 1 ]
then
SS2=${uptime%%.*}
fi

if [ "$((uptime - SS))" -gt "$minute" ] && [ $SD = 1 ] && [ $power = 1 ]
then
poweroff
SD=3
fi

if [ "$((uptime - SS2))" -gt '20' ] && [ $SD = 1 ]
then
SD=0
fi

sleep 1
done' > /etc/switch.sh
sudo chmod 777 /etc/switch.sh
sudo sed -i '$ i /etc/switch.sh &' /etc/rc.local
# Diesen Text als setup.sh speichern und dann mit sudo bash setup.sh ausführen
[attachment=17]

OP3LDOC

Hy hab nen skript als shutdown der den pi bei zv zu herunterfährt, brauche nur noch ne lösund die mein netzteil abschalten.
Jemand ne idee
könnte man nicht einfach einen kleinen Kondensator parallel zum Relais schalten? Um das noch ne Weile offen zu halten brauchts doch bei weitem nicht so viel, wie um den raspberry ne weile mit strom zu versorgen...und diese stepdown-module fangen spannungsunregelmäßigkeiten doch auch ganz gut ab, sodass der große 1F-Kondensator vielleicht doch garnicht nötig ist, oder? Smile
Ja, das wäre die Alternative. Relais mit Elko.
@ OP3LDOC: Wie wäre es mit einem Mosfet?
Ach ja - kannst gerne dein shutdown-script hier posten.

OP3LDOC

Hy Klat poste ich das

Code:
#!/usr/bin/python
#
# v0.2
#
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time, signal
from subprocess import call
#------------------------------------------------------------------------
# use the raspi board pin number
GPIO.setmode(GPIO.BOARD)
# use the gpio number
#GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)


shutdownPin = 18 # with GPIO.BOARD, pin#18 is gpio24

GPIO.setup(shutdownPin, GPIO.IN)


def Interrupt_event(pin):
    if GPIO.input(shutdownPin) == GPIO.LOW:
        #run command
        call('poweroff', shell=False)

try:
    GPIO.add_event_detect(shutdownPin, GPIO.RISING, callback=Interrupt_event, bouncetime=150)
    #keep script running
    signal.pause()
except (KeyboardInterrupt, SystemExit):
    GPIO.cleanup()

hab dann einfach ein Relais als schalter angeklemmt das per zv gesteuert wird
Einschalten ist der zeit PIN 5&6 brücken auch per relais
Man könnte den Nachlauf, bis der Pi heruntergefahren ist auch mit einem PIC-Prozessor steuern! dieser würde dann auch das Power-Relais für die 5V abschalten, das einschalten wäre dann auch über den PIC möglich. Habe so etwas ähnliches (aufwendiger) für mein RasPiCar aufgebaut:

[attachment=19]

[attachment=20]

[attachment=21]

[attachment=22]

Der Pi wird über ein Script heruntergefahren (benötige dazu 2 Pins des GPIO), dazu habe ich einen PIC-Prozessor programmiert, der das Powermanagement übernimmt. Über einen Taster der mit einer RGB-LED versehen ist wird der Pi gestartet, eben so kann er auch über die Zentralverriegelung (bein öffnen des Autos) gestartet werden. Die RGB-LED zeigt den jeweiligen zustand an (starten, herunterfahren, nachlaufzeit, Display ausgeschaltet usw...). Mit dem Taster kann der Pi auch heruntergefahren werden, Tastendruck >1 sek. = herunterfahren. Notaus, wenn der Pi mal hängt >5 sek. Kurzer druck = Display aus. Ebenso wird er heruntergefahren wenn das Auto über die Zentralverrigelung abgeschlossen wird, dann aber mit einer Verzögerung von einigen Minuten, die Endstufe und das Display werden aber beim abschliessen schon abgeschaltet, um Strom zu sparen.
Diese ganze Steuerung schaltet sich selbstständig ab, wenn der Pi heruntergefahren ist und zieht keinen Strom mehr aus der Autobatterie!

Das Display (Pollin) hat auch keine Taster mehr diese habe ich durch einen PIC-Prozessor mit einem Drehencoder, ersetzt.
Er hat 2 Eingänge, mit dem ersten Eingang wird das Display gedimmt (über das Onscreen-Menue), die Schritte sind kurz im Display zu sehen, dieser Eingang hängt am Lichtschalter des Autos.
Der zweite Eingang schaltet den Video-Eingang um auf die Rückfahrkamera, dieser Eingang hängt am Rückwärtsgang.

Ein Script zum herunterfahren gibt es natürlich auch, dieses schaltet Pin 24 auf High, wenn der Pi gestartet ist!

Code:
from time import sleep
from os import system
from sys import exit

import RPi.GPIO as GPIO  
GPIO.setmode(GPIO.BCM)  

# setup GPIO 7 (P1 header pin 26) as output
GPIO.setup (7, GPIO.OUT)
GPIO.output (7, True)

sleep(5)

# setup GPIO 8 (P1 header pin 24) as input
GPIO.setup(8, GPIO.IN)  

# state of some application, starts with "0"
state = 0

# main loop
while True:
           
   # waiting for interrupt from button press
   GPIO.wait_for_edge(8, GPIO.FALLING)  

   # waiting for button release
   sec = 0
   while (GPIO.input(8) == GPIO.LOW):
     
       # delay for debouncing
       sleep(0.2)
       sec += 0.2

       # pressed longer than 1 seconds? Shutdown!
       if (sec > 1):
           system("/sbin/shutdown -h now")
           GPIO.cleanup()
           exit(0)
Gruß Tauri
Was passiert im folgendem Fall:

Der RPI ist an, alles ist mit Strom versorgt Relais is geschaltet. Wenn ich die Zündung aus mache fährt der RPI runter. Wenn ich jetzt aber wärend des Runterfahrens die Zündung an mache, fährt der Raspberry immer noch runter und startet nicht neu!

Ich halte diesen fall nicht für unrealistisch, kann ja immer mal sein das man Zündung aus und befor er völlig runtergfahren ist wieder an macht.
Dann stellste in deinem Script ein, dass der erst nach ein paar Minuten anfängt, runterzufahren. Wenn Du 5min an der Tanke brauchst, lässte eben erstmal nen 10min-Timer durchlaufen. Dann kann Dir das nicht passieren.
Es is doch egal wie groß ich den timer einstelle.
Wenn die Zündung aus ist und er fährt herunter, dann merkt er nicht das bei erneuter zündung, ein neustart erfolgen muss.
Das Fenster für das herunterfahren is zwar ziemlich klein, aber es ist da.
Das ist richtig. Aber dass man in diesen paar Sekunden des Runterfahrens die Zündung ausschaltet und wieder einschaltet - die Wahrscheinlichkeit ist so gering, dass es sich nicht lohnt dieses "Problem" zu lösen.
Auch die professionelle Lösung löst dieses Problem nicht.
Sonst könnte man auch einen µcontroller einsetzen, der dann beispielsweise prüft, ob Zündung an ist und gleichzeitig nur wenig Milliampere verbraucht werden (Indiz dafür, dass das RPi im shutdown ist), und dann soll kurz Reset gemacht werden.
Wie gesagt: zu aufwendig, lohnt sich nicht. Ich habe ja schließlich einen Bildschirm für das RPi - also mache ich notfalls kurz die Zündung aus und an und schon wird der raspicar ja nun doch gestartet.
Seiten: 1 2 3 4 5