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
Adcon0 muß bei Bit 7 und 6 je eine eins haben. Datenblatt S157 Gruß Helmut
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 ...
Hier einmal mein File. ADCON0 ist doch korrekt oder nicht? Also so wie ich es konfiguriert habe...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.