Hallo! Es gibt einige Beiträge zum Thema RFM12. Dazu auch der angebotene Code aus "Bidirektionale RS232 Funkbrücke" FETTES LOB dazu! Da ich einen kleinen Sender mit einem Sensor ausstatten will, muss ich so viel Strom sparen, wie möglich. ATMEGA32, RFM12 und Knopfzelle bilden quasi die hardware. Wie kann ich am meisten Strom sparen, wenn ich sagen wir im 1 Hz Takt ein paar einzelne Bytes versenden möchte? Bisher wache ich den ATMEGA via 32kHz Quarz auf, versetze das HF-Modul in den tx_mode() , versende die Daten, versetze das Modul in den Standby-Modus und schlafe dann mit dem ATMEGA wieder ein. Gibt es sinnvollere Varianten? z.B. das Funkmodul stromlos zu schalten? Oder braucht es dann zu lange/zu viel Strom, um neu initialisiert zu werden? Danke für Anregungen!
Hi, Die Zeit in der dein µController die Daten bereits zum Funkmodul gesendet hat und das Funkmodul noch am senden ist kannst du auch den µC in Sleep versetzen. Danach kurz aufwachen und das RFM Modul in Standbyschalten und anschließend auch wieder den Controller. Würde sich allerdings eventuell ersta ab einer Bestimmten Datenmenge lohnen. Vllt ist diese Wartezeit bei dir auch kaum vorhanden? Gruß Tobias
Timo P schrieb: > z.B. das Funkmodul stromlos zu schalten? Musst Du nicht. Das Teil hat einen PowerDown mode mit <5µA Stromaufnahme. Völlig ausreichend.
Du musst den Atmega nicht per Quartz aufwecken, wenn dir die exakte Frequenz nicht so wichtig ist. Das kann auch das RFM modul übernehemen. Ich hab mir auch so einen kleinen Funksender gebaut, mit einem tiny45, dem rfm12 und einem NTC als Temperatursensor. Das ganze läuft mit einer Knopfzelle und verbraucht im Schlafmodus laut meinem Handmulti 2.2 µA. Allerdings trau ich dem Multi in diesem Bereich nicht mehr so ganz. Ich erwarte mindestens 70 Tage Laufzeit mit einer Zelle, und die Entladekurve sieht bisher recht gut aus. Nach ca. 30 Tagen ist die Spannung noch bei 3.09V Ich hab im normalen Betrieb alles deaktiviert bis auf den ADC. Bevor ich in den POWER_DOWN Mode gehe schalte ich alle Pins auf input um. Für welche Pins du den Pullup aktivieren musst, würde ich einfach mal durchprobieren. Das Funkmodul setze ich dann in den Schlafmodus, mit einem Timer der das nach 180 Sekunden wieder aufweckt. Bei diesen Strömen muss man auch die restliche Beschaltung beachten. Wenn irgendwo ein Widerstand ist, der zwischen VCC und GND verbindet, kann das schon ein Großteil des Verbrauch ausmachen. selbst eine 100k Verbindung würde den Verbrauch in meinem Fall verdoppeln. Das kann zum Beispiel durch schlechtes Ätzen passieren, durch eine schlechte Schaltung / Code, bei der durch irgenwelche Pullups ständig Strom fließt.
diesen power down nutze ich ja auch. Werde nun mal genau messen, welchen Strom das Modul aufnimmt, in dem ich die VDD-Leitung aufschneide und ein Multimeter zwischenhänge. Dann kann ich RX, TX und den sleep-mode mal vergleichen. evtl. ist es besser, das Modul im power down per wake up timer den controller zu wecken, so könnte ich den controller in einem anderen modus quasi tiefer schlafen lassen können. Lohnt sich dies? Daten ca. 8Byte 1x die Sekunde
Kann ich den "standby-mode" auch nutzen, wenn ich von intern takte? Verstehe nicht ganz, was im Datenblatt gemeint ist. Dort steht: When the SM2..0 bits are 110 and an external crystal/resonator clock option is selected, the SLEEP instruction makes the MCU enter Standby mode. This mode is identical to Power-down with the exception that the Oscillator is kept running evtl. muss ich von extern Takten, das HF-Modul hat ja 10MHz. Es gibt leider keine Gegenüberstellung der Modi bezüglich des Stromverbrauches. Mir ist sehr wohl bewusst, dass dieser von der Betriebsspannung und von der Taktrate abhängig ist, aber in Datenblättern anderer Controllerhersteller sind diagramme angegeben gewesen. Danke für Hilfe auch hierzu?
lt. Datenblatttabelle: Active 8 MHz, VCC = 5V (ATmega32) sind es 12mA typisch. Ich habe immer um die 20mA für einen Controller. z.B. wenn ich ihn im Programmieradapter habe und vom Netzteil aus speise. Wo liegt mein Fehler? Dabei bin ich im Active mode, dabei habe ich auch 8MHz.
Hier gibts eine Übersicht der verschiedenen Modi: http://www.mikrocontroller.net/articles/Sleep_Mode#Batterielebensdauer Danach bleibt beim Standby der interne Oscilator aktiv. Ich benutz bei meinem Tiny auch den internen Takt und hab keine Probleme mit dem power down Modus. Solange dir die Aufwachzeit genügt, würde ich den Modus empfehlen, da der am wenigsten verbraucht.
@ verwirrter Anfänger: Könntest du deinen Source bitte online stellen? Konntest du vorhandenen Source direkt nutzen mit einem Software SPI des tiny? Ich hab in der letzten Zeit versucht das ganze mit einem tiny44 anzusteuern, aber irgendwie keinen Erfolg gehabt. Mit dem mega8 lief es direkt... Vielen Dank
Der Verbrauch hängt stark davon ab, welche Komponenten des Chips aktiviert sind und was der Chip gerade macht, standardmäßig sind das glaub ich alle an. Hat der Programmieradapter vielleicht auch noch andere Komponenten? LEDs, Widerstände an irgendwelchen Pins, die gerade Output sind? Ist VCC an dem Programmieradapter wirklich 5V oder ist das 5.15V, 5.25V? Alles zusammen kann durchaus was ausmachen.
@Matthias Ich werd die gleich mal ein bischen aufräumen und kann die online stellen. Das ganze ist allerdings keine wirklich ordentliche Library. Ich hab mir das ganze selbst zusammengesucht und je nach Projekt entwickel ich das weiter. Der Code für den Sender benutzt eine Software SPI und kann nur Senden (Blocking, ohne Interrupts). Ich hab auch noch eine andere Version für den Mega1284P, der benutzt Hardware SPI, kann Senden und Empfangen, und benutzt einen simplen Buffer und Interrupt, um längere Sachen zu senden, ohne den Programmfluß zu blockieren. Man sollte ohne Probleme den Software SPI vom Tiny mit der Interrupt Routine des Megas kombinieren können. Welche Variante bräuchtest du?
Verwirrter Anfänger schrieb: > Bevor ich > in den POWER_DOWN Mode gehe schalte ich alle Pins auf input um. Mit unbeschalteten Pins sollte man dies nicht tun. Alle Pins sollten einen festen Pegel haben und keinen Strom treiben.
@verwirrter: Die Tiny-Variante mit dem Software SPI bitte :) Danke
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.