Forum: Mikrocontroller und Digitale Elektronik RFM01/RFM12 Fragen und Stromspartechniken


von Vlad T. (vlad_tepesch)


Lesenswert?

Hi,
Ich bin grad am konzipieren von einem kleinen RF-Empfänger.
Dieser soll batteriebetrieben sein und natürlich eine möglichst lange 
Laufzeit haben.

Benutzen würde ich gern ein RFM01 modul.
Wenn jemand etwas kompatibles (was die Datenübertragung angeht - ich hab 
schon ein paar Sender/Empfänger) kennt, was weniger Strom braucht, bin 
ich Vorschlägen gegenüber aber aufgeschlossen.

Im Datenblatt steht was von einem Stromverbrauch von 10-12mA, was für 
eine batteriebene Anwendung natürlich recht viel ist.
Bei Idle steht da was von 3mA
Ich bin mir aber nicht sicher, was der Idle made macht, oder wie man da 
rein kommt.
Kann dazu im Datenblatt nix finden.
Befindet sich das Modul im Idle, sobald nichts empfangen wird?
Wie kann dabei Strom gespart werden? Die Funkfrequenzen müssen doch 
trotzdem die ganz Zeit überwacht werden.

Dann gibts noch den Low Duty Cycle Mode.
Hier scheint mir das Datenblatt widersprüchlich.
An einer Stelle steht, dass dieser Modus über einen Pin aktiviert wird
An anderer Stelle steht, dass es über ein Register aktiviert wird.

Dann ist mir die prinzipielle Funktionsweise nicht klar.
Das Modul wacht alle 300ms auf. Wenn innerhalb von 6ms keine 
Datenübertragung erkannt wird, legt es sich wieder schlafen.
Das heißt, hier müsste man auch den Sender anpassen, dass dieser sein 
Signal mindestestens 300ms durchgängig (oder zumindest im Abstand von 
5ms) sendet (was sich natürlich wieder negativ auf dessen 
Batterielaufzeit auswirkt).
weiterhin ist mir unklar, wie die µC-Ansteuerung hier läuft.
Darf ich das modul trotzdem anquatschen, oder muss ich irgendwie warten, 
bis das Modul wach ist.

Wär nett, wenn mich jemand an seinem Wissen teilhaben lassen könnte.

Gruß
Vlad

von Gerry L. (Gast)


Lesenswert?

Hallo,

ich machs andersrum.
Wakeup des RFM12 weckt einen Atiny44 aus dem powerdown modus.
RFM12 Low standby current (0.3  μA)
Attiny44  Typisch 0.15 maximal 2 µA im Powerdown.

Zurzeit läuft das System mit einer cr2032. Mal sehen wie lange?

Gerry

von Vlad T. (vlad_tepesch)


Lesenswert?

Gerry L. schrieb:
> ich machs andersrum.
> Wakeup des RFM12 weckt einen Atiny44 aus dem powerdown modus.
ja, aber wie empfängt man daten, wenn das ding schläft

wer wen weckt ist ja egal.

von Gerry L. (Gast)


Lesenswert?

>ja, aber wie empfängt man daten, wenn das ding schläft

garnicht

Wenn beide Stationen Batteriebetrieben sind wirds schwierig.
Bei mir sendet der Batteriebetriebene einen Empfangsbereitschaftscode 
und bleibt so lange wach bis alles abgearbeitet wurde.
Die Basisstation hängt am Stromnetz.

Zum IDLE kann ich dir leider auch nicht weiterhelfen.

von Der Weise (Gast)


Lesenswert?

Du musst halt dafür sorgen, dass beide immer gleichzeitig aufwachen - 
einmal beim einschalten beide durch langes Einschalten synchronisieren, 
und dann immer zum gleichen Zeitpunkt aufwachen lassen. Dabei den 
Einschlaf-Zeitpunkt des Empfängers immer an den Empfangs-Zeitpunkt 
anpassen, um eventuelle Abweichungen der Quarze auszugleichen.

von Vlad T. (vlad_tepesch)


Lesenswert?

Der Weise schrieb:
> Du musst halt dafür sorgen, dass beide immer gleichzeitig aufwachen -
> einmal beim einschalten beide durch langes Einschalten synchronisieren,
> und dann immer zum gleichen Zeitpunkt aufwachen lassen. Dabei den
> Einschlaf-Zeitpunkt des Empfängers immer an den Empfangs-Zeitpunkt
> anpassen, um eventuelle Abweichungen der Quarze auszugleichen.

soll aber unterschiedliche Sender geben, die nicht synchronisiert sind.

kann noch jemand was zu den oben erwähnten Fragen betreffend der Modi 
sagen?

von Verwirrter Anfänger (Gast)


Lesenswert?

Hi, als Einstiegspunk kann ich dir Kaptitel 3 "MAC Protocols for WSNs" 
aus diesem Paper:
http://eprints.eemcs.utwente.nl/2691/01/VanHoesel_TR-CTIT-06-18.pdf
empfehlen.

ein paar möglich Versionen
Variante 1:
Jede Node wacht alle x ms für y ms auf, wenn eine Node was senden will, 
sendet sie über einen Zeitraum von mindestens x ms ein Startpacket von 
maximal y ms Länge. Danach kommen die tatsächlichen Nutzdaten.
Vorteil:
Keinerlei bootstrap notwendig
Nachteile: Senden ist recht teuer, man muss ein gutes Verhältnis von x / 
y finden, dass zu der Menge der Nachrichten passt.

Variante 2:
Jede Node wacht alle x ms für n*y ms auf. Jede Node hat eine eigene ID 
und einen eigenen Timeslot innerhalb der y ms. Wenn am Anfang des 
Timeslots keine Daten kommen, geht die node wieder für den rest der y ms 
schlafen.
Eine neu hinzukommende node sendet für mindestens x ms Sekunden ein 
Broadcast an alle anderen nodes. Wenn die neue Node aufhört antwortet 
die node der, der nächste timeslot gehört und teilt der neuen node mit, 
an welcher stelle im x+n*y zyklus sie sich gerade befindet, und welcher 
Zyklus ihr gehört. Danach sind die nodes wieder alle synchroniesiert.
Vorteil:
sehr energieeffizient, klares aufteilen der slots, kaum Möglichkeiten 
für Kollisionen.
Nachteile:
Bei großen Netzwerken, bei denen nicht alle nodes sich gegenseitig sehen 
können, führt das ganz zum Chaos.

Sobald du anfängst mit größeren Netzwerken zu arbeiten führt das ganze 
eh zu einem Chaos.

Zum Aufbau:
Wenn du einen fixen Schlafzyklus hast, würde ich das RFM Modul das 
aufwachen übernehmen lassen. Du hängst den Interrupt Ausgang des RFM 
Moduls an einen echten Interrupt, sagst den Modul, dass es für x ms 
schlafen soll und gehst dann in den tiefsten Schlafmodus des 
Mikrocontrollers.
Ich hab einen Sensor, der nach diesem Prinzip alle 3 Minuten aufwacht 
und Daten verschickt, und mit einer Knopfzelle läuft der ohne Probleme 
seit 3 Monaten. Ich denke mit einem geschickten MAC Protokoll kriegt man 
auch beim Empfang mehr als einen Monat Laufzeit hin.

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.