Forum: Mikrocontroller und Digitale Elektronik µC soll sich selbst abschalten


von Alex (Gast)


Lesenswert?

Hallo Zusammen,


ich würde gerne ein Arduino per 433 Mhz Fernbedienung einschalten, das 
Arduino ein paar Aktionen ausführen lassen und anschließend würde ich 
gerne das Arduino sich selbst abschalten lassen. Das Einschalten stellt 
erstmal kein Problem dar, per Funk-Einbauschalter ala 
http://www.conrad.de/ce/de/product/640302/Conrad-Funk-Einbauschalter-RSLU/SHOP_AREA_38084&promotionareaSearchDetail=005 
. Nur wie kann ich diesen Schalter per Arduino dazubekommen 
abzuschalten.

1. Idee:

In dem Einbauschalter den entsprechenden Code zum Abschalten per Arduino 
simulieren. Was recht gut möglich ist per 
http://code.google.com/p/rc-switch. Auslesen konnte ich den Code 
bereits. Bin aber von diesem Plan erstmal abgekommen, da ich mir dabei 
den Atmega dabei mit 230V zerschossen habe. Vermutlich wegen der 
verschiedenen Massen vom Netzteil des Arduino und dem 
Funk-Einbauschalter. Ich denke das ganze war keine gute Idee, bzw. ist 
nur eine gute Idee wenn ich die Stromversorgung (5V.) von Arduino und 
Funk-Einbauschalter irgendwie zu einer machen kann.

2. Idee:

mit einem zweiten Sender am Arduino, ebenfalls per rc-switch den 
Funk-Einbauschalter abschalten. Etwas weniger elegant, aber würde 
funktionieren.

Was denkt Ihr? Würde mich auch zu einer völlig anderen Idee hinreisen 
lassen. Wichtig ist das es stabil über einen Längern Zeitraum läuft.


Freu mich über Vorschläge.

Grüße,

Alex.

von Verwirrter Anfänger (Gast)


Lesenswert?

Wie soll sich der Arduino überhaupt selbst abschalten?

Geht es dir nur darum, dass du per Funk eine Aktion ausführen willst?
Dann solltest du überlegen, ob du das nicht hinkriegst, ohne den arduino 
jedesmal komplett ein- und auszuschalten

Oder geht es dir darum Strom zu sparen? Wahrscheinlich verbraucht die 
Funksteckdose mehr als der Arduino, wenn er durchgehend laufen würde. 
Mit den diversen Schlafmodi, solltest du auf jeden Fall in einen 
vernachläsigbar geringen Bereich kommen.

von Fer T. (fer_t)


Lesenswert?

Wenn ich dich richtig verstanden habe willst du nur einen kleinen 
Prozessor an und ausschalten, warum dann einen Funkschalter für 2 KW?
Auch der verbraucht standby Strom, warum dann nicht den uC sich selbst 
in den Sleep Modus schicken lassen, da verbraucht der auch nur einige 
wenige uA...
Zum Wecken und Ausschalten also zum steuern einfach ein RFM12...
www.mikrocontroller.net/topic/214238
Ist evtl auch noch günstiger als die Conrad Lösung...

MfG,
fer

von Alex (Gast)


Lesenswert?

hallo fer,

danke für deine schnelle Antwort. 2KW weil ich neben dem Board auch noch 
1,3 KW damit schalten will.


Grüße,

Alex

von Fer T. (fer_t)


Lesenswert?

Ach so also hängt an dem Board noch was mit 1,3 KW...
Muss das denn geschaltet werden, oder wird das erst "eingeschaltet" 
durch das Board?  Sonst macht es evtl Sinn es mit dem uC über ein Relais 
oä zu schalten. Naja mein EinfallsReichtum wird gerade durch die Uhrzeit 
etwas getrübt ;-)

MfG und gute Nacht,
fer

von Alex (Gast)


Lesenswert?

die Verbraucher die von dem Board gesteuert werden sollen können 
Natürlich auch per Relais geschaltet werden, gesteuert werden sie eh 
zusätzlich per rs232.
Das Ganze wird eine Installation die über mehrere Jahre wartungsfrei 
laufen soll. Die Idee das ganze Board von der Stromversorgung zutrennen 
hat in meinen Augen vor allem den Vorteil das der Atmega regelmäßig 
neugestartet wird und er sich so nicht weghängen kann. Ich muss aber 
auch sagen das ich keine Erfahrung mit µC haben und wie lange die Stabil 
laufen.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Alex schrieb:
> Die Idee das ganze Board von der Stromversorgung zutrennen
> hat in meinen Augen vor allem den Vorteil das der Atmega regelmäßig
> neugestartet wird und er sich so nicht weghängen kann.

