Forum: Mikrocontroller und Digitale Elektronik PIC18F1220 ignoriert Vref+ und Vref-


von Fred (Gast)


Lesenswert?

Hallo,

ich habe wieder einmal ein Problem bei dem ich mit meinem Datenblattn 
nicht weiterkomme.... Und zwar habe ich meinen PIC18F1220 mit einer 
Vref+ und Vref- versorgt.

Ich möchte einen Spannungsbereich von 2,5V - 3,30V wandeln. Dafür habe 
ich an Vref- 2,5V angelegt und an Vref+ 3,30V. Wenn ich das Datenblatt 
richtig verstanden habe, wird nun meine Differenz dazwischen in einen 
Digitalwert gewandelt.

Soweit ich weiss habe ich den ADC richtig konfiguriert. Hier einmal 
meine Konfiguration:

;  Konfiguration der Ports  *************
    MOVLW  B'00001101'        ;
    MOVWF  TRISA          ;
    MOVLW  B'00000000'        ;
    MOVWF  TRISB          ;
;  Konfiguration des Oscillators  *****
    MOVLW  B'01110111'        ;
    MOVWF  OSCCON          ;
;  Konfiguration des ADC  *************
    MOVLW  B'11000001'        ;
    MOVWF  ADCON0          ;
    MOVLW  B'00001101'        ;
    MOVWF  ADCON1          ;
    MOVLW  B'00101101'        ;
    MOVWF  ADCON2          ;


Nun gibt mir der ADC allerdings immer vollkommen falsche Werte heraus. 
So wandelt er zum Beispiel eine angelegte Spannung von 1,8V-2,0V in 
einen Digitalwert....


Habe ich hier einen Fehler in meinem Code oder kann es sein, dass Vref+ 
und Vref- Grenzen haben die ich überschritten habe. Im Datenblatt finde 
ich leider keine Grenzen und gehe daher davon aus, dass Spannungen im 
Bereich von Vss-Vdd als Vref-Fenster genutzt werden können.....



Bitte um Hilfe, wenn jemand eine Ahnung hat was ich hier falsch 
mache....





LG Fred

von Helmut (Gast)


Lesenswert?

Adcon0 muß bei Bit 7 und 6 je eine eins haben. Datenblatt S157
Gruß Helmut

von Lehrmann M. (ubimbo)


Lesenswert?

Fred schrieb:
> Habe ich hier einen Fehler in meinem Code oder kann es sein, dass Vref+
> und Vref- Grenzen haben die ich überschritten habe. Im Datenblatt finde
> ich leider keine Grenzen und gehe daher davon aus, dass Spannungen im
> Bereich von Vss-Vdd als Vref-Fenster genutzt werden können.....

Es gibt in der Tat einige Grenzen:

Vref+:
max. Vcc + 0.3V
min. Vcc - 2.5V

Vref-:
max. Vref+ - 2V
min. GND - 0.3V

Fred schrieb:
> So wandelt er zum Beispiel eine angelegte Spannung von 1,8V-2,0V in
> einen Digitalwert....

Du meinst die die du an Vref- udn Vref+ anlegst oder wie?

Gib mal dein compiliertes hex file her - dann jag ich das mal durch den 
Simulator. Mal schauen was die Register so tun ...

von Fred (Gast)


Angehängte Dateien:

Lesenswert?

Hier einmal mein File.

ADCON0 ist doch korrekt oder nicht? Also so wie ich es konfiguriert 
habe...

von Fred (Gast)


Lesenswert?

Achso, ich meinte wenn ich als Vref+ 3,3V und als Vref- 2,5V vorgebe, 
dann wandelt er eine am Eingang angelegte Spannung von 1,8V-2,0V ca um. 
Alle anderen Spannungen ergeben nur Mist.... bzw 1024 oder eben 0

von Fred (Gast)


Lesenswert?

Es gibt in der Tat einige Grenzen:

Vref+:
max. Vcc + 0.3V
min. Vcc - 2.5V

Vref-:
max. Vref+ - 2V
min. GND - 0.3V



Bedeutet das nicht, dass ich mit meinen Spannungen total falsch liege. 
Ich habe folgende angenommen:

Vref- = 2,5V
Vref+ = 3,3V


Nach den Werten oben müsste meine Vref ja mindestens einen Unterschied 
von 2V haben oder nicht? Also Vref- muss mindestens 2V kleiner sein als 
Vref+ oder?

von helmut (Gast)


Lesenswert?

Du wandelst zwischen 2,5 Volt und 3,5 Volt, das heißt 0,8 Volt werden in 
1023 Schritten geteilt.

Nur wenn deine Messspannung unter oder über diesen Werten liegt, geht es 
nicht.

Legst du 1 Volt zum Messen an, wird das nix...
2,7 Volt werden wohl messbar sein.

Du darfst natürlich keine Wandlung an AD2 und 3 auslösen.
Gruß Helmut

von Fred (Gast)


Lesenswert?

Das ist ja das seltsame, mein PIC wandelt nur in Bereichen ausserhalb 
der 2,5-3,3V. Seltsam, habe bis heute den Fehler nicht gefunden....

Aber an sich habe ich mit der Schaltung ja noch ein Problem.... wenn ich 
dei Referenzspannungen nutzen möchte, dann darf die ja nicht aus einem 
Spannungsteiler (bspw. 10k in Reihe mit 10k) gewonnen werden, da die 
Spannungsquelle dann ja einen größeren Innenwiderstand als 250R hat 
oder?

So verstehe ich das Datenblatt. Wenn ich nun 2 Referenzspannungen 
anlegen muss um meinen Bereich zu wandeln, ist es in meinem Falle fast 
einfacher das Messsignal einfach über Impedanzwandler zu entkoppeln und 
eine Messbereichsspreizung auf 0-5V vorzunehmen. Dann kann ich Vdd und 
Vss als Referenz nutzen und spare mir die Beschaltung mit 
Referenzspannungsquellen oder sehe ichd as falsch?


LG Fred

von Lehrmann M. (ubimbo)


Angehängte Dateien:

Lesenswert?

Fred schrieb:
> ADCON0 ist doch korrekt oder nicht?

Wenn du AN0 verwendest ja. s. Datenblatt Seite 157ff

poste mal bitte den ganzen Code - ich seh nicht mal ob du die 
AD-Conversation richtig machst...

Was für einen Eingang du verwendest, Schaltplan und die gesamte Source.

Im Anhang mal ein Screenshot aus dem Simulator der entsprechenden 
Register.

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

Habe mal das Hex in Simu geladen. Deine AD-Wandler Konfiguration stimmt 
nicht.
Da wo T steht, da müßte eigentlich ein analoger Eingang möglich sein.
Der ist iM ein digitaler Eingang

Gruß Helmut
Das mit dem niedrigohmigen Eingang kann ich nicht bestätigen.

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.