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
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 ...
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
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?
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
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
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.
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.