Presentation laddar. Vänta.

Presentation laddar. Vänta.

William Sandqvist AD-omvandling. William Sandqvist Ny processor med AD-omvandlare PIC16F628 saknar AD-omvandlare. När vi.

Liknande presentationer


En presentation över ämnet: "William Sandqvist AD-omvandling. William Sandqvist Ny processor med AD-omvandlare PIC16F628 saknar AD-omvandlare. När vi."— Presentationens avskrift:

1 William Sandqvist william@kth.se AD-omvandling

2 William Sandqvist william@kth.se Ny processor med AD-omvandlare PIC16F628 saknar AD-omvandlare. När vi behöver AD-omvandlare här i skolan använder vi PIC16F874. Många andra PIC- processorer har inbyggd AD- omvandlare, tex. PIC16F690. 8 AD-kanaler på PORTA och PORTE AN0/RA0/2 AN1/RA1/3 AN2/RA2/4 AN3/RA3/5 AN4/RA5/7 AN5/RE0/8 AN6/RE1/9 AN7/RE2/10

3 William Sandqvist william@kth.se En AD behöver en DA DA i puben ( Digitalt in Öl ut ) …Digitalt in Spänning ut … I en DA-omvandlare styr det binära talets bitar binärkodade ”strömmar” som summeras till ett analogt spänningsvärde i en resistor.

4 William Sandqvist william@kth.se Succesiva approximationer AD-omvandling med succesiva approximationsmetoden AD-omvandling enligt metoden succesiva approximationer är jämförbart med att väga en okänd massa med binära vikter på en balansvåg. Man provar steg för steg med att lägga till binära ”vikter” om ” ”. AD-omvandlaren innehåller en DA- omvandlare och en komparator.

5 William Sandqvist william@kth.se AD-omvandlingen tar tid. För varje bits upplösning krävs ett ytterligare steg. Binära vikter 8 4 2 1 … 8 8+4 8+2 8+2+1

6 William Sandqvist william@kth.se En AD-omvandlare, 8 kanaler Med PIC-processorns AD- omvandlare kan man mäta 8 olika spänningar, en i taget. Kanalvalsmultiplexor.

7 William Sandqvist william@kth.se Inre eller Yttre referensspänning? AN3 och AN2 kan användas till yttre referensspänning ( jäm- förelsespänning ) och jord. Det enklaste är naturligtvis att använda matningsspänningen ( AV DD och AV SS ) som referens, men det kan finnas olika anledningar till att använda yttre spänningsreferens.

8 William Sandqvist william@kth.se Yttre precisionsreferens Voltmeter. Det är viktigt att den uppmätta spänningen jämförs med en exakt referens. Om utrustningen tillexempel är batteridriven, så varierar matnings- spänningen för mycket för att vara lämplig som referensspänning. AD-omvandlaren får nu skalfaktorn 4 mV/steg. Division med "4“, för att få skalfaktorn 1 mV/steg, kan man utföra genom att "skifta" det binära talet två steg åt höger. ( Multiplikationer och divisioner innebär mycket programkod för PIC- processorer som saknar inbyggd multiplikatorenhet ). Man ansluter då en yttre referensspänning till ingången AN3. Spänningsreferenskretsen MAX6241 har spänningen 4,096V. Detta "ovanliga" spänningsvärde kommer av att talet 4096 är en tvåpotens, 2 12 = 4096. PIC-processor som voltmeter.

9 William Sandqvist william@kth.se Inre precisionsreferens? PIC12F1840 har en inre referensspänning 1,024. Den inbyggda AD- omvandlaren kan då få 1 mV omvandlingssteg. PIC-processor som voltmeter.

10 William Sandqvist william@kth.se Högsta upplösning Vill man ha högsta upplösning vid mätning av givarsignaler måste man se till att givarens utspänningsområde och det spänningsområde AD-omvandlaren omvandlar helt "täcker" varandra. I allmänhet krävs det då att både AD- omvandlarens referensspänning och 0-nivå kan justeras. Hög upplösning kräver att AD-omvandlarens referensspänning och 0-nivå kan justeras efter givarens spänningsområde.