Genau dafür gibt es den Watchdog.

von Chris S. (hondaracer1)


Lesenswert?

Watchdog + sleepmode ist in meinen Augen auch der beste Weg, kommt 
allerdings auch ein bischen auf dein Gesamtprojekt drauf an. Damit läuft 
das ding dann auch ewig, vorausgesetzt man konfiguriert den controller 
richtig, das er sich nicht nach nem Spannungseinbruch in einem 
resetzustand versetzt oder ähnliches, aber da können dir die AVR leute 
bestimmt Tips und Beispielcode geben.

Alternativ: Es gibt Spannungsregeler-ICs welche ein- und ausgeschaltet 
werden können, diese könntest du per Funk einschalten und per uC wieder 
ausschalten wenn er seine Arbeit erledig hat.z.B. 
http://de.farnell.com/maxim-integrated-products/max5024lasa/linear-reg-l-quiescent-strom-5024/dp/1379979?Ntt=max5024

von Alex (Gast)


Lesenswert?

Danke für eure Tipps,

wenn ich den Spannungsregeler-IC per Funk ansteuern will, dann benötige 
ich doch auch schon wieder einen Controller der das Signal auswertet. 
zumindest wenn ich es z.B. mit diesem Modul lösen 
würde:http://www.conrad.de/ce/de/product/190276/AM-EMPF-433MHZ-5V-100DBM-LC-AC-RX/2401020&ref=list


Das selbe Problem hätte ich auch um den Atmega aus dem sleep mode 
zuerwecken. Mir gehen die IDeen langsam aus...

von Fer T. (fer_t)


Lesenswert?

Warum gehen dir die Ideen aus?

Chris S. schrieb:
> Watchdog + sleepmode ist in meinen Augen auch der beste Weg[...]

Wie Chris und ich schon geschrieben haben, einfach den uC in den 
Sleep-Modus schicken und mit Funksignal aufwecken, siehe RFM12 Link den 
ich gepostet habe.
Wenn du dann den Watchdog noch einsetzt brauchst du auch keine Angst vor 
einem Aufhängen haben...

Wenn du dabei konkrete Probleme hast, kannst du gerne das fragen, ich 
denke viele andere und ich helfen dir gerne dann bei den fragen (also 
z.B. zum Watchdog).

