ATmega328P energiesparend verwenden

Hallo,

ich habe bisher immer nur mit Arduino (-Klonen) zu tun gehabt und möchte gerne versuchen, einen ATmega328P einzeln zu verwenden, mit minimalistischer Beschaltung. Am Ende möchte ich einen Batterie-betriebenen (3x Mignon) Funk-Tür-Magnetschalter erstellen, der möglichst wenig Strom verbraucht (und dafür hauptsächlich schläft).

Ich habe schon etliche Tutorials und Forenbeiträge gelesen, aber da jeder eine andere Zielsetzung hat, bin ich mir nicht sicher, ob meine Beschaltungs-Idee so funktioniert, wie ich es mir vorstelle, und außerdem werden meistens keine konkreten Werte der Glättungskondensatoren genannt. Durch meine Nachfrage hier wollte ich auch sicher gehen, bevor ich etwas falsches bestelle, ansonsten hätte ich manches vielleicht durch ausprobieren lösen können.

Auf meiner Zeichnung fällt sicherlich auf, dass ich auf der rechten Seite die Pins für die analoge Stromversorgung nicht angeschlossen habe, da ich wohl keine analogen Pins benötige. Kann man das so machen?

Ferner möchte ich den internen Quarz verwenden und den Microprozessor mit verringerter Taktfrequenz betreiben, aus dem Grund habe ich die Pins XTAL1 und XTAL2 mit GND verbunden, wie es in den "Microcontroller Hardware Design Considerations" des Herstellers empfohlen wird.

Noch zwei Punkte sind mir völlig unklar:

  • Ist der 100nF-Kondensator an den Versorgungspins richtig gewählt? In den Beispiel-Schaltungen in der genannten Anleitung (allerdings für zwei andere Microprozessoren) wird einmal ein 100nF und beim anderen ein 100nF und 4.7uF parallel verwendet. Ich vermute, das wird nicht so wichtig sein!?
  • Dann wird noch empfohlen, einen ESD-Schutz am Reset-Pin zu verbauen, z.B. mittels einer Z-Ziode. Aber wie wird eine solche verbaut, und welches Modell konkret wäre passend? Bzw. ist das überhaupt sinnvoll?

Wenn du ihn mit herkömmlichen Batterien betreibst, kannst die die beiden 100nf auch weglassen. Die helfen da nichts.
Am Spannungseingang dienen die Kondensatoren meist nur 2 Dingen.
Glättung der "Ripple"-behafteten Versorgung durch Step-down-Schaltungen und ggf. Entstörung von Überlagerungen anderer Schaltungsteile ( HF z.B. ) auf Versorgungsspannung.
Größere Kondensatoren, z.B. 4,7µf oder auch mehr am Eingang können gut die Spannug stabilisieren, wenn die Stromquelle schwächelt und der Arduino plötzlich mal ein wenig mehr benötigt, wegen der Belastung der Ausgänge.
Die Batterien liefern dafür jedoch meist ausreichend stabile und vor allem ripplefreie Spannung, so das ich hier im ersten Step mal auf Kondensatoren verzichten würde, wenn es minimalistisch werden soll.

jmtc

Hallo,

die UB 100nF sollte man nicht weglassen. Die gleichen Spannungsschwankungen aus durch Schaltvorgänge im µC selbst. Die gehören übrigens an jeden Versorgungspin des µC. AREF und AVCC sollten auch angeschlossen werden. C2 kannste halbieren.
Nicht nur die XTAL Pins sollten auf Pegel gelegt werden sondern alle Eingänge. Auf welches Potential genau fürs Energie sparen müßte ich auch erst nachlesen. ESD Schutz wird wichtig wenn I/Os nach außen geführt werden, Steckverbindungen etc.

Hi,