11 William Sandqvist william@kth.se Ex. Linjäriserad NTC-termistor Ett praktiskt exempel är temperaturmätning med en NTC-termistor. En termistor har hög känslighet, men olinjärt temperatursamband. I praktiken seriekopplar man termistorn med en fast resistor så att den ingår i en spänningsdelare. ( Tekniken beskrivs i boken Mätgivare ). Figuren visar sambandet mellan spänning och temperatur för en sådan spänningsdelare. Kurvan börjar vid 0,5 V och slutar vid 3,5V och blir däremellan förvånadsvärt linjär.Mätgivare

12 William Sandqvist william@kth.se Ex. Linjäriserad NTC-termistor Genom att ställa in V REF- = 0,5V och V REF+ = 3,5V med potentiometrarna, så utnyttjar temperaturgivaren AD-omvandlarens hela spänningsområde. 3,5V 0,5V

13 William Sandqvist william@kth.se Ratiometrisk inkoppling Ratiometrisk anslutning av en potentiometer till en AD-omvand- lare. Som referensspänning kan den ostabiliserade matningsspän- ningen användas! Ibland behöver man stabila referens- spänningar både till givare och AD- omvandlare. Ett ofta använt konstgrepp är då ratiometrisk anslutning av givaren. Så länge givarens referensspänning och AD-omvandlarens referens- spänning ändrar sig i samma proportioner så omvandlas samma värde. Om man har samma referens- spänning till givare och AD-omvand- lare så ställs det därför inga krav på att den ska vara stabil. Detta är några av anledningarna till att PIC-processorns AD-omvandlare har inkopplingsmöjligheter för externa spänningsreferenser!

14 William Sandqvist william@kth.se 10 bitar 1024 steg 5 mV/steg Upplösning  0,1% b9b8b7b6b5b4b3b2b1b0b9b8b7b6b5b4b3b2b1b0 AD-omvandlaren är på 10 bitar. Vad kostar en givare som har 10 bitars upplösning? 100 $ ? Vanligare är att man har råd med en 8 bitars givare. (PICprocessorn själv kostar 10 $). Behövs 10 bitars upplösning?

15 William Sandqvist william@kth.se 8 bitar 256 steg 20 mV/steg Upplösning  1% b 9 b 8 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 Behöver man bara 8 bitars upplösning kan man strunta i de två minst signifikanta bitarna och hantera resultatet som en Byte. 8-bitars program

16 William Sandqvist william@kth.se Vänsterjusterat resultat för 8 bitar Vänsterjusterat. 8 bitarstal: char answer; answer = ADRESH;

17 William Sandqvist william@kth.se 8 effektiva bitar 256 effektiva steg 5 mV/steg Upplösning  1% 1 0 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 Behöver man bara 8 bitars upplösning kan de två mest signifikanta bitarna få vara konstanta. Man slipper förstärka givarsignalen eftersom steget är 5 mV. Undvik förstärkare En febertermometer behöver bara temperaturområdet 34  …43  (eller hur!) 34  43 

18 William Sandqvist william@kth.se Högerjusterat resultat 10 bitar Högerjusterat. 10 bitarstal: unsigned long answer; answer = 256*ADRESH; answer += ADRESL;

19 William Sandqvist william@kth.se Vad händer om signalen ändrar sig under omvandlingen? AD-omvandlaren kan aldrig ”ångra” en redan bestämd bit! Resultatet blir ett värde som före- kommit under omvandlingen, men vid en obestämd tidpunkt!

20 William Sandqvist william@kth.se Problemet Samplingstid- punkten blir obestämd!

21 William Sandqvist william@kth.se Sample & Hold -krets Lösningen är att den analoga signalen ”fryses” under omvandlingen. Vid AD-omvandlingens start tar en switch ett ”sample” av signalen och lagrar det i en kondensator. PIC-processorernas samplingskondensator har kapacitansen 120 pF.

