Strom verbrauch 328p

hallo, ich bin gerade einen Projekt dran. Diese beinhaltet einen arduino mini pro (at328P) ein rtc i2c zeit modul (ds1307) und ein i2c oled display. ich habe eine die sleep funktion eingebaut, um möchlichts wenig strom zu verbrauchen. das zeit modul habe ich mit vcc an pin 7 gemacht, sodass ich es ausschalte, denn es zieht 1 ma wenn ich den input des 7. pin auf output stelle, habe ich einen verbrauch von 800µa bei input, 600µa ich möchte diesen noch weiter runtersetzen. was mich wundert: ich habe auch twi mit dem avr power.h sketsch ausgeschaltet, trotzdem ist bei pinmode input eine spannung von ca 2,5v auf dem modul außerdem liegt diese auch bei scl an

welche verbessungen kann ich vornehmen um den stromverbauch noch weiter zu senken?

mfg tim

EDIT: der ganze konstukt zieht doch 3ma im powerdown sleep mode! :(

Weitere Möglichkeiten, den Stromverbrauch zu senken ist es, sich von der 5V Logik zu verabschieden und den Atmega nur mit 3V3 oder noch kleiner zu betreiben. Der Spannungsregler geht dafür nicht und der Quarz müsste ausgelötet oder die Fuses auf intern 8MHz gesetzt werden.

Was du mit deinem power.h meinst, kann ich nicht nachvollziehen. Bitte nähere Erklärung und Aufbau als Skizze nachliefern.

power.h ist eine vorinstallierte library diese beinhaltet die folgende funktion:

power_twi_disable();

damit konnte ich den stromverbrauch senken. ich habe mal ein sleep script geschrieben, welches nur den arduino anspricht, das waren diese 600µa. Mit denen wäre ich jetzte zufrieden :( also muss irgendwir das ds1307 modul oder das sh1106 i2c display den stromverbrauch steigern :(

Das schon gesehen? http://www.gammon.com.au/forum/?id=11497

Das gibt es noch andere Tips wie den DAC zu deaktivieren. Der braucht schon 330µA.

Da gibt es auch einen Teil speziell mit einer RTC: http://www.gammon.com.au/forum/?id=11497&reply=3#reply3

Und wie da steht, ist es besser man verwendet einen FET um die Spannung abzuschalten. P-Kanal wenn man die Versorgungsspannung schalten möchte.

MasterTim17: das zeit modul habe ich mit vcc an pin 7 gemacht, sodass ich es ausschalte, denn es zieht 1 ma wenn ich den input des 7. pin auf output stelle, habe ich einen verbrauch von 800µa bei input, 600µa ich möchte diesen noch weiter runtersetzen.

verstehe ich nicht ganz. Du hast VCC des ds1307 auf den Arduino Pin7 gelegt, richtig? Um das ganze zu deaktivieren würde ich daher einfach den Pin auf LOW stelle, oder liege ich da falsch?

was mich wundert: ich habe auch twi mit dem avr power.h sketsch ausgeschaltet, trotzdem ist bei pinmode input eine spannung von ca 2,5v auf dem modul außerdem liegt diese auch bei scl an

Ja, mit Input aktivierst Du auch noch den internen 20k Pullup, daher liegt noch eine Spannung an.

Ansonsten, den externen Quarz deaktivieren und den Internen Oscillator nutzen (ich glaube der 32k Crystal ist sogar noch sparsamer). Dann eventuell auch nicht ganz aufwachen sondern den Standby betrieb nutzen (und POwer-Down natürlich). Idle braucht er knappe 15mA, Standby 0,84mA und Power-Down 0.36mA

Und natürlich kannst Du auch interne Komponenten deaktivieren, hier ist ein schicker guide dazu: http://www.disk91.com/2014/technology/hardware/arduino-atmega328p-low-power-consumption/

Grüße

@tsaG ja ich habe den vcc auf pin 7 gemacht und auf low gestellt:

menu = 0; attachInterrupt(1, interrupt, LOW); digitalWrite(7,LOW); pinMode(7,INPUT); delay(500); //u8g.sleepOn(); power_twi_disable(); //ADCSRA = 0; //PRR = 0xFF; sleep_enable(); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_mode();

sleep_disable(); power_twi_enable(); //u8g.sleepOff(); pinMode(7,OUTPUT); digitalWrite(7,HIGH); setSyncProvider(RTC.get); prevTime = millis(); u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); readVcc(); delay(500);

wie deaktiviere ich nochmal den pullup? da der arduino nur 360µa ziehen sollte wundere ich mich, warum es 3ma zieht. woran könnte das legen?

Leds entfernt? Wenn die Frage nach dem Deaktivieren von internen Pullups kommt, wäre das erlernen der Basics nicht verkehrt.

pinmode(7, OUTPUT); digitalWrite(7, LOW);

led ist entlötet, lade schaltung beim ds1307 auch, was mich wundert eben hatte ich mit einem einfachen sleep script 600µa gehabt, jedoch jetzte mit dem gleich script warum auch immer wieder 3ma O.o obwohl ich nichts verändert habe

da der arduino nur alleine 360µa ziehen sollte wundere ich mich, warum es in meinem projekt 3ma zieht. woran könnte das legen?

Hallo,

Du darfst Dich nicht wundern, Du mußt mit bedacht messen.
Messe doch mal den Strom vom µC im Sleepmode alleine und dann hängst Du nach und nach Deine externen “Baugruppen” ran und misst wieder den Strom. Dann erkennste was wieviel Strom zieht.

Und einen I/O Pin sollte man nicht zweckentfremden für eine Spannungsversorgung. Ich teste zur Zeit zwei P-Channel Mosfet’s auf ihre praxistaugliche Vgs threshold voltage, da ich 3V sicher schalten muß. So eindeutige Logic-Level P-Ch. Mosfets gibts nämlich nicht bzw. sind die gerade erst im kommen. Und meine 3V sind noch unter Logic-Level Ansprüche.

Der IRF-7416 (gepaart mit IRF-7862) funktioniert mit derzeit 3,4V an Source (langsam fallend) und 0V an Gate einwandfrei. An Drain eine kleine Last von paar mA. Genauso gut funktioniert der Dual IC IRF-7317.

Doc_Arduino: Und einen I/O Pin sollte man nicht zweckentfremden für eine Spannungsversorgung. ... An Drain eine kleine Last von paar mA.

Und was spricht jetzt dagegen, die "paar mA" gleich aus dem ATmega zu beziehen?

MasterTim17: da der arduino nur alleine 360µa ziehen sollte wundere ich mich, warum es in meinem projekt 3ma zieht. woran könnte das legen?

Der ATmega alleine sollte im sleep unter 1µA verbrauchen. Es fehlen noch ein paar grundsätzliche Angaben zum Projekt: - welche Stromversorgung? - wie lange läuft der Prozessor im Verhältnis zur sleep-Zeit?

wenn du die meiste Zeit im sleep verbringst, ist das Absenken von Versorgungsspannung und Takt nicht sinnvoll, da der Prozessor dann einfach länger wach sein muss, um die gleiche Arbeit zu erledigen. Wenn du eine Batterieversorgung hast (davon gehe ich mal aus), dann brauchst du evtl. gar keinen Spannungsregler, oder du solltest einen "sparsamen" verwenden wie den MCP1702 mit 2µA Ruhestrom

MasterTim17: da der arduino nur alleine 360µa ziehen sollte wundere ich mich, warum es in meinem projekt 3ma zieht. woran könnte das legen?

Am Spannungsstabilisator? Grüße Uwe

Also ich baue eine uhr mit arduino mini pro, ds1307 i2c modul, oled i2c display As soll an einem 1s lipo betrieben werde n Während der programmierphase habe ich den an meinen arduino mega angeschlossen also 5 v Das zeit modul will ich über pin 7 abschalten wenn der arduino schlafen geht

Gruß

Einen PRO MINI zu 5V oder 3,3V? Grüße Uwe

5v natürlich, sonst wäre es mir ja schon abgeraucht :wink:

ich werde mal das zeit modul ablöten (juhuu) und von weiteren strommessungen berichten

1S Lipo an den Pro Mini 5V/16MHz? Das geht schief! Sinnvoller wäre es, den externen Quarz komplett wegzulassen und intern mit 1MHz (8MHz OSC / CKDIV8) laufen zu lassen.

so das zeit modul ist ab, trotzdem noch 3ma O.o

mit folgendem sketch läuft der arduino mit display auf 900µa

#include <avr/sleep.h>
#include <avr/power.h>
#include <U8glib.h>

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
void setup(){

  pinMode(7,OUTPUT);
  digitalWrite(7,HIGH);

}
void loop(){
  pinMode(7,OUTPUT);
  for(int i=0;i<1;i++){
  delay(2000);
  digitalWrite(7,HIGH);
  delay(2000);
  digitalWrite(7,LOW);
  }
  pinMode(7,INPUT);
  //u8g.sleepOn();
  power_twi_disable();
  digitalWrite(A4,0);
  digitalWrite(A5,0);
  power_adc_disable();
  
  sleep_enable();
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_mode();
  
}

warum geht das mit 1s lipo schief? bei versuchen hatte es gut funktioniert

Hallo,

hmmm, also irgendwas ist gedanklich falsch. Das Uhrenmodul sollte eine eigene Batterie haben, sonst mußt Du die nach dem einschalten, von Dir aufwachen genannt, immer erstmal stellen. Deswegen brauchst Du die auch nicht abschalten. Nur wenn man eine Uhr baut, schaltet man die doch nicht ständig ab? Verstehe ich nicht ganz.

das modul hat eine battery, doch für den zugriff braucht es nochmal spannung, scl & sda. ich habe gemessen, das modul zieht dann ca. 1 ma, die will ich durch das abschalten sparen

EDIT: komischer weiße verändert sich der stromverbrauch, jetzt zieht es ohne modul 1,5ma O.o ich bin total verwirrt

gruß