A/D Wandler PIC 30F4013
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  AD-Wandler (Allgemein)  |  A/D Wandler PIC 30F4013 « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: A/D Wandler PIC 30F4013  (Gelesen 2928 mal)
 
Sascha_Focus
Jr. Member
**
Offline Offline

Beiträge: 75


Profil anzeigen
« am: Juli 08, 2007, 14:38:06 »

Hallo,

kann mir ev. jemand mal die Takteinstellungen für den A/D Wandler erklären?
Habe zwar in das Datenblatt und das Ref.-Manual geschaut, aber habe nicht so recht den Durchblick.

Wäre sehr nett.

Gruß Sascha
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: Juli 09, 2007, 18:30:16 »

Zitat
kann mir ev. jemand mal die Takteinstellungen für den A/D Wandler erklären?

Was genau ist Dir unklar?

Als erstes muß (in Abhängigkeit von der Taktfrequenz des PICs) TAD über ADCS<5:0> so eingestellt werden, daß die minimale TAD nicht unterschritten wird. Ohne die Verwendung der externen Referenzpins (VREF+ und VREF-) muß TAD mindestens 668ns betragen.

Die "Sampling Time" ist die Zeit, die der analogen Quelle zur Verfügung gestellt wird, C_Hold aufzuladen (über R_IC, R_SS und den Innenwiderstand R_S der Quelle, siehe Figure 19-4 im Datenblatt). Die Zeit, bis sich der Kondensator im ungünstigsten Fall (Eingangsspannung = VREF) mit einem Fehler <= 0.5LSB auf den stationären Endwert aufgeladen hat, beträgt analog zu den PIC18:

  T_C = -(C_Hold) * (R_IC + R_SS + R_S) * ln(1/8192)

1/8192 ist dabei der zugelassene Fehler von <= 0,5LSB, denn in der so berechneten Zeit kann der Kondensator mindestens auf

  V_Hold = VREF - (VREF/8192)

aufgeladen werden (ein LSB ist VREF/4096).

Die "Sampling Time" kann über SAMC<4:0> in ganzzahligen Vielfachen von TAD eingestellt werden und es muß gelten:

  SAMC<4:0> * TAD >= T_C


Viele Grüße

Bernd
Gespeichert

Sascha_Focus
Jr. Member
**
Offline Offline

Beiträge: 75


Profil anzeigen
« Antworten #2 am: Juli 18, 2007, 06:20:49 »

Hallo,

nutze einen dsPIC30 mit 24MHz. Als Referenzspannung für den 12Bit
A/D-Wandler dient ein MCP1525 mit 2.495V. Bei einer Spannung von 332mV
am Eingang des AD Kanals, gibt er mir einen Wert von 514 aus, obwohl es
rechnerisch 544 sein müßten. Dies zieht sich bis zum Endbereich hin.
Liegt es an der Einstellung des AD`s?



Code:
void init_ADC(void)
{
    ADPCFG=0xC0;
    ADCSSL=0x00;
    ADCON1bits.ADON=0;            //A/D aus
    ADCON1bits.ADSIDL=0;
    ADCON1bits.FORM=0;
    ADCON1bits.SSRC=7;
    ADCON1bits.ASAM=0;
    ADCON1bits.SAMP=1;
    ADCON1bits.DONE=0;
   
    ADCON2bits.VCFG=1;
    ADCON2bits.CSCNA=0;
    ADCON2bits.BUFS=0;
    ADCON2bits.SMPI=0;
    ADCON2bits.BUFM=0;
    ADCON2bits.ALTS=0;

    ADCON3bits.SAMC=16;
    ADCON3bits.ADRC=0;
    ADCON3bits.ADCS = 16;  //
    ADCHS=0;
    ADCON1bits.ADON = 1; // turn ADC ON
}


unsigned int read_adc(unsigned char channel)
{
  ADCHS=channel;
  ADCON1bits.SAMP = 1; // start sampling then ...
  Nop();
  // after 31Tad go to conversion
  while (!ADCON1bits.DONE);// conversion done?
  return ADCBUF0;
}

unsigned int AV_ADC(unsigned char channel)
{
  unsigned long av=0;
  unsigned char i;
  for(i=16;i>0;i--)
    {
    av = av+read_adc(channel);
    }
  av = av/16;
  return av;
}


Der Kanal ist über einen OP(LM358) an einen Spannungsteiler
angeschloßen(91k/13k). Bei einer Spannung von 5V ist der Wert ganz
genau. Bei 2.5V zeigt er mir 100mV zu wenig an und bei 8V 100mV zuviel. Habe den Spannungsteiler auch schon direkt an den PIC angeschloßen, da ist es das selbe.


Gruß Sascha
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #3 am: Juli 18, 2007, 17:00:33 »

Ich habe mir den Code noch nicht angesehen, denn:

Zitat
Als Referenzspannung für den 12Bit A/D-Wandler dient ein MCP1525 mit 2.495V.

Damit wird der A/D Wandler außerhalb seiner Spezifikation betrieben und es können Verstärkungs- und Linearitätsfehler auftreten. Der Paramater AD05 im Datenblatt gibt an, daß die positive Referenzspannung VREFH zwischen 2,7V (AVSS + 2,7V) und 5V (AVDD) liegen muß. Teste also erst einmal mit einer größeren Referenzspannung.


Viele Grüße

Bernd
Gespeichert

Sascha_Focus
Jr. Member
**
Offline Offline

Beiträge: 75


Profil anzeigen
« Antworten #4 am: Juli 19, 2007, 14:40:45 »

Hi,

habe jetzt nen MCP1541 (4.096V)eingebaut. Da ist es dasselbe.

Gruß Sascha
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.067 Sekunden mit 18 Zugriffen.
 
Top! Top!