Forum: Mikrocontroller und Digitale Elektronik sleep mode mit RFM12 optimieren


von Jörn A. (joern_)


Lesenswert?

Hy

ich möchte gern für eine Alarmanlage mehrere Module mit einem RFM12 
Moodule bestücken, die zu einer Zentrale funken. Funktioniert dank CRC 
auch sehr stabil & wenn kein Feedback kommt wird die Übertragung 
wiederholt...

INT0 löst beim Fenster öffnen eine Meldung an die Zentrale aus
Ansonsten erfolgt zur Zeit im Intervall von 5 Sek eine Meldung...

Das ganze soll jetzt dahin optimiert werden, das die Module an den 
Fenstern auf Akku umgestellt werden.

Meine Idee:

Aktuell nutze ich den Clock vom RFM12 (10Mhz). Das Module würde ich nach 
dem Senden in Standby setzten (hoffe der Clock geht dann noch).

Der Atmel würde nach dem Senden in den Sleep Mode gehen und sofern kein 
Alarm über INT0 kommt dann nach 5 Sek reseten damit er wieder frisch den 
Status sendet.


Geht das auch intelligenter oder anders? Das mit dem Reset kommt mir zu 
auswendig vor....

von Jörn A. (joern_)


Lesenswert?

also besten wäre es ja, wenn die Zentrale alle Module kontaktiert und 
diese dann aufwachen & antworten...

dachte erst das geht über nIRQ aber messen kann ich bei eingehenden 
Signalen nix

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe bei mir zur Zeit mehrere Module mit RFM02 und Tiny45 laufen.

RFM02 mit Sleeptimer, Tiny45 intern 8MHz Clock.
Der Tiny wird in den Powerdown geschickt und der RFM02 komplett aus, nur 
sein Timer an. Alle ca. 1min wird per IRQ vom RFM02 der Tiny geweckt, 
liest die Daten des Sensors aus und sendet sie. Anschließend den RFM und 
den Tiny wieder schlafen schicken.

Stromaufnahme im Schlaf ca. 3-4µA incl. FOST02.
Die Genauigkeit des Timers im RFM ist miserabel und temperaturabhängig.
Spielt bei mir keine Rolle, da das genaue Zeitraster uninteressant ist.
Wenn z.B. innerhalb von 5 Minuten keine Meldung kommt, ist der Sensor 
"verschwunden". Störungen würde alle Sensoren betreffen, nicht nur 
einen.

Die automatische Kalibrierung des Timers im RFM mit seinem Quarz habe 
ich abgeschaltet.

Innerhalb ca. 15-25 Grad schätze ich die Abweichung auf ca. 10%, der 
Sensor im Gefrierfach meldet sich bei ca. -22 Grad etwa alle 75s statt 
60s.

Ausgefallen ist noch keiner der 6 Sensoren, bisher aber erst zwischen 8 
und 14 Tagen Laufzeit...

Nachtrag: die Empfänger erzeugen schon einen IRQ, wenn Daten im FIFO 
sind.
Allerdings ahbe ich über solch eine Variante nur sehr kurz nachgedacht: 
der Empfänger müßte dann durchlaufen und frisst Strom oder man müßte mit 
Low-Duty-Cycle des RFM arbeiten, dann muß der Karm aber mehr oder 
weniger aufwändig syncronisiert bleiben, sonst empfängt er zu Zeiten, wo 
keiner sendet.

PPS: mein Posting dort stieß zwar auf fast kein Interesse, aber trotzdem 
der Link:
Beitrag "Sensoren mit RFM02/12, FOST02, HP03S (ASM)"

Gruß aus Berlin
Michael

von Jörn A. (joern_)


Lesenswert?

das hört sich doch sehr gut an. das mit der Zeitabweichung wär bei mir 
auch egal. Das mit dem Status Melden soll nur erfolgen, damit ich sehr 
das alle nocht Leben...

1. Aber kann ich dann trotzdem den 10MHz Takt weiter nutzen oder ist der 
auch aus?
2. Geht das auch das er aufwacht bei Anfrage von der Basis?

von Michael U. (amiga)


Lesenswert?

Jörn Ahrens wrote:
> das hört sich doch sehr gut an. das mit der Zeitabweichung wär bei mir
> auch egal. Das mit dem Status Melden soll nur erfolgen, damit ich sehr
> das alle nocht Leben...
>
> 1. Aber kann ich dann trotzdem den 10MHz Takt weiter nutzen oder ist der
> auch aus?
Du kannst den Quarzoszillator des RFM natürlich eingeschaltet lassen, 
verbraucht eben Strom (wieviel steht irgendwo im Datenblatt).
Da ich keinen genauen Takt für meine Sensoren brauche, lasse ich lieber 
den AVR mit internem RC-Takt laufen und schalte den RFM ab.

> 2. Geht das auch das er aufwacht bei Anfrage von der Basis?
Dann muß eben zumindest der Empfänger des RFM komplett laufen 
(Stromaufnahme bekommt man aus dem Datenblatt raus). Das wäre mir 
zuviel.
Der "Gefrierfachsensor" hat eine gut abgelagerte CR2025 dran, 
theoretisch sollte er damit wohl etwas über 1/2 Jahr durchhalten.
Keine Ahnung, wie die Li-Zelle bei -20 Grad hält und wie gut die Teile 
noch sind. Ist eben nur ein Experiment im Moment.

Wenn Du den Status Deiner Sensoren z.B. alle 30s schickst und quittieren 
läßt, ist das doch vermutlich auch ok?
Wenn ein Sensor sich eben 2 Minuten lang micht meldet, stimmt was nicht.

Machen kannst Du ja vermutlich ohnehin innerhalb dieser Zeit nichts, 
wenn ein Sensor z.B. durch Störungen nicht durchkommt.

