Forum: Analoge Elektronik und Schaltungstechnik Problem bei Messen der Spannungsversorgung


von Christian D. (Gast)


Lesenswert?

Hallo, ich möchte die Spannungsversorgung meines Atmega's in Prozent 
auslesen,
dazu habe ich eine Leitung vom Plus Pol an den AD-Wandler angeschlossen, 
funktioniert auch, wenn ich nämlich die Leitung angeschlossen habe zeigt 
er mir 100 % Spannung an, was ich aber nicht verstehe ist das wenn ich 
die Leitung
abklemme er mir immernoch einen Wert zwischen 30 und 45 % ausliest wie 
kann das sein?

int adcwert = read_adc(0);
int spannung = adcwert / 10.23;
uart_puts("\r\nSpannungsversorgung: ");
PrintInt(spannung);
uart_puts(" %\r\n");
waitsek(1);

von Thomas O. (Gast)


Lesenswert?

mach mal vom ADC PIN nen Widerstand gegen Masse (10 oder 20k Ohm), denke 
das da ne gewisse Kapazität da ist und diese hält die Spannung aufrecht.

von Christian D. (Gast)


Lesenswert?

wie meinst du? an den Eingangs Pin? also port C?

von Michael U. (Gast)


Lesenswert?

Hallo,

was ich jetzt garnicht verstehe:
was nimmst Du als Referenz?
Wenn Du Vcc als Referenz nimmst, wirst Du immer 100% bekommen.

Wenn Du die interne Referenzspannung nimmst, brauchst Du sowieso einen 
Spannungsteiler zwischen Vcc und GND, der Vcc auf die interne 
Referenzspannung (ca. 2,56V z,B, beim ATMega8) herunterteilt, damit Du 
zu Deinen 100% kommst.

Damit wäre der Abschluß gegen GND dann ja gewährleistet.
Oder benutzt Du eine externe (dann stabile und von Vcc unabhängige 
Spannung) Referenzspannung?

Ansonsten: AVcc Drossel drin, 100n Cs zwischen Vcc bzw. AVcc gegen GND?
100n ARef gegen GND?

Interner PullUp an entsprechenden Pin des ADC aus?

Gruß aus Berlin
Michael

von Fabian B. (fabs)


Lesenswert?

Du kannst die Betriebsspannung auch gut ohne externe beschaltung 
messen... nimm einfach VCC als Referenz und miss dann die Interne 
Bandgap spannung. Der AD-Wert steigt dann mit fallender Betriebsspannung

gruß
fabian

von Christian D. (Gast)


Lesenswert?

"nimm einfach VCC als Referenz und miss dann die Interne
Bandgap spannung. Der AD-Wert steigt dann mit fallender Betriebsspannung
klingt gut, aber "Bandgap spannung" sagt mir nix

von Thomas O. (Gast)


Lesenswert?

ja die Einwände sind berechtigt, du brauchst einen Referenz. Da könntest 
du z.b. was mit einem Widerstand und einer 3V Z-Diode aufbauen die 
Versorgungsspannung gibst du dann über nen Spannungsteiler an den ADC 
Pin, damit die Spannung im Bereich der Referenz bleibt.

Ich meine einen Widerstand da rein wo du auch deine 5V draufgibst, wenn 
du jetzt die 5V abklemmst wird der ADC-Pin über den Widerstand gegen 
Masse gezogen(und ggf. entladen) so das es dir dann 0% statt 40% 
anzeigt.

Den internen Pullup schaltest du dadurch aus, indem du mit eine 1 an den 
entsprechenden Portpin ausgibst oder halt alle mittels
ldi temp, 0b11111111
out portX, temp

oder das 2te bit im SFIOR-Register setzen, dann sind generell alle 
Pullups deaktiviert

ldi temp, 0b00000010
out SFIOR, temp

von Christian D. (Gast)


Lesenswert?

ok, also so meinst du das:

PORT C Pin 0 <---- R1 ----- GND

und dann zwischen Port C Pin0 und R1 die Versorgungsspannung ?

von Marcus (Gast)


Lesenswert?

"Den internen Pullup schaltest du dadurch aus, indem du mit eine 1 an 
den
entsprechenden Portpin ausgibst oder halt alle mittels
ldi temp, 0b11111111
out portX, temp"

Das stimmt natürlich nicht - es ist genau umgekehrt: 0 auf den Portpin = 
Pullup aus.

Gruß, Marcus

von Christian D. (Gast)


Lesenswert?

hm solange ich die pullups nicht mit "PORTC = 0xff;" aktiviert habe sind 
sie doch aus? oder irre ich mich da?

von Fabian B. (fabs)


Lesenswert?

Stichwort Bandgap Spannung:
lies mal dein Datenblatt. bei der beschreibung der Ports des 
AD-Multiplexers gibt es als input auch "Bandgap Reference". 
Typischerweise das letzte in der Liste.

Lesen hilft.

Gruß
Fabian

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.