Ich brauche Hilfe bzw. Verifizierung meines Schaltplans. Unsicher bin ich bei folgendem:
Sind die Dioden nötig um den RPi zu schützen?
Haben die Dioden die korrekte Modellbezeichnung?
Haben die Wiederstände R3-R8 den korrekten Wert?
Grundsätzlich funktioniert die Schaltung problemlos. Ich bin nur kein Elektronik Profi, deshalb dieser Beitrag.
Ich nutze diese Schaltung bei meinem RPi 5, mit DigitalDevices DVB-C PCIe Karte, der als Tvheadend Server dient. Man kann diese Schaltung aber auch ohne IR Empfänger nutzen, welches ich auch vorhabe und beim Chinesen ein paar Platinen machen lassen will.
Grundsätzliche Funktionen der Schaltung:
RPi ist aus (+3.3V Rail am RPi ist LOW, GPIO Ausgang ist LOW): Nach dem drücken des Tasters oder IR Fernbedienung fährt der RPi hoch (+3.3V Rail am RPi ist HIGH). Die Led blendet(fadet) hoch und runter bis ein Python Skript den GPIO Ausgang HIGH stellt. Dieses kann durch ein Systemd Service ausgeführt werden welcher wiederum auf einen beliebigen Service wartet.
RPi ist ein (+3.3V Rail am RPi ist HIGH, GPIO Ausgang ist HIGH): Nach dem drücken des Tasters oder IR Fernbedienung fährt der RPi runter. Ein Python Skript stellt den GPIO Ausgang LOW. Dieses kann durch ein Systemd Service ausgeführt werden welcher wiederum auf einen beliebigen Service wartet. Die Led blendet(fadet) hoch und runter bis das +3.3V Rail am RPi LOW ist.
Das ganze geht auch mit Konsolen Befehlen wie reboot, halt oder poweroff
rpi-state-set-gpio-high.service:
1
[Unit]
2
Description=Listens for target and sets GPIO pin HIGH
Die Schaltung ist Murx. Der Spannungsregler hat (je nach Datenblatt) eine Drop-Spannung von 1,7V oder 2 V und dann machst du davor noch eine normale Si-Diode zum Verpolungsschutz. Bei der geringen Spannungsdifferenz muß da ein Low-drop Regler hin. Und dann muß man schauen ob es noch für eine Schutzdiode reicht - das muß dann aber auf jeden Fall eine Schottky-Diode sein.
Ich brauche Hilfe bzw. Verifizierung meines Schaltplans. Unsicher bin
ich bei folgendem:
Sind die Dioden nötig um den RPi zu schützen?
Nö, läuft ja alles mit 3,3V und Widerstände sind auch dazwischen.
Haben die Dioden die korrekte Modellbezeichnung?
Im Prinzip ja, braucht aber keiner.
Haben die Wiederstände R3-R8 den korrekten Wert?
Im Prinzip ja, braucht aber keiner.
Das kann man alles deutlich vereinfachen.
Dein Attiny kann die IOs als Open Drain betreiben, da braucht es keinen Transistor. 3,3V Signale kann man dort direkt anlegen. OK, ein externen Pull-Down widerstand muss sein, damit dort sauber 0V anliegen, wenn der Himbeerkuchen aus ist. R1 ist eher falsch, denn damit kann man das IO-Pin mit internen Pull-Up Widerstand nicht sauber auf LOW ziehen. Für die 3,3V für den ATtiny reicht eine 3,3V Z-Diode mit Vorwiderstand. Ein echter Spannungsregler ist hier Luxus, außerdem muss der eine Low Drop Typ sein und mit weniger als 1,7V Differenzspannung klar kommen. Die ganzen Dioden sind Unfug.
Lad mal deine KiCAD-Datei hoch, dann kann man den Schaltplan korrigieren.
Neu wollte ich den L78L33 benutzen, weil ich nur 10-20mA benötige. Die
Drop-Spannung hatte ich nicht auf dem Schirm.
Bei dem geringen Strom gibt es jede Menge Auswahl, z.B. MCP1702, MCP1703, HT7833, HT7333. Die werden allesamt deutlich unter 200mV verlieren und haben nur wenige µA Querstrom.
Dein Attiny kann die IOs als Open Drain betreiben, da braucht es keinen
Transistor. 3,3V Signale kann man dort direkt anlegen. OK, ein externen
Pull-Down widerstand muss sein, damit dort sauber 0V anliegen, wenn der
Himbeerkuchen aus ist.
Verstehe ich nicht so richtig weil der RPi Power Pin hat ein Pull-Up Widerstand und wird mit GND geschalten. Deshalb der Transistor: ATtiny HIGH / Power Pin LOW. Ich Versuche es morgen mal ohne Transistor. Ich lerne mit physischen Versuchen besser.
R1 ist eher falsch, denn damit kann man das IO-Pin mit internen Pull-Up >Widerstand nicht sauber auf LOW ziehen.
Der Pin an dem der Taster hängt wird auch für Reset und Programmieren genutzt. Wird intern mit ~81K hochgezogen. R1 mit 36K ist deshalb damit der Taster kein Reset auslöst. Mein Code dazu:
Für die 3,3V für den ATtiny reicht eine 3,3V Z-Diode mit Vorwiderstand.
Habe ich bisher noch nie in Betracht gezogen und würde gerne mehr darüber wissen. Spannend wäre wie der Vorwiderstand berechnet würde. Kannst du mir bitte Links zu dem Thema geben?
Dein Attiny kann die IOs als Open Drain betreiben, da braucht es keinen
Transistor. 3,3V Signale kann man dort direkt anlegen. OK, ein externen
Pull-Down widerstand muss sein, damit dort sauber 0V anliegen, wenn der
Himbeerkuchen aus ist.
Verstehe ich nicht so richtig weil der RPi Power Pin hat ein Pull-Up
Widerstand und wird mit GND geschalten.
Genau das kann der ATTiny auch. Braucht man am Ende aber nicht. Man kann das Signal ganz normal mit einem Ausgang treiben. Der Pull-Up im Raspberry Pi ist nur dafür da, damit man einen einfachen Taster gegen GND nutzen kann.
Der Pin an dem der Taster hängt wird auch für Reset und Programmieren
genutzt. Wird intern mit ~81K hochgezogen.
Die sind aber stark toleranzbehaftet.
R1 mit 36K ist deshalb damit
der Taster kein Reset auslöst. Mein Code dazu:const uint16_t
buttonReading = analogRead(BUTTON_PIN);
const bool buttonState = (buttonReading > 250 && buttonReading < 750) ?
LOW : HIGH;
Naja, du liest den Pin analog aus. Kann man machen, aber ich würde mich nicht auf die internen 81k verlassen, die sind SEHR ungenau!
Für die 3,3V für den ATtiny reicht eine 3,3V Z-Diode mit Vorwiderstand.
Habe ich bisher noch nie in Betracht gezogen und würde gerne mehr
darüber wissen. Spannend wäre wie der Vorwiderstand berechnet würde.
Kannst du mir bitte Links zu dem Thema geben?
Für die 3,3V für den ATtiny reicht eine 3,3V Z-Diode mit Vorwiderstand.
Spannend wäre wie der Vorwiderstand berechnet würde.
Im Idealfall so, dass an ihm 5V-3,3V abfallen. Denn dann ist bei 3,3V kein Strom mehr übrig für die Zenerdiode. Dazu musst du wissen, welche Strom in den Tiny fließt. Weil du es nicht sicher weißt, musst du also den höchsten in den Tiny fließenden Strom ermitteln. In diesem Zusammenhang solltst du dir dann auch die Kennlinie einer 3,3V-Zenerdiode in diesem Bereich anschauen. Die hat nämlich ihre 3,3V erst bei einem bestimmten Strom. Und sie leitet schon deutlich vorher.
Also nimmst du den Strom in den Tiny + den Strom, den die Zenerdiode für 3,3V braucht und rechnest: RV = (höchstens) 1,7V/(Itiny+Izd). Und dann solltest du anschauen, ob die Belastbarkeit des Vorwiderstands ausreicht. In deinem Fall sind das sicher nur wenige mW, es reicht ein 0603-Vorwiderstand aus.
Insgesamt wirst du schnell herausfinden, dass es gar nicht so einfach ist, einne Shuntregler mit einer 3V3-Zenerdiode.
Ich habe übrigens ganz bewusst "Zenerdiode" geschrieben. Denn Z-Dioden in diesem Spannungsbereich wirken vorrangig durch den Zenereffekt. Erst ab ca. 6V kommt der Avalanceeffekt vorrangig mit rein. Der bringt dann dann auch eine steilere Kennlinie (oder einen geringeren dynamischen Widerstand) mit sich.
Kannst du mir bitte Links zu dem Thema geben?
Stichwort: Paralellregler oder Shuntregler.
Ich finde übrigens die Diode D4 auch spannend. Wie sieht dort die Beschaltung am RPi aus? Denn wenn der IR-Empfänger 0V ausgibt, hast du dort am Pin 5 des J2 ohne zusätzlichen Pulldown einen undefinierten Pegel.
Früher und heute gibt es KLUGSCHEISSER bei denen dabei einer ab geht und
ABSOLUT NICHTS BESSERES ZUM THEMA BEITRAGEN!
Ein Tipp aus der Praxis: wenn dich jemand auf einen Fehler hinweist,
dann solltest du (wenigstens) dir selber eingestehen, dass das ein
Fehler war.
Und noch einer: arbeite an deiner Kritiktoleranz.
Wenn zur Kritik auch ein Vorschlag zur Verbesserung kommt habe ich keine Probleme damit. Tippfehler passieren jedem ständig und dies ist hier kein Grammatik Forum. Mir persönlich sind Schreibfehler eigentlich egal und kann gut mit leben. Aber wenn wir schon dabei sind...
Und dann
solltest du anschauen, ob die Belastbarkeit des Vorwiderstands
ausreicht. In deinem Fall sind das sicher nur wenige mW, es reicht ein
0603-Vorwiderstand aus.
Habe 0805 Bauteile, für alles kleinere habe ich keinen Nerf.
Led an 6.9mA
Led aus 6.1mA
BZX55C3V3 Izt 5mA
1.7V / 0.0119A = 142.86 Ohm meistens sind die 5V vom RPi aber 5.1V
1.8V / 0.0119A = 151.26 Ohm da ich 150 Ohm Widerstände habe passt das.
Was mich noch beschäftigt ist:
Würde nach der Diode D2 noch ein 1K Widerstand helfen um den RPi von möglichen 5V (3.3V Eingang) zu schützen falls die Zenerdiode einen Kurzschluss hat?
Ich finde übrigens die Diode D4 auch spannend. Wie sieht dort die
Beschaltung am RPi aus? Denn wenn der IR-Empfänger 0V ausgibt, hast du
dort am Pin 5 des J2 ohne zusätzlichen Pulldown einen undefinierten
Pegel.
BZX55C3V3 Izt 5mA
1.8V / 0.0119A = 151.26 Ohm da ich 150 Ohm Widerstände habe passt das.
Na ja, wenn es denn sein soll und nicht darauf ankommt, wie weit die 3V3 abweichen und Du Z-Dioden vorrätig hast. Andere Leute würden da einen LDO verwenden.
Würde nach der Diode D2 noch ein 1K Widerstand helfen um den RPi von
möglichen 5V (3.3V Eingang) zu schützen falls die Zenerdiode einen
Kurzschluss hat?
Angsthase.
Viel interessanter ist, ob PA1-ATtiny, Out des TSOP4838 und Anschluß_5 vom RPi nicht gegeneinander arbeiten können.
Huh, schlechte Idee bei der Schaltungsentwicklung. Worauf basiert diese Vermutung?
Was mich noch beschäftigt ist:
Würde nach der Diode D2
Meinst du die D4?
noch ein 1K Widerstand helfen um den RPi von
möglichen 5V (3.3V Eingang) zu schützen falls die Zenerdiode einen
Kurzschluss hat?
Wenn die Zenerdiode einen Kurzschluss hat, dann kommen am Tiny 0V an und damit auch am RPi --> unkritisch.
Kritisch wäre also eher eine Unterbrechung der Zenerdiode. Aber
wie sollte die Zenerdiode unterbrechen? Wenn Halbleiter kaupttgehen, dann üblicherweise durch eine Siliziumschmelze, und die macht aus dem Halbleiter einen Volleiter.
selbst wenn sie unterbrechen würde, fielen am Vorwiderstand immer noch 150R*6mA = 900mV ab und dann kämen noch 0,6V an der Diode D4, von den 5V1 blieben also schlimmstenfalls 5V1-1V5 = 3,6V übrig. Und das wäre noch immer im grünen Bereich für den 3V3 Eingang des RPi.
Naja, du liest den Pin analog aus. Kann man machen, aber ich würde mich
nicht auf die internen 81k verlassen, die sind SEHR ungenau!
Am Ende ist es ein Spannungsbereich von 0.8V bis 2.4V in dem der Taster sich bewegen muss. Mit dem 36K Ohm Widerstand lieg ich bei 1.6V. Auch möglich das der interne Widerstand 33K Ohm hat (Den Wert 36K Ohm habe ich vor langer Zeit mal bestimmt). Ich habe den Reset Pin bei ATtiny's schon oft so problemlos benutzt (Gerade bei den alten 25/45/85er). Hoch Volt Programmierer will ich vermeiden.
BZX55C3V3 Izt 5mA
1.8V / 0.0119A = 151.26 Ohm da ich 150 Ohm Widerstände habe passt das.
Na ja, wenn es denn sein soll und nicht darauf ankommt, wie weit die 3V3
abweichen und Du Z-Dioden vorrätig hast. Andere Leute würden da einen
LDO verwenden.
Habe beides nicht vorrätig und teste die Dioden Variante wenn ich sie habe.
Viel interessanter ist, ob PA1-ATtiny, Out des TSOP4838 und Anschluß_5 vom RPi nicht gegeneinander arbeiten können.
Was ich durch testen bestätigen kann ist: Der ATtiny arbeitet nicht gegen den RPi. Die spucken gleichzeitig die gleichen Adressen und Befehle von der IR Fernbedienung aus.
Huh, schlechte Idee bei der Schaltungsentwicklung. Worauf basiert diese
Vermutung?
Leider ist vom RPi 5 kein Schaltplan verfügbar aber die GPIOs kann man auch zB. mit Python je nach Bedarf hoch oder runterziehen. Ich mach mir daher keine Sorgen.
Ich würde statt der vielen Einzelbauteile einfach einen Levelshifter wie den TXU0104 einsetzen. (Außer für den Power button) Die Power Domain vom Ausgang des TXU einfach an die 3.3V des RPI5
Den ATtiny und TSOP4838 dann direkt an den 5V betreiben.
Oder die ATtiny IOs Richtung RPI als Open-Collector schalten und eventuell noch 1k Widerstände" Richtung RPi. (wie oben vorgeschlagen) Die Anbindung des TSOP4838 an den RPI finde ich Grenzwertig, Pull-Up über Diode an den GPIO Dort muss dann wohl ein Pull-Down sein...
Man muss sich trotzdem nicht auf Vermutungen verlassen, sondern kann das am RPi problemlos ausmessen: den Pin in den gewünschten Modus "Eingang mit Pullup" scripten und dann mit einem Multimeter und einem 47k-Widerstand (a) nach Masse und (b) nach Vcc testen, wie der Pin reagiert. Wenn sich dabei
an der gemessenen Spannung gar nichts ändert, dann ist der Pin ein Ausgang
die gemessene Spannung bei (a) 0V und bei (b) 3V3 ist, dann ist der Pin ein Eingang ohne Pullup
die Spannung bei (b) dann 3V3 und mit (a) irgendwas "mittendrin" ist, dann ist ein interner Pullup eingeschaltet
aber die GPIOs kann man auch zB. mit Python je nach Bedarf hoch oder
runterziehen.
Es geht nicht darum, dass man die Portpins als Ausgang high oder low schalten kann, sondern ob man an einem Eingangs-Portpin einen Pullup zuschalten kann.
Es geht nicht darum, dass man die Portpins als Ausgang high oder low
schalten kann, sondern ob man an einem Eingangs-Portpin einen Pullup
zuschalten kann.
Mit hoch runterziehen meinte ich Pullup/down aber ja hast recht...
Nö, denn der liefert keine Spannung, wenn der Raspberry PI aus ist!
Den ATtiny und TSOP4838 dann direkt an den 5V betreiben.
Nö.
Doch, genau weil der 3V Pin keine Spannung liefert wenn der RPI aus ist betreibt man einfach alles an den 5V und nimmt den Shifter um die Powerdomains zu separieren. (Oder lässt den gleich ganz weg) Da brauchts keinen Spannungsregler, Widerstände Dioden und sonst noch fürn Zeug.
Finde ich ein interessanter Ansatz das ohne Level-Shifter mit 5V zu betreiben. Man könnte dann nur den TSOP mit der 3.3V Z-Diode betreiben oder für den RPi einen separaten TSOP nutzen. Ich teste das mal am Wochenende.
Funktioniert so nicht. R6 entkoppelt den Raspberry-PI Eingang nicht ausreichend, wenn der aus ist. Wenn man es richtig macht, dann nimmt man eine Diode und einen Widerstand. Außerdem sind R1, R3 und R5 immer noch hyperliquide. Siehe Anhang. Siehe auch
Weil es so richtig ist ;-)
Der IR-Empfänger hat einen Open Collector Ausgang, wobei dort schon intern ein Pull-Up Widerstand drin ist. Wenn der Raspberry PI aus ist, ist sein IO-Pin nahezu ein Kurzschluß gegen GND (über die Schutzdioden der IOs). D2 verhindert das. R7 macht dann wieder einen normalen Open Collector Ausgang draus.
Da ich ein 1.3" Oled Display und eine Dualcolor-Led(bisher) als Tvheadend Status benutze, habe ich den Schaltplan noch ein wenig erweitert/geändert um alles auf ein Board zu packen.
Anstelle der Dualcolor-Led und der Led am Taster benutze ich eine WS2812B-Led (Platine) welche ich noch vorrätig habe.
Da das ganze wegen Pin-Mangel mit einem ATtiny412 nicht mehr geht nehme ich neu einen ATtiny1614.
Kommuniziert wird dann über I2C mit Ready(RPi), Timer vorhanden(Tvheadend) und Recording(Tvheadend) byte. Je nach Status eine andere Led Farbe.
Ein Konfigurationsmode um die Farben zu bestimmen wird es auch geben. Das Display wird vom RPi angesteuert.
Weil das Display nicht immer Spannung hat, habe ich dem I2C-Bus am ATtiny noch Pull-Up Widerstände spendiert.
Wenn die Zener-Dioden da sind, werde ich die Schaltung noch testen. Was haltet Ihr von diesem Schaltplan?
Der ATtiny muss nur minimal komumnizieren mit dem RPi - Das könnte auch über 1-Wire UART gehen (TX->RX) und dann reichen auch wieder die Pins vom ATtiny412. Vielleicht mach ich noch einen Schaltplan :). Was würdet Ihr bevorzugen?
Mit UART als Befehlsempfänger und ohne Spannungsabschaltung der WS2812B. Ich meinte mal eine Library für 1 Wire RX Serial im Netz gefunden zu haben. Falls ich diese widerfinde, werde ich dies mal bevorzugt behandeln und den code dazu schreiben.
Man könnte das 3.3V Rail vom RPi für die Spannungsabschaltung der WS2812B nutzen aber dann wird der "Fade-Prozess" zufällig beendet.