Dem Sensor nutzt es auch nichts, wenn er merkt, daß er nicht durchkommt.

Auch wenn Du von der Zentrale abfragst, nutzt es Dir nur wenig, wenn 
keine Antwort kommt, weil die Funkstrecke gestört ist.
Du kannst ja schlecht wegen Nachbars Funkkopfhörer jedesmal die Politei 
alarmieren...

Gruß aus Berlin
Michael

von Jörn A. (joern_)


Lesenswert?

ok danke erstmal. läuft das ganze noch mit den internen 4MHz vom Atmel? 
Dachte da gibt es Probleme mit der FIFO, daher die 10Mhz vom RFM12...

hatte den Code von Benedikt wenig verändert und zunächst erstmal mein 
Zusätze drangebaut.
das mit dem Timer ist ja mit T =m*(2ms)^r mehr als ausreichend... wäre 
eine alternative zum reset durch den Atmel....

geht das technisch das ich nur

ex: Enable crystal oscillator
ew: Enable wake-up timer

aktiviere? dann kann ich den 10Mhz nutzen und starte den Atmel. Zum 
Verbrauch des oscillator habe ich nichts gefunden aber wird der nicht eh 
für den Timer benötigt?

gibt nur base band mit 3.0mA... ansonsten sleep mode (all off) mit 0.3uA

von Michael U. (amiga)


Lesenswert?

Jörn Ahrens wrote:
> ok danke erstmal. läuft das ganze noch mit den internen 4MHz vom Atmel?
> Dachte da gibt es Probleme mit der FIFO, daher die 10Mhz vom RFM12...

Der FIFO darf sowieso nur mit 1/4 der Taktfrequenz, also 2,5MHz maximal, 
gelesen werden, sollte also auch mit 4MHz keine Probleme geben.

> das mit dem Timer ist ja mit T =m*(2ms)^r mehr als ausreichend... wäre
> eine alternative zum reset durch den Atmel....
>
> geht das technisch das ich nur
>
> ex: Enable crystal oscillator
> ew: Enable wake-up timer

Sollte ohne Probleme gehen.
>
> aktiviere? dann kann ich den 10Mhz nutzen und starte den Atmel. Zum
> Verbrauch des oscillator habe ich nichts gefunden aber wird der nicht eh
> für den Timer benötigt?

Der WakeUp-Timer läuft allein und verbraucht 1,5µA.
Stimmt, zum Quarz-Oszi alleine habe ich auch nichts gefunden.

> gibt nur base band mit 3.0mA... ansonsten sleep mode (all off) mit 0.3uA

Ja, das sind auch meine Werte, Sleep 0,3µA + WakeUp-Timer 1,5µA = 1,8µA
Dann mein Tiny45 PowerDown max. 2µA (mit WatchDog zieht der Tiny max. 
10µA!). Sind zusammen max. 3,8µA. Der FOST02-Sensor zieht 0,2µA im 
Sleep.

Meine gemessenen 3-4µA passen also ganz gut.
Gesendet werden im Moment alle ca. 60s 24Byte mit 19200Baud bei -9dBm.
Ich schätze auf 10mA + 4mA für den Tiny in dieser Zeit.

Das sind rund 12ms pro Minute, die der Sender aktiv ist. Dazu kommen ca. 
100ms, die der Sensorkram und der Tiny brauchen. Sind dort ca. 4mA bei 
3,3V.

Meine Sensoren sollen auf jeden Fall mit einer 3V - 3,6V Li-Zelle laufen 
und möglichst 1 Jahr durchhalten.

HopeRF gibt mit einer CR2032 und etwa meinen zeitlichen Sende-Daten mehr 
als 2 Jahre an...

Gruß aus Berlin
Michael

von Joe (Gast)


Lesenswert?

Hallo,

mit einem RFM12-433 in einem batteriebetriebenen 
Temperatur-Sensor-Transmitter habe ich die Erfahrung gemacht, daß nach 
Aktivierung des Sleep-Mode im RFM12 der Stromverbrauch des RFM12 erstmal 
auf ein paar uA runtergeht. Soweit ok. Nach etwa 60 sec. steigt dann der 
Stromverbrauch langsam in 3-4 sec. auf etwa 500 uA an, bleibt dann ein 
paar Sekunden auf diesem Niveau und fällt dann wieder auf ein paar uA 
ab. Ansonsten funktioniert der Sleep-Timer korrekt und weckt das System 
nach der programmierten Zeit mit einem Interrupt auf. Da diese 
"Hochstromphase" signifikant zum durchschnittlichen Stromverbrauch 
beiträgt, suche ich nach einer Lösung um diesen Effekt zu vermeiden. Ich 
weiß, daß der RFM in gewissen zeitlichen Abständen den Quarzoszillator 
startet und den Sleep-Timer nachkalibriert. Das ist aber ein anderer 
Effekt und kann wohl nicht umgangen werden.

Eine andere lästige Eigenschaft der RFM12-Module betrifft ebenfalls den 
Sleep-Mode. Nach einer Weile (mehrere On/Off-Zyklen) führt ein 
Power-Down des RFM12 nicht mehr zu einem Stromverbrauch von wenigen uA 
sondern das Modul verbraucht dann weiterhin etwa 1,5 mA (MilliAmpere!). 
Bisher konnte ich das Problem nur umgehen, indem ich vor der Aktivierung 
des Sleep-Modes das Modul mit einem Software-Reset (Kommando 0xFE00?) in 
einen korrekten Zustand bringe. Leider dauert das ein paar hundert 
Millisekunden und trägt damit unnötigerweise wieder zum 
Gesamtstromverbrauch bei.

Hat jemand von Euch ähnliche Erfahrungen gemacht?

Gruß
Joe

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.