22 William Sandqvist william@kth.se ACQUISITION TIME t ACQ Varje gång man har valt/ändrat kanal måste samplingskondensatorn C HOLD hinna ladda upp sig till den analoga spänningen. Detta tar c:a 20  s. En 20  s fördröjning kan enklast programmeras som: char i = 3; do ; while ( --i > 0); /* 4 MHz clock */

23 William Sandqvist william@kth.se AD-omvandlarens inställningar Det är många inställningar som måste göras för att få fart på AD- omvandlaren! Ett inställningsscript finns som hjälpmedel

24 William Sandqvist william@kth.se AD-omvandlarens klockfrekvens PIC-processorn är snabbare än AD-omvandlaren. Som klocka för AD- omvandlaren kan PIC-oscillatorns frekvens delad med 2, 8, eller 32 användas. Vid 4 MHz klocka ska oscillatorfrekvensen delas med minst 8 innan den används till AD-omvandlaren.

25 William Sandqvist william@kth.se Ställa in AD klockfrekvens

26 William Sandqvist william@kth.se Ställa in portpinnar AN/Ref/Dig

27 William Sandqvist william@kth.se Vilka kombinationer är möjliga? 8 analoga kanaler, matningen som referens? En analog kanal med ratiometrisk anslutning? Två analoga kanaler, matningen som referens? Oooops!

28 William Sandqvist william@kth.se Ställa in portpinnar AN/Ref/Dig Glöm inte att också ställa in portpinnarnas TRIS-register. ”1” för ingångar Analoga eller Digitala, ”0” för Digitala utgångar.

29 William Sandqvist william@kth.se Ställa in AD kanal

30 William Sandqvist william@kth.se Starta AD och vänta på klar Starta AD- omvandling: GO = 1; Vänta på AD-omvandling klar: while( GO ) ;

31 William Sandqvist william@kth.se Läsa av resultatet två resultatregister Högerjusterat. 10 bitarstal: unsigned long answer; answer = 256*ADRESH; answer += ADRESL; Vänsterjusterat. 8 bitarstal: char answer; answer = ADRESH;

32 William Sandqvist william@kth.se Hur snabbt kan man omvandla? Varje AD-omvandling behöver 12 AD-klockcykler plus ett 2 AD-klock- cykler mellanrum mellan omvandlingarna. Används alla 8 kanalerna så reduceras omvandlingshastigheten. T ACQ 20  s måste nu införas mellan kanalbytena. I praktiken behöver PIC-processorn också tid för att göra något med alla mätvärden! Vi använder f osc /8

33

34 William Sandqvist william@kth.se AD-lab Blinkfrekvensen ställs in med potentiometern!

35 William Sandqvist william@kth.se Initiering AD-lab /* AD Setup. Se help Script! */ /* 01.xxx.x.x.x ADclock = fosc/8 xx.000.x.x.x select ch AN0 xx.xxx.0.x.x go = 0, start AD later xx.xxx.x.0.x – xx.xxx.x.x.1 AD unit is ON */ ADCON0 = 0b01.000.0.0.1; /* 0.xxx.xxxx left justification x.000.xxxx – x.xxx.1110 internal reference, Vref+ = Vcc, Vref- = Vss */ ADCON1 = 0b0.000.1110; TRISA.0 = 1; /* RA0/AN0 is input */

36 William Sandqvist william@kth.se while(1) { char i = 3; do ; while ( --i > 0); /* wait tACQ */ GO=1; /* start AD */ while(GO); /* wait for done */ blinktime = ADRESH; /* read result 8 msb */ /* double loop i,j generates blinkfrequency */ for( i=0;i < blinktime; i++) { for( j=0;j < 250; j++); } /* toggle lightdiode on/off */ LED = ! LED; }

37


Ladda ner ppt "William Sandqvist AD-omvandling. William Sandqvist Ny processor med AD-omvandlare PIC16F628 saknar AD-omvandlare. När vi."

Liknande presentationer


Google-annonser