Weil wie geschrieben ist das sicher der beste Weg (auch weil der uC im 
power-down (power-save?) sicher weniger Strom braucht als der 
Funkschalter.

Übrigens es muss ja nicht unbedingt RFM12 sein (sendet und empfängt) 
sondern ein einfaches RFM01 reicht für die uC Seite ja auch.

Bezugsquellen und viele Infos findest du hier:
http://www.mikrocontroller.net/articles/RFM12


MfG,
fer_t


EDIT:

Falls du aber nicht davon abzubringen bist den Strom ganz zu schalten:
http://www.pollin.de/shop/dt/MDYzOTQ0OTk-/Bausaetze_Module/Module/Funk_Fernschalter_Set_HD2RX.html

Damit sollte das möglich sein, einschalten ganz normal per Funk, dann 
zum ausschalten muss der uC nur Spannung an den Reset / Endschalter-Pin 
des Boards anlegen und schon schaltet sich das ab...

Wegen deinen 1,3 kW: Einfach Relais austauschen... Aber wie gesagt das 
ist auch nichts anders als das was ich oben beschrieben habe halt schon 
fertig aufgebaut... Wird auch sicher mehr verbrauchen aber dafür halt 
schon ein fertiges Modul.

von Alex (Gast)


Lesenswert?

Okay, ihr habt mich überzeugt, der sauberste weg wird der über ein 
watchdog sein, wobei mir bei dem Gefühl ein System über Jahre hinweg 
laufen zulassen immer noch etwas mulmig ist.

Ich verwende das Arduino Board, das zieht 10 mA wenn der Atmega328 im 
Idel ist, ich denke das sich der sleepmode dann nicht lohnt, wobei ich 
mich, was das angeht auch eines besseren belehren lassen würde.

Als Empfänger Modul habe ich das AC-RX von Aurel rausgesucht, die 
ASK-Modulation weil es in rauen Mengen Handsender zu günstigen Preisen 
gibt.

Das AC-RX gibt  für Low -0,4 und für Hight +0,4V raus, wenn ich das im 
Datenblatt richtig verstanden habe, damit wird mein Atmega nicht viel 
anfangen können.  Sowie ich es bislang verstanden habe sind für den 
Atmega 2V und weniger Low  und 3V und mehr hight. Wie bekomme ich die 
Spannungen nun konvertiert? Per OP?

Danke für euere Hilfe,


Alex

von Fer T. (fer_t)


Lesenswert?

Ich weiß ja nicht was auf dem Board noch rum gurkt aber laut Datenblatt 
soll der im Idle max 2,7 mA ziehen...
Ich würde aber wenn schon dann den Power-down nehmen der zieht bei 
aktiviertem WDT auch nur 3,9 uA.
Der Power-Save nur 0,9 uA aber da weiß ich nicht ob der WDT an ist...

Nacht.

Fer

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alex schrieb:
> wobei mir bei dem Gefühl ein System über Jahre hinweg
> laufen zulassen immer noch etwas mulmig ist.

Aber die Funksteckdose darf problemlos über Jahre ihren Strom ziehen?

Das verstehe, wer will.

von Chris S. (hondaracer1)


Lesenswert?

wie wärs mit nem efm32, im shut-off mode sinds noch 20nA (aufwachen per 
externer signale). Wenn der Watchdog noch laufen soll kommt man auch 
900nA runter.


ps.: dieser Post ist sinnfrei und beinhaltet ausschließlich 
Schleichwerbung


Ich hab selber nie was mit den Arduinos gemacht, aber wenn jemand anders 
ein programm hat das zeit wie man den sleep-mode + watchdog richtig 
nutzt und konfiguriert, wäre das sicher hilfreich. Sollte es ja 
theoretisch wie Sand am Meer geben oder?

von Alex (Gast)


Lesenswert?

Mir geht es vor allem darum, dass das System Stabil läuft und das über 
ein paar Jahre, die Stromaufnahme spielt da schon eine untergeordnete 
rolle. Deswegen auch die Idee mit der Funkschaltdose, ich gehe einfach 
davon aus das diese Funkschaltdosen nach 5  Jahren noch das selbe tun 
wie am ersten Tag. Bei dem Arduino oder auch "µC-for-Dummies"-Lösung bin 
ich mir nicht so sicher was da nach 5 Jahren so passiert. Angeblich 
führt ohne Watchdog nach 49 Tagen ein überlaufender timer schon zum 
Crash. Von der Arduino Lösung werde ich aber leider aus Zeit und 
Wissensmangel nicht abkommen.

Ich werde es jetzt per 433Mhz Receiver, Relais und Watchdog Lösen. Hoffe 
einfach mal das es stabil laufen wird. Den SleepMode würde ich dann noch 
optional integrieren.

Über Tipps würde ich mich sehr freuen. (Ich hoffe die Frage zwei Posts 
drüber klärt sich auch noch.)

Alex.

von Fer T. (fer_t)


Lesenswert?

Chris S. schrieb:
> wie wärs mit nem efm32, im shut-off mode sinds noch 20nA (aufwachen per
> externer signale). Wenn der Watchdog noch laufen soll kommt man auch
> 900nA runter.

Wo ist der Vorteil, wie ich geschrieben habe verbraucht sein uC auch nur 
0,9uA also 900nA... Mit WDT an.

Edit:
>Ich hoffe die Frage zwei Posts drüber klärt sich auch noch.

Ich glaube das war eine rhetorische Frage von Jörg. Also ob die 
FunkSteckdose ihren Strom ziehen darf..

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alex schrieb:
> Deswegen auch die Idee mit der Funkschaltdose, ich gehe einfach
> davon aus das diese Funkschaltdosen nach 5  Jahren noch das selbe tun
> wie am ersten Tag.

Der würde ich (ohne eigene Inspektion des Inhalts) weniger über den
Weg trauen als einem simplen Mikrocontroller.

> Bei dem Arduino oder auch "µC-for-Dummies"-Lösung bin
> ich mir nicht so sicher was da nach 5 Jahren so passiert.

Warum denn nicht?

> Angeblich
> führt ohne Watchdog nach 49 Tagen ein überlaufender timer schon zum
> Crash.

Haben die da Windows drauf laufen? :-) [1]

[1] http://support.microsoft.com/kb/216641

