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

Slides:



Advertisements
Liknande presentationer
Introduktion till dagens övning
Advertisements

EDA 480 – Maskinorienterad Programmering
Talföljder formler och summor
Elektroniska filter William Sandqvist En verklig signal … Verkliga signaler är svårtolkade. De är ofta störda av brus och brum. Brum.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
hej och välkomna EKVATIONER Ta reda på det okända talet.
IE1206 Inbyggd Elektronik F1 F2
Kom igång med DSO-X 2014A Oscilloskopet har inbyggda ”tränings-spänningar” Anslut två mätsladdar med prob till Demouttagen. Starta oscilloskopet. Tryck.
Många studenter använder en LCD-display till sin programmeringsuppgift
William Sandqvist Störskydd William Sandqvist
Vill du lära dig kort division?
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
Komplexa tal inför Laborationerna
Spolen och Kondensatorn motverkar förändringar
PICKit2 programmer-to-go
IE1206 Inbyggd Elektronik F1 F2
William Sandqvist PIC Comparator Tips 'n Tricks William Sandqvist
C-programmering ID120V William Sandqvist Länkad lista
Komparatorn en 1 bits AD-omvandlare
Kretselement på grafisk form
Grundläggande programmering
William Sandqvist PSpice – hemma Som simuleringsprogramvara använder vi Orcad PSpice, samma program kommer sedan att användas I elektronikkurserna.
Pekare och speciell programstruktur i inbyggda system
William Sandqvist Digitalt oscilloskop William Sandqvist
Styrteknik: Programmering med MELSEC IL PLC2A:1
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
NTC Termistor Resistorer av metalloxid-er är mycket temperatur-känsliga. Resistansen minskar med ökande temperatur så temperaturkoefficienten är negativ.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
William Sandqvist Lab 1 Några slides att repetera inför Lab 1 William Sandqvist
William Sandqvist PIC 16F628 Timers William Sandqvist
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
William Sandqvist Sluten strömkrets? Man har två glödlampor för 220 V och två strömbrytare. Nu vill man ansluta de båda lamporna till 220.
Språket för inbyggda system 2
Kombinerade serie- och parallellnät
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
William Sandqvist IS1500 Datorteknik William Sandqvist
William Sandqvist Lab 3 Några slides att repetera inför Lab 3 William Sandqvist
William Sandqvist Lab 2 Några slides att repetera inför Lab 2 William Sandqvist
William Sandqvist Många spännande komponenter passar inte 2,54 mm modulen? Därför finns det ”Breakoutboard” som anpassning, för den som.
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
William Sandqvist DA-omvandling, oftast PWM.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
William Sandqvist Är Du bra på for-loopar? Ge triangelns höjd: 12 1> * > *** > *****
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
IE1206 Inbyggd Elektronik F1 F2
DA-omvandling, oftast PWM William Sandqvist En DA-omvandlare tar stor plats på processor- chippet. Den vanligaste DA-lösningen är i stället.
IE1206 Inbyggd Elektronik F1 F2
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
IE1206 Inbyggd Elektronik F1 F2
Elektronik Viktor Öwall, Digital ASIC Group, Dept. of Electroscience, Lund University, Sweden-
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Microprocessor / Microcontroller
Kapitel 4 AD – DA - omvandlare.
Digitalteknik 3p - DA- och AD-omvandling
Digitalteknik 3p - DA- och AD-omvandling
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

William Sandqvist AD-omvandling

William Sandqvist 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. PIC16F 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

William Sandqvist 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.

William Sandqvist 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.

William Sandqvist AD-omvandlingen tar tid. För varje bits upplösning krävs ett ytterligare steg. Binära vikter …

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

William Sandqvist 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.

William Sandqvist 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 = PIC-processor som voltmeter.

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

William Sandqvist 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.

William Sandqvist 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

William Sandqvist 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

William Sandqvist 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!

William Sandqvist 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?

William Sandqvist 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

William Sandqvist Vänsterjusterat resultat för 8 bitar Vänsterjusterat. 8 bitarstal: char answer; answer = ADRESH;

William Sandqvist 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 

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

William Sandqvist 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!

William Sandqvist Problemet Samplingstid- punkten blir obestämd!

William Sandqvist 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.

William Sandqvist 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 */

William Sandqvist 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

William Sandqvist 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.

William Sandqvist Ställa in AD klockfrekvens

William Sandqvist Ställa in portpinnar AN/Ref/Dig

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

William Sandqvist 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.

William Sandqvist Ställa in AD kanal

William Sandqvist Starta AD och vänta på klar Starta AD- omvandling: GO = 1; Vänta på AD-omvandling klar: while( GO ) ;

William Sandqvist 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;

William Sandqvist 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

William Sandqvist AD-lab Blinkfrekvensen ställs in med potentiometern!

William Sandqvist 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 = 0b ; /* 0.xxx.xxxx left justification x.000.xxxx – x.xxx.1110 internal reference, Vref+ = Vcc, Vref- = Vss */ ADCON1 = 0b ; TRISA.0 = 1; /* RA0/AN0 is input */

William Sandqvist 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; }