Welche Datenblatt-Version? Die von mir oben zitierte Fassung von November 2016 hat diese Angabe auf Seite 2 - dort ist angegeben "Power-down Mode: 0.1μA" - mit 1.8V bei 1MHz.
Das stimmt, nur wolln wa ja nich Äpfel mit Birnen vergleichen.
Welche Datenblatt-Version? Die von mir oben zitierte Fassung von November 2016 hat diese Angabe auf Seite 2 - dort ist angegeben "Power-down Mode: 0.1μA" - mit 1.8V bei 1MHz.
Das stimmt, nur wolln wa ja nich Äpfel mit Birnen vergleichen.
Ciao sagt der JoeamBerg
Wenn Ich mich da noch recht erinnere gab's da auch noch was mit der Konfiguration der unbeschaltenen Ports.
Die müssen auf einen bestimmten Zustand gebracht werden um Strom zu sparen.
Welcher das jetzt genau war weiss Ich jetzt leider nicht mehr genau - Sollte aber im Datenblatt stehen.
Ausserdem kann man ja alle nicht genutzte Peripherie abschalten. Jedes aktivierte Feature ( A/D Wandler, USART, ... ) zieht Strom.
In einer ELEKTOR gab's auch mal einen Artikel zur Stromminimierung bei AVR Controllern.
Ich habe nochmals gemessen und mit verschiedenen Messbereichserweiterungen für das Drehspulmesswerk. Ich habe im Power Down Mode den Messbereich auf 1mA festgelegt und gesehen, dass der Atmega328, bei 5V Betrieb, sogar etwas mehr als 600µA nimmt. Es sind etwa um die 700µA. In anderen Foren stellen User teils dasselbe fest. Beim Arduino Mini soll es wieder anders sein. Das ist aber auch ein ATmega328. Der Brown-Out Detector soll auch im Sleep-Mode Strom verbrauchen:
Das nächste wäre:14.11.3. Brown-Out Detector
If the Brown-Out Detector (BOD) is not needed by the application, this module should be turned off. If the
BOD is enabled by the BODLEVEL Fuses, it will be enabled in all sleep modes, and hence, always
consume power. In the deeper sleep modes, this will contribute significantly to the total current
consumption.
Der Watchdog-Timer:14.11.4. Internal Voltage Reference
The Internal Voltage Reference will be enabled when needed by the Brown-Out Detection, the Analog
Comparator or the Analog-to-Digital Converter. If these modules are disabled as described in the sections
above, the internal voltage reference will be disabled and it will not be consuming power. When turned on
again, the user must allow the reference to start up before the output is used. If the reference is kept on in
sleep mode, the output can be used immediately.
Den Watchdog und den Timer 1 benötige ich zum Aufwachen, die kann ich nicht abschalten, das wäre dann vermutlich nur mit einer externen RTC möglich.14.11.5. Watchdog Timer
If the Watchdog Timer is not needed in the application, the module should be turned off. If the Watchdog
Timer is enabled, it will be enabled in all sleep modes and hence always consume power. In the deeper
sleep modes, this will contribute significantly to the total current consumption.
Für diese Anwendung einer Lüftersteuerung spielt das jetzt keine so große Rolle, die Verbrauchswerte unter 4mA gehen im Verbrauch des Lüfters - 30 bis 80mA - praktisch unter. Dennoch ist es für mich die Gelegenheit, das dann jetzt auch mal auszuprobieren und zu messen. Ich habe auch nur am Kontroller selbst die Stromaufnahme gemessen, da kommt dieselbe Größenordnung raus, wie auf den andern Wegen bestimmt. Es sind 600 bis 750µA.
MfG
Moppi
- - - Aktualisiert - - -
Beim Einschalten des ATmega sind alle IOs im hochohmigen Zustand, bis dass sie mittels pinMode konfiguriert werden. Auch die internen Pull-Up-Widerstände müssen erst aktiviert werden. Sollten die aktiviert sein, um Strom zu sparen?
- - - Aktualisiert - - -
Und es kam noch etwas zutage, aus einem andern Forum:
Ich habe 328P-PU. Aber da müsste das Datenblatt "ATmega328/P" von 2016 doch das richtige sein.Are you using a '328 instead of a '328p? (a '328-PU is not a '328p, it's a '328 in DIP package; the corresponding p-spec part is '328p-pu.
MfG
Geändert von Moppi (20.11.2018 um 08:23 Uhr)
Mal ein bisschen Gebrabbel von mir - achso, das Letzte zuerst:.. der Atmega328, bei 5V Betrieb, sogar etwas mehr als 600µA .. Arduino Mini soll es wieder anders sein. Das ist aber auch ein ATmega328 ..Ein anders Forum? HIER sind die Spezialisten - - na gut, ich bin keiner... Und es kam noch etwas zutage, aus einem andern Forum: Ich habe 328P-PU. Aber da müsste das Datenblatt "ATmega328/P" von 2016 doch das richtige sein ..
Zu 328P-PU bzw. ATmega328/P :
Es gibt laut den typspezifischen Datenblättern zur 328er Familie mehrere Gehäuseformen:
28-pin 28P3, ein PDIP = Plastic Dual In line Package,
28-pin 28M1, ein VQFN = Very Thin Quad Flat (No Lead Package),
32-pin 32M1-A, ein MLF = Micro Lead Frame Package,
32-pin 32A, TQFP = Thin profile plastic Quad Flat Package
wobei z.B. der 28Pinner keinen Anschluss für ADC6 und ~7 hat, der TQFP-32 hat die natürlich. Den TQFP bekomme ich mit (m)einer kleinen 08er WEllerspitze noch bestens gelötet, der MLF geht wohl nur mit Heißluft/Reflow. Ansonsten - innendrinn sind die Teile immer gleich - Ausnahmen wie eben: ADC6/~7 ja oder nein bestehen.
Zu den Typen ATmega328/~328P gibts noch den ATmega328PB in gleichen Gehäuseformen; letzterer mit zusätzlichen Funktionen wie zweite UART und so.
Zu 328 und 328P:
In einer "Parametric Product Table" von Atmel aus 2007 habe ich nen Link gefunden auf "picoPower Technology" der aber heute in die www-Präsentationen von Microchip zielt. Dort, bei Microchip ist noch die AN2515 zu finden,
http://ww1.microchip.com/downloads/e...-00002515C.pdf
die auf Low-Power Techniken eingeht. @Moppi: sehr lesenswert. Und klar: WDT frisst einiges an Power, meist ohne dass die Anwendung benötigt wird *gg*.
Soviel ich weiß, wurde der Zusatzbuchstabe "P" von Atmel vor über zehn Jahren eingeführt um auf die hier zur Diskussion stehenden Low-Power-Möglichkeiten hinzuweisen.
Ansonsten ist der Unterschied der beiden Typen: 328 für -40°C to 85°C und 328P für TA = -40°C to 105°C. Unabhängig von der Gehäuseform des jeweiligen Teilchens. Deswegen nehme ich lieber die 328P-Version - mit Rücksicht auf meine Lötorgien zum Beispiel.
TLDR
Ciao sagt der JoeamBerg
Danke für die Infos. Ich nehme auch lieber die 328P-Version.
Dokument habe ich gespeichert, lese ich mir mal in Ruhe durch.
Jetzt habe ich es mal auf 1MHz-Takt abgesehen (und zwar hier). Damit sollte der Verbrauch auch runter gehen - hatte vor langer Zeit mal so was gelesen. Allerdings vermutlich nicht, wenn der ext. Takt im Sleep Mode sowieso abgeschaltet ist.
Falls das noch nicht ausreicht, nehme ich mal noch einen Spannungsteiler, um aus den 5V vom Regler 3.3V zu machen.
MfG
Geändert von Moppi (20.11.2018 um 16:19 Uhr)
Üblicherweise startet ja der Controller und durchläuft die Initialisierung.Beim Einschalten des ATmega sind alle IOs im hochohmigen Zustand, bis dass sie mittels pinMode konfiguriert werden. Auch die internen Pull-Up-Widerstände müssen erst aktiviert werden. Sollten die aktiviert sein, um Strom zu sparen?
Kannst ja hier mal drüber gucken...
https://www.roboternetz.de/community...Stromsparen%29
Gute zu wissen, dass es das Problem 2010 schon mal gab! Aber da ist man auch nicht weiter gekommen.
Wo genau Du hinaus willst, weiß ich nicht ganz, aber z.B.:Habe ich in meinem Code drinne, bringt nichts, keinen Unterschied. Die Analog-Digital-Konverter werden abgeschaltet. Der Analog-Comperator ist deshalb sowieso gleich dann auch mit aus. Extra ausschalten bringt nichts, habs so im Code drin:Code:DIDR0 = DIDR0 | B00111111; // Digitale Eingangspuffer ausschalten, analoge Eingangs Pins 0-5 auf 1Ansonsten sind die IO-Ports nicht undefiniert, sie sind wenn, als hochohmige Eingänge geschaltet, solange das nicht aktiv im Sketch geändert wird.Code:ACSR = B10000000; // Analogen Comparator abschalten, ACD bit7 zu 1
Lesen bildet, stimmt ja, aber ich mach solche Dinge lieber selber. Und da hast Du heute Glück, dass ich mit nem Riesenschnupfen bei bestem Wetter (hmm, na ja, Sonne pur aber Minusgrade) daheim hängen muss .. siehe unten... Jetzt habe ich es mal auf 1MHz-Takt abgesehen .. Damit sollte der Verbrauch auch runter gehen - hatte vor langer Zeit mal so was gelesen ..
Na ich weiß nicht, da kräuselts mir die Nackenhaare und ein Männlein flüstert mir: wer im Controller sparen will, kann den Strom im Spannungsteiler verheizen. Oder ? Liege ich da soo daneben?.. Falls das noch nicht ausreicht, nehme ich mal noch einen Spannungsteiler, um aus den 5V vom Regler 3.3V zu machen ..
Mal zu meiner Nachmittagsbeschäftigung:
Aufbau: alte Experimentierplatine für mega8/168/328, alle vermeidbaren Teile abgebaut,
......Bild hier
......© oberallgeier; größeres Bild im Bild verlinkt
Aktiv/mit den Controllerpinns verbunden sind die Stromversorgung - ohne Spannungswandler, direkt von der Schraubklemme - und die beiden Kondensatoren für den fallweise steckbaren Quarz. Alle sonstigen Leitungen hängen "im Freien", die Kondensatoren für den MAX232 sind ja nur für den Chip - wenn der drauf steckt, die Leitungen zum seriellen Stecker sind ebenfalls unbeschaltet.
Controller: ATmega328 PDIP28. ATMega328P habe ich nicht in PDIP (na ja, die beiden hier sind defekt), aber die Daten vom 328 sind sicher ausreichend vertrauenswürdig.
Programm: Ein lausiges Zeit-Schindeprogramm. Nach der Initialisierung eine while(1)-Schleife, die für wenige Controllertakte einen Pin hoch- und danach wieder runterzieht. Die Pausen dazwischen dauern etwa eine Mikrosekunde bei 20 MHz, Code siehe unten.
Labornetzteil zur Spannungsversorgung KORAD KA3005D, DMM MetraHit 12S, Spannungsangaben nur laut Labornetzteil, Strommessung mit DMM.
Geschätzte Messgenauigkeit beim Aufbau sicher deutlich besser als 10 %
Messwerte:
Code:ATmega328 @3V 20 MHz Quarz 6,14 mA 8 MHz intOsz. 2,94 mA 1 MHz intO(DIV8) 0,58 mA 128 kHz intOsz. 0,11 mA 128 kHz intOsz-DIV8 0,06 mA @5V 20 MHz Quarz 13,09 mA 8 MHz intOsz. 6,46 mA 1 MHz intO(DIV8) 1,85 mA 128 kHz intOsz. 0,95 mA 128 kHz intOsz-DIV8 0,85 mAIch konnte es ja nicht lassen. Hatte noch nen nanoClone genommen (meine sind grad ALLE auf 20 MHz umgequarzt) und den direkt mit 7,5V bestromt. Der frisst (mit der ganzen Peripherie, Spannunswandler, on-board-LED-Spannungskontrolle, on-board-user-LED etc etc: bei 20 MHz ext. Quarz 21 mA und bei 1 MHz (int.Osz-8MHz und DIV.8.) noch 9 mA. 3V hatte ich hier nicht getestet, den Strom von "hinten" in die Platine und den Spannungswandler . . . da war ich mir zu unsicher.Code:// ============================================================================= = //### Programm 1 µs MIKROsekunde pausieren lassen !! Pausenwert EXerimentell ! void wmus (uint16_t us) // Wait in Mikrosekunden { for(; us>0; us--) { uint16_t __c = 4; __asm__ volatile ( "1: sbiw %0,1" "\n\t" "brne 1b" : "=w" (__c) : "0" (__c) ); } } // ============================================================================= =
Fazit: Bei 3V ist der Stromhunger, grob, nur halb so groß, die Frequenz schlägt deutlich zu. Wussten wir schon aus dem Datenblatt - nur nicht so.
NACHTRAG : Zum Messen war der ISP-Stecker stets abgezogen wegen Resetleitung mit LED. Auch wenn deren Einfluss nicht wirklich merkbar war.
Geändert von oberallgeier (20.11.2018 um 17:33 Uhr) Grund: Smiley von DIV 8 ) entfernt
Ciao sagt der JoeamBerg
Schön, dass Du dir die Mühe gemacht hast! Tol! Toll! Toll!
Allerdings werde ich aus einem nicht ganz schlau @oberallgeier: 128 kHz intOsz-DIV8 0,06 mA
Was und wie soll man das verstehen? Mag sein, dass Du das blickst - ich noch nicht ganz.
Aber ich konnte es ja auch nicht lassen. Na ja, habe noch mal gesucht und bin doch noch auf einen Arduino gestoßen, der offenbar auf wenige µA runtergefahren wird.
Und zwar, um es euch zu ermöglichen, das nachzuvollziehen, hier
Ich habe mir das angeschaut und weil ich es mir nicht vorstellen konnte ausprobiert, denn ich habe einen riesen Code ausm Netz, der das nicht schafft. Mein Programm funktioniert auf dem Atmega328P nach wie vor, mit 5V @16MHz. Und dank diesem Video habe ich gute 600µA eingespart. Das heißt, da meine übrige Beschaltung mit Spannungsteiler (ca. 0,000375 A und Spannungsregler nochmal was dazu) auch schon ca. 450µA zieht und ich jetzt nur noch ca. 600µA messe (und das ist mehr eine Schätzung, da am direkt Anfang der Messskala, am Nullpunkt) - bei Power Down - ist diese Anleitung wohl tatsächlich etwas, was mal funktioniert.
Prima, toll, klasse und Danke - für eure Unterstützung!
MfG
Moppi
PS: den Spannungsteiler für 3.3V hätte ich nur genommen, um den Verbrauch am Atmega328 runter zu bekommen, ich dachte, das versteht sich - nicht, um den Gesamtverbrauch zu reduzieren.
Geändert von Moppi (20.11.2018 um 17:44 Uhr)
Lesezeichen