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.
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.
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
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
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.
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.
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
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...
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.
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
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
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.
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?
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.
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..
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.
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.
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.
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.
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.
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?
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.
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.