Go Down

Topic: Zeit im Hintergrund Zählen + Arduino ausschalten (Read 7794 times) previous topic - next topic

neop13

Hallo
ich habe eine Schleife, wo ein paar eingänge abgefragt werden und dann Ausgänge geschaltet werden. Zusätzlich versorge ich eine weitere Platine mit Strom.

nun möchte ich gerne das komplette Arduino abschalten, wenn z.b. 3Minuten nichts gedrückt wurde.
Einfach um strom zu sparen und auch als quasi Autoabschaltung.

Jetzt dollte es nur auch wieder an gehen, wenn ich einen Button drücke.

Wie kann ic hdas realisieren?

P.S.: Meine 2 probleme.
- Wie zähle ich die zeit, ohne das der Controller in einer Schleife hängen bleit?
- wie setze ich die Autoabschaltung um?

Danke

SkobyMobil

Hallo,
die Spannungsversorgung des Arduino versorgst Du über ein Relais.
Mit einem externen (Arduino Taster geht ja nicht, weil aus) Taster bringst
Du diese Relais in Selbsthaltung. Der Arduino wird mit Spannung versorgt.
Diese Selbsthaltung kannst Du dann über einen Arduino Pin aufheben. Der Arduino
ist ausgeschaltet.

"Zählen" kannst Du schön mit millis(). Schaue einmal in die "Reference"
da gibt es hübsche Beispiele.

"ic hdas" was ist das?

Gruß und Spaß
ANDREAS
die zweite Maus bekommt den Speck...

uwefed

andere Möglichkeit:
den ATmega328 in Sleep schicken und alle 1/10 Sekunde bis 1 Sekunde kurz aufwachen lassen und Pins kontrollieren.
Dazu brauchst Du einen Stand-alone ATmega328 oder einen Mini oder PRo Mini ohne viel Beschatung. Nur diese Modelle sparen wirklich viel Strom im Sleepmodus. Ein Arduino UNO braucht wegen der Zusätzlichen ICs immernoch einige 10mA auch wenn der ATmega328 fast nicht verbraucht weil er sleep't
Grüße Uwe


neop13


"ic hdas" was ist das?

ich das = Tippfehler

Also mir gefällt die variante von Andreas am besten.
nd das könnte ich ja auch gleich mieinem(oder allen) der Pins realisieren, die ich ja ohnehin schon an den tastern habe.

ich will mir halt auch Sparen einen an/Aus schalter ein zu bauen.

P.S. das müsste ich dann aber mit 2 relais realisieren richtig?

uwefed

Meine Version kann das ohne zusätzliche Hardware und auf allen Pins.

Quote
nd das könnte ich ja auch gleich mieinem(oder allen) der Pins realisieren, die ich ja ohnehin schon an den tastern habe.

Nein, Du brauchst extra Eintaster um die Relais einzuschalten.

Quote
Diese Selbsthaltung kannst Du dann über einen Arduino Pin aufheben. Der Arduino
ist ausgeschaltet.

@SkobyMobil erklährst Du bitte wie Du das mit einem Arduinopin machst. ich komme nicht dahinter.

Grüße Uwe

SkobyMobil

Hallo,
also wenn Du den Arduino ausschaltest, dann rührt der sich nicht mehr.
Für die Selbsthaltung brauchst zum einschalten zwingend einen externen
Ein/Ausschalter. In was für einer Form auch immer.
Hier steht, wie´s geht:

https://de.wikipedia.org/wiki/Selbsthaltefunktion

Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

uwefed


Hallo,
also wenn Du den Arduino ausschaltest, dann rührt der sich nicht mehr.
Für die Selbsthaltung brauchst zum einschalten zwingend einen externen
Ein/Ausschalter. In was für einer Form auch immer.
Hier steht, wie´s geht:

https://de.wikipedia.org/wiki/Selbsthaltefunktion

Gruß und Spaß
Andreas

Soweit hatte ich das schon verstanden. Wie schaltest Du aber das selbsthaltende Relais mit einem Arduino-Pin aus?
Grüße Uwe

nix_mehr_frei

#7
Apr 25, 2014, 09:25 am Last Edit: Apr 25, 2014, 09:30 am by nix_mehr_frei Reason: 1
Ein Relais frißt doch viel zu viel Strom selber. Das geht doch auch mit einem Transistor.
Der Transistor liegt in der +Ub Zuleitung, hinter dem Kollektor kommen dann die 5V für den Arduino raus.
- nicht angesteuert, Arduino stromlos
- Starttaster überbrückt E-C Transistor, Arduino bekommt Strom
- Taster wird losgelassen, Steuerstrom kommt jetzt über einen Ausgangspin
- Programm schaltet den Ausgangspin ab - Gerät ist aus  ;)
Ich habe das mal aufgezeichnet mit einem pnp Transistor. Der Transistor muß für sämtlichen Strom auf der 5V Leitung ausgelegt sein. Dessen Basisstrom ergibt sich aus der Stromverstärkung. Bei kleinen Leistungen (unter 100 mA) ist das unkritisch und die kleinen BC 5xx oder BC 3xx haben Stromverstärkungen über 100. Für was "Dickeres" über 500 mA wirds dann schwieriger, weil kräftigere Transistoren wesentlich kleinere Stromverstärkungen haben. Da braucht man dann einen weiteren Transistor, um den Transistor anzusteuern.
Damit der Transistor durchsteuert und der Arduino seine 5V bekommt, ist Low am Ausgang erforderlich! Ich habe zur Veranschaulichung des Stromflusses mal das "Innenleben" eines Ausganges mit seiner Gegentaktstufe dargestellt. Bei L ist der untere Transistor am Ausgang leitend, von Masse fließt ein Basisstrom durch die Basis zum Emitter raus.
Sollte der Transistor aus irgendwelchen Gründen nicht sicher sperren beim Abschalten, dann muß noch der gestrichelte Widerstand rein. Dieser sollte überschlagsweise dann 3-5x so groß, wie der Basisvorwiderstand sein. Bei unter 100 mA Strombedarf für den Arduino würde ich den Basiswiderstand für 10 mA und 470 Ohm auslegen, damit der Transistor auch sicher im Schalterbetrieb gefahren wird.
rot ist blau und Plus ist Minus

