mikrocontroller.net

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


Autor: Christian Mentin (c-mentin)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mec (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schon mal die Kapazitäten und Samplingzeit überprüft?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Voltmeter kaputt?

Autor: C-Mentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John P. (lance1512)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.