Forum: Mikrocontroller und Digitale Elektronik PIC18F - AD-Wandler will nicht


von Marco K. (marcok)


Lesenswert?

Hi,

ich verzweifele momentan fast daran eine Spannung mit einem PIC18f2685 
zu messen. Komischerweise arbeitet der AD-Wandler offenbar zwar schon 
irgendwie, sinnvolle Werte lassen sich aber nicht bekommen.
Beispiele:
5V -> 1023,also ok
0V -> schwankt zwischen 17 und 28
0,7V aus einem Temp.Sensor -> schankt zwischen 170 und 210 obwohl die 
Spannung konstant ist (mit Oszi nachgemessen)

Woran kann das liegen bzw. was kann ich dagegen tun?
Hier noch meinen Codeausschnitt wo es im den AD geht.
1
// AD-Einstellungen
2
ADCON0bits.ADON = 0; // Disable A/D module
3
 
4
ADCON0bits.CHS0 = 0; // Select channel 0 (AN0)
5
ADCON0bits.CHS1 = 0;
6
ADCON0bits.CHS2 = 0;
7
ADCON0bits.CHS3 = 0;
8
9
ADCON1bits.VCFG1 = 0; // Use VSS for Vref- source
10
ADCON1bits.VCFG0 = 0; // Use VDD for Vref+ source
11
 
12
ADCON1bits.PCFG0 = 0; // Make AN0 pin analog and all others digital
13
ADCON1bits.PCFG1 = 1;
14
ADCON1bits.PCFG2 = 1;
15
ADCON1bits.PCFG3 = 1;
16
17
ADCON2bits.ADFM = 1;  // A/D result is right justified
18
 
19
ADCON2bits.ACQT0 = 1; // Acquisition time
20
ADCON2bits.ACQT1 = 0;
21
ADCON2bits.ACQT2 = 0;
22
 
23
ADCON2bits.ADCS0 = 0; // A/D conversion clock
24
ADCON2bits.ADCS1 = 1;
25
ADCON2bits.ADCS2 = 1;
26
27
ADCON0bits.ADON = 1; // Enable A/D module
28
29
TRISA= 0xFF;  //RA0 Eingang
30
LATA = 0xFF;
31
PORTA = 0x0F;
...
1
ADCON0bits.ADON = 1;
2
ADCON0bits.GO_DONE = 1;
3
while(ADCON0bits.GO_DONE)
4
{}
5
temperatur = ADRES;

Vielen Dank schonmal im Voraus

von iaoffline (Gast)


Lesenswert?

Marco Klueh schrieb:
> 5V -> 1023,also ok
> 0V -> schwankt zwischen 17 und 28
> 0,7V aus einem Temp.Sensor -> schankt zwischen 170 und 210 obwohl die
> Spannung konstant ist (mit Oszi nachgemessen)

Wenn die Masse von deinem Oszi direkt an den GND vom Pic angeklemmt ist, 
ist dann immer noch alles stabil, auch im AC Berich bei 10mV / 
Skalenteil?

von Marco K. (marcok)


Lesenswert?

iaoffline schrieb:
> Marco Klueh schrieb:
>> 5V -> 1023,also ok
>> 0V -> schwankt zwischen 17 und 28
>> 0,7V aus einem Temp.Sensor -> schankt zwischen 170 und 210 obwohl die
>> Spannung konstant ist (mit Oszi nachgemessen)
>
> Wenn die Masse von deinem Oszi direkt an den GND vom Pic angeklemmt ist,
> ist dann immer noch alles stabil, auch im AC Berich bei 10mV /
> Skalenteil?

Masse vom Oszi hängt schon an der Masse des PICs, die Messung sollte 
also durchaus stimmen.

Zumal selbst wenn die Ausgangsspannung des Sensors tatsächlich schwanken 
würde, die vom ADC rausgegebenen Werte nicht passen würden (ein ADC-Wert 
von 200 entspricht hier ja 976mv und nicht 700mv...)

von Anja (Gast)


Lesenswert?

Marco Kah schrieb:
> Woran kann das liegen bzw. was kann ich dagegen tun?

Das kann an fehlenden Abblockkondensatoren, falscher Masseverdrahtung, 
Einfluß eines Schaltnetzteils usw. liegen.

Gruß Anja

von Marco K. (marcok)


Lesenswert?

Schaltnetzteil ist keines in der unmittelbaren Nähe, 
Abblockkondensatoren sind dran, Masse - mh ja, daran könnten zumindest 
die Schwankungen liegen, ist halt nur ein fliegender Lochrasteraufbau.
Allerdings erklärt das zumindest nicht,warum mein Messwert deutlich zu 
hoch liegt.
Gerade habe ich einfach mal 2,5V auf den Pin gegeben und gemessen. Dabei 
kommt ein Wert von 655-660 raus - eigentlich sollten das ja mehr oder 
minder genau 512 sein, oder?

von Stampede (Gast)


Lesenswert?

Ist das Timing auch korrekt ? Acquisition time etc. ?

von Anja (Gast)


Lesenswert?

Marco Kah schrieb:
> Gerade habe ich einfach mal 2,5V auf den Pin gegeben und gemessen. Dabei
> kommt ein Wert von 655-660 raus - eigentlich sollten das ja mehr oder
> minder genau 512 sein, oder?

Sollten ja.
Es deutet darauf hin daß deine Versorgungsspannung (bzw. 
Referenzsspannung) zu niedrig ist. Eventuell schwingt der Regler.


Gruß Anja

von Marco K. (marcok)


Lesenswert?

Anja schrieb:
> Marco Kah schrieb:
>> Gerade habe ich einfach mal 2,5V auf den Pin gegeben und gemessen. Dabei
>> kommt ein Wert von 655-660 raus - eigentlich sollten das ja mehr oder
>> minder genau 512 sein, oder?
>
> Sollten ja.
> Es deutet darauf hin daß deine Versorgungsspannung (bzw.
> Referenzsspannung) zu niedrig ist. Eventuell schwingt der Regler.
>
>
> Gruß Anja

Ich hab mein Problem gefunden, ist unter persönlicher Dummheit zu 
verbuchen :-)
Hatte, da ich wenig mit Lochraster mache, durch das ganze Wenden/Kippen 
beim löten aus versehen Pin20 mit Pin6 vertauscht. Interessanterweise 
hat sich der Pic dann sein Versorgung anscheinend über den Pin gezogen 
und so mehrere Tage ohne Probleme funktioniert...
Danke trotzdem an alle für die Lösungsansätze.

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.