Welchen AVR für batteriebetriebenen Funksensor?

OP (Firma: brickwedde.dev) #1828632
Lesenswert?

Hallo,

ich bastel z.Z. an meinem ersten uC Projekt. Habe mir ein AVR-Net-IO und 
RFM12 Module besorgt und will damit Funktelegramme in's IP-Netzwerk 
einspeisen. Die Funktelegramme sollen von mehreren Sensoren aus'm Haus 
kommen.

Mittlerweile kann ich mit einem ATtiny2313 und RFM12 Funktelegramme zum 
Net-IO senden und dort per UART ausgeben. Leider benötigt der ganze 
RFM-Krams jetzt schon ein knappes kilo an Flash. Die One-Wire Library 
nochmal über 800 Byte. Da bleibt jetzt kaum noch Platz um alles zusammen 
zu bringen. Jetzt wollte ich mir den 4313 besorgen, aber den habe ich in 
keinem Shop gefunden.

Kann mir jemand eine Empfehlung für einen anderen ATtiny/mega 
aussprechen? (Am besten mit Bezugsquelle mit Lagerbestand). Der Sensor 
soll mit 3 Mignons betrieben werden und einmal die Minute den 
Temperaturwert (evtl. stattdessen Fensterkontakte und Wasserstände) 
senden. Da ich wenig Erfahrung mit Schaltungsdesign habe sollte er sich 
möglichst ohne viel externe Komponenten schlafen legen lassen.

Für's RFM benötige ich 5 I/Os, 1 I/O für One-Wire und 2 I/Os für LEDs.

Gruss

...Alex
Persönliche Seite #1829639
Lesenswert?

Alexander Brickwedde schrieb:
> Ein interner Taktgeber wäre sinnvoll.

Ich glaube, den haben ALLE AVRs drin.
Mir ist noch keiner untergekommen, der keinen hatte.

Den ATMEGA88p hatte ich mal in einem Fahrradcomputer verbaut, 
funktioniert theoretisch heute noch mit der gleichen Batterie(1 Jahr 
alt), nur leider ist der Reedkontakt kaputt.

Nimm doch den.

Mit freundlichen Grüßen,
Valentin Buck
#1829663
Lesenswert?

Für batteriebetriebene Sachen nimmt man normalerweise die TI MSP430, die 
sind in dieser Beziehung ungeschlagen. Selbst im Low Power Mode 3 (das 
ist noch nicht der niedrigste) kommt man ohne große Probleme auf 50nA 
Stromaufnahme.

Bei Atmel mußt Du nach dem Stichwort "Pico Power" suchen. Das sind die 
Teile mit einem P am Ende. A am Ende bezeichnet ein neues Release in 
einer geschrumpften Geometrie mit einem etwas moderneren 
Halbleiterprozess.

Für Dich wäre also etwas in Richtung Mega 88PA oder 168PA interessant.

fchk
Gast #1829690
Lesenswert?

Deine Entscheidungsfindung beginnt früher, bei der Stromversorgung.
Das RFM12 erlaubt von 2.2 bis 5.5V, bietet sich also zur direkten 
Versorgung aus einem LiIon Akku oder 3 Mignonzellen an.
Dann sollte der uC das auch können, von mindestens 3 bis 4.5V zu 
arbeiten.-
Das RFM12 braucht viel Strom, wenn der Oszillator an ist. Man wird ihn 
also nur kurz zum Senden einschalten. In der Zwischenzeit darf die 
Elektronik schlafen, aber man braucht einen Aufwach-Timer. Das können 
die meisten PIC oder AVR.
Es bleibt ein Stromverbrauch von 300nA (RFM12) und 300nA (AVR, alles aus 
nur der Watchdog weckt ihn zyklisch auf, er guckt nach ob er was zu tun 
hat, und legst sich wieder schlafen).
Schon normale Spannungsregler brauchen mehr, sogar energiesparende wie 
LP2950.
Batterieladezustandskontrolle übernimmt netterweise der RFM12.
Der direkte Anschluss an die Batterie ist also der beste Weg, um 
möglichst lange mit einer Batterie auszukommen, und 99% der Zeit bitte 
Schlafen im Sleep-Mode, sowohl der uC als auch der RFM12.
Moderator Persönliche Seite #1829705
Lesenswert?

Frank K. schrieb:
> Selbst im Low Power Mode 3 (das
> ist noch nicht der niedrigste) kommt man ohne große Probleme auf 50nA
> Stromaufnahme.

Wobei das Augenauswischerei ist. ;-)  Hast du dir schon mal den
äquivalenten Selbstentladestrom deiner Batterien angesehen?  Eine
LR03 hat vielleicht 800 mAh, die wird von einem Laststrom von 1 µA
in knapp 10 Jahren entladen...

Vermutlich wird hier der regelmäßige Betrieb des Senders sowieso
das sein, was am Ende am meisten Energie verbraucht.  Das wesentliche
Feature von Picopower ist übrigens, dass man die Bandgap-Referenz
für den Brownout-Detektor nicht mehr die ganze Zeit mitlaufen lassen
muss, sondern dass diese nur beim Aufwachen der CPU hochgefahren
wird (aber noch so rechtzeitig, dass die CPU noch nicht anfängt zu
arbeiten, bevor der Brownout-Detektor entscheiden konnte, ob er doch
mit einem Reset zuschlagen muss).  Wenn man den Brownout-Detektor
gar nicht einschaltet, ist der Unterschied gar nicht mehr so groß.

