Hi Leute! Ich möchte gerne über einen µC das Funkmodul RFM12 abschalten, wenn es nicht gebraucht wird. Leider braucht das Modul nach dem einschalten sehr viel Strom. Ich habe in der Schaltung eine Spannungskonstante verbaut, die nicht mehr als 200 mA her gibt. Diese 200 mA nimmt das Funkmodul sich nach dem Einschalten komplett. Schließe ich das Funkmodul fest an VCC an, funktioniert alles. Es ist also kein Schaltungsproblem. Ich habe verschiedene tests gemacht, indem ich die Ports über die das Modul seine Daten bekommt nach GND oder nach + lege, leider alles ohne Erfolg. Vielleicht hat schonmal jemand das gleiche Problem gehabt und kann mir weiterhelfen. Danke
Ja, die Idee mit dem Schlafmodus hab ich auch schon gehabt. Wenn ich es aber ganz abschalte, dann braucht es gar kein Strom mehr. Aber wo wir gerade dabei sind. Wie mach ich das mit dem Schlafmodus? Ich programmiere in Bascom. Was muss ich da programmieren?
Also ich schalte meine auch ab, Mosfet in der Plusleitung. Da werden auch keine 200mA gezogen. Holger
Mit nem Mosfet könnte man auch natürlich machen. Habe es mal mit nem Transistor versucht, aber GND abschalten ist ja nie so die optimale Lösung. Kann ich, wenn das Funkmodul am schlafen ist, über das Modul n IR für den µC auslösen?
Christian Betzen schrieb: > Diese 200 mA nimmt das Funkmodul sich nach dem Einschalten > komplett. Schließe ich das Funkmodul fest an VCC an, funktioniert alles. > Es ist also kein Schaltungsproblem. Doch, es ist ein Problem. Nach dem Einschalten hat ein RFM12 eine sehr geringe Stromaufnahme, beim Empfang ca. 10-20 mA und beim Senden bis ca. 30 mA. Steht sogar so im Datenblatt geschrieben. 200 mA sind definitiv nicht normal.
Nur so als Hausnummer: Bei mir verbrauchen ein RFM12 + Attiny45 im Schlafmodus ca 1,3µA. Der RFM12 hat dabei sogar noch den Wakeup Timer laufen, der Tiny schläft tief und fest. Bei 1,3µA würde eine Knopfzelle reichen, um das ganze ca. 17 Jahre zu betreiben, ich denke das sollte reichen. Und man spart sich zusätzliche Transistoren. Beim Senden verbraucht das Ganze ca. 30mA und beim Starten vielleicht 15mA. Damit dass 200mA zieht, muss schon irgendwas ganz schön schief gelaufen sein.
Die Idee mit dem Schlafmodus und dem Wakeup Timer gefällt mir immer besser! Was muss ich machen, um diese Optionen des FRM12 zu nutzen?
Bei mir liegt die Ruhestromaufnahme in der Größenordnung um die 600nA mit einem MSP430G2553, dem abgeschalteten RFM12 bei Speisung durch eine 3,6V Lithiumprimärzelle im R6 Format (AA). Es gibt keinen Schalter und es ist nicht vorgesehen die Zelle zu wechseln.. Gruß, Holm
Alles klar! Ich habe das Modul jetzt fest angeschlossen. Was muss ich jetzt machen, um das Modul in den Schlafmodus zu bringen? Was muss ich machen um den Wakeup Timer zu verwenden?
Um den Schlafmodus zu verwenden, muss der NIRQ-Pin mit dem Mikrocontroller verbunden sein, da er den Controller nach Ablauf der eingestellten Wake-Up-Zeit per Pin-Change-Interrupt wieder aufweckt. Um das Funkmodul schlafen zu legen, musst du in den entsprechenden Registern (Configuration Setting und Power Management) die richtigen Einstellungen vornehmen: Latch und FIFO deaktivieren, alle Blöcke ausschalten, sämtliche Interrupts abhandeln (Gründe und Gegenmittel sind bei der Beschreibung des Statusregisters erklärt), so dass NIRQ auf high bleibt, Wake-Up-Timer einstellen und aktivieren. Hierbei hilft der Artikel RFM12 weiter. Wie man den µC schlafen legt, steht in Sleep Mode.
Danke für den Beitrag Felix! Der NIRQ ist mit dem Portd.2 verbunden. Damit sollte man dann n ext. IR auslösen können. An die Register hab ich garnicht gedacht. Hab noch nicht so viel mit dem Modul experimentiert. Im Anhang das Programm womit ich momentan arbeite. Eine Zeile für die "Configuration Setting" kann ich gar nicht finden. In der Endlosschleife wird immer das Register vom Power Management angesprochen. Wenn ich das richtig verstanden habe, werden immer die Teile et es ex vorm senden ein und nach dem senden wieder ausgeschaltet. Ist das zum Stromsparen im Funkmodul alles was man machen kann? Wenn ich jetzt den Wake up noch aktivieren will, muss ich das Register von &h8238 in &H823A ändern. Richtig? Außerdem muss ich dann nach jedem Ablauf noch das Register &h196 für 300ms setzen. Richtig? Sry wenn ich da so nachfragen muss. Mir fehlt da die nötige Erfahrung mit...
Die "Configuration Setting" ist die dritte Zeile in deiner init: "Call Rf_cmd(&H80d7)". Bevor du in den Sleep-Mode gehst, ist empfehlenswert, Latch und FIFO abzuschalten, das wäre dann also "Call Rf_cmd(&H8017)". Was mir noch auffällt: Du hast in deinem Code eine Crystalfrequenz von 16 MHz angegeben, daher gehe ich davon aus, dass du einen externen Oszillator am Controller hängen hast und du den Taktausgang des RFM12 nicht brauchst. Richtig? Wenn das so ist, dann ersetze "Call Rf_cmd(&Hc080)" durch "Call Rf_cmd(&Hc000)" und alle "Call Rf_cmd(&H8200)" durch "Call Rf_cmd(&H8201)" sowie "Call Rf_cmd(&H8238)" durch "Call Rf_cmd(&H8239)". Was die Stromaufnahme angeht: Wie sicher bist du dir, dass die 200 mA vom Funkmodul gezogen werden. In deinem Code ist von einem LCD die Rede - wie wird das versorgt? Hängt das an derselben Quelle?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.