Forum: Mikrocontroller und Digitale Elektronik PIC18F: ADC=> AD2, AD3 als Referenzquelle


von Full W. (realjey)


Lesenswert?

Hallo liebes Forum!

Ich möchte meinen PIC18F4520 dazu bringen bei der ADC-Wandlung AD2(RA2) 
und AD3(RA3) als Referenzquelle zu benutzen, leider funzt es nicht.

Ich habe über eine Referenzdiode und einen Spannungsteiler an 
AN3(RA3)=3.2V und an AN2(RA2)=Masse=0V angeschlossen.

Den PIC selbst betreibe ich mit VDD=3.3V. Aus dem Datenblatt geht 
hervor, das delta_Vref min. 3V sein müssen wenn ich den PIC mit VDD>=3V 
betreibe, was ich ja tue. Sollte also erstmal alles in Ordung sein, 
denke ich.

Mein C-Code:
1
unsigned int tmp_value1, tmp_h, tmp_l=0;
2
3
void Ini_ADC(void)  //Initialisierung des 10bit-ADC (siehe DB)
4
{
5
  //Alles Inputs!
6
  trisa.0=1;
7
  trisa.1=1;
8
  trisa.2=1;
9
  trisa.3=1;
10
  
11
  adcon2  =0x8C;  //2TAD, rechtsbündig
12
  adcon1  =0x3b;  //Vref-=RA2; Vref+=RA3
13
  adcon0  =0x01;   //use AN0, ADC=on    
14
}
15
16
void start_ADC()
17
{     
18
  adcon0  |= 0x2; //start conversion
19
  while((adcon0 & 0x02)>=1);  
20
  //Samples einlesen und in tmp_value1 speichern
21
  tmp_h=adresh;
22
  tmp_l=adresl;
23
  tmp_value1=(tmp_h << 0x08) | tmp_l;
24
}

Leider liest der PiC für adresh immer "02" (oder "03") und für 
adressl immer "40" aus, egal welche Spannung an ADC1 anliegt. Habe ich 
bei der Initialisierung etwas falsch gemacht, worauf muss ich achten 
wenn ich als Vref nicht VDD benutzen möchte?

Btw: Wenn ich adcon1=0x0b setze, also VDD als Vref benutze, funktioniert 
das ganze einwandfrei!

Vielen Dank für eure (hoffentlich schnelle) Hilfe :)

von Full W. (realjey)


Lesenswert?

ich bin mal so fresch und pushe...

von Anja (Gast)


Lesenswert?

Jey Soon schrieb:
> Btw: Wenn ich adcon1=0x0b setze, also VDD als Vref benutze, funktioniert
> das ganze einwandfrei!

Dann liegt es an der Hardware.
wie hochohmig ist der Spannungsteiler?
Hast du den Strom für VREF (ca 150uA) berücksichtigt?

Gruß Anja

von Full W. (realjey)


Lesenswert?

Hallo Anja, nicht wirklich. Mein Spannungsteiler hängt an 4.1V, die 
Impedanz des Teilers liegt bei insg. 49k, was einen Strom von ca. 80uA 
ergibt. Das ist dann wohl zu wenig?!

Könntest du mir verraten, wo im Datenblatt die Angabe mit dem Strom 
steht, finde das iwie nicht...

von Full W. (realjey)


Lesenswert?

Habe die Angabe gefunden (A/D CONVERTER CHARACTERISTICS), allerdings 
steht hier, max=150uA (During A/D conversion cycle) , dann müsste ich 
doch mit meinen 80uA ganz gut liegen oder?

Allerdings steht hier weiterhin:
Recommended Impedance of Analog Voltage Source 2.5 kΩ, damit wäre ich 
dann wieder weit darüber hinnaus, oder deute ich die Angabe falsch?

Weiterhin steht dort:
5μA During VAIN acquisition.

Was ist damit gemeint?

von Anja (Gast)


Lesenswert?

Jey Soon schrieb:
> steht hier, max=150uA (During A/D conversion cycle) , dann müsste ich
> doch mit meinen 80uA ganz gut liegen oder?

Der A/D-Wandler braucht an VREF 150uA, Du lieferst 80uA max -> totaler 
Kurzschluß?
Wenn Du wenige Wandlungen pro Sekunde mit großem zeitlichen Abstand 
machst kannst Du einen Kondensator an VREF hängen. (ich empfehle 100nF 
Keramik + 10uF Tantal parallel). Ansonsten mußt Du halt ausrechnen ob 
deine Quellimpedanz ausreicht um den Kondensator zwischenzeitlich wieder 
aufzuladen. (normalerweise hat man bei hoher Wandelrate dann wenige 10 
Ohm)

Jey Soon schrieb:
> Recommended Impedance of Analog Voltage Source 2.5 kΩ,
Das bezieht sich auf den Analog-Eingang oder?
Wenn ja: das ist die maximale Quellimpedanz die der Analog-Eingang bei 
maximaler Umgebungstemperatur haben sollte damit die Leckströme am 
Analogeingang nicht zur Meßwertverfälschung führen.
Bei Raumtemperatur kannst Du das etwas entspannter sehen.

Gruß Anja

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.