Ja, ein Millisekundentimer mit 32 bit Zählertiefe läuft nach 49,7
Tagen über.  Aber: du hast doch ein externes Ereignis, das dich wieder
aufweckt, damit musst du dich um einen überlaufenden Timer gar nicht
kümmern.

von Alex (Gast)


Lesenswert?

ups, ich hatte mich verzählt und meinte nicht Jörgs Frage sondern meine. 
bzgl. der Spannungen.

Was meine Skepsis dem Arduino gegenüber angeht: Das Ding wird über eine 
eigene IDE Programmiert, nicht sauber in c++ sondern über einen extrem 
einfach gehaltenen Java Dialekt. Wer Processing kennt, kann sich 
vorstellen was ich meine. Processing und Arduino sind für 
Kreativschaffende ohne technisch fundiertes Wissen entwickelt worden. 
Ich kann mir zu gut vorstellen das der Arduino-Kompiler da einiges 
erstellt was ein c++ einfach mal weglässt. Aber auch hier lasse ich mich 
gerne eines besseren belehren,ist schließlich auch nur ein Gefühl, kein 
Wissen das ich da habe.

Aber das ganze soll auch kein pro/contra Arduino werden, mir geht es in 
den Thread eher um das drum herum, Physikalisch ist es auf meinem 
Arduino immer noch ein Atmega328.

von Verwirrter Anfänger (Gast)


Lesenswert?

Alex schrieb:
> FUD

Der Arduino "Dialekt" mag zwar nicht jedermans Sache sein, aber ein 
"einfach gehaltener Java Dialekt" ist das auf keinen Fall. Jeder der 
sowohl Java als auc C(++) kennt,
 erkennt auf dem ersten Blick, dass das näher an C ist als an Java.

Und tatsächlich:
http://arduino.cc/en/Main/FAQ
> Can I program the Arduino board in C?
> In fact, you already are; the Arduino language is merely a set of C/C++
> functions that can be called from your code. Your sketch undergoes minor
> changes (e.g. automatic generation of function prototypes) and then is
> passed directly to a C/C++ compiler (avr-g++).

Für den Arduino zu Programmieren bedeutet eigentlich nur C zu 
programmieren mit einer umfangreichen Bibliothek an Hilfsfunktionen. Das 
ist natürlich teilweise langsamer (Portzugriffe) oder nicht ganz optimal 
(fixer milisekunden Timer), aber große Sorgen würde mir das nicht 
bereiten.

> Processing und Arduino sind für Kreativschaffende ohne technisch
> fundiertes Wissen entwickelt worden.
Das mag zwar eine der Zielgruppen sein, aber ich kenn einige gute 
theoretische und praktische Informatiker, denen ich nicht das technische 
Grundwissen absprechen würde, die trotzdem gerne Arduinos benutzen.

Ich seh den Arduino als gute Einstiegsmöglichkeit in Mikrocontroller 
Entwicklung und wenn man dann irgendwann an die Grenzen stößt, kann man 
sich mit anderen AVRs beschäftigen und die dann "roh" benutzen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alex schrieb:
> Angeblich
> führt ohne Watchdog nach 49 Tagen ein überlaufender timer schon zum
> Crash.

Ich habe mir mal die Referenz vom Arduino angesehen.  Ja, es gibt
einen Millisekundenzähler, der nach 49,7 Tagen naturgemäß
überläuft.  Aber das allein bewirkt natürlich keinen "Crash".  Es
gibt ja auch einen Mikrosekundenzähler, der bereits nach 70 Minuten
überläuft, ohne dass es deshalb einen "Crash" gäbe.

Schlecht programmierte Software kann natürlich nun daran scheitern,
dass sie nicht in Betracht gezogen hat, dass die Millisekunden-Zeit
mal irgendwann wieder über die 0 zurückspringt.  So war's ja auch
in dem bei Microsoft zitierten Fall (das wirklich gruselige daran
war meiner Meinung nach, dass er erst im Jahr 2000 aufflog, d. h.
etwa 5 Jahre lang hat es entweder niemand überhaupt geschafft, eine
Windows-95-Maschine länger als 1,5 Monate laufen zu lassen, oder
aber jeder hat es als völlig selbstverständlich hingenommen, dass
man dann einfach mal den Reset-Knopf drücken muss).

Nur: das wäre ja dann deine schlechte Software.  Selbst das
Tutorial bei Arduino:

http://arduino.cc/en/Tutorial/BlinkWithoutDelay