den 100nF KerKo solltest Du nicht weglassen, auch im Battereibetrieb nicht. Da der eben nicht für den Ripple zuständig ist, sondern für den kurzzeitigen Strombedarf des Schaltkreises (328P). Er muss möglichst nahe dran sein. Es mag kurios klingen, aber jede Leiterbahn, jedes Stück Kabel stellt eine Induktivität dar, und die sorgt dafür, daß der Strom nur verzögert nachfließen kann (Wikipedia, Induktivität - Stromkurve). Der Elko wäre das nächstgrößere Depot, und soll nicht weiter als 10cm entfernt sein.
Auch solltes Du beide Vcc , sowie beide GND am IC verbinden.

Gruß André

100nf als Strompuffer.

Das ja mal ein Kraftwerk.

Kopfschüttel.

Bei den kurzen Leitungen wird das im Gigahertz - Bereich interessant.

Aber doch nicht bei 16Mhz, was für Spulen sollen das denn sein. 20m Leiterbahn ist da wohl kaum drin.

Aber die Kondensatoren gibt es in hübschen Farben. Wer´s mag.

skyfox60:
100nf als Strompuffer.
Das ja mal ein Kraftwerk.

Kopfschüttel.

Dann pass auf, daß Du kein Schleudertrauma bekommst, das ist schmerzhaft! :grin:

Wenn Du diesen 2cent KerKo weglassen willst, kannst Du es ja gerne tun, aber ich würde es niemandem empfehlen.

Gruß André

Vieleicht einen Blick in eine Applikation Node machen, aber es scheint, die hast dir eh schon durchgelesen.

P.S.: was ich IMMER vorsehen würde, wäre eine ISP Buchse.

Wieso willst Du eine eigene Schaltung bauen wenn es bereits Platinen gibt.
Wieso benutzt Du nicht einen Arduino MINI bzw PRO MINI?

Zu Stromsparen kannst Du den Controller zeitweise in den Sparmodus versetzen aber der Funkempfänger muß dauernd eingeschaltet sein um dauernd empfangen zu können und darum verbraucht er dauernd Strom.

Wieviel Strom verbraucht der Funkempfänger?

Grüße Uwe

Die nächste Frage wäre, wie willst du den Atmega aufwecken ?
Per Funk ? Dann müsste der immer empfangen und braucht auch Strom und zwar nicht wenig.

Am Ende möchte ich einen Batterie-betriebenen (3x Mignon) Funk-Tür-Magnetschalter erstellen

Lese ich als: Aufwachen über PIN-Pegel Änderung. Die Frage die sich mir aber stellt: ist der atmega ein guter Langzeit-Stromsparer? Alle 8 Sekunden aufwachen um wieder schlafen zu gehen? Gibts da nicht was besseres heute? ich mein wenn eh schon eine Platine gemacht wird.

24h Betrieb vs wie oft am Tag wird die Tür geöffnet? Wie lange läuft das Funkmodul, wie viel Strom wird da verbraucht?

noiasca:
Lese ich als: Aufwachen über PIN-Pegel Änderung. Die Frage die sich mir aber stellt: ist der atmega ein guter Langzeit-Stromsparer? Alle 8 Sekunden aufwachen um wieder schlafen zu gehen? Gibts da nicht was besseres heute? ich mein wenn eh schon eine Platine gemacht wird.

24h Betrieb vs wie oft am Tag wird die Tür geöffnet? Wie lange läuft das Funkmodul, wie viel Strom wird da verbraucht?

Und ist die "neue Technik" ähnlich einfach zu programmieren, wie ein Arduino ?

und außerdem werden meistens keine konkreten Werte der Glättungskondensatoren genannt.

Beidseitig, je ein 100nF
Also:
2 mal Vcc/AVcc und 2 mal GND anschließen!

Auf meiner Zeichnung fällt sicherlich auf, dass ich auf der rechten Seite die Pins für die analoge Stromversorgung nicht angeschlossen habe, da ich wohl keine analogen Pins benötige. Kann man das so machen?

Nein!

Ferner möchte ich den internen Quarz verwenden und den Microprozessor mit verringerter Taktfrequenz betreiben,

Es gibt keinen internen Quart.
Aber wohl einen (und mehr) internen RC Oszillator

