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