Hallo zusammen, ich bin gerade etwas verwirrt und hoffe, dass Ihr für Aufklärung sorgen könnt. Bevor ich jetzt ins Detail gehe; vielleicht könnt Ihr sofort sagen "Ja, das ist möglich", oder "Nein, das ist unmöglich". Kann ein Attiny85 in einer Grundschaltung, in der er nur per ISP mit einem Programmierboard (5V) verbunden ist, und einem Programm, welches nichts macht ( int main(void) { /* Replace with your application code */ while (1) { } } ) einen Stromverbrauch von ~3mA haben? Achso, was ich noch erwähnen sollte: der µC läuft mit internem Oszillator auf 1MHz. Das posten eines Schaltplans spare ich mir jetzt erstmal, wenn Ihr den aber benötigt, bekommt Ihr ihn natürlich.
:
Bearbeitet durch User
http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf PDF Seite 162
>und einem Programm, welches nichts macht
Das Programm macht aber was. Eine leere while(1) Schleife
bedeutet nicht das der Prozessor nichts tut. Er führt die
Schleife aus.
Ja, siehe Datenblatt - im Idle typisch 2mA und ca. 8mA im Active Mode bei 8MHz und 5V Spannungsversorgung.
Thordy schrieb: > http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf > > PDF Seite 162 Okay, wenn ich das richtig verstehe, dürfte er nicht soviel verbrauchen. Hast Du eine Idee, warum das so sein könnte? holger schrieb: >>und einem Programm, welches nichts macht > > Das Programm macht aber was. Eine leere while(1) Schleife > bedeutet nicht das der Prozessor nichts tut. Er führt die > Schleife aus. Okay, stimmt. Aber rechtfertigt das den hohen Stromverbrauch?
Uwe D. schrieb: > Ja, siehe Datenblatt - im Idle typisch 2mA und ca. 8mA im Active Mode > bei 8MHz und 5V Spannungsversorgung. Ja, hatte meinen ersten Beitrag editiert. Er läuft auf 1MHz. Hatte sogar einmal mit 128 KHz probiert, da waren es ~2mA. Was kann denn da bloss nicht stimmen? :(
Also man kann ja den Timer und auch die ADCs abschalten, da sparst Du noch ein paar Mikroampere... Faustregel: Pro MHz je 1mA
Schon die Peripherie abgeschaltet? Analog Comp, ADC? Siehe: https://learn.sparkfun.com/tutorials/reducing-arduino-power-consumption
Sascha M. schrieb: > einen Stromverbrauch von ~3mA haben? Da mußt du schon etwas konkreter werden. Mit einem Programm, was nichts macht, kannst du den Controller in den Powerdown Mode legen und dein Stromverbrauch geht nochmals um mind. Faktor 1000 zurück. Da ein Controller den Hauptteil seines Controllerlebens meistens damit fristet, auf irgendwas zu warten, kann man ihn während dieser Wartezeiten in den Sleep versetzen. Damit kommt es nicht darauf an, wieviel Strom er im Maximum verbraucht, sondern wie oft und wie lange. Der sich daraus ergebende Durchschnittsverbrauch liegt häufig deutlich unter den von dir angesetzten 3mA.
Bei 1 MHz reichen locker 2V und dann sind es nur noch 0,5mA... Und wie gerade von @Thor und @Thomas angeregt, einfach alles nicht benötigte Peripherie-Gedöns abschalten...
Also, selbst im IDLE-Mode sind es noch immer 2,5 mA. Peripherie habe ich, soweit ich das verstanden habe jetzt mal abgeschaltet. Mein Code sieht jetzt folgendermaßen aus: int main(void) { ADCSRA &= ~(1 << ADEN); PRR |= (1 << PRADC) | (1 << PRUSI); ACSR |= (1 << ACD); set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode(); /* Replace with your application code */ while (1) { } } und es schwankt immer noch um 2,5 mA. Setze ich ihn in Power-Down, sind es 0 mA, was sicherlich richtig ist.
...und den Watchdog Timer benutzen, damit der Prozessor alle 1..2 Sekunden aufwacht, etwas macht und weiterpennt - dann geht problemlos Batteriebetrieb.
:
Bearbeitet durch User
Also es geht mir jetzt hier nicht darum, eine stromsparende Anwendung zu schreiben. Ich wollte sehen, wieviel der AVR bei meinem Programm so frisst und wollte dazu einen Test machen, was er verbraucht, wenn er bis auf die leere Schleife gar nichts macht. Daher bin ich jetzt erwas überrascht, dass es so viel ist.
Sascha M. schrieb: > Also, selbst im IDLE-Mode sind es noch immer 2,5 mA > Setze ich ihn in Power-Down, sind es 0 mA, was sicherlich richtig ist. Ja, und bei welcher Spannung?
Sascha M. schrieb: > wenn er bis > auf die leere Schleife gar nichts macht Der Controller macht nie gar nichts. Dabei ist es vollkommen egal, ob der das Wetter von morgen berechnet oder auf der Stelle hüpft. Eine leere Schleife läuft mit 100% Prozessorlast!
Sascha M. schrieb: > Daher bin ich jetzt erwas überrascht, dass es so viel ist. OK, das "viel" ist relativ. Auf jeden Fall laufen moderne CPU's mit immer kleineren Spannungen, eben weil es um das Stromsparend geht. Und wenn Du den "Motor" im Leerlauf weiterleihern lässt, dann verbraucht er auch... ist wie im echten Leben ?
Peter D. schrieb: > Mal die Pullups einschalten, damit die Eingänge nicht floaten. Ei guck an. Habe den Code erweitert um PORTB |= (1 << PORTB0); PORTB |= (1 << PORTB1); PORTB |= (1 << PORTB2); PORTB |= (1 << PORTB3); PORTB |= (1 << PORTB4); PORTB |= (1 << PORTB5); und schon sind es nur noch 542 uA :) Vielen Dank Peter! Und natürlich auch an die anderen für Eure Denkanstösse :)
Das war übrigens dann auch der Grund, warum der Stromverbrauch nicht stabil war sondern immer gesprungen ist. Jetzt pendelt der sich super ein :) Peripherie aus und Idle: 542 µA Peripherie aus und Active: 1,19 mA Peripherie ein und Idle: 630 µA Peripherie ein und Active: 1,27 mA Alles bei 1 MHz int. Oszi. und 5V Spannung. Das ist das, was ich mir so vorgestellt habe :)
:
Bearbeitet durch User
Gerade mal selber ausprobiert: 1MHz, 5V, am ISP, Pullups an, ADC usw. aus: ohne Sleep: ~1,4mA SLEEP_MODE_IDLE: ~1,3mA SLEEP_MODE_PWR-DOWN ~200uA
Alexander S. schrieb: > SLEEP_MODE_PWR-DOWN ~200uA Dann zieh mal den Programmer ab. Dann siehst du, wie wenig er wirklich verbraucht. 200µa im PD ist eher eine Katastrophe.
Ohne ISP: IDLE: 1,7mA PWR_Down: 0,48uA Sind die 0,48uA reell oder täuscht mich mein preiswertes Multimeter? Wusste garnicht dass er ~400uA über den ISP zieht (im Idle)??
Alexander S. schrieb: > Ohne ISP: > > IDLE: 1,7mA > PWR_Down: 0,48uA > > Sind die 0,48uA reell oder täuscht mich mein preiswertes Multimeter? > Wusste garnicht dass er ~400uA über den ISP zieht (im Idle)?? Also bei mir sind es im Power-Down-Mode 0,3µA
Ok, hätte mir die Frage auch selbst beantworten können, laut DB ungefähr 0,5uA ohne WD bei 25°C. Da erscheinen deine 0,3uA etwas wenig, Sascha.
Alexander S. schrieb: > Ok, hätte mir die Frage auch selbst beantworten können, laut DB ungefähr > 0,5uA ohne WD bei 25°C. Da erscheinen deine 0,3uA etwas wenig, Sascha. Okay, dann lügt wohl mein Billig-Multimeter :)
Kommt auch auf die Spannung an. 0.5uA bei 5v @25 Grad, 0.3uA bei 3v. Da ist ne schöne Grafik im DB.
Oh. Stimmt nicht ganz. Es sind demnach sogar nur etwas unter 0.2uA bei 3v.
:
Bearbeitet durch User
Alexander S. schrieb: > Sind die 0,48uA reell oder täuscht mich mein preiswertes Multimeter? Könnte hinkommen aber hier wird dein Multimeter sicher auch schätzen. Selbst mein U1253B schätzt in dem Bereich ja mehr als es misst.
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.