Was man nicht unterschätzen sollte ist die Leitfähigkeit feucht
gewordener Flussmittelreste.  Sowas kann schnell mal eine Größenordnung
über dem Sleep-Strom des Controllers liegen.
Gast #1830637
Lesenswert?

Moin,

Danke für Eure Beiträge. Ich habe nochmal ein wenig Hirnschmalz 
verbraucht, da ich meine Schaltung ungern umbauen und 14 Euro für den 
mega88 hinlegen (einziges Shopping-Ergebnis bei Google für die -PU 
Variante 4 Euro plus 10 Versand) möchte.

Eine anderer One-Wire Source ist nach ein wenig optimierung mit ca. 500 
Byte klargekommen. Insgesamt (One-Wire auslesen, Datenpaket bauen und 
absenden) liege ich jetzt bei ca. 1700. Benötige jetzt nur noch den Code 
zum schlafen legen, das sollte doch passen. Gibt's für schlafen legen 
des tiny2313 irgendwo ein Code-Beispiel ???

...Alex
Moderator Persönliche Seite #1830701
Lesenswert?

Alexander Brickwedde schrieb:
> einziges Shopping-Ergebnis bei Google für die -PU
> Variante 4 Euro plus 10 Versand

Naja, vielleicht solltest du ja lieber die Shops selbst aufsuchen,
statt auf Gugel zu vertrauen.  Bei CSD bekommst du das deutlich
billiger, mit deiner jetzigen Codegröße würde dir ja wohl ein
ATmega48 schon genügen oder ein ATtiny44 (ist noch kleiner).

> Gibt's für schlafen legen
> des tiny2313 irgendwo ein Code-Beispiel ???

Was genau hast du denn am Datenblatt bzw. an bestehenden Beispielen
für andere AVRs nicht verstanden?
Gast #1831039
Lesenswert?

Jörg Wunsch schrieb:
> Was genau hast du denn am Datenblatt bzw. an bestehenden Beispielen
> für andere AVRs nicht verstanden?

OK, habe mich gerade mal eingelesen. Ich habe es soweit verstanden, dass 
ich mit Timer2 und externem Quarz den Controller 2s schlafen legen kann. 
Der Code dazu ist ja echt übersichtlich.

Ohne externen Quarz gibt's vermutlich keine Lösung? Oder wenn ich ihn 
nur alle 2 Min. aufwecken will müsste ich das mit einem externen Timer 
und INTx machen, korrekt?

...Alex
Moderator Persönliche Seite #1831127
Lesenswert?

MaWin schrieb:
> Benutze den Watchdog für echten Schlaf.

Ach, wird der mit der Umgebungsluft betrieben?

Nur zum Vergleich, bei einem ATmega1281 braucht der Controller im
power-save was um die 2,5 µA, im power-down mit Watchdog-Oszillator
dagegen um die 6 µA.  Dazu kommt, dass der Watchdog-Oszillator
mit Spannung und Temperatur ein gutes Stück wegläuft, 2 % sind da
schon mal drin.

Allerdings hat der ATtiny2313, der es ja hier auf Biegen und Brechen
sein muss, keinen power-save-Mode, da er keinen externen 32-kHz-Quarz
treiben kann.  Damit bleibt für den natürlich wirklich nur der
Watchdog.
Gast #1831189
Lesenswert?

Jörg Wunsch schrieb:
> Allerdings hat der ATtiny2313, der es ja hier auf Biegen und Brechen
> sein muss, keinen power-save-Mode, da er keinen externen 32-kHz-Quarz
> treiben kann.  Damit bleibt für den natürlich wirklich nur der
> Watchdog.

Na, dann habe ich ja jetzt die für mich passendste Lösung. Und ob's 2 
oder 6µA werden ist mir relativ, 2 oder 3 Mignons sollten das lange 
genug halten können...

Danke...

...Alex
Gast #1832133
Lesenswert?

Hi,

kurzer Status: Habe doch alles in den 2313 rein bekommen. Watchdog lässt 
uC alle 2s aufwachen, alle 60s weckt er den RFM12 auf und sendet die 
Werte der gefundenen One-Wire Sensoren raus und legt den RFM wieder 
schlafen. Im Schlafmodus zeigt mein Multimeter 0,04mA. Alles zusammen 
bin ich jetzt bei ca. 1900 Byte.

Vielen Dank für Eure Beiträge.

...Alex
Moderator Persönliche Seite #1832268
Lesenswert?

Alexander Brickwedde schrieb:

>> aber ich würde hier dem Multimeter erstmal nicht
>> über den Weg trauen.
>
> Im Leerlauf (offene Strippen) zeigt es 0,02mA !

Also für diesen Strommessbereich komplett untauglich.

Ich hole mir dafür immer das alte Uni 11e aus der Ecke.  Die
analoge Mittelwertbildung des mechanischen Messwerks mittelt noch
ganz gut über Stromspitzen, und man kann Ströme auch unter 100 nA
noch abschätzen.

> Aber für meine Zwecke
> reicht es aus...

Naja, für diesen hier (Schätzung des Schlafstroms) eben nicht mehr.
Du kannst nur noch feststellen, dass da was fließt, aber hast kein
Gefühl mehr, ob es nun 10, 20 oder 30 µA sind.  Für eine LR03 sind
30 µA schon recht viel, die wäre allein durch den Ruhestrom dann
nach ca. 3 Jahren alle.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren