Forum: Mikrocontroller und Digitale Elektronik Welchen AVR für batteriebetriebenen Funksensor?


von Alexander B. (Firma: brickwedde.dev) (alexbrickwedde)


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

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Wie wäre ein einfache Mega-8?
Das ist eigentlich DER Prozessor für kleinere und normale Sachen, wenns 
größer sein muss, nimm eben einen Mega32 oder noch größer.
Mit freundlichen Grüßen,
Valentin Buck

von Floh (Gast)


Lesenswert?

Valentin Buck schrieb:
> Wie wäre ein einfache Mega-8?
Für Batteriebetrieb ist der n bisschen senil geworden, eher mega88p oder 
so was.

@topic: was nutzt deine Software für integrierte Hardware des uCs? Daran 
würd ich mich orientieren, damit man nicht das ganze funktionierende 
wieder ändern muss.

von Alexander B. (Firma: brickwedde.dev) (alexbrickwedde)


Lesenswert?

Ich nutze keine speziellen I/O Funktionen. Für's RFM12 könnte ich SPI 
nutzen, wenn's verfügbar wäre...

...Alex

von Alexander B. (Firma: brickwedde.dev) (alexbrickwedde)


Lesenswert?

PS: Ein interner Taktgeber wäre sinnvoll. Meine aktuelle Schaltung 
besteht lediglich aus ATtiny2313, 3 Widerständen, 2 LEDs und dem RFM12.

von Valentin B. (nitnelav) Benutzerseite


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

von Alexander Brickwedde (Gast)


Lesenswert?

Wo gibt's den denn Lagernd???

Wo ist'n der Unterschied zwischen A, P und PA?

...Alex

von Frank K. (fchk)


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

von MaWin (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Alexander Brickwedde (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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?

von Christian Erker (Gast)


Lesenswert?

Valentin Buck schrieb:
> Ich glaube, den haben ALLE AVRs drin.
> Mir ist noch keiner untergekommen, der keinen hatte.

AFAIK haben die ganz uralten AT90S... keinen, nur einen Quarzoszillator.

Gruß,
Christian

von Alexander Brickwedde (Gast)


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

von MaWin (Gast)


Lesenswert?

> dass ich mit Timer2 und externem Quarz den Controller
> 2s schlafen legen kann

Dann braucht er immer noch Strom.

Benutze den Watchdog für echten Schlaf.

von Alexander Brickwedde (Gast)


Lesenswert?

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

Gute Idee, ist ja noch viel besser, als mit dem externen Timer. Danke.

...Alex

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Alexander Brickwedde (Gast)


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

von Alexander Brickwedde (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alexander Brickwedde schrieb:
> Im Schlafmodus zeigt mein Multimeter 0,04mA.

Wäre reichlich viel, aber ich würde hier dem Multimeter erstmal nicht
über den Weg trauen.

von Alexander Brickwedde (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> aber ich würde hier dem Multimeter erstmal nicht
> über den Weg trauen.

Im Leerlauf (offene Strippen) zeigt es 0,02mA ! Aber für meine Zwecke 
reicht es aus...

...Alex

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

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.