Forum: Mikrocontroller und Digitale Elektronik Tiny ADC interne Offsetmessung


von Tom (Gast)


Lesenswert?

Hallo erstmal,
wie im Betreff schon erwähnt möchte ich mit dem ADC eines Attiny85 eine 
Spannung messen.
Soweit funktioniert auch alles, allerdings habe ich einen gewissen 
Offset den ich rausbekommen will.
Nachdem die Versorgungsspannung auch gleichzeitig am zu messenden 
Spannungsteiler anliegt, kann ich im Betrieb keine 0V-Offsetmessung 
vornehmen, da dann ja schon Spannung anliegt.
Möchte deswegen die Möglichkeit der Internen Offsetmessung nutzen, da 
dieser dann unabhängig von der externen Schaltung ist. Allerdings ist 
dieser Wert dann ziemlich hoch: ca.35 (echter Offset etwa 8).

Weis jetzt nicht, ob der einfach so ungenau ist, oder was am Code nicht 
stimmt. Konnte nichts finden, was das Problem erklären könnte.

Benutze die 1,1V interne Referenz und die Differenzielle bipolare 
Messung auf ADC0 und ADC1 mit einfacher Verstärkung. Das wichtigste vom 
Code:

Code Offsetmessung:
1
ADMUX   =   0x88;
2
ADCSRB  |=    0x80;
3
ADCSRA   =  (1<<ADPS1)
4
       |  (1<<ADPS0)
5
        |   (1<<ADEN)
6
       |  (1<<ADSC);
7
while ( ADCSRA & (1<<ADSC));
8
offset_u  =   ADCW;
9
ADCSRA   |=  (1<<ADSC);
10
while(ADCSRA & (1<<ADSC));
11
offset_u  =   ADCW;
12
ADMUX    =   0x00;
13
ADCSRA  &= ~(1<<ADEN); 
14
if (offset_u >=0x0200){offset_u |= 0xFE00;}
15
offset_u= (-offset_u);

Code Spannungsmessung:
1
ADMUX   =   0x8A;
2
ADCSRB  |=    0x80;
3
ADCSRA   =  (1<<ADPS1)
4
       |  (1<<ADPS0)
5
        |   (1<<ADEN)
6
       |  (1<<ADSC);
7
while ( ADCSRA & (1<<ADSC));
8
temp  =   ADCW;
9
ADCSRA   |=  (1<<ADSC);
10
while(ADCSRA & (1<<ADSC));
11
temp  =   ADCW;
12
ADMUX    =   0x00;
13
ADCSRA  &= ~(1<<ADEN); 
14
if (temp >=0x0200)
15
{
16
    temp |= 0xFE00;  
17
}
18
temp += offset_u;
19
temp= -temp;



Vieleicht hat von euch jemand ne Idee oder ne Lösung zu dem Problem.

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.