Arduino automatisc h aus-und auf Knopfdruck wieder einschalten

Hallochen.
Plane grad an ner neuen Spielerei herum....

Es soll ein Arduino (vermutlich nen ProMini oder so, da recherchier ich noch) folgendes tun:

Bei Druck auf nen Knopf soll er an gehen, gewisse Dinge tun, und sich dann, nach, sagen wir ner Minute (kann etwas mehr oder weniger sein) alleine wieder abschalten.
Komplett aus-nix Sleepmodus oder so, Stromverbrauch NULL ist nötig.
Irgendwo gab es dazu ne nette kleine Platine, weiss aber nicht mehr, wie, wo was und- muss doch auch recht simpel selber zu bauen sein oder?
Hat da jemand ne Idee zu?

Rabenauge:
Hat da jemand ne Idee zu?

Selbsthalteschaltung.

Hallo,
das müßte mit einem Taster und und einem Relais möglich sein.
Taster hat zweimal "ein"
Das Relais "1 x um"
Mit dem Taster (Kontakt a 1x ein) versorgst Du den Arduino mit Spannung.
Beim starten des Sketch wird das Relais über eine Pin angezogen.
Das Relais versorgt nun den Arduino mit Spannung.
Mit dem Taster (Kontakt b 1x ein) schaltest Du den Pin des Relais auf Low.
Das Relais fällt ab, der Arduino schaltet sich aus.
Beim starten des Sketch mußt Du den Kontakt b des Schalter über eine
Zeitschleife daran hindern, das er sofort scharf ist.
Könnte funktionieren.
Oder wie jurs schon sagte, Selbsthaltung eines Relais mit zwei Taster.
Gruß und Spaß
Andreas

Das Ding muss sich schon von selber wieder abschalten.
Prinzip: eine Uhr mit stromfressender Ausgabe: nur, wenn ich wissen will, wie spät es ist, drücke ich den Knopf und nach ner Weile (wo der Dino nen paar Dinge erledigt) geht das Ding immer selber wieder aus.
Die Zeitspanne wird flexibel sein, daher muss das Ausschalt-Signal vom Board kommen.

Hintergrund ist der, dass mit nen paar Batterien eine möglichst lange Betriebsdauer erreicht werden muss (etliche Monate, eben so lange wie es nur irgendwie geht, aber möglichst kleine Batterien verwendet werden sollen), und unter anderem ein Display (weiss ich noch nicht, welches, tendiere derzeit zu nem kleinen OLED) als "Stromfresser" dran hängt.
Bedienerfehler ("vergessen, abzuschalten") müssen ausgeschlossen werden, wenn der Benutzer von dem Teil was will, dann drückt er den Knopf und weiter gar nix.
Daher auch kein Relais-zu viel Stromverbrauch (ja, ich weiss, so schlimm isses auch nicht, trotzdem ohne).

Rabenauge:
Daher auch kein Relais-zu viel Stromverbrauch (ja, ich weiss, so schlimm isses auch nicht, trotzdem ohne).

So ein 5V "Reed-Relais" mit 500 Ohm Spulenwiderstand schluckt 10 mA an 5V:
http://www.conrad.de/ce/de/product/504599/SIL-Reed-Relais-MES1A05-5-VDC-1-Schliesser-Max-05-A-Max-200-VDC-Max-10-W

Wenn das zuviel ist und Du nur sehr kleine Ströme zu schalten hast, tut es vielleicht auch ein Optokoppler.

Sleep-Modus verbraucht wirklich so wenig daß den Aufwand den Du betreiben willst nicht lohnt.

Die Selbsthalteschaltung hat einen gravierenden Nachteil. Der Taster muß solange gedrückt sein bis der Arduino das Relais ansteuert, was einige Sekunden dauert. Wird der Taster zu schnell losgelassen schaltet sich der Arduino nicht ein.

Grüße Uwe

uwefed:
Sleep-Modus verbraucht wirklich so wenig daß den Aufwand den Du betreiben willst nicht lohnt.

