Forum: Mikrocontroller und Digitale Elektronik uC Stromverbrauch schwankt um bis zu 2mA durch Annäherung


von Rapper B (Gast)


Lesenswert?

Ich hatte mir gerade mal einige analoge Zeigerinstrumente besort.
Mesbereich 1 bzw 5 mA
Also nur Anzeigeninstrument und R als Shunt, da ich finde, das man 
vieles viel schneller und genauer beurteilen kann als bei 
Digitalinstrumenten..und siehe da...mir fällt etwas auf, das mir mit dem 
Multimeter noch nie aufgefallen ist...
Der Stromverbrauch des Atmega32 schwank um bis zu 1mA ca, nur dadurch 
das man sich ihm mit der Hand näher, auch wenn ich die andere Hand am PC 
Gehäuse festhalte um statische Ladung auszuschließen.

Ich wollte jetzt noch mal versuchen alle Ausgänge per Software auf GND 
bzw VCC zu legen.
Die Frage ist, ob es dieses Verhalten aber auch in eiern fertigen 
Schaltung gibt, wenn andere ICs an den Pins hängen.


Ebenfalls ist mir aufgefallen, das wenn ich einen 100nf Kontendator im 
laufenden Betrieg zusätzlich in die Versgrungsleitung klemme, es 
natürlich kurz zuckt, dann aber der Stromverbrauch um ca 0,3mA dauerhaft 
höher ist?!?!?
Wenn ich dann den Strom für AVCC ab und wieder anklemme, ist er wieder 
um 0,3ma niedriger..
Derzeit habe ich keine Beschaltung am IC, daher kann ich nicht prüfen 
oder der ADC abstürzt, glaube ich aber nicht, das ist mir noch nie 
passiert.
Warum also, steigt der Stromverbrauch um 0,3mA? (wenn er nicht 
abgestürzt vorrausgesetzt)

von Rapper B (Gast)


Lesenswert?

ach ja, die Spannungsversorung hatte ich zu testzwecken auch mal über 
eine LifePo4 Zelle realisiert, macht kein Unterschied ob Netzteil oder 
Akku

von guest (Gast)


Lesenswert?

Photo ?

von Wolfgang (Gast)


Lesenswert?

Rapper B schrieb:
> Der Stromverbrauch des Atmega32 schwank um bis zu 1mA ca, nur dadurch
> das man sich ihm mit der Hand näher

Dann solltest du ganz dringend mal über deinen Aufbau und die 
Initialisierung nachdenken. Das riecht nach floatenden Eingängen 
und/oder Schwingerei.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Sieht mir stark nach offenen Eingängen aus, deren Potential zeitweise 
durch den verbotenen Bereich zwischen low und high schwebt.
Dagegen hilft es:
- offenen Pins als Ausgang setzen,
- interne Pullups aktivieren
- externe Pullups anschließen

von Jim M. (turboj)


Lesenswert?

Du hast unbeschaltetet hochohmige Eingänge die als Antenne wirken.

Wenn die Hand nah ran kommt, fangen die an schnell zu schalten und 
erhöhen dadurch den Strombedarf.

Abhilfe: Unbeschaltete Pins als Output setzten (DDRx Register Bit auf 
1).

von Rapper B (Gast)


Lesenswert?

ja, davon gehe ich derzeit wie gesagt auch aus..ich werde das wie gesagt 
später mal testen

von A. S. (Gast)


Lesenswert?

Frequenz?
Programm?
Stromverbrauch?
Spannung?
Läuft der uC? (Oder im reset oder abgestürzt)
Externer Quartz?

Ohne Beschaltung, also Du hast ein Oszilloskop? Oder wie stellst Du 
fest, ob er läuft?

von Rapper B (Gast)


Lesenswert?

Und was ist mit dem Effekt an AVCC?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rapper B schrieb:
> Derzeit habe ich keine Beschaltung am IC
Dann mach mal wenigsten die hin, die laut Datenblatt für ein sinnvolle 
Funktion anzubringen ist.
Und noch eins: tu das nicht während die Schaltung unter Spannung ist.

von Rapper B (Gast)


Lesenswert?

"Derzeit habe ich keine Beschaltung am IC
Dann mach mal wenigsten die hin, die laut Datenblatt für ein sinnvolle
Funktion anzubringen ist."
??
Die 100nf Kondensatoren sind montiert, aber die haben hierauf keinerlei 
Einfluss
Und auch GND etc ist natürlich alles angeklemmt

von Rapper B (Gast)


Lesenswert?

auch Reset hat hier keinen Einfluss

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rapper B schrieb:
>>> Derzeit habe ich keine Beschaltung am IC
>> Dann mach mal wenigsten die hin, die laut Datenblatt für ein sinnvolle
>> Funktion anzubringen ist.
> Die 100nf Kondensatoren sind montiert
Ja, schau mal...
Und dann leg noch alle offenen Eingänge (also im unprogrammierten 
Zustand jeden einzelnen IO-Pin) auf einen definierten Pegel, so wie es 
laut Datenblatt für eine sinnvolle Funktion vorgesehen ist. Auch das 
gehört zur Beschaltung.

: Bearbeitet durch Moderator
von Rapper B (Gast)


Lesenswert?

Ich komme nicht unter 0,7mA.
ISt das richtig?
Die Sleepmodes haben keinen Einfluss, wenn kein externes Quarz 
angeschlossen ist,richtig?

von Rapper B (Gast)


Lesenswert?

ach ja, bei 3,3V

von Rapper B (Gast)


Lesenswert?

