ich bekomme es einfach nicht hin den Nano in den Energiesparmodus zu versetzen. Ich messe immerwieder 50-55mA
Messen tue ich in dem ich ein Amperemeter in Reihe schalte zwischen 9v + und vin
Ich habe es versucht mit verschieden Lib
Narcoleptic v1A mit dem Beispiel Sketch :
#include <Narcoleptic.h>
void setup() {
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
}
void loop() {
int a;
// Merlin the cat is snoozing... Connect digital pin 2 to ground to wake him up.
Narcoleptic.delay(500); // During this time power consumption is minimised
while (digitalRead(2) == LOW) {
// Wake up CPU. Unfortunately, Merlin does not like waking up.
// Swipe claws left
digitalWrite(13,HIGH);
delay(50);
// Swipe claws right
digitalWrite(13,LOW);
delay(50);
}
// Merlin the cat goes to sleep...
}
diesen Sketch
#include <avr/sleep.h>
const byte LED = 9;
void wake ()
{
// cancel sleep as a precaution
sleep_disable();
// must do this as the pin will probably stay low for a while
detachInterrupt (0);
} // end of wake
void setup ()
{
digitalWrite (2, HIGH); // enable pull-up
} // end of setup
void loop ()
{
pinMode (LED, OUTPUT);
digitalWrite (LED, HIGH);
delay (50);
digitalWrite (LED, LOW);
delay (50);
pinMode (LED, INPUT);
// disable ADC
ADCSRA = 0;
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_enable();
// Do not interrupt before we go to sleep, or the
// ISR will detach interrupts and we won't wake.
noInterrupts ();
// will be called when pin D2 goes low
attachInterrupt (0, wake, LOW);
// turn off brown-out enable in software
// BODS must be set to one and BODSE must be set to zero within four clock cycles
MCUCR = bit (BODS) | bit (BODSE);
// The BODS bit is automatically cleared after three clock cycles
MCUCR = bit (BODS);
// We are guaranteed that the sleep_cpu call will be done
// as the processor executes the next instruction after
// interrupts are turned on.
interrupts (); // one cycle
sleep_cpu (); // one cycle
} // end of loop
}
Mein Vorhaben ist es dass sich der Arduino in den Powerdown modus versetzt und aufwacht sobald sich der angeschlossene Schalter also Schalterzustand ändert. Sobald er dann erwacht ist verarbeitet er den Schalterzustand und je nach dem Welcher Zustand erreicht ist schickt er diesen weg.
Der Rest geht auf dem Board für die Peripherie wie USB/seriell Wandler und den Spannungsregler drauf. Deshalb lohnt sich das nur wirklich mit nackten Prozessoren, aber nicht mit Entwicklungsboards.
Hat das Nano-Board keine Board-LED an Pin-13?
Funktioniert der normale "Blink-Sketch" mit Blinken an der Pin-13 LED auf Deinem Board?
Tobbaa:
Ich merke eine veränderung druch drücken von 55mA zu 39mA
Das dürfte der Energiesparmodus sein. Ein Atmega328 mit 16 MHz getaktet braucht ca. 17 mA. Im Powerdown-Modus braucht er weit unter 1 mA, Also sollte der Stromverbrauch eines Boards mit 55 mA Verbrauch, bei dem Du den Atmega328 in Powerdown versetzt, ungefähr 55-17 = 38 mA verbrauchen.
Halte den SleepModus für unsinn. Da kannst du besser 1 Taster sowie einen Schalter einbauen. Taster 1 speichert alle relevanten Werte im Eeprom, die beim Start wieder ausgelesen werden.
Mit dem Schalter schaltest du einfach die Spannung weg.
Sinnvoll wäre es, einen Arduino Uno mit DIP MCU zu nehmen. Bootloader mittels ISP aufspielen. Danach den Uno soweit programmieren, bis alles funktioniert. Wenn das geschaft ist, den Chip entfernen, an XTAL1 und XTAL2 einen 16MHz Quarz. Zustäzlich von jedem Pin des Quarzes aus einen 10pF Kondensator nach GND legen. Alternative 16MHz Resonator nehmen. Hier einfach die beiden aussenstehenden XTAL1 und XTAL2 zuweisen. Der Mittlere Pin nach GND.
Weil an diesem Board alle stromfressenden Komponenten wie "Power-On LED" und "Serial-USB Adapter" standardmäßig weggelassen wurden, eignet es sich sehr gut für batteriebetriebene Projekte.
Programmieren kannst Du das Board, indem Du entweder die ISP-Pins entsprechend für einen ISP-Programmer oder einen "Arduino as ISP" anschließt, oder indem Du zum Programmieren einen externen USB-Serial-Adapter anschließt, den Du nach dem Programmieren des Boards wieder entfernst.
Die moderneren "Pro Mini" Boards haben leider eine PowerOn-LED, aber es gibt Bastelanleitungen im Internet, wie Du beim Pro Mini die stromfressende LED durch Durchtrennen einer Leiterbahn außer Gefecht setzen kannst.
sschultewolter:
Trennen einer Leiterbahn? Es reicht doch aus, die LED mit einem Seitenschneider durchzutrennen und dann die übereste mit einem Lötkolben abzuziehen.
Led 13 kann selber ja drauf bleiben, da diese ja nicht durchgehend an ist, es sei denn, man nutzt den Port.
Du machst das auf die harte Tour. Bei einer durchtrenten Leiterbahn kann man mit etwas Geschick, Mühe und Lötkenntnissen die LED wieder aktivieren.
sschultewolter:
Trennen einer Leiterbahn? Es reicht doch aus, die LED mit einem Seitenschneider durchzutrennen und dann die übereste mit einem Lötkolben abzuziehen.
Led 13 kann selber ja drauf bleiben, da diese ja nicht durchgehend an ist, es sei denn, man nutzt den Port.
Hmm...
Pro Mini und Strom sparen...
Dafür sind sie eigentlich nicht konstruiert.
Auch ist die 3,3V Variante seltener und oft deutlich teurer.
Also verwende ich die 5V Version. Leicht modifiziert.
Der Clock Vorteiler wird per Fuses aktiviert. Läuft also dann mit 2 MHz.
Brownout auch auf eine 3,3V verträgliche Schwelle gesenkt.
Versorgt wird das Ganze dann über einen KIS 3R33S mit 3,3V auf dem ursprünglichen 5V Pin des Mini.
Geweckt wird dann über den WDT oder einen der beiden externe Interrupts
Der Linearregler kann sitzen bleiben.
Wenn die 2 MHz nicht reichen, kann man auch den internen 8MHz RC Oszillator verwenden.
Ganz zum Schuss, wenn die Tests erfolgreich waren:
Trenne ich Power LED mit einem Dremel.
Die Pin 13 LED auch. Die flattert sonst immer mit dem SPI Clock.