Forum: Mikrocontroller und Digitale Elektronik PIC AD Wandlung gibt zu hohe Werte aus


von Christian M. (c-mentin)


Lesenswert?

Hallo,
versuche mit einem 16F877A PIC Analogspannungen zu messen.
Habe aber das Porblem, dass die Werte, welche vom eingebauten 
ADWandler(10bit) geliefert werden immer zu hoch sind.
Bei Ref=5V bekomme i ca. bei 4,7V 1023 zurück, bei Ref=2,5V (extern 
festgelegt) bekomme ich 1023 schon bei 2,4V zurück.
Wie kann das sein?
Ich dachte zuerst dass die interne Referenz nicht ok ist, dann hab ich 
2,5V von extern angelegt und ich habe das selbe Problem.
Auffallend war, dass der Fehler immer kleiner wird, bis er bei 0,05V 
praktisch nicht mehr erkennbar wird?
Also alle Spannungen sind direkt am PIC gemessen worden, der Fehler muss 
doch bei der Wandlung entstehen! Für was hab ich aber dann 10bit?

Danke für Hilfe
mfg C.Mentin

von mec (Gast)


Lesenswert?

schon mal die Kapazitäten und Samplingzeit überprüft?

von Andreas K. (a-k)


Lesenswert?

Voltmeter kaputt?

von C-Mentin (Gast)


Lesenswert?

Danke schon mal für die schnellen Antworten.

Vorab kann ich schon mal sagen, dass das Voltmeter sicherlich keinen 
Defekt hat.

Wie kann ich die Samplingzeit beeinflussen?

Welche Kapazitäten soll ich überprüfen?
Ich nehme an du spielst auf nen ungewollten TP an? Aber wenn ich die 
Gleichspannung direkt am AD-Pin messe, ist die dann nicht gleich der 
Spannung welche intern gewandelt wird, oder gibts intern Kondensatoren?

Grüße Christian

von John P. (Gast)


Lesenswert?

Also du kannst folgendes überprüfen.

1. Standardmässig nimmt der uc die Versorgungsspannung als 
Referenzspannung an - nur wenn du es ihm expliziet sagst nimmt er AN3

2. Masse kannst du auch Vss nehmen oder ober AN2

3. Normalerweise legt der Ad-Wandler intern einen Schalter an eine 
Kapazität C_Hold an und lädt diese auf nun gibts es folgende Probleme:
  a) die Zeit zum Aufladen ist zu kurz und das C wird nicht komplett auf 
die aussen anliegende Spannung aufgeladen. Die Zeit kannst du über 
ADCON0 und ADCON1 einstellen

  b) deine Spannungsquelle die du anlegst ist zu hochohmig (R > 2,5kOhm) 
und es passiert das selbe --> der Kondensator lädt sich nicht auf --> 
Lösung: Innenwiderstand der Quelle klein machen oder aber am AD-Eingang 
nochmal mit einem C abstützen --> somit kommt der Strom für die Umladung 
aus dem Kondensator

Also stelle die Wandelzeit erstmal auf fosc/32 über adcon0 und Adcon1 
starte dann die Ad-Wandlung, warte etwas, und polle dann das GO Done Bit 
bis es Null ist.
Dann kannst du den Wert abholen.

Grübel: Zumal es keinen Sinn macht das der Wert den du wandelst zu gross 
ist. Ich würd er denken er müsste zu klein sein.
Das Verhalten was du feststellst hatte ich schon mal die 
Versorgungsspannung meines uC 4,8 Volt war ich aber 5V am AD-Kanal 
angelegt hatte. Dann hast du logischerweise bei 4,8V schon ne 1023 im 
wandelregister.


Ich hoffe es hilft Dir.

Beste Grüsse
Andreas Krechla

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.