SkobyMobil

Hallo,
so hatte ich das angedacht. Erst Spannung über den Taster, dann über den
Arduino. Muss nur ne´ kleine Schutzdiode gegen Rückspannung an den Pin.
Nicht, das da einer Spannung reinjagt wenn er aus ist.
Die Sache mit dem Transistor ist aber eleganter.
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

guntherb

So wird das nicht funktionieren.
Wenn der Arduino spannungslos ist, und eine positive Spannung an einem beliebigen Pin angelegt wird, dann wird über die interne Schutzbeschaltung ein Strom in Richtung Arduino 5V fliessen, der ausreicht um den Transistor anzusteuern.
=> es wird nie abgeschaltet.

Man muß noch einen Transistor  spendieren um die Logik umzudrehen:

Die Schaltung hält sich selbst, erst wenn der Arduino-Pin aktiv auf LOW gezogen wird, wird die Versorgung abgeschaltet.
Für höherer Ströme empfiehlt es sich, Q1 durch einen P-Kanal Fet zu ersetzen.
Grüße
Gunther

nix_mehr_frei


So wird das nicht funktionieren.
Wenn der Arduino spannungslos ist, und eine positive Spannung an einem beliebigen Pin angelegt wird, dann wird über die interne Schutzbeschaltung ein Strom in Richtung Arduino 5V fliessen, der ausreicht um den Transistor anzusteuern.
=> es wird nie abgeschaltet.


Wo soll in einer spannungslosen Schaltung denn eine Spannung an einem Eingang herkommen?
Von Spezialfällen, wo Fremdspannung auf einen Eingang gegeben wird, einmal abgesehen.
Um größere Betriebsströme zu schalten, gehe ich aber mit deinem Vorschlag konform.
Außerdem, was wir noch garnicht betrachtet haben, wenn sich die Schaltung in Grenzfällen nicht so verhält, wie vorgesehen.
Transistor sperrt, die Spannung ist auf Grund von Pufferelkos nicht sofort weg. Ob dann die Ausgänge perfekt sperren oder im Runterfahren auf H oder L gehen, bis ganz aus ist, ist unvorhersehbar. Da hilft nur probieren.
Auch eine Notabschaltung bei Unterspannung z.B. bei LiPo-Akkus nach obrigen Prinzip wäre denkbar. Auch den Ladestromstoß der Pufferelkos sollte man berücksichtigen. Den muß der Taster aushalten, damit die Kontakte nicht verkleben. Bei kleinen Leistungen und Kapazitäten bis 100µF sollte das kein Thema sein. Bei größeren Leistungen kann man auch den Taster statt über Q1 über Q2 vorsehen. Dann muß allerdings Q2 für diesen Einschaltstrom ausgelegt sein.

Gruß Gerald
rot ist blau und Plus ist Minus

SkobyMobil

Hallo,
"Wo soll in einer spannungslosen Schaltung denn eine Spannung an einem Eingang herkommen?"

Aus der Spannungsquelle?

Wir schalten hier nur den Plus. Masse liegt überall an. Deswegen sagte ich ja
"Diode an den Pin", damit "Rückwärts" nichts durch den Arduino fließt.
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

guntherb


Wo soll in einer spannungslosen Schaltung denn eine Spannung an einem Eingang herkommen?


Aus der versorgungsspannung über die Emitter-Basisdiode des Schalttransistors, durch den Basiswiderstand auf den den Arduino-Pin.
Von dort durch die interne Diode auf die 5V und von dort durch die Summe aller an der 5V versorgung angeschlossenen Lasten nach GND. Und schon ist der Kreis geschlossen, und es fließt Strom.
Grüße
Gunther

neop13

schaeint doc hnciht so einfach zu sein.

betreibe es gerade mit dem Patteriepack. 6x 1,5V... Hält echt nicht lange

combie

Quote
6x 1,5V

9V, Längsregler auf 5V
Nochmal Längsregler auf 3,3V
Der USB Chip
LED auf Pin 13
usw.
Mit dem UNO ist Strom sparen schwer.

Ich setze in solchen Fällen Arduino Pro Mini  ein.
Gerne auch die 5V 16MHz Version.
Betrieben mit 3,3V 8MHz
Versorgt über einen KIS 33R3 Wandler.
Quarz über die Fuses deaktiviert. Also interner RC Taktgenerator
Die Pin 13 LED runter gedremelt
Alleine diese Maßnahmen verdoppeln die Laufzeit locker, wenn nicht sogar noch mehr.



Dann ist auch ein Strom sparender Tiefschlafmodus möglich.
Wecken erfolgt über den INT0, INT1 oder über den Watchdog.


Will man wirklich exakte Zeiten einhalten, führt in einem solchen Fall kein Weg um eine RealTimeClock RTC herum.
Die meisten RTCs haben einen Rechteckgenerator Ausgang, welcher sich auf 1 Sekunde einstellen läßt.
Bei Ebay kosten die Dinger um die 4 Euro.

Nach einem solchen Umbau halten deine 6x 1,5V Batterien viele Monate.
Wenn denn der Kleine viel schlafen darf.


Der Pessimist sieht die Wolke vor der Sonne.
Der Optimist sieht die Sonne hinter der Wolke.

Mantra: Die Sonne scheint immer!

Go Up