Vielleicht möchte er ein Standard-Board verwenden und keine eigene Schaltung, so dass er mit Sleepmode gar nicht auf 0mA runterkommt?

uwefed:
Die Selbsthalteschaltung hat einen gravierenden Nachteil. Der Taster muß solange gedrückt sein bis der Arduino das Relais ansteuert, was einige Sekunden dauert. Wird der Taster zu schnell losgelassen schaltet sich der Arduino nicht ein.

Das kann er allerdings durch Plattmachen des Bootloaders umgehen: Einfach den Sketch mit einem ISP-Programmer hochladen, Bootloader ist weg, dann startet der Controller in wenigen Millisekunden sein Programm und kann die Selbsthaltung durchschalten.

Hallo,
Selbsthaltung müßte doch auch mit zwei Transistoren möglich sein?
Oder Bistabiles Relais, Taster schaltet Relais mit Minus um, Arduino mit High zurück.
Gruß und Spaß
Andreas

So gehts: EEVblog #262 – World’s Simplest Soft Latching Power Switch Circuit – EEVblog
Kann man auch kaufen: Pololu Pushbutton Power Switch SV (old version)

Ein gesperrter Mosfet braucht schon etwas weniger als ein ganzer 328p in sleep mode, aber
Uwe hat auch Recht:

Sleep-Modus verbraucht wirklich so wenig daß den Aufwand den Du betreiben willst nicht lohnt.

Hallo,
schönen Dank dafür. Das ist etwas für die Zukunft. Das werde ich mal probieren, kostet nur wenige Cent und ist spannend.
Gruß und Spaß
Andreas

jurs:

uwefed:
Sleep-Modus verbraucht wirklich so wenig daß den Aufwand den Du betreiben willst nicht lohnt.

Vielleicht möchte er ein Standard-Board verwenden und keine eigene Schaltung, so dass er mit Sleepmode gar nicht auf 0mA runterkommt?

Er redet ein Pro mini zu verwenden. Ohne LEDs ist das dann ein Standalone.
Grüße Uwe

Der AVR-Transistortester von Markus Frejek macht genau das - nach Erledigung seiner Aufgabe dreht er sich den Saft ab.
https://www.mikrocontroller.net/articles/AVR-Transistortester

Vielleicht kannst du das als Anregung nehmen.

Glaubt mir- der "Aufwand" (so wild ist es ja nun auch wieder nicht) lohnt sich denn: an dem Dinolein soll natürlich noch bisschen was dran hängen. Von daher will ich einfach, dass das Teil komplett abgeschalten wird. Aus Gründen der Einfachheit möchte ich die anderen Geräte (u.a. ein Display) nämlich am liebsten mit über den Dino versorgen.
Ob es nen ProMini wird, ist noch nicht sicher, möglicherweise wird das Spielzeug auch in verschiedenen Varianten aufgebaut- mal sehen, ich bin da grad am rumsuchen.

Die Lösung von dem Transistortester gefällt mir, so stelle ichs mir vor: nach Erledigung seiner Aufgaben gibt der Dino einfach das Abschalt-Signal und es wird finster, bis mal wieder jemand am Button rumfummelt.
Sieht auch aus, als würd ich die Schaltung hinkriegen.
Mal die Tage bisschen mit dem Steckbrettel rumspielen...

Hallo,

die Masse sollte man nicht schalten. Wenn dann die + Seite. Entweder nimmt man einen fertigen High-Side Switch, so ein Mini IC oder in Transistorbauform mit 5 Pins. Oder man baut das mit einem NPN + PNP nach. Mit Mosfets geht das natürlich auch. Der PNP muß satt bzw. ausreichend durchgesteuert sein. Mit NPN+PNP lasse ich vom Arduino mein BT-Modul ein- und ausschalten, weil das sonst zu viel Strom zieht auf Dauer. Bei Dir. Die Basis vom ersten NPN schaltet man mit einem Taster ein und wenn der µC soweit ist, übernimmt er die Funktion. Wenn das Programm fertig ist, schaltet er den Pin einfach ab und damit nimmt er sich selbst den Saft weg.