aus dem Grund habe ich die Pins XTAL1 und XTAL2 mit GND verbunden, wie es in den "Microcontroller Hardware Design Considerations" des Herstellers empfohlen wird.

Oje...
Wozu soll das denn gut sein, der Unsinn?
Die Quelle hätte ich gerne mal gesehen.....

Denn die beiden Pins sind stinknormale IO, wenn du den Quarz außer Betrieb setzt.
Warum sollte man 2 normale Pins auf Grund zerren und die anderen schweben lassen?

Was man aber machen kann: Alle Pullup aktivieren!
Von allen Pins.

Reset benötigt auch keinen Kondensator oder Pullup, wenn da keine Leitung dran ist.
Bei langen Leitungen, ok, dann ist das richtig.

noiasca:
ist der atmega ein guter Langzeit-Stromsparer? Alle 8 Sekunden aufwachen um wieder schlafen zu gehen?

Gibts da nicht was besseres heute?

Ja.

Nein/vielleicht.
Das P im ATMega328P steht für Pico Power.
Das P kennzeichnet die stromsparenste AVR Variante.

Erfahrung:
ATMega328P an CR2032 Knopfzelle.
Deutlich über 4 Monate
1MHz intern
Uhrenquarz dran.
Sekundliches Wecken
WDT aus

was macht deiner im wachmodus?
Wie lange bleibt er wach?

P.s.: Kapitel 6: Unused XTAL Pins

was macht deiner im wachmodus?
Wie lange bleibt er wach?

  • Aufwachen
  • Led ein
  • RT Counter eine Sekunde weiter setzen
  • Led aus
  • Schlafen legen

War nur ein Testaufbau.
Hier beschrieben

P.s.: Kapitel 6: Unused XTAL Pins

Dumm nur, dass nach aktivieren des internen Oszillators die Pins keine XTAL Funktion mehr haben.
Keine XTAL Pins mehr sind.
Dann sind sie ganz normale IO Pins.
Bei passender Boarddefinition auch per dgitalWrite() usw nutzbar.

Erst die Verwendung mit Uhrenquarz (Timer2 im asynchron Mode) macht sie wieder zu XTAL Pins.

Gibt keinen Grund diese beiden Pins fest auf GND zu legen. (ganz im Gegenteil)
Lese das Datenblatt des ATMega328P! Das ist das Maß der Dinge.

Diese Ansage kann also nur irgendwelche exotischen AVR betreffen.
Nicht den ATMega328P

z.B. die ATXMega Reihe
Die hat einen automatischen Fallback auf intern, wenn der externe Takt versagt.

Wow, da komme ich ja fast nicht mit dem Lesen mit.

Also die Quelle für das XTAL wurde ja schon genannt (Kapitel 6: "Unused XTAL Pins If XTAL pins are not in use, they should be tied to ground. This helps to prevent unintentional behavior during device start-up"), aber wenn das nicht auf ATmega328P zutrifft, lasse ich es weg.
Auf der rechten Seite habe ich jetzt einen Kondensator zwischen AVCC und GND gesetzt, so wie ich es auch in den Beispielen der offiziellen Anleitung gesehen habe, oder muss zusätzlich auch AREF angeschlossen werden (wie Doc_Arduino es vorgeschlagen hatte)?
Bei den Eingängen (sind damit die "Analog Input"-Pins gemeint?) bin ich mir jetzt unsicher, soll ich die wie im Anhang eingezeichnet verbinden?
Und den Reset-Pin lasse ich jetzt einfach frei.

Und jetzt zur geplanten Arbeitsweise der Konstruktion: Der ATmega soll in festgelegten Zeitintervallen (z.B. 1 Sekunde) aufwachen und den Schaltzustand des Reed-Kontakts feststellen. Nur wenn es eine Änderung gibt soll das mit einem NRF24L01P kommuniziert werden. Dieser soll nur senden und nicht dauerhaft eingeschaltet sein.
Den NRF24L01P würde ich über einen Pin des ATmega328P mit zwischengeschaltetem Linearregler (LP 2950 ACZ3,0) versorgen, da das Funkmodul maximal 3.6V verträgt. Ergibt das einen Sinn?

