Forum: Mikrocontroller und Digitale Elektronik Ungenaue Werte bei Messung der Betriebsspannung Attiny85


von Torsten W. (toto1975)


Lesenswert?

Hallo,

ich versuche mit die Betriebsspannung des Attiny85 zu messen und bekomme 
ziemlich starke Abweichungen, wenn ich mit dem Multimeter nachmesse.
Als erstes habe ich folgendes versucht:
1
void internespannung() {
2
  //Spannung Messen start  
3
  ADMUX |=  (1 << MUX3) | (1 << MUX2);  // input: bandgap; reference: Vcc
4
  delay(10);    //warten bis sich die Referenzspannung eingestellt hat
5
  ADCSRA |= (1 << ADEN);    //ADC aktivieren 
6
  delay(15);
7
  ADCSRA |= (1 << ADSC) | (1 << ADPS2) | (1 << ADPS1);
8
  while (bitRead(ADCSRA, ADSC));
9
  adcw = ADC;
10
  //zweite Messung
11
  ADCSRA |= (1 << ADSC) | (1 << ADPS2) | (1 << ADPS1);
12
  while (bitRead(ADCSRA, ADSC));
13
  adcw = ADC;
14
  
15
  ADCSRA &= ~(1 << ADEN);      //disable ADC (power reduction)
16
  vcc = 1.029 * 1024 / ADC * 1000;    //1.0 – 1.2 Abweichung 
17
  //Spannung Messen Ende
18
}
Da die interne Reverenz Spannung eine Abweichung von 1,0 bis 1,2 Volt 
haben kann habe ich diese auf die 1.029 Volt angepasst und hatte exakt 
dasselbe Ergebnis wie auf mein Multimeter: 3,80 Volt. Als ich die 
Spannung auf 5 Volt erhöht habe, habe ich eine Abweichung von 0,55 Volt 
also 5,55 Volt am Attiny85.
Mein 2. Versuch habe ich mit einem Spannungsteiler (10k Ohm und 1k Ohm) 
gestartet und die interne Referenz von 1.1 Volt wieder genutzt.
1
void teiler() {
2
  ADMUX |=  (1 << REFS1) | (1 << MUX1);  
3
  delay(10);  //warten bis sich die Referenzspannung eingestellt hat
4
  ADCSRA |= (1 << ADEN);        //ADC aktivieren 
5
  delay(15);
6
  ADCSRA |= (1 << ADSC) | (1 << ADPS2) | (1 << ADPS1);
7
  while (bitRead(ADCSRA, ADSC));
8
9
  vcc = ADC * 1.05 / 1024 * 11;
10
}

Aber auch hier wieder die gleichen Probleme wie oben beschrieben. Die 
interne Spannung auf 1.05 Volt eingestellt um auf 3,80 Volt zu kommen 
wie bei meinem Multimeter. Jedoch bei 5 Volt wieder eine Abweichung von 
0,55 Volt.
Ich würde gerne ein Messbereich von 2,8 Volt bis 5,5 Volt abdecken und 
hier möglichst genaue Ergebnisse erzielen.
Ein Kondensator hat übrigens keine Verbesserung gebracht.
Und ADC lieferte bei beiden Versuchen die exakt gleichen Werte
Wie kann ich die Ergebnisse weiter verbessern?

Vielen Dank und Gruß
Torsten

von Avr (Gast)


Lesenswert?

Nimm eine externe Referenzspannung.

von John (Gast)


Angehängte Dateien:

Lesenswert?

Torsten W. schrieb:
> Da die interne Reverenz Spannung eine Abweichung von 1,0 bis 1,2 Volt
> haben kann

Das gilt nur für eine konstante Versorgungsspannung von 5,5V bei 
konstanter Umgebungstemperatur von 25°C.
Und diese Angaben sind auch nur "Richtlinien".

von M. K. (sylaina)


Lesenswert?

John schrieb:
> s gilt nur für eine konstante Versorgungsspannung von 5,5V bei
> konstanter Umgebungstemperatur von 25°C.
> Und diese Angaben sind auch nur "Richtlinien".

Ist zwar richtig, erklrät aber nicht die Abweichung von 0,5 V

Torsten W. schrieb:
> ich versuche mit die Betriebsspannung des Attiny85 zu messen und bekomme
> ziemlich starke Abweichungen, wenn ich mit dem Multimeter nachmesse.

Miss die Spannung auch mal mit dem Oszi nach. Hintergrund: Dein 
Multimeter bildet den RMS, der Atmega macht das nicht. Aus so etwas kann 
schnell mal eine Abweichung von 0.5 V entstehen. Das hab ich bei meinem 
Selbstbaulabornetzteil gesehen.
Du könntest auch eine Mittelwertbildung machen (also z.B. 10 mal messen 
und den Durchschnitt berechnen)

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Also bei mir sieht es gut aus (die 1. Version, die 2. mit 
Spannungsteiler habe ich nicht probiert): auf 5.0 V eingestellt, ergibt 
sich bei Ucc= 3.3 V ein Wert von 3.28, bei 3.0 einer von 2.98; 
ATtiny85-20PU, Revision B von 1351, ein alter von 0739 verhält sich fast 
gleich. Es ist ein ganz simpler Steckbrettaufbau, Systemtakt 1 MHz.

von Torsten W. (toto1975)


Lesenswert?

S. Landolt schrieb:
> auf 5.0 V eingestellt, ergibt
> sich bei Ucc= 3.3 V ein Wert von 3.28, bei 3.0 einer von 2.98;

wie meinst du das mit 5.0 V eingestellt?

von S. Landolt (Gast)


Lesenswert?

In der Formel Ubg so angepasst, dass sich bei Ucc= 5.00 V eben auch ein 
Resultat von 5.00 ergibt; bei dem Exemplar von 1351 ist das z.B. 1.089 
V.

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.