Ich erstelle ein Projekt, das einen ATTINY85 verwendet. Die meiste Zeit sollte der Stromkreis ausgeschaltet sein und so wenig Strom wie möglich verbrauchen. Laut Datenblatt verbraucht der Mikrocontroller im Power-Down-Modus 0,1 μA bei 1,8 V. Ich versorge die Schaltung mit zwei AAA-Batterien in Reihe, was ungefähr 3 V ergibt, also erwarte ich einen höheren Stromverbrauch, aber immer noch in der gleichen Größenordnung, aber bisher bekomme ich 300 μA im Power-Down-Modus.
Ich habe alles aus meinem Code entfernt, mit Ausnahme des Energieverwaltungscodes, um zu versuchen, das Problem zu isolieren:
#include "Arduino.h"
#include <avr/sleep.h>
#include <avr/power.h>
void setup()
{
cli(); // Disable interrupts
// Reduce the clock frequency to conserve power
clock_prescale_set(clock_div_128);
// Disable all modules
power_all_disable();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
// Configure all ports as output
// (does not seem to make any difference)
DDRB = 0b0011111;
PORTB = 0;
}
void loop()
{
sleep_enable();
sleep_bod_disable();
sleep_cpu();
}
Wie aus dem Code hervorgeht, verwende ich die Arduino-Bibliothek zum Programmieren, weil sie schneller einzurichten war, aber ich glaube nicht, dass dies einen Unterschied machen würde. Liege ich falsch?
Die Sicherungen sind E:FF, H:DF, L:62
, also verwende ich den internen 8-MHz-Oszillator, geteilt durch 8. Ich verwende außerdem den Taktvorskalierer, um ihn durch 128 zu teilen, da er anscheinend den Stromverbrauch reduzieren sollte.
Meine Schaltung ist wie folgt:
Dieses Diagramm zeigt es nicht, aber die Widerstände sind mit den Anoden von vier LEDs verbunden, deren Kathoden mit Masse verbunden sind (so dass die LEDs einschalten, wenn die Pins hoch sind).
Ich messe den Strom mit einem Multimeter, dessen niedrigste Skaleneinstellung 200 μA beträgt, daher glaube ich, dass ich diesen Strom mit angemessener Genauigkeit messen können sollte.
Was fehlt mir hier? Warum ist mein Stromverbrauch höher als erwartet?
Was fehlte, war, dass der ADC vor dem Ausschalten deaktiviert werden muss:
ADCSRA &= ~ bit(ADEN); // disable the ADC
power_all_disable();
Dadurch wurde der Stromverbrauch auf ~16 μA reduziert. Da die Schaltung andere Komponenten enthält, erwarte ich nicht, die im Datenblatt angegebenen 1 μA zu erreichen.
Um die niedrigen Leistungszahlen von Microchip zu erreichen, müssen Sie alle Pins als Eingänge konfigurieren und die Spannung jedes Pins auf Masse oder VCC legen (wobei sie nicht zwischen VCC und GND schweben dürfen). Fügen Sie Pulldowns oder Pullups an den Pins hinzu und fügen Sie sogar Pulldowns parallel zu Ihren LEDs hinzu.
Andi aka
jonk
jonk
Antoine Aubry
Antoine Aubry
Benutzer16222
Antoine Aubry
jonk
jonk
Antoine Aubry
Antoine Aubry
jonk
Antoine Aubry
jonk
jonk
jonk
lokaler Host