Den Pro Mini möchte ich nicht verwenden, da ich davon ausgehe, dass dieser noch mehr Energie verbraucht. Ein ISP-Buchse habe ich nicht eingezeichnet, da ich vorhabe, den ATmega mit dem Arduino Uno zu programmieren und dann auf das Breadboard/die Platine einzusetzen.

der muss zusätzlich auch AREF angeschlossen werden (wie Doc_Arduino es vorgeschlagen hatte)?

Wenn du den ADC nutzen möchtest, dann benötigt der ARef auch einen 100nF Kerko

Und jetzt zur geplanten Arbeitsweise der Konstruktion: Der ATmega soll in festgelegten Zeitintervallen (z.B. 1 Sekunde) aufwachen und den Schaltzustand des Reed-Kontakts feststellen.

Ein Uhrenquarz ist genauer und benötigt weniger Strom, als der WDT.

(3x Mignon)
.....
Den NRF24L01P würde ich über einen Pin des ATmega328P mit zwischengeschaltetem Linearregler (LP 2950 ACZ3,0) versorgen, da das Funkmodul maximal 3.6V verträgt.

Warum nicht 2X Mignon?

Den NRF24L01P würde ich über einen Pin des ATmega328P mit zwischengeschaltetem Linearregler (LP 2950 ACZ3,0) versorgen, da das Funkmodul maximal 3.6V verträgt. Ergibt das einen Sinn?

Mir wird übel.
Ein Arduino Pin soll man nie zur Spannungsversorgung verwenden und auch noch einen Linearregler dazwischenzuschalten ist noch übler.

[EDIT]
Andere Sache:
Ich hatte auf einen Empfänger am ATMEGA gedacht und bin jetzt draufgekommen daß der Arduino senden soll.
[/EDIT]
Ok, mein Denkfehler. Du kontrollierst mittels Arduino ob eine Tür offen ist. zb ein Teil einer Funk-Alarmanlage.

Dazu:

  1. einen Käufliches Produkt nehmen das mit Arduino komunizieren kann?

  2. Arduino samt Sender über den Reedkontakt einschalten? oder brauchst Du eine Kontrolle ob der Arduino noch funktioniert zB als Sabotagekontrolle? Es gibt Reedkontakte als Öffner bzw ittels eines 2. Magneten kann ein Reedkontaktschließer zu einem Öffner werden. Es gibt auch Wechsler.

Grüße Uwe

uwefed:
Mir wird übel.
Ein Arduino Pin soll man nie zur Spannungsversorgung verwenden und auch noch einen Linearregler dazwischenzuschalten ist noch übler.

Ok, mein Denkfehler. Du kontrollierst mittels Arduino ob eine Tür offen ist. zb ein Teil einer Funk-Alarmanlage.

Uwe, kein Denkfehler.
Das lese ich aus seinem Post genau so raus.

Wenn es anders gemeint ist, soll der TO das besser und verständlicher beschreiben.

uwefed:
Mir wird übel.
Ein Arduino Pin soll man nie zur Spannungsversorgung verwenden und auch noch einen Linearregler dazwischenzuschalten ist noch übler.

Sorry dass dir übel wird. Wenn ich die Spannungsversorgung des Funkmoduls vom ATmega über einen Transistor steuere ist es besser, oder?
Den Wechsler kannte ich noch nicht. Ich möchte grundsätzlich auch unabhängig von der Alarmfunktion sehen, wenn man vergessen hat ein Fenster zu schließen und auch die Sabotagekontrolle soll umgesetzt werden.

combie:
Ein Uhrenquarz ist genauer und benötigt weniger Strom, als der WDT.

Warum nicht 2X Mignon?

Ich habe mich an folgendem Artikel orientiert, Abschnitt "Drei Mignonzellen ohne Spannungsregler":
https://www.mikrocontroller.net/articles/Versorgung_aus_einer_Zelle

Das mit dem Quarz werde ich mir ansehen.