Hi, ich hab vor einiger Zeit einen kleinen Temperatursensor auf Basis des attiny 45 und RFM12 gebastelt. Eigentlich bin ich ganz zufrieden damit, der Sensor läuft mit einer Knopfzelle für ein paar Monate ohne Probleme. Jetzt hat mich allerdings der Ehrgeiz gepackt, und ich will wissen, ob ich es schaffe den nur mit einem Goldcap für einen Monat laufen zulassen. Zur Zeit läuft der seit 23 Stunden mit einem 1F cap. Eine Möglichkeit die mir einfällt um den Verbrauch weiter zu reduzieren, wäre den tiny durch einen MSP430 auszutauschen, die sollen ja nochmal eine Ecke sparsamer sein. Ich frag mich allerdings, ob das viel Unterschied macht, wenn der Sensor die meiste Zeit schläft. Eckdaten: Stromverbrauch aktiv: ~ 10mA +/- 5mA (Habe gerade kein Oszi um das genauer zu messen) Stromverbrauch schlafend: ~ 1.2 uA (Ich trau meinem Multimeter in dem Bereich nichtmehr so genau) Verhältnis aktiv / schlafen: ~ 1 / 75.000 Gebrauchte Hardware: ADC, INT0, evtl. SPI (bitbanged) Um den Tiny wieder aufzuwecken benutz ich den Wake Up timer des RFM12. Hat jemand schon Erfahrungen gemacht, ob in diesem Bereich ein MSP430 einen großen Unterschied zu dem ATtiny machen würde? Falls sich jemand für die Entladekurve des Caps interessiert, kann man die hier sehen: http://www.justgeek.de/automation/sensor.php?type=bandgap&w=1800&h=1100&max=400&min=200&invert=1&d=36 Node 7 ist der entsprechende Sensor.
@ Verwirrter Anfänger (Gast) >eine Ecke sparsamer sein. Ich frag mich allerdings, ob das viel >Unterschied macht, wenn der Sensor die meiste Zeit schläft. Mal rechnen? >Stromverbrauch aktiv: ~ 10mA +/- 5mA (Habe gerade kein Oszi um das >genauer zu messen) >Stromverbrauch schlafend: ~ 1.2 uA (Ich trau meinem Multimeter in dem >Bereich nichtmehr so genau) Kommt hin. >Verhältnis aktiv / schlafen: ~ 1 / 75.000 >Gebrauchte Hardware: ADC, INT0, evtl. SPI (bitbanged) >Hat jemand schon Erfahrungen gemacht, ob in diesem Bereich ein MSP430 >einen großen Unterschied zu dem ATtiny machen würde? Mal anders herum gefragt. Wieviel sparsamer müsste der MSP430m sein, damit sich das lohnt? 1s Arbeiten, 75.000 schlafen, ist fast ein Tag. 1s*10mA + 75.000 * 1.2uA = 10mC + 90mC. Hmmm. Der Brocken liegt also beim Schlafen. Aber auch aktuelle AVRs kommen mit Power Down auf 300nA oder so, also nochmal 1/4 deines Messwertes. Muss man halt die Regeln für Ultra low power und [[Sleep Mode]] beachten. MFG Falk
PIC12LF1822 im SLEEP (Timer, Brownout, etc aus): 20nA bei 1,8V 30nA bei 3V aktiv (ohne Peripherie): 2µA bei 31 kHz und 1,8V 4µA bei 31 kHz und 3V Es gibt bei Microchip noch mehr Prozessoren mit der XLP-Technologie.
Danke für die schön strukturierte Antwort! Falk Brunner schrieb: > @ Verwirrter Anfänger (Gast) > >>eine Ecke sparsamer sein. Ich frag mich allerdings, ob das viel >>Unterschied macht, wenn der Sensor die meiste Zeit schläft. > > Mal rechnen? Naja, nach Datenblatt scheint beim Tiny der Verbrauch im powerdown bei 3.3V um ca. 100 nA höher zu sein, das ist jetzt allerdings geschäzt aus den Kurven. > >>Stromverbrauch aktiv: ~ 10mA +/- 5mA (Habe gerade kein Oszi um das >>genauer zu messen) >>Stromverbrauch schlafend: ~ 1.2 uA (Ich trau meinem Multimeter in dem >>Bereich nichtmehr so genau) > > Kommt hin. > >>Verhältnis aktiv / schlafen: ~ 1 / 75.000 >>Gebrauchte Hardware: ADC, INT0, evtl. SPI (bitbanged) > >>Hat jemand schon Erfahrungen gemacht, ob in diesem Bereich ein MSP430 >>einen großen Unterschied zu dem ATtiny machen würde? > > Mal anders herum gefragt. Wieviel sparsamer müsste der MSP430m sein, > damit sich das lohnt? > > 1s Arbeiten, 75.000 schlafen, ist fast ein Tag. > > 1s*10mA + 75.000 * 1.2uA = 10mC + 90mC. > > Hmmm. Der Brocken liegt also beim Schlafen. Aber auch aktuelle AVRs > kommen mit Power Down auf 300nA oder so, also nochmal 1/4 deines > Messwertes. Muss man halt die Regeln für Ultra low power und Sleep > Mode beachten. Ich vermute, dass ein Teil des Restes auf den RFM12 geht (der muss ja zumindest den Timer weiterlaufen lassen) und vielleicht ein kleiner Teil über pullups und den Entkopplungs Kondensator verloren geht. Es aber ist natürlich durchaus noch möglich, dass es in meinem Code auch noch Verbesserungsmöglichkeiten gibt. Das Verhältnis ist etwa 1-2ms Messen, Rechnen, Funken zu 150s schlafen. Angenommen ich nutze den AVR bereits effektiv und der Unterschied besteht im power down im Schnitt aus 150nA (Der Verbrauch beim MSP430 scheint erheblich weniger von der Spannung abzuhängen als beim Tiny). Ausserdem scheint der MSP430 im aktiven Zustand ca. 1mA weniger zu verbrauchen. Dann würde sich ergeben: 1s * 10mA + 75.000 * 1.2uA = 10mC + 90mC = 100 mC vs 1s * 9mA + 75.000 * 1.05uA = 9mC + 78.75mC = 87.75mC also eine Verbesserung um ca. 12%. Hierbei ist noch nicht eingerechnet, ob das Auschalten der Peripherie bei beiden Chips gleichviel ausmacht, ob die ADC Berechnungen gleich lange brauchen und ob der Umstieg evtl. andere Folgen hat. Stellt sich nur für mich wiederum die Frage, gibt es irgendeinen solchen Grund, der den MSP interessanter machen würde? Und machen die 12.25mC über 20h überhaupt einen Unterschied, ist die Selbstentladung des Kondensators um soviel höher, dass das nicht relevant ist? Ich wunder mich halt gerade etwas, wieso bei dem MSP 430 immer so die Sparsamkeit hervorgehoben wird. Ciao, VA
usuru schrieb: > PIC12LF1822 > > im SLEEP (Timer, Brownout, etc aus): > 20nA bei 1,8V > 30nA bei 3V > > aktiv (ohne Peripherie): > 2µA bei 31 kHz und 1,8V > 4µA bei 31 kHz und 3V > > Es gibt bei Microchip noch mehr Prozessoren mit der XLP-Technologie. Der sieht schon sehr interessant aus! Um den direkt zu Vergleichen: Active, 8mhz, 3V: ATtiny : 2.8mA MSP 430: 2.0mA PIC : 0.9mA Powerdown, 3V: ATtiny : 250nA MSP 430: 80nA PIC : 30nA passt das in etwa, oder ist das irgendwo unfair? Dann werd ich mir den PIC mal genauer angucken. P.S. mir ist schon klar, dass das nur wirklich Sinn macht wenn ich auch den Rest der Peripherie reduzieren kann, aber das ist jetzt vor allem eine Ehrgeiz Sache geworden, und hat nicht mehr viel mit Sinn und Verstand zu tun ;-)
frage am rande, was steckt da für ein system hinter der ganzen geschichte.. also sensoren welche über funk angesteuert werden, wer oder was bereitet die php daten auf? wär echt toll da mal ein paar details zu bekommen, meinetwegen auch schlagworte um sich mal umzusehn?
Ok, kurzer Überblick: Das Ganze ist mein erstes richtiges Projekt und immer noch nicht fertig ;-) Grundsätzlich ist das ganze ein Home Automation System, allerdings unter den Constraints "Student", d.h. - billig - kleine Wohnung - keine baulichen Veränderungen - learning-while-doing Das Kernstück ist ein Arduino mit Ethernetshield und selbstgebauten Controllshield. Der Plan ist das ganze durch ein selbstgemachtes Board zu ersetzen, und den Arduino wieder zum Prototypen zu nutzen, aber ich bin noch nicht dazugekommen mich mit AVR und Ethernet zu beschäftigen. Das Controllshield hat: 1 Temperatursensor (NTC) 2 Optokoppler um externe Geräte zu schalten 1 IR empfänger 1 IR Sender 2 Anschlüsse für externe Temperatursensoren 1 RFM12 Funksender 1 LED Die Temperatursensoren sind wie oben beschrieben ein Tiny 45 + RFM12 plus NTC und passen in eine alte Filmdose, die sind durch die Wohnung verteilt Grundsätzlich was kanns: - Knopfdrücke simulieren (Optokoppler, z.B. Computer anschalten in dem Frontknopf "gedrückt" wird) - Funksteckdosen an und ausschalten (RFM12, OOK modus) - IR Commandos senden (Stereoanlage) - Regelmäßige Updates an einen Server senden) - Reagieren wenn etwas passiert / nicht passiert (z.B Server antwortet seit 20 min nicht mehr auf Ping => schalte Steckdose einmal aus und wieder an) - Befehle per IR, Funk, Uart oder Ethernet entgegen nehmen. Serverseitig läuft das ganze so ab, dass der Controller in einer Tabelle alle Sensorwerte speichert, die reinkommen, und die gesammelt alle 3 Minuten an meinen Webserver schickt. Der speichert die in einer SQL Datenbank ab (SQLite, zur Zeit zum testen), und stellt die dann nach aussen zur Verfügung. Weil ich mit den AVR nur IP Adressen direkt ansprechen kann, aber mein Server nur per Domain Name zuverlässig erreichbar ist, sitzt dazwischen noch ein WRT54GL router mit Tomato Firmware drauf, der den Befehl per CGI Skript umleitet. Auf dem Server läuft alles in PHP, die Graphen werden direkt per PHP als SVG erstellt, die Abfragen an den Arduino werden mit curl weitergeleitet, der Arduino ist per dyndns Adresse erreichbar. Ansonsten ist alles Standard HTML mit sowenig Javascript wie möglich. Die Controllseite gibts hier: http://www.justgeek.de/automation/info.php (abgespeckte Version für Demo Zwecke) die ist leider etwas sehr langsam wegen der SQLite Datenbank dahinter. Geplante features: - Lichtsteuerung (zur Zeit kann ich über die Funksteckdosen Lichter ein / aus schalten, aber nicht dimmen und keine RGB werte eingeben) - Integration mit meinem Wecker (wenn es Zeit ist aufzu stehen wird langsam der Raum heller gemacht, oder wenn man Nachts aufsteht, werden automatisch ein paar Lichter angemacht, nach dem Aufstehen wird automatisch Computer und Kaffemaschine angemacht ...) - Ein paar schönere Funkschalter, die aussehen wie normale Wandschalter - Automatische Heizungssteuerung durch die Funksensoren - ... ?
Brauchst Du denn wirklich 8 MHz??? Egal ob PIC oder AVR: bei niedriger Spannung und langsameren Takt sinkt der Stromverbrauch dramatisch. Wenn der PIC mit 31 kHz läuft braucht er 4 µA, bei 8 MHZ braucht er 350 µA und bei 32 MHz braucht er 1.6 mA (alles bei 3V). Wenn Du also bei DEINEM Prozesssor bleiben willt, dann arbeite bei 3 V und macht den Takt so langsam wie möglich. Wobei noch zu sagen ist, dass der interne Oszillator meistens sparsamer ist als der Oszillator für den Quarz (alledings nicht so genau - brauchts Du höchst exakte Zeiten?).
hey, du hast da ja nen ziemlich tolles system aufgebaut.. - ich hab selbst genau die gleichen "constraints" wie du, bin momentan mehr oder weniger in der planungsphase für nen ganz ähnliches projekt... irgendwie fehlt auch etwas die zeit dazu, neben dem studium.. allerdings plane ich das ganze mit nem NetIo aufzuziehen, ohne extra webserver, auch mehr zur fernsteuerung als zur fernüberwachung.. jedenfalls will ich mich demnächst mal mit dem aufbau von nem rfm12 protokoll beschäftigen.. hast du da was selbstgebautes im einsatz, oder gibts irgendwelche sourcen, auf denen du aufgebaut hast? MfG
usuru schrieb: > Brauchst Du denn wirklich 8 MHz??? Egal ob PIC oder AVR: bei niedriger > Spannung und langsameren Takt sinkt der Stromverbrauch dramatisch. > > Wenn der PIC mit 31 kHz läuft braucht er 4 µA, bei 8 MHZ braucht er 350 > µA und bei 32 MHz braucht er 1.6 mA (alles bei 3V). > > Wenn Du also bei DEINEM Prozesssor bleiben willt, dann arbeite bei 3 V > und macht den Takt so langsam wie möglich. Wobei noch zu sagen ist, dass > der interne Oszillator meistens sparsamer ist als der Oszillator für den > Quarz (alledings nicht so genau - brauchts Du höchst exakte Zeiten?). Ich benutz den internen Oszillator, genaue Zeiten brauch ich gar nicht. Ich denke ich könnte auf 1 mhz runtergehen, aber bei 32 khz hab ich zwei Bedenken: - Ich bin mir nicht sicher, ob der SPI des RFM12 moduls mit so langsamen Takt noch arbeitet, insbesondere, falls ich den in Software durchführe - Ich bin mir nicht sicher, ob ich dem RFM12 bei der Geschwindigkeit noch schnell genug die Daten liefern kann, insbesondere, wenn der SPI auch langsamer ist. Ich denke ich könnte das mal überprüfen, wenn ich mir endlich mal ein Logikanalysator besorgt habe. Allerdings frage ich mich auch, ob das soviel einspart, da ich ja bei 32kHz wahrscheinlich auch länger auf die ADC Ergebnisse warten müsste, und dadurch länger im aktiven Modus bleiben würde.
Oo schrieb: > allerdings plane ich das ganze mit nem NetIo aufzuziehen, ohne extra > webserver, auch mehr zur fernsteuerung als zur fernüberwachung.. Bei mir war halt klar, dass ich die Daten auch abspeichern will, und dadurch hat sich der externe Server ziemlich gut angeboten. Wenn du allerdings die CSS und JS dateien auslagern kannst, könnte das glaub ich ganz gut auf dem NetIo klappen. Was bei mir viel Programmspeicher und RAM wegnimmt sind die diversen Befehle im Sinne von "Wenn der IR Code 0x4223 ankommt sende OOK Befehl 8484", etc... > jedenfalls will ich mich demnächst mal mit dem aufbau von nem rfm12 > protokoll beschäftigen.. hast du da was selbstgebautes im einsatz, oder > gibts irgendwelche sourcen, auf denen du aufgebaut hast? Ich hab mit den Code von Jeelabs angefangen (http://jeelabs.net/projects/cafe/wiki/RF12) aber während ich versucht hab den zu verstehen mir meinen eigenen parallel geschrieben. Mein Code ist teilweise etwas unelegant, weil ich den auch auf einem Tiny2313 und Tiny13 zum laufen bringen wollte, aber dafür hab ich halt inzwischen fast alles gut verstanden. Grundsätzlich hab ich mein Protokoll ziemlich standardmäßig aufgebaut: 2 Byte: Preambel / Sync Byte 1 Byte: Länge 1 Byte: Sender ID 1 Byte: Empfänger ID 1 Byte: Flags (REPLY_REQUESTED, IGNORE_CRC,...) 1 Byte: Message Type 2 Byte: Message ID x Byte: Daten 2 Byte: CRC Ich denke im nachhinein würde ich Sender und Empfänger tauschen, dann kann man ein Byte früher aufhören, wenn die Nachricht nicht für dich bestimmt ist. Die Flags und der Message Type sind vor allem auch dafür da, um den Verarbeitungsaufwand zu verringern, wenn einer der beiden Teilnehmer nicht genug Speicher, RAM oder Energie hat. Und die Message ID wird zur Zeit zwar hochgezählt, aber beim Empfang ignoriert. Wenn ich irgendwann mal soweit bin ein echtes routing aufzubauen, soll die dafür genutzt werden doppelt einkommende Nachrichten zu ignorieren. Das Senden mach ich bei den Sensoren zur Zeit blockierend, weil ich sowieso schlafen gehen will, sobald der Versand fertig ist. Ich hab allerdings auch schon interrupt basierten Code dafür. Ich hab schon länger vor, das ganze mal schön aufzuschreiben, und den Code zu veröffentlichen. Ich kann dir aber gerne auch schon vorher was zuschicken.
Ich hab ger Falk Brunner schrieb: > Hmmm. Der Brocken liegt also beim Schlafen. Aber auch aktuelle AVRs > kommen mit Power Down auf 300nA oder so, also nochmal 1/4 deines > Messwertes. Muss man halt die Regeln für Ultra low power und Sleep > Mode beachten. Ich hab gerade mal einen älteren Sensor genommen, den Funk Code auskommentiert, und nur den Verbrauch des Tinys und der anderen passiven Komponenten gemessen. Dann zeigt mein Multimeter nur noch 0.1 uA an, allerdings ist das mit Vorsicht zu genießen, da der kleinste Messbereich von 0-200uA geht. Ich würde aber anhand dieser Ergebnisse schätzen, das der Großteil des Verbrauchs im schlafenden Zustand auf den RFM12 zurückzuführen ist. Ich werde da mal gucken was sich an den Einstellungen drehen lässt, und ob es evtl. sinnvoller ist den Tiny ein paar mal per watchdog wieder aufzuwecken, anstatt den timer des RFM12 zu nutzen. Ich werd auch mal versuchen die Geschwindigkeit auf 1 MHz zu reduzieren, allerdings muss ich damit warten, bis der Kondensator endlich alle ist, damit ich das dann gleich komplettt testen kann. Ciao, VA
> Dann zeigt mein Multimeter nur noch 0.1 uA an, > allerdings ist das mit Vorsicht zu genießen, > da der kleinste Messbereich von 0-200uA geht. Allerdings, das ist ja gerade 1 Digit. Ich habe mir das da nachgebaut http://alternatezone.com/electronics/ucurrent/ und finde es für Messungen von kleinen Strömen ideal.
Verwirrter Anfänger schrieb: > Stellt sich nur für mich wiederum die Frage, gibt es irgendeinen solchen > Grund, der den MSP interessanter machen würde? Sehr schnelles aufwachen aus dem Schlafmodus, 16Bit CPU, integerierter VLOCLK (12kHz), JTAG,
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.