ADC 8/10Bit Spannung Messen

OP #3550306
Lesenswert?

Hallo, hier mein Code:
1
    ADMUX = 0x00;
2
    ADCSRA = (1<<ADEN)|(1<<ADPS2);
3
    ADMUX = (1<<REFS0)|(1<<ADLAR);
4
    ADMUX |= PC4;
5

6
    ADCSRA |= (1<<ADSC);
7
    while(ADCSRA&(1<<ADSC));
8
 
9
    uint8_t ad = ADCH;

Reicht dies aus um eine Spannungsänderung von 0,2 Volt zu messen?
Gast #3550485
Lesenswert?

Martin Fischer schrieb:
> Ich nutze einen ATmega8 und habe am PC5 eine Leitung einer
> pH-Elektrode
> dran mit einem Pull-Up Widerstand an GND.

Entweder du meinst einen PullDown, dann liegt er an GND. Oder es ist ein 
Pull-Up, dann geht er an VCC.
Was macht die pH-Elektrode? Erzeugt die eine Spannung oder ist das ein 
variabler Widerstand?
#3550490
Lesenswert?

Zu deinem Code:

Martin Fischer schrieb:
> uint8_t ad = ADCH;

Das alleine wird dir nicht viel bringen, da sind nur die oberen 2bit des 
10bit-Ergebnisses drin (bzw. bei 8bit Wandlungen nichts)... Nimm ADC 
oder ADCW und statt uint8_t dann uint16_t...

Außerdem solltest du vor der eigentlichen Messung eine Dummy-Wandlung 
durchführen, damit der ADC "warmlaufen kann"...

Heißt: ADSC 2x schreiben, zweimal while(...), das zweite mal dann den 
ADC Wert auslesen!

Viele Grüße


Anmerkung meinserseits: Hab übersehen, dass du ADLAR = 1 setzt... Dann 
sind im ADCH die Bits 9-2... damit könntest du 0,2V messen... Trotzdem 
lieber ganz auslesen und ganz verarbeiten...

Außerdem: mit welcher Frequenz läuft dein AVR? Vorteiler so wählen, dass 
der ADC mit 50-200kHz läuft!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren