Hi Leute !!! Ich sitze hier gerade an einer kleinen batteriebetriebenen ATTiny13-Schaltung, die eigentlich nichts weiter macht, als jede 2 Sekunden die Umgebungshelligkeit zu messen, und davon abhängig eine LED an- bzw. auszuschalten. Um Energie zu sparen, habe ich das einfache "wait 2" für die Wartezeit zwischen den Messungen bereits durch die Kombination aus "Powerdown" und dem auf 2 Sekunden eingestellten Watchdog ersetzt. Der µC-Takt wird aktuell durch den 128 kHz Oszillator generiert, wobei der "System Clock Prescaler" durch setzen der entsprechenden Werte im CLKPR Register beim Start des Programms auf 4 eingestellt wird. Damit erhalte ich also einen µC-Takt von 32 kHz während der Programmlaufzeit. Nun kann man den Prescaler ja bis 256 wählen, wodurch der ATTiny13 dann nur noch mit 500 Hz laufen würde. Ich frage mich jetzt, wie weit man zum Zweck der Energieeinsparung einen µC eigentlich heruntertakten kann bzw. sollte, wenn lediglich ein recht simples Programm gestartet wird. Macht sich das Ganze dann tatsächlich nur durch einen entsprechend langsameren Programmablauf bemerkbar, in meinem Fall also eine längere Messdauer, oder ergeben sich evtl. noch andere Nachteile bzw. negative Nebeneffekte? Grüße, The SphereX
Der Controller selber kann bis 0Hz runtergetaktet werden. Aber der ADC Takt sollte zwischen 50 kHz und 150 kHz liegen. Laut Datenblatt. Und der wird eben aus dem Systemtakt generiert.
Genau, der ADC braucht einen zügigen Takt, damit der S&H Kondesnator sich während der Messung nicht über die Maßen entlädt.
@ cyblord Ohh, dieses Detail ist mir z. B. noch gar nicht aufgefallen. Das würde ja bedeuten, daß meine Messungen mit dem aktuellen µC-Takt von 32 kHz (ADC-Prescaler = 1) schon nicht mehr unter optimalen Bedingungen stattfinden und damit ungenau sind? @ Dieter M. Das tut sie mit Sicherheit ;-), aber wenn ich die Möglichkeit habe, Energiesparmaßnahmen auch bezüglich des µC anzuwenden, dann will ich das doch zumindest mal ausprobieren. Grüße, The SphereX
Womit misst du die Helligkeit? Eventuell lässt sich das ganze auch ohne µC mit nem simplen Komperator + Flipflop erledigen.
Chip schrieb: > Womit misst du die Helligkeit? > > Eventuell lässt sich das ganze auch ohne µC mit nem simplen Komperator + > Flipflop erledigen. Flip-Flop plus Komparator, um die Helligkeit zu messen? Die Schaltung interessiert mich. Bitte unbedingt posten!
In einem Test taktete ich einen PIC12F675 mal nur mit 0,8Hz. Es fällt dann auf, daß quasi parallel geschaltete zwei LEDs als Wechselblinker in zwei direkt aufeinander folgenden Befehlen nicht mehr synchron umschalten, weil die einzelnen Bitbefehle schon sichtbar nacheinander langsam abgearbeitet werden. Aber sonst sollte man einen µC nicht schneller betreiben, als es für die Anwendung nötig ist. Theoretisch. Statisch langsam kontinuierlich betrieben braucht der PIC ca. 300µA. Es kann sein, daß man mit Wakeup und kurzem Betrieb und lange schlafen auch darauf kommt, oder noch drunter, da muß man halt etwas experimentieren. Den Test mit dem PIC machte ich mal in seinem externen RC-Oszillator-Mode. Es wurden nach Datenblatt keine Widerstände über 100k empfohlen. Mit einem CMOS-Gatter als Taktgeber spart man bestimmt noch mehr, das erlaubt noch höhere Widerstände mit kleinerem Kondensator, was weniger Energie verbraucht. In industriellen Entwicklungen findet man aber meistens µC, die mit maximalem Speed getaktet sind. Man betreibt dort alles am maximalen Limit, was man bezahlt hat. Dort geht es um Leistung gegen Geld, MIPS. Sonst wählt man einen billigeren Typ der niedrigeren Leistungsklasse, und betreibt diesen am oberen Limit. Das ist billiger als ein größerer mit halber Kraft.
The SphereX schrieb: > ergeben sich evtl. noch andere Nachteile bzw. negative Nebeneffekte? Normalerweise ist es kein großer Unterschied, ob du mit einem langsamen CPU-Takt lange rechnest oder mit einem schnelleren entsprechend schneller arbeitest und dich dann wieder schlafen legst. Es ist ja das Umschalten der Flipflops, was den Strom zieht. (Der statische Stromverbrauch bei diesen groben Technologien ist eher klein und entsteht ohnehin die ganze Zeit, egal ob mit oder ohne Takt.) Wirklich ein Unterschied entsteht nur, wenn du aus irgendeinem Grund eine zeitlang nicht schlafen kannst (sondern vielleicht irgendwas pollen musst), denn dann verplemperst du während dieser Zeit ja mit aktiver CPU Energie.
Davis schrieb: > Flip-Flop plus Komparator, um die Helligkeit zu messen? Für eine 1-Bit Messung reicht ein LDR und ein Komparator. Allerdings braucht ein Tiny13 in dieser Rolle weniger Strom als ein 08/15-Komparator.
:
Bearbeitet durch User
Mit dem Runtertakten sparst Du nichts ein. Der Stromverbraucht sinkt in dem gleichen Maße, wie die Wachzeit sich verlängert. Takte ihn nur soweit runter, daß der ADC-Vorteiler 1 beträgt.
Peter Dannegger schrieb: > Mit dem Runtertakten sparst Du nichts ein. > Der Stromverbraucht sinkt in dem gleichen Maße, wie die Wachzeit sich > verlängert. > Takte ihn nur soweit runter, daß der ADC-Vorteiler 1 beträgt. iwie finde ich die Aussagen schräg um nicht zu sagen falsch.
wat schrieb: > iwie finde ich die Aussagen schräg um nicht zu sagen falsch. iwie finde ich die Farbe der Schrift Deiner Aussage zu schwarz. Nee wirklich, sehr hilfreiches Statement. Läßt Du uns an Deinen Gedanken noch teilhaben oder hälst Du es lieber wie Fermant: ""Ich habe hierfür einen wahrhaft wunderbaren Beweis, doch ist dieser Rand hier zu schmal, um ihn zu fassen." ?
Elektrobratze schrieb: > Statisch langsam kontinuierlich betrieben braucht der PIC ca. 300µA. Ein halbwegs aktueller PIC braucht ca. 200-400nA im Sleep-Modus. Wenn er nicht schläft, rennt er mit 16MHz. Mit diesen 300µA kriege ich heutzutage fast ein komplettes Cortex-M3-System über die Runden, und zwar nicht nur im Standby... Selbst in Fällen, wo die Rechenzeit keine Rolle spielt, spart man mit Sleep-Modi und Wakeup-Timern erheblich mehr Strom, als mit runtertakten. Strom spart man an Ziehwiderständen (10MOhm || 10nF), peripheren Schaltkreisen mit geringem Ruhestrom (<100nA-10µA, je nach Anwendung), deaktivieren der internen Peripherie, wenn man sie nicht braucht und ähnlichen Maßnahmen. Ist die Ruhestromaufnahme eines ICs zu hoch, sollte man überlegen, ob man den IC auch komplett abschalten kann, also Stromversorgung via Transistor kappen. Interessant ist auch immer die Effizienz eines Schaltreglers oder der Eigenstrombedarf bei LDOs. Moderne LDOs liegen bei ca. 1µA Eigenstromaufnahme. Hier kann man sich aber auch vortrefflich die Energiebilanz verhageln. Und der Rest ist intelligentes Programmdesign und Ausnutzung von WakeUp-Events. Bei geringen Verzögerungen im Bereich unterhalb von 10ms mag man vielleicht noch zu einem Schlafmodus des Controllers greifen, bei dem die Timer aktiv bleiben. Bei größeren Wartezyklen nimmt man dann eine RTC mit Alarmsignal und legt den Controller komplett still. Denn: Ein laufender Timer braucht auch Strom, die Taktquellen werden nicht abgeschalten. Auch dein WDT braucht Strom. Wenn du den WDT deaktivieren kannst, und den Reset durch einen internen Timer-Interrupt auslösen kannst, spart das evtl. sogar noch etwas, wenn der WDT zusätzliche Peripherie im Chip darstellt. Keine Ahnung, wie das beim AVR ist. Bei PIC und Cortex braucht der WDT Saft, und zwar häufig nicht zu knapp. In einigem Controllern macht das durchaus 10-20% der Ruhestromaufnahme aus. > Der Stromverbraucht sinkt in dem gleichen Maße, wie die Wachzeit sich > verlängert. Ich würde eher behaupten wollen, dass der Stromverbrauch pro MIPS nur im "oberen" Bereich annähernd linear ist, und der Einspareffekt im niedrigen Taktbereich spürbar abflacht, womit sich die Energiebilanz effektiv verschlechtert, wenn man den Takt erheblich verringert. Bei niedrigerem Takt ist nunmal auch die Peripherie länger aktiv. Und deren Stromaufnahme ist nicht zwingend taktabhängig, Beispiel SRAM.
Frank Bär schrieb: > Ich würde eher behaupten wollen, dass der Stromverbrauch pro MIPS nur im > "oberen" Bereich annähernd linear ist, und der Einspareffekt im > niedrigen Taktbereich spürbar abflacht, womit sich die Energiebilanz > effektiv verschlechtert, wenn man den Takt erheblich verringert. > Bei niedrigerem Takt ist nunmal auch die Peripherie länger aktiv. Und > deren Stromaufnahme ist nicht zwingend taktabhängig, Beispiel SRAM. Der Energieverbrauch der Peripherie jedoch ist im Wesentlichen wieder abhängig von deren Taktfrequenz. Woher sonst soll auch (außer dem Leckstrom, den hast du aber auch im Schlaf) bei CMOS die Energie verbraucht werden wenn nicht beim Schalten der Flipflops und Gatter? Wenn man sich die Kurven für den Stromverbrauch eines ATtiny13 ansieht (um den ging's ja), dann sättigen die im aktiven Betrieb wirklich bei einigen 10 µA. (Die meisten Kurven im Datenblatt enden schon bei 100 kHz nach unten, aber es gibt auch noch eine für 32 kHz.) (Die 10 oder 20 µA mögen viel erscheinen, aber ein ATtiny13 ist auch ziemliche Steinzeittechnik. Den kannst du nicht mit einem aktuellen Cortex-M0 oder sowas vergleichen.)
:
Bearbeitet durch Moderator
Frank Bär schrieb: > Ich würde eher behaupten wollen, dass der Stromverbrauch pro MIPS nur im > "oberen" Bereich annähernd linear ist, und der Einspareffekt im > niedrigen Taktbereich spürbar abflacht, Ich hätte jetzt gesagt (abgesehen von statischen Leckströmen) hängt der Stromverbrauch ziemlich linear von der Taktfrequenz und der Spannung ab.
Jörg Wunsch schrieb: > Der Energieverbrauch der Peripherie jedoch ist im Wesentlichen wieder > abhängig von deren Taktfrequenz. ADC, Komparator und Referenz sind es nicht.
Also erst mal danke für Eure Erläuterungen. Demnach bleibt für mich als Fazit, daß ich es doch besser nicht übertreibe mit dem Herabsetzen des µC-Takts, vor allem dann nicht, wenn ADC-Messungen mit im Spiel sind, und stattdessen lieber auf die integrierten Energiesparfunktionen des µC zurückgreife. Grüße, The SphereX
wat schrieb: > Peter Dannegger schrieb: >> Mit dem Runtertakten sparst Du nichts ein. >> Der Stromverbraucht sinkt in dem gleichen Maße, wie die Wachzeit sich >> verlängert. >> Takte ihn nur soweit runter, daß der ADC-Vorteiler 1 beträgt. > > iwie finde ich die Aussagen schräg um nicht zu sagen falsch. mse2 schrieb: > wat schrieb: >> iwie finde ich die Aussagen schräg um nicht zu sagen falsch. > iwie finde ich die Farbe der Schrift Deiner Aussage zu schwarz. > > Nee wirklich, sehr hilfreiches Statement. Läßt Du uns an Deinen Gedanken > noch teilhaben oder hälst Du es lieber wie Fermant: Finde nicht, daß bevor die Aussagen oben begründet sind, ich was zum Besten geben müßte. Aber: 1. Datenblatt 2. Häh? So wie es da steht ist es falsch. 3. Runtertakten ändert nicht den ADC-Vorteiler. Das was er meint, kann man auch verständlich aufschreiben. Hingerozter Beitrag, der mich genervt hat.
The SphereX schrieb: > Fazit, daß ich es doch besser nicht übertreibe mit dem Herabsetzen des > µC-Takts, vor allem dann nicht, wenn ADC-Messungen mit im Spiel sind, > und stattdessen lieber auf die integrierten Energiesparfunktionen des µC > zurückgreife. Du kannst beides machen. Der Takt lässt sich ja auch dynamisch ändern: während der ADC-Messung hoch, ansonsten 500 Hz. Ansonsten würde ich nicht den alten ATtiny13 verwenden, sondern den aktuellen ATtiny13A. Der ist sparsamer und läuft auch mit niedrigeren Spannungen.
Markus Weber schrieb: > Ansonsten würde ich nicht den alten ATtiny13 verwenden, sondern den > aktuellen ATtiny13A. Der ist sparsamer und läuft auch mit niedrigeren > Spannungen. Oder gleich Tiny84/841 und über viele neue Peripherie freuen.
Ich habe das Theme jetzt mal als Anlass genommen, mich endlich anzumelden. Ich habe hier gerade etwas entfernt Verwandtes auf dem Basteltisch, ein RGB-Leuchtgimmick, das sich alleine aus dem Tageslicht speist, der verbaute ATmega328 misst 4x pro Sekunde die Helligkeit, um dies als Auslöser zu nutzen, um dann kleine Animationen abzuspielen. Die Software ist noch lange nicht fertig, aber der Betrieb in Wartestellung läuft schon ganz gut. Den Watchdog als Trigger fürs Aufwachen zu verwenden, ist in Ordnung, ein Timer braucht vermutlich nicht weniger Strom, und so bist Du noch gegen Programmabstürze geschützt. Ich verwende Timer 2 mit Uhrenquarz dran, den Contoller takte ich mit 1 MHz, geteilt aus dem internen 8 MHz Ostillator. Der Knackpunkt ist der A/D-Wandler, schau Dir mal den Stromverbrauch der internen Referenz an, der ist hoch, in Relation zum Verbrauch der CPU. Ziel muß es also sein, die Zeit, die der A/D-Wandler in Betrieb ist, kurz zu halten. Also den Takt eher hoch, ideal währen die 250KHz, die der A/D-Wandler maximal verträgt, und dann alle Berechnungen in die Zeit zwischen Start der Messung, und Ende der Messung zu legen. Den A/D-Wandler sollte man natürlich ausschalten befor man in den Sleep-Mode geht. Dann muß man aber darauf achten, daß die erste Messung, nach einschalten des Wandlers, eventuell ungenau ist (Wird im Datenblatt erwähnt), dabei wird die erste Messung ja schon automatisch in die Länge gezogen (25 statt 13 ADC-Clocks). Bei meinem Aufbau mache ich immer 2 Messungen, und verwerfe die erste. Nach der Messung schreibe ich den rohen A/D-Messwert nur weg, gehe danach sofort in den Sleep-Mode, und verarbeite den Wert erst nach dem nächsten Wake-Up. Hast Du den Brown-Out Detektor aktiviert? Dann ist die interne 1,1V Referenz immer eingeschaltet. Bei den kleinen Taktfrequenzen ist Der überflüssig, da läuft der Controller noch bis zu den 1,3V, bei denen dann der Power-On Reset anspricht, stabil. Wie sieht eigentlich deine externe Beschaltung aus? Wenn man da nicht aufpasst, fließt da 100x so viel Strom, wie im Mikrocontroller! Trennst Du die analoge Messschaltung von der Versorgung, in der 2 Sekunden Pause? Mein Projekt werde ich hier vorstellen, wenn es noch etwas gereift ist. Mit freundlichem Gruß - Martin
Frank Bär schrieb: > Mit diesen 300µA kriege ich > heutzutage fast ein komplettes Cortex-M3-System über die Runden, und > zwar nicht nur im Standby... Mit welchem Baustein? Ich habe zu dem Thema (allerdings M0 und M0+) recherchiert. Am besten war der LPC812M101 (NXP) mit 1,5mA bei 16 MHz. Max
wat schrieb: > Hingerozter Beitrag, der mich genervt hat. Man darf ruhig mal ein bischen mitdenken, statt gleich wütend loszuschnauben. Wenn ich den ADC mit Prescaler betreibe, dauert die Wandlung mehr CPU-Zyklen. Ich habe also eine längere CPU-Zeit, die ich auf den ADC warte und die die Wachzeit verlängert. Der mittlere Stromverbrauch steigt durch den ADC-Prescaler also leicht an. Aber das ist kein riesen Effekt.
Wer mit Atmel LOW-Power Schaltungen entwikeln will, sollte sich mit dem Buttefly befassen. Wolfgang
Die CPU muss während der ADC Wandlung nicht weiter laufen, die AVRs (und vermutlich die meisten anderen µCs) haben einen Stromsparmodus speziell dafür, dass der ADC und andere Perpherie weiter läuft aber die CPU steht.
Max G. schrieb: > Frank Bär schrieb: >> Mit diesen 300µA kriege ich >> heutzutage fast ein komplettes Cortex-M3-System über die Runden, und >> zwar nicht nur im Standby... > > Mit welchem Baustein? Ich habe zu dem Thema (allerdings M0 und M0+) > recherchiert. Am besten war der LPC812M101 (NXP) mit 1,5mA bei 16 MHz. > > Max Kommt immer auf die Anwendung an. Unter effizienter Ausnutzung der Ruhemodi lässt sich ein EFM32GG bspw. mit 1,1µA betreiben. Bei einem Verhältnis von 1:100 Aktivität:Sleep kann ich mir also 29,6mA mittlere Stromaufnahme im aktiven Zustand erlauben. Bei hoher Aktivität ist der M0 besser, aber bei geringer Aktivität holt der M3 stark auf. Braucht man noch dazu etwas Rechenleistung, Peripherie oder RAM, dann ist der EFM32 fast unschlagbar. Der bringt dann nämlich gleich 128kB RAM, USB, und 5 USARTs mit. Dafür hat er nicht die Switch-Matrix des LPC800. Geiles Feature! Mit geschicktem Powermanagement haben wir mal ein System mit GPS-Modul (permanent an), GSM, 128MBit Flash, 1MBit FRAM, RTC und einer halben Tonne Sensoren und Schnittstellenwandler auf ca. ~50-70µA Ruhestrom gebracht. Mit ein paar mehr Kompromissen wären auch 25µA drin gewesen. Modellrechnung: Wenn das Gerät (bestimmungsgemäß) aller 15 Minuten kurz angeht (5s maximal), dann kann ich mir einiges erlauben. Bei 50mA mittlerer Stromaufnahme in diesen 5 Sekunden kommt man auf einen Durchschnittsverbrauch von ca. 350µA. Wenn das GSM-Modul einmal am Tag für 2 Minuten aktiv ist und in dieser Zeit durchweg den Maximalstrom von ca. 2A zieht, dann reduziert sich das im Durchschnittsverbrauch auf ~25µA. Ich bin jetzt also bei ca. 375µA und kann sogar Mails und SMS absetzen... Der Controller geht in die Rechnung bei 1:180 (entspricht 5 Sekunden aller 15 Minuten) nur noch mit knapp 50µA (10mA@48MHz und volle Peripherie) ein. Der Flash benötigt bspw. im Mittel 20, wenn er aktiv ist. Das entspricht wiederum 100µA durchschnittlicher Stromaufnahme. Reduziere ich jetzt den Takt des Controllers, halbiere ich der Einfachheit halber dessen Stromaufnahme, also nur noch 25µA. Der Flash ist jetzt aber länger aktiv, also steigt sein Einfluss. Lese- und Schreibvorgänge dauern länger, brauchen mehr Strom. Dementsprechend erhöht sich der Anteil des Flash an der Durchschnittsaufnahme jetzt auf 200µA. Die Taktsenkung sorgt dafür, dass das System 75µA mehr zieht. Gerade in der beschriebenen Anwendung des OP bringt eine Taktsenkung gar nichts. Systeme mit längeren Sleep-Phasen verlieren sogar an Effizienz, wenn der Takt über ein bestimmtes Maß abgesenkt wird. Bei Systemen mit hoher Aktivität ist dagegen der Ruhestrom kein bestimmender Faktor mehr, da haben die kleinen Kerne dann die Nase vorn.
wat schrieb: > Finde nicht, daß bevor die Aussagen oben begründet sind, ich was zum > Besten geben müßte. Aber: > 1. Datenblatt > 2. Häh? So wie es da steht ist es falsch. > 3. Runtertakten ändert nicht den ADC-Vorteiler. Das was er meint, kann > man auch verständlich aufschreiben. > Hingerozter Beitrag, der mich genervt hat. Finde irgendwie Dein Geschreibsel hingerotzt. Hauptsache mal ohne Ahnung rum jaulen.
Rudolf schrieb: > wat schrieb: >> Finde nicht, daß bevor die Aussagen oben begründet sind, ich was zum >> Besten geben müßte. Aber: >> 1. Datenblatt >> 2. Häh? So wie es da steht ist es falsch. >> 3. Runtertakten ändert nicht den ADC-Vorteiler. Das was er meint, kann >> man auch verständlich aufschreiben. >> Hingerozter Beitrag, der mich genervt hat. > > Finde irgendwie Dein Geschreibsel hingerotzt. Hauptsache mal ohne Ahnung > rum jaulen. Oh, ein Leidensgenosse. Im Gegensatz zu dem auslösenden Beitrag finde ich zB den Beitrag von Ulrich H.: "Die CPU muss während der ADC Wandlung nicht weiter laufen, die AVRs (und vermutlich die meisten anderen µCs) haben einen Stromsparmodus speziell dafür, dass der ADC und andere Perpherie weiter läuft aber die CPU steht." schon von anderer Qualität. Ich bin nicht unbedingt der AVR Experte aber auch nicht mit so wenig Ahnung, daß mich sowas (mach so und so, ohne fundierte Erläuterungen somit ohne Nachvollziehbarkeit und vom Wortlaut her falsch ist) nicht nervt. So, bin raus aus dem thread.
@ Markus Weber " ... Der Takt lässt sich ja auch dynamisch ändern: während der ADC-Messung hoch, ansonsten 500 Hz. ... " Wie sieht das eigentlich mit der Taktänderung während der Programmlaufzeit über das CLKPR Register ganau aus? Also wenn ich den Prescaler so z. B. auf 16 setze, läuft der µC mit dem 128 kHz Oszilator dann ja nur noch mit 8 kHz. Ich kann ihn aber trotzdem noch mit folgendem Befehl, also mit 4 kHz ansprechen, obwohl es doch eigentlich heißt: max. ISP-Frequenz = µC-Takt / 4. avrdude -c usbasp -p t13 -B 250 Wie kommt das? @ Martin Schlüter " ... Wie sieht eigentlich deine externe Beschaltung aus? Wenn man da nicht aufpasst, fließt da 100x so viel Strom, wie im Mikrocontroller! Trennst Du die analoge Messschaltung von der Versorgung, in der 2 Sekunden Pause? ... " Der Tiny wird von einem Schaltregler mit konstanten 3,3 V versorgt. Ansonsten wird am ADC1 halt nur der Spannungsteiler aus LDR und Widerstand abgegriffen. Der ist natürlich immer "an", dürfte im Energieverbrauch aber eigentlich vernachlässigbar sein, oder? Grüße, The SphereX
Wie oft muß denn noch geschrieben werden, daß langsamer takten nix bringt? Die statischen Verluste werden nicht kleiner und die dynamischen größer weil es mehr Befehle für's Umschalten braucht. Falls Komponenten während der Schafphase deaktiviert werden können erhöhen sich die Verluste durch langsames Takten weiter weil diese Verluste i.W. proportional zur Wachzeit sind. Mach den Spannungsteiler schaltbar über einen µC-Pin. Der Spannungsteiler darf nämlich nicht zu hochohmig sein wil sonst der ADC des AVR nicht richtig funktioniert. Als Hausnummer hab ich da 10kOhm in Erinnerung.
The SphereX schrieb: > Wie kommt das? Nun überleg' mal selbst: wodurch wird die ISP-Sequenz eingeleitet? Richtig. Durch /RESET. Welches Programm läuft zu diesem Zeitpunkt, das CLKPR bereits ändern könnte?
>> Wenn man da nicht aufpasst, fließt da 100x so viel Strom, wie im Mikrocontroller! > Der Tiny wird von einem Schaltregler mit konstanten 3,3 V versorgt. Da hast du's. Die meisten Schaltregler verplempern mehr Energie, als der AVR bei geringer Taktfrequenz. > Ansonsten wird am ADC1 halt nur der Spannungsteiler aus LDR > und Widerstand abgegriffen. Der ist natürlich immer "an", > dürfte im Energieverbrauch aber eigentlich vernachlässigbar > sein, oder? Kommt auf den Strom an. Wenn dein Spannungsteiler z.B. einen 1k Ohm Widerstand enthält und der LDR kräftig angestrahlt wird, fließen alleine dort schon etwa 3 Milliampere. Der AVR braucht weniger, nur etwa 1mA (wohlgemerkt ohne Energiespar-Maßnahmen). Du könntest die Spannungsversorgung des Spannungsteiler nicht auf Vcc holen, sondern aus einem I/O Pin. Dann hast Du die Möglichkeit, die Meßschaltung per Software abzuschalten. --- Eine Randbemerkung zur Frage, ob niedrige Taktfrequenz Energie spart: Bei meinem alten Laptop konnte ich die CPU Taktfrequenz auf mehrere feste Werte stellen oder auf dynamische Anpassung. Die niedrigste Taktfrequenz maximiert die Laufzeit mit Batterie, wenn man den Computer überwiegend nicht benutzt oder nur Texte liest. Aber wenn die CPU viel zu tun hat, passiert genau das Gegenteil. Nehmen wir als Beispiel Video-Encoding. Bei halber Taktfrequenz halbiert sich die Stromaufnahme der CPU (ungefähr). Jedoch dauert das Rechnen doppelt so lange. Die Festplatte arbeitet also doppelt so lange, ebenso der Lüfter und die Display Beleuchtung. Unterm Strich nimmt der Laptop für das gleiche Video bei halber Taktfrequenz mehr Strom auf, als bei vollter Taktfrequenz. Deswegen macht bei Laptops mit wechselnden Anwendungen eine automatische Anpassung der Taktrate durchaus Sinn. So wird nicht nur (fast) maximale Rechenleistung erreicht, sondern zugleich möglichst geringe Stromaufnahme.
Ich hab noch was vergessen. Beim Mikrocontroller hast Du die Möglichkeit, die Taktrate extrem dynamisch zu regeln: Nämlich von 0 (sleep) bis volle Pulle. Also lässt Du den Controller im Idealfall schalfen, wenn er nichts zu tun hat, und volle Pulle, wenn er etwas zu tun hat. Windows kann nicht schlafen, denn dann geht das Bild weg und Maus und Tastatur regaieren nicht mehr. Aber du hast die Möglichkeit, dein Programm entsprechend zu gestalten. Periodische Messungen kann z.B. ein Timer auslösen. Dann kannst Du die CPU bei Inaktivität schlafen legen, der Timer wird sie wieder aufwecken, wenn es Zeit ist. Statt Schaltregler könnte ein besonders Stromsparender Linear-Regler besser sein, zum Beispiel der LP2940-3.3. Oder gar kein Spannungsregler - drängt sich bei Batteriebetrieb geradezu auf.
Wenn es nicht schon geschrieben worden wäre, hätte ich das Schalten des Spannungsteilers auch vorgeschlagen. Der Schaltregler ist natürlich auch so eine Sache, im Leerlauf brauchen die meist mehr als der Controller, bei Deinen 128 kHz, im Wachzustand. In so einem Fall habe ich es schon mal so gemacht: 2 oder 3 Batteriezellen (Spannung also < 5V, bei Dir dann nur 2 Zellen, Spannung < 3,3V) und ein Step-Up Wandler. Bei vollem Betrieb den Wandler laufen lassen, ergibt geregelte 5V oder 3,3V unabhängig vom Ladezustand der Batterie, wenn der Conroller aber schläft, den Wandler über seinen Enable-Eingang abschalten, beim Step-Up (Boost) bleibt dann die Batteriespannung - Vorwätsspannung der Diode am Controller bestehen. Diese ungeregelte Spannung reicht, bei niedriger Taktfrequenz, zum Wechsel in den Sleep-Mode, Erhalt der Informationen im RAM, und das wieder Aufwachen. Eventuell kann man sogar den Schalttransistor des Wandlers mit einem PWM-Ausgang des Mikrocontrollers ansteuern, und sich so den Schaltregler-Baustein sparen, und damit auch seine Stromaufnahme. Mit freundlichem Gruß - Martin
@ Martin Schlüter " ... Wenn es nicht schon geschrieben worden wäre, hätte ich das Schalten des Spannungsteilers auch vorgeschlagen. ... " In der aktuellen Schaltung wäre das sogar möglich gewesen. Ansonsten habe ich dafür üblicherweise leider keinen Pin mehr frei. " ... Der Schaltregler ist natürlich auch so eine Sache ... " " ... bei Dir dann nur 2 Zellen, Spannung < 3,3V) und ein Step-Up Wandler. ... " Was diesen Punkt angeht, habe ich mich vielleicht nicht eindeutig genug ausgedrückt. Ein Step-Up ist ja auch ein Schaltregler, und eben einen solchen nutze ich ja auch, genauer gesagt diesen hier: Pololu 3.3V Step-Up Spannungsregler. http://www.exp-tech.de/Shields/Strom-Spannung-79/Pololu-3-3V-Step-Up-Spannungsregler-U1V11F3.html?XTCsid=0a09cb5053d4e6ed3c27e81d4b2e9458 Den verbaue ich mittlerweile in so ziemlich jeder batterie- bzw. akkubetriebenen Schaltung, in der irgendwelche LED-Spielereien vokommen, da auf diese Weise der Energieträger optimal "leergesaugt" wird und darüberhinaus die LED(s) während der gesamten Laufzeit gleich hell bleiben. Zudem bin ich mit diesem Modul auch noch sehr flexibel was die Eingangsspannung angeht, da der Wandler im Bereich von 3,3 V < VIn <= 5,5 V auch als Step-Down fungiert. Ich kann ihm also von 0,5 V bis 5,5 V alles "anbieten", er macht mir immer die konstanten 3,3 V daraus ;-). " ... den Wandler über seinen Enable-Eingang abschalten, beim Step-Up (Boost) bleibt dann die Batteriespannung - Vorwätsspannung der Diode am Controller bestehen ... " Nicht so beim Pololu Modul. Hier wird die Spannung zur Last komplett abgeschaltet! --> The SHDN can be driven low (typically under 0.4 V) to power down the regulator and turn off power to the load (unlike most boost regulators, the input power does not pass through to the output when the board is disabled). <-- Grüße, The SphereX
Frank Bär schrieb: > Elektrobratze schrieb: >> Statisch langsam kontinuierlich betrieben braucht der PIC ca. 300µA. > > Ein halbwegs aktueller PIC braucht ca. 200-400nA im Sleep-Modus. Wenn er > nicht schläft, rennt er mit 16MHz. Mit diesen 300µA kriege ich > heutzutage fast ein komplettes Cortex-M3-System über die Runden, und > zwar nicht nur im Standby... Der PIC nimmt sich im Vollbetrieb mit dem internen RC-Oszillator die 300µA, steht auch irgend wo im Datenblatt. Im Sleep Mode sind es Nanoampere. Ich möchte auch keine Protzerei, das ist alles schon verdammt wenig. Geht vielleicht schon mit zwei Elektroden in eine Orange gesteckt. Bei mir ist alles nur Hobby, nicht die modernsten Industrieanwendungen. Aber eingeschaltet hat man außer dem Takt auch meistens rein statischen Verbrauch, und wenn nur ein Pullup-Widerstand eingeschaltet ist. Meine Verbrauchsmessungen mit 0,8Hz externes RC-Glied und 4MHz internes RC-Glied gaben übrigens keine gravierenden Unterschiede. Da man für ein externes RC-Glied mit dem Widerstand nicht über 100k soll, wird halt der Kondensator dafür größer, da hat das Teil auch einen gewaltigen Stromverbrauch ganz alleine, nur durch die Auf- und Entladung des RC-Gliedes. Deswegen bin ich zu dem Schluß gekommen, diesen PIC besser mit 4MHz anstatt 0,8Hz zu betreiben. Ausnahme: Man hat eine Taktquelle mit viel geringerer Energieaufnahme als der Extern-RC-Oszillator. Man betreibt ihn besser mit den 4MHz und Sleep Modes, anstatt kontinuierlich und langsam. Die 0,8Hz waren eher ein Spaß. Ich wollte mal den langsamsten µC weit und breit, und diesem bei jedem Befehl anhand von LEDs am I/O-Pin zu sehen.
Wenn man glück hat und der LDR im richtigen Bereich liegt, könnte man den LDR zusammen mit dem internen Pullup Widerstand nutzen - dann braucht man auch keinen extra Pin. Es geht aber halt nur in bestimmten Fällen. Eine andere Alternative wäre ggf. noch den LDR zusammen mit einem Kondensator zu nutzen: einmal den Kondensator entladen (Pin aus Ausgang, low), dann für eine gewisse Zeit den Kondensator über den LDR laden (Pin als Eingang - Digitalteil abtrennen) und dann mit ADC die Spannung messen (ADC mit Verzögerung starten). Der Vorteil dieser Methode wäre, dass man über die Wartezeit auch noch den Messbereich wählen kann, und auch hohe Widerstände / kleine Helligkeiten noch erfassen kann. Das Stepup Wandlermodul ist für eine sehr sparsame Anwendung eher keine gute Lösung. Sofern man 2 (oder 3) Zellen (Alkaline) oder eine Li Batterie nehmen kann wäre ein sparsamer low drop Regler (z.B. MCP1702 - 2 bis 2,5 V) besser, sofern man überhaupt einen Regler braucht. Der Regler kann aber ggf. trotz etwas Eigenverbrauch (z.B. 2 µA) noch sparen, weil der µC bei 2 V weniger Strom brauchen wird als bei 2,5 - 3 V. Den meisten Strom wird aber wohl die LED brauchen - da lohnt es sich einen effektiven Typ zu suchen, die Unterschiede können da groß sein.
Entschuldige, daß ich da ein Bisschen ins Blaue geschrieben habe, aber bei Schaltregler habe ich zuerst an diese 7805 Replacements gedacht, die ja generell Step-Down sind. Nun weiß ich ja was für ein Schaltregler es ist. Mit Deinem Modul lässt sich mein Vorschlag nicht anwenden, wenn es auch den Microcontroller versorgt. Du könntest aber den Microcontroller direkt an die Batterie hängen, geht dann zwar nicht mehr bis 0,5 V runter, aber immerhin noch bis ca. 1,2V .. 1,3V, da kommt dann der Power-On Reset. Bei dem kleinen Takt läuft der Conroller auch mit solchen Spannungen stabil. Der Schaltregler versorgt dann nur die LED. Der Controller selbst braucht nicht zwingend eine geregelte Versorgungsspannung, sie muß nur hoch genug sein, und darf keine Aussetzer / Einbrüche haben. Die LDR Schaltung zu nutzen wird bei nicht konstanter Versorgungsspannung schwieriger, ist aber machbar, wenn man die Versorgungsspannung misst, und mit der am Abgriff des Spannungsteilers gemessenen verrechnet. Was für eine LED ist es eigentlich, für Weiß oder Blau sind 3,3V schon eher knapp. Bei den Planungen zu meinem Projekt habe ich schnell gemerkt, daß diese Stromspar-Geschichte viele Fallstricke bietet, so wollte ich, weil auch bei mir die Controller-Pins knapp geworden sind, erst etwas externe Logik verbauen, beim Blick ins Datenblatt zeigte sich dann, daß ein einzelner 74HCirgendwas ruhend fast so viel Strom braucht wie der schlafende ATmega328, und ein 47k Pullup, der bestromt bleibt ist ein 'Großverbraucher' im Vergleich dazu. Bei meinem Projekt habe ich gar keinen Spannungsregler, auch nicht für die LEDs, die Schwankung in Helligkeit, und Farbe (habe ja RGB), die sich durch die variierende Betriebsspannung ergibt, gleiche ich durch passende Änderung der PWM aus. Mit ca. 10 Bit PWM-Auflösung kann man da schon was machen. Mit freundlichem Gruß - Martin
Martin Schlüter schrieb: > bei Schaltregler habe ich zuerst an diese 7805 Replacements gedacht, die > ja generell Step-Down sind. Also ein 7805 ist kein Step down, das ist ein Linear-Regler, der einfach die überschüssige Spannung in Wärme umsetzt. Dennis
Dennis H. schrieb: > Martin Schlüter schrieb: >> bei Schaltregler habe ich zuerst an diese 7805 Replacements gedacht, die >> ja generell Step-Down sind. > > Also ein 7805 ist kein Step down, das ist ein Linear-Regler, der einfach > die überschüssige Spannung in Wärme umsetzt. > > > Dennis Du hast meinen Beitrag nicht sorgfältig gelesen, ich schrieb ja auch 7805 Replacements, es gibt Pin-kompatible Schaltreglermodule, oft nicht größer als ein TO220 Gehäuse, die werden gerne verwendet, wenn ein 7805 zu heiß wird, oder man etwas Energie sparen möchte, aber das Design schon steht. Mit freundlichem Gruß - Martin
Martin Schlüter schrieb: > Du hast meinen Beitrag nicht sorgfältig gelesen, Ach, da war ja noch was. Na eben, Brille aufsetz, zu blöd zum lesen, sry, nächstes mal wirds besser :-) Dennis
@ Martin Schlüter " ... Was für eine LED ist es eigentlich, für Weiß oder Blau sind 3,3V schon eher knapp. ... " Es ist eine 10 mm LED, Xenon-weiß. Im Datenblatt sind 3,2 V bis 3,4 V angegeben. Paßt also wie angegossen :-). " ... die Schwankung in Helligkeit, und Farbe (habe ja RGB), die sich durch die variierende Betriebsspannung ergibt, gleiche ich durch passende Änderung der PWM aus. Mit ca. 10 Bit PWM-Auflösung kann man da schon was machen. ... " Daran hatte ich auch schon mal gedacht, zumindest für meine Schaltungen, die mit nur einer Knopfzelle versorgt werden. Diese würde ja aufgrund des sehr niedrigen maximalen Entladestroms in kürzester Zeit vom Schaltregler leergesaugt werden. Deshalb verzichte ich in dem Fall natürlich auf einen solchen. Wenn ich das richtig verstehe, muß man bei dieser Auto-Helligkeitskorrektur in regelmäßigen Abständen die Versorgungsspannung messen, um eine entsprechende PWM-Anpassung vorzunehmen, erreicht dabei allerdings prinzipbedingt nicht die maximale Helligkeit, wie z. B. mit dem Schaltregler (?). Man muß ja mit einem geringeren PWM-Wert beginnen (z. B. 80%), damit man für die Korrektur dann auch noch entsprechenden Spielraum hat. Sehe ich das richtig? Grüße, The SphereX
Ja, mit der Reserve hast Du natürlich Recht, das heisst aber nicht zwangsläufig, daß es duster wird. Es kommt ja ganz darauf an, was 100% sind. Wenn ich z.B. eine LED mit Vorwiderstand betreibe, und den so auslege, daß bei Maximalspannung 100 mA fließen, die bei den meisten kleinen LEDs als Impulsstrom zulässig sind, und die PWM, bei Maximalspannung, auf 20% einstelle, habe ich es so hell wie bei 20 mA, und habe eine ganze Menge Reserve, um bei kleineren Spannungen 'aufdrehen' zu können. Wenn es aber so knapp ist, wie bei Dir, wird das nicht befriedigend funktionieren. Hast Du überhaupt einen Vorwiderstand drin? Wenn nein, reagiert das ganze ja extrem auf Spannungsschwankungen. Aber nicht nur auf diese, auch die Temperatur macht dann viel aus, die Vorwärtsspannung von LEDs sinkt bei steigender Temperatur merklich, damit steigt der Strom, und die LED wird noch wärmer. Bei Deiner Anwendung könnte ich mir, dann allerdings nur als Versorgung für die LED, gut einen Schaltregler mit stromgeregeltem Ausgang vorstellen, dann hast Du an der LED kontrollierte Verhältnisse, brauchst keinen Vorwiderstand, und die LED ist immer gleich hell. Effizienter wird es dann vermutlich auch noch. Bis jetzt habe ich allerdings solche Schaltregler nicht als kombinierten Step-Down / Step-Up gesehen, sondern nur welche die in eine Richtung gehen. Aber Du könntest ja 2 LEDs in Reihe schalten, wenn es der mechanische Aufbau zulässt. Bei gleicher Gesamtleistung wird es dann auch noch ein Bisschen effizienter. Bei meinem Aufbau habe ich, bei 5V Versorgungsspannung ca. 30% PWM, das geht dann, je nach Abgleich, bei ca. 3,5V gegen 100%. Unter 3,5V wird es bei den blauen LED Chips schon sehr knapp. Mit freundlichem Gruß - Martin
The SphereX schrieb: > Es ist eine 10 mm LED, Xenon-weiß. Im Datenblatt sind 3,2 V bis 3,4 V > angegeben. Paßt also wie angegossen :-). Eigentlich passt es nicht wie angegossen... Die 3,2..3,4V umfassen die Serienstreuung... Was für einen Vorwiderstand hast du bei 3,2V? Mal ausrechnen, Strom bestimmen und dann nochmal drüber nachdenken. Bei 3,4V bleibt die LED einfach dunkel. Unterhalb von 3,6V Versorgungsspannung sind blaue bzw. weiße LEDs einfach nur Glücksspiel.
:
Bearbeitet durch User
@ Martin Schlüter " ... Wenn ich z.B. eine LED mit Vorwiderstand betreibe, und den so auslege, daß bei Maximalspannung 100 mA fließen ... habe ich es so hell wie bei 20 mA, und habe eine ganze Menge Reserve ... " Das ist natürlich eine Möglichkeit, die mir noch gar nicht eingefallen ist. Aber wie Du schon richtig festgestellt hast, ist diese bei meiner aktuellen Konfiguration nicht praktikabel. Allerdings bin ich mit der Schaltreglervariante doch ganz zufrieden. Nur eben bei den knopfzellebetriebenen Schaltungen hätte ich die PWM-Anpassung schon gerne eingesetzt. Da habe ich dann aber sogar nur 3 V Betriebsspannung und muß dementsprechend wohl doch mit etwas geringerer Leuchtstärke anfangen, die dann aber wenigstens über die Batterielaufzeit gehalten wird. " ... Hast Du überhaupt einen Vorwiderstand drin? ... " Vorwiderstände verbaue ich eigentlich nur, wenn die LED-Durchlassspannung kleiner ist als die Betriebsspannung, was hier ja nicht der Fall ist. @ Frank Bär " ... Die 3,2..3,4V umfassen die Serienstreuung ... " Das mag wohl sein. Bei der geringen Differenz rechne ich allerdings trotzdem einfach mit dem Mittel, also 3,3 V, die am VOut meines Schaltreglers sowieso nie übersschritten werden. Es ergeben sich demnach also 0 Ohm für den Vorwiderstand ;-). " ... Bei 3,4V bleibt die LED einfach dunkel. Unterhalb von 3,6V Versorgungsspannung sind blaue bzw. weiße LEDs einfach nur Glücksspiel. ... " Das kann ich absolut nicht bestätigen. Wie kommst Du denn darauf? Also meine weiße LED leuchtet hier bei 3,3 V wunderbar hell mittlerweile seit Tagen vor sich hin :-). Grüße, The SphereX
Für eine weisse LED braucht man schon etwa 3,3 V (je nach Exemplar 3,0 ... 3,5 V) plus eine Reserve um den Strom einzustellen. Ein 3,3 V Regler ist da einfach zu wenig, wenn man die LEDs nicht vorher aussucht. Mit einem einfachen Vorwidestand sollten es schon mindestens 3,6 V (besser 4 V, wenn man den Widerstand nicht individuelle an die LED anpassen will). Je nach Exemplar kann es mit 3,3 V funktionieren, aber es kann auch sein das nie mehr als 1 mA fließt, vor allem wenn es dann auch noch kalt ist. Oft wird auch der Vorwiderstand mit 3,3 V dann zu klein, und der Strom und damit die Helligkeit hängt dann stark von der Temperatur ab - im Extremfall so, dass die LED kaputt geht. Für LEDs gibt es auch spezielle Step up Wander, die gleich die Stromregelung und Spannungserhöhung übernehmen. Bei weißen (und blauen) LEDs ist das Takten des Stromes meist nicht effizient, weil der Wirkungsgrad bei kleinerem Strom höher ist, und das nicht nur wegen der Spannung.
@ The SphereX Bei LEDs sollte man immer irgend etwas verbauen, das den Strom stabilisiert, ein Widerstand ist da die einfachste, billigste Variante, aber eigentlich auch nicht ideal. Sinnvoll funktioniert das erst so ab ca. 1V Spannungsdifferenz bei einer einzelnen LED, unter 0,5V Sapnnungsdifferenz wird es schon recht wackelig. Ganz ohne Vorwiderstand hast Du eigentlich keine Kontrolle über den Strom, das mag gehen, wenn der Strom deutlich unter dem Maximalstrom der LED liegt, und es nichts ausmacht, wenn der tatsächlich fließende Strom deutlich höher ausfällt, als beabsichtigt war. Da gibt es ja dann auch noch den Temperaturgang der LED, den Temperaturgang der Spannungsquelle, und die ganzen Toleranzen der Bauteile. Deshalb habe ich ja auch den Schaltregler mit Stromquellenausgang vorgeschlagen, Ulrich H hat das ja ebenfals angesprochen. @ Frank Bär Daß eine LED komplett dunkel bleibt, wenn man etwas weniger Spannung anlegt, als die angegebene Flußspannung ist so nicht richtig. Eine LED hat keine ideale Z-Dioden-Kennlinie, wie man es für die Berechnung manchmal annimmt, da gibt es schon eine grossen Bereich, in dem sich die Kennline krümmt. Deshalb wird die Flußspannung ja auch in Kombination mit einem Strom angegeben, bei Nicht-Power-LEDs meist 20, oder 25 mA. Wenn man eine solche LED nun mit deutlich weniger Strom betreibt z.B. 2 mA , liegt die Spannung schon erheblich unter der Datenblatt-Angabe, das kann dann schon mal ein halbes Volt weniger sein, nur richtig hell wird's dann halt nicht. Mit freundlichem Gruß - Martin
Martin Schlüter schrieb: > Ich habe das Theme jetzt mal als Anlass genommen, mich endlich > anzumelden. Schön! :-)
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.