Edit:
Schaltplan ergänzt. Zwischen Kollektor am PNP und Masse kommt der Arduino mit 5V / GND. Mit Mosfet's spart man den Strom in die NPN Basis, NPN Kollektorstrom und PNP Basisstrom. Bzw. sind die deutlich geringer.

Aber Achtung Doc_Arduino
Bei den meisten ICs und darum auch Modulen sind Schutzdioden zwischen dem Eingengspin und masse und Versorgungsspannung geschaltet. diese werden leitend wenn die Spannung an Pin ca 0,5V höher als die Versorgungsspaannung wird bzw 0,5V niedriger als das Massepotential. Wenn Du jetzt einem IC oder Modul die Versorgungsspannung kappst dann darf an der Eingängen auch keine Spannung mehr sein da ansonsten über die Schutzdiode der Strom zum Versorgungspin des ICs/Koduls fließt und so das IC/Modul versorgt. Der Strom kann die Schutzdiode zerstören.
Du mußt mittels SW sicherstellen, daß die Eingänge keine Spannung mehr bekommen bevor Du dem Modul den Saft abdrehst (indem Du die Ausgangspins al Eingang definierst). Ein hochohmiger > 10kOhm Widerstand zwischen Ausgang Arduino und Eingang Modul kann den strom auch stark begrenzen und meist die Signalübertragung nicht stören.

Grüße Uwe

Hallo Uwe,

Danke für den Hinweis. Das BT Modul ist am 2. seriellen Port angeschlossen. TX1/RX1. Und die 5V werden per "High-Side-Switch" am BT-Modul zugeführt oder nicht. Serial 1 muß man ja mit initialisieren lassen. Kann ich nicht einfach ändern. Kann man wirklich in die serielle Leitung 10k Widerstände setzen ohne das diese stören?

Bisher ist das so, dass ich das BT-Modul per Taster am Arduino über den Arduino einschalte und mich dann mit dem Smartphone conecte.

Hallo,

hab nochmal nachgedacht. Bei der Initialisierung der Serial 1 in setup kann ich das BT Modul vorher einschalten. Dann weis ich aber nicht richtig weiter. Die Pins der Serial 1 kann ich noch als Eingänge umschalten und dann das BT Modul ausschalten. Aber wie bekomme ich die Pins von Serial 1 danach wieder als serielle Schnittstelle zum laufen?

Wo ist das Problem?

setup() beim Arduino etwas irreführend. Es handelt sich lediglich um Code, der nur beim Beginn einmal ausgeführt wird, denn danach geht es mit while(1)/loop() in eine Dauerschleife.

Es wäre auch kein Problem, die Serielle Schnittstelle in der Loop zu defenieren.

SerialN.begin (BAUD);
SerialN.end();

Hallo,

also könnte ich folgendes machen?

für Nutzung des BT-Moduls:
BT-Modul einschalten und
SerialN.begin (BAUD);

abschalten des BT-Moduls:
SerialN.end();
Pins als Eingänge umschalten
BT-Modul auschalten

Werden mittels SerialN.begin (BAUD); werden die Pins wieder ordnungsgemäß automatisch als Ausgänge gesetzt?

Hab es nur in AVR-GCC getestet. Sollte mit SerialN. aber auch gehen. Für den genauen Aufbau der Serial. müsstest du mal die entsprechende cpp bzw h Datei finden.

Habe auf die schnelle nichts gefunden, wo die IOs konfiguriert werden. Alternativ sollte es möglich sein, STATE auszulesen von HC-0x. Dann musste halt angeben, dass du Serial.end am besten erst machst, wenn STATE nicht mehr gesetzt ist. Sprich keiner mehr verbunden ist. Danach kann auf Rx(Arduino) nichts mehr ankommen. Tx(Arduino) kannst du dann mit Serial.end unterbinden.