Also ich experimentiere gerade mit den Sleepmodes.
Ich dachte er verbraucht gar nicht im power Down mode etc.
Aber 0,7 hat er auch wenn ich den Sleep mode abschalte:-(

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rapper B schrieb:
> Die Sleepmodes haben keinen Einfluss, wenn kein externes Quarz
> angeschlossen ist,richtig?

Doch, die funktionieren mit und ohne. Aber du solltest alle nicht 
benötigte Peripherie abschalten. Dazu gehören der ADC, der AC, der 
Watchdog und der Brownout Detektor. Gerade letzterer spart ganz schön 
ein.

von Rapper B (Gast)


Lesenswert?

Hallo,
schon klar, aber offenbar geht es mit dem normalen Atmeg32 nicht unter 
0,7mA?
Die Sleepmodes schalten ja lediglich das Quarz und Komponenten aus, wenn 
aber keine an sind und kein externes Waurz genutzt wird, macht der Sleep 
Modus offenbar keinen Unterschied.oder?

von Rapper B (Gast)


Lesenswert?

Ahh, ich sehe gerade es gibt noch das SMCR Register, hatte 
fälschlicherweise nur das UMCR Register gesehen

von A. S. (Gast)


Lesenswert?

also Du nutzt den internen Quarz? Funktioniert Dein Programm denn 
wirklich? Also hast Du z.B. einen Pin gesetzt / getoggelt?

Solange Du keine Angaben zu Deinem Setting machst, macht es wenig Sinn 
das zu erraten.

von Rapper B (Gast)


Lesenswert?

1
  MCUCR.6:=1;
2
  MCUCR.5:=1;
3
  SMCR.0:=1;
4
  SMCR.3:=0;
5
  SMCR.2:=1;
6
  SMCR.1:=0;

Irgendwie geht der nicht unter 0,1mA
Völlig egal ob sleep an oder aus, das macht maximal 0,01mA aus :-(

von Rapper B (Gast)


Lesenswert?

1
program Atmega32_Grundversuche;
2
3
{ Declarations section }
4
5
begin
6
  { Main program }
7
  DDRA:=$FF;
8
  DDRB:=$FF;
9
  DDRC:=$FF;
10
  DDRD:=$FF;
11
  PortA:=$00;
12
  PortB:=$00;
13
  PortC:=$00;
14
  PortD:=$00;
15
  delay_ms(2000);
16
 // ADCSRA.7:=1;
17
  MCUCR.6:=1;
18
  MCUCR.5:=1;
19
  SMCR.0:=1;
20
  SMCR.3:=0;
21
  SMCR.2:=1;
22
  SMCR.1:=0;
23
  MCUCR.6:=0;
24
  MCUCR.5:=1;
25
26
end.

von Rapper B (Gast)


Lesenswert?

das Programm läuft schon..er verbraucht 0,2ma ca, dann nach dem delay 
spring er auf 0,1mA..völlig unabhängig davon was da steht..einfach weil 
er dann im Idle läuft

von Stefan F. (Gast)


Lesenswert?

Offene Eingänge sind für elektrostatische Ladungen empfänglich. Wenn der 
Pegel irgendwo im unerlaubten Bereich zwisschen LOW und HIGH herum 
dümpelt, leiten beide Transistorender CMOS Eingangsstufe ein bisschen so 
dass sie unnötig Strom verschwenden.

Offene Eingänge sind auch für Radiowellen empfänglich. Die 
Eingangs-Transistoren verstärken das Signal und reichen es an weitere 
interne Schaltkreise weiter. All diese brauchen Strom. he höher die 
empfangene Frequenz ist, umso höher die Stromaufnahme.

Die Stabilisierung der Stromversorgung mittels Kondensator bewirkt, dass 
alle Signale (auch innerhalb des IC) erheblich schneller zwischen LOW 
und HIGH wechseln können. Mit mehr Energie sind höhere Pegel möglich und 
dadurch steigt die Stromaufnahme.

Ohne Kondensator riskierst du, dass der Chip instabil läuft.

von Rapper B (Gast)


Lesenswert?

das Problem ist bereits erledigt, aber danke:-)
Derzeit knapse ich am Stromverbrauch

von Stefan F. (Gast)


Lesenswert?

Rapper B schrieb:
> Derzeit knapse ich am Stromverbrauch

Es lohnt sich, den ADC und den Brown-Out Detektor aus zu schalten, wenn 
du auf sie verzichten kannst.

von Rapper B (Gast)


Lesenswert?

"To enter any of the sleep modes, the SE bit in SMCR must be written to 
logic one and a SLEEP instruction must
be executed. T"

Was meint das?
Ich setze
SMCR.0:=1;
Und dachte, damit schalte ich in in den entsprechenden Schlafmodus.
Aber was meint
"and a SLEEP instruction must
be executed. T""


Vermutlich  ist damit
 SMCR.0:=0;
  SMCR.3:=1;
  SMCR.2:=0;
gemeint?

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

SLEEP ist ein Assembler-Befehl.

von Rapper B (Gast)


Lesenswert?

wie dumm von mir, dann konnte es natürlich nie funktionieren:-)

von Rapper B (Gast)


Lesenswert?

woaaaaaa, es funktionerit:-) DAAAANKE

von Rapper B (Gast)


Lesenswert?

obwohl ich das jetzt nur beim Atmega324 hinbekomme..
Beim Atmega32 heißen gibt es kein SMCR Register sodnern nur das MCUCR..

NARF

von Rapper B (Gast)


Lesenswert?

ach verdammt, aht sich erledig..
Hatte MCUR.1 anstelle von MCUCR7...
Jetzt gehts :-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du den AC nicht brauchst:
ACSR:=$80

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
Noch kein Account? Hier anmelden.