zeigt, wie man (unter Ausnutzung des definierten Überlaufverhaltens
einer vorzeichenlosen Zahl bei C bzw. C++) mit dem Rollover der
Zeit umgehen kann.  Die im Tutorial blinkende LED wird auch nach
49 Tagen weiterblinken.  Wenn du's nicht glaubst, dann ersetze
einfach darin den Aufruf von "millis()" durch "micros()", mach' das
Intervall entsprechend größer (damit du die LED auch blinken siehst
und nicht mit 1 kHz "blinken hörst" :), und sieh' dir an, was nach
70 Minuten passiert, wenn micros() wieder auf 0 springt.

von Alex (Gast)


Lesenswert?

Danke das ihr ein paar Auffassungen von mir richtiggestellt habt, klingt 
sehr vernümftig.
Es gibt da aber noch eine Frage die ich mir bislang noch nicht selbst 
beantworten konnte und auch nichts dazu finden konnte, ich zitiere mich 
mal selbst:

Alex schrieb:
> Das AC-RX gibt  für Low -0,4 und für Hight +0,4V raus, wenn ich das im
> Datenblatt richtig verstanden habe, damit wird mein Atmega nicht viel
> anfangen können. Sowie ich es bislang verstanden habe sind für den
> Atmega 2V und weniger Low  und 3V und mehr hight. Wie bekomme ich die
> Spannungen nun konvertiert? Per OP?

es wird vermutlich nun zwar dieser 433Mhz Empfänger werden,

http://www.google.de/products/catalog?hl=de&sugexp=frgbld&ds=pr&pq=velleman+433&cp=13&gs_id=21&xhr=t&q=velleman+433&rlz=1C1CHFX_deDE445DE445&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&ix=seb&ion=1&biw=1280&bih=866&um=1&ie=UTF-8&tbm=shop&cid=8321840063604705699&sa=X&ei=ZnN9T_KsGsbBtAbk5KiOCQ&sqi=2&ved=0CGgQ8wIwAQ

der überträgt seine empfangenen Daten aber auch per -0,5V bzw. +0,3V (so 
wie ich es verstehe).

Ist es richtig das der Atmega328 damit nichts anfangen kann? Muss ich 
die Spannungen noch anpassen um die Bits per Atmega interpretieren zu 
können? (*5+2,5) könnte in meinen Augen eine Lösung sein, aber wie läuft 
das elektrotechnisch? Auf 
http://www.mikrocontroller.net/articles/Pegelwandler war ich leider 
nicht fündig.

Alex

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Da steht "Vcc - 0,5 V", nicht "-0,5 V".  Das scheint der High-Pegel
zu sein, auch wenn zweimal "low" davor steht.

Sind also ganz normale CMOS-Pegel.

Ist halt das Billigste vom Billigen.

von Alex (Gast)


Lesenswert?

wenn du eine bessere Idee hast bin ich gerne für Vorschläge zuhaben.

Versteht der Atmega denn die CMOS Pegel als Hight/Low oder müssen die 
elektrotechnisch angepasst werden? Und wenn ja, wie am sinnvollsten?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alex schrieb:
> wenn du eine bessere Idee hast bin ich gerne für Vorschläge zuhaben.

Selbst ein billiger RFM12-Modul sollte schon mal einiges besser
sein.  Ich kann dir allerdings nicht sagen, inwiefern das zu
deinem Funkschalter passt.

> Versteht der Atmega denn die CMOS Pegel als Hight/Low

Ja, der benutzt ja ebenfalls CMOS-Pegel.

von Alex V. (alex_)


Lesenswert?

Die Funkschalter verwenden gerne die ASK-Modulation, weil es einfacher 
aufzubauen ist, der RFM12 setzt aber wohl die FSK ein. Von daher gehe 
ich davon aus das RFM12 und Funkschalter nicht kompatibel sind. 
Einwände?

Wenn es eine saubere Lösung gibt wie ich einen Handsender mit 2-7 Tasten 
per RFM01/02 aufbauen kann, inkl. Gehäuse usw. dann bin ich sofort 
dabei.  Problem ist nur das ich nur noch knapp 10 Tage habe bis alles 
laufen soll, da ist die Funkschalter lösung mit den Fertig aufgebauten 
Sendern schon sehr verlockend. Die Funkschalter Lösung finde ich selbst 
auch nicht besonders schick.

Wie gesagt, es geht darum 4 Geräte per rs232 zu steuern. die RS232 
Schnittstellen habe ich auch soweit unter Kontrolle, nur die 
Fernbedienung nervt noch etwas.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.