CT3760 Mikrodatorteknik Föreläsning 8 Tisdag 2005-09-20 Analog till Digitalomvandling Om man har n bitar kan man uttrycka 2 n möjligheter. Det största nummeriska värdet är M = 2 n -1 För tre bitar blir det i så fall: 2 3 = 8 och M = 2 3-1 =7. Maxvärdet är binärt 111 Man kan med tre bitar uttrycka 8 st nivåer. V ref V ref /8 Digital in 111 Figurren ovan visar en ideal funktion. Den vågräta axeln anger en digital insignal. Den lodräta aceln motsvarar en analog utsignal. En analog signal är kontinuerlig och en digital signal är diskret. Övergången mellan talen 000 och 001 kallas 1 LSB och motsvarande spänningsförändring är V ref /8. Genom att succesivt addera 1 LSB så når man upp till talet 7 = 111 2. Utspänningen vid 111 2 är alltså 7* V ref /8 eller V ref /8 1 LSB. Observera att maximal utspänning inte är V ref. Ibland har man en beteckning FS ( Full Scale ) som normeras till 1. Värdena på den lodräta axeln blir i så fall ( 1/8 2/8 3/8. 6/8 7/8 och 8/8 =1 Värdet 1 skulle i så fall motsvara den digitala insignalen 1000, men vi har bara betraktat tre bitar. FS är ett hypotetiskt värde som inte inträffar. Exempel Vi har en 5 bit D/A omvandlare. En LSB motsvarar 0,2 V. Vad är utspänningen då den digital insignalen är 1 0000? Vad är utspännngen för 1 1111? Vad bör referensspänningen vara? 2005-09-20 CT3769 F8 1/8
Svar 10000 2 är det decimala talet 16 Utspänning 16*0,2 = 3,2 V 1 1111 2 är det decimala talet 31 Utspänning 31*0,2 = 6,2 V Referensspänningen 6,2 V + 1 LSB = 6,4 V Upplösningen hos en D/A anges på olika sätt. Vikten på LSB biten anges som 2 -n. Man kan också ange antalet bitar. 5-bitarsomvandlaren ovan har alltså upplösningen 0,03125 eller 3,125% En omvandlare kan aldrig bli exakt. Figuren ovan visar att Det egentligen bara finns 8 diskreta värden för en tre-bit omvandlare. Den analoga utsignalen kan för ett digitalt in-värde skilja ± 1/2 LSB, utan att man kan säga att det hör till ett annat digitalt in-värde. En D/A omvanddlare är linjär om alla värden håller sig inom ± 1/2 LSB. Exempel En D/A omvandlare har 8 bitar och referensspänningen 10,240 V. En LSB motsvarar då 10,240/256 = 0,040 V En digital insignal på 0001 1100 2 = 28 10 motsvarar då en nominell spänning på 1,12 V. Omvandlaren är korrekt så länge som spänningen ligger i inervallet 1,10 --- 1,14. Gränserna motsvarar då insignalen 0001 1011 = 2710 och 27*0,04 + 0,02 = 1,10 Och insignalen 0001 1101 = 2910 och 29*0,04-0,02 = 1,14 För att ställa till begreppen så kan en 8 bit omvandlare ha en noggranhet på 10 bitar. Det betyder att området som värdena kan variera inom är mycket smalare än vad som egentligen fodras för en 8 bit omvandlare. Bandet blir ¼ så brett. En annan viktig storhet är att omvandlaren skall vara monoton. Om insignalen ökar med en enhet, så skall utsignalen vara större än tidigare. ( Lika med kan accepteras, men absolut inte mindre. ) Offsetfel innebär att noll in ej ger noll ut. Offset skall ligga inom ± 1/2 LSB. Om man anväder diskreta omvandlare, så finns oftast möjlighet att trimma kretsen så att felet blir nära noll. Inställningstiden är också ett viktigt begrepp. Tiden det tar från att insignalen ändrats till dess att utsignalen är stabil. 2005-09-20 CT3769 F8 2/8
Hur man gör D/A-omvandlare Enklaste är att använda sig av spänningsdelare. För en tre- bit omvandlare går det åt 8 resistorer och 7 omkopplare. Alla resistanser har samma värde. För få bitar fungerar det bra, men vill man ha många bitars upplösning blir antalet orealistiskt. Nästa variant är att använda sig av viktade resistorer. Det innebär att man har en uppsättning resistanser med värdena R 2R 4R 8R 16R osv. Problemet här är att man får stora skillnader på resistanserna. Det blir svårt att hålla samma tolerans på samtliga. 2005-09-20 CT3769 F8 3/8
Det allra vanligaste sättet är att använda en R 2R stege. Här räcker det med resistanser med värdet R och med värdet 2R. ( Resistansen längst ner skall vara 2R ) Man har också behov av en Op-förstärkare och en referensspänningskälla. Drivspänningen till kretsen är skilld från referensespänningen. En referensspänning får aldrig belastas. Belastar Du en spännngskälla så blir utspänningen olika beroende på belastningen. 2005-09-20 CT3769 F8 4/8
Hur man gör A/D-omvandling Man behöver en analog komparator. V 1 V 2 + _ ut Om V1 > V2 blir utsignalen 1, i annat fall blir utsignalen noll. En analog komparator finns i AT16 Vi behöver en Sample and Hold V in GND Inspänningen lagras i kondensatorn. Det är sedan det lagrade värdet som omvandlas. Det snabbaste sättet att göra en omvandling är att använda en FLASH-omvandlare. Den består av ett antal komparatorer och en referensspänning. Ref. spänning från resistans kedja. V in Kodomvandlare Ut Inspänningen jämförs med ett antal referensspänningar. Kodomvandlaren gör sedan om resultatet till ett binärt tal. Mycket snabb omvandlare. Blir komplex om man vill ha hög upplösning. För r bitar fodras 2 r 1 komparatorer. 2005-09-20 CT3769 F8 5/8
Tracking converter V in Up/Down Räknare V ref D/A Digital ut Räknarens utvärde omvandlas till en analog signal. Denna signal jämförs med insignalen. Räknaren räknar antingen upp eller ner beroende på värdet från komparatorn. Räknarens värde är också digital utsignal. Omvandlaren har en inställningstid. Följer långsamma förlopp bra. Har svårt att fungera korrekt vid snabba signalförändringar. Successive approximations register V in SAR V ref D/A Digital ut Principen är Gissa ett tal Man undersöker om insignalen motsvarar halva referensspänningen. Är inspänningen lika med eller större så kommer MSB-biten att vara ett. I annat fall noll. Man undersöker sedan nästa bit, och testar om spänningen är större eller mindre. Figuren nedan ger en ide om hur det hela går till. 2005-09-20 CT3769 F8 6/8
Fördelen här är att omvandlingstiden alltid är konstant. Antalet omvandlingar är antalet bitar plus ett. Man behöver en extra omvandling för att säkerställa resultatet. I AT mega 16 finns en omvandlare av ovanstående typ. Det är en 10 bit omvandlare. Microcontrollern har 8 kanaler in. En multiplexer används för att ange vilken kanal som skall omvandlas. Man kan göra kontinuerlig omvandling på en kanal. Man kan också göra en enstaka omvandling. Då resultatet är klart sätts en bit i statusregistret för ADC Några exempel Vi har en 8 bit omvandlare med referensspänningen + 5V. Vin = 3,5 V. Vad blir digital utsignal? 1 LSB motsvarar 5/256 = 0,01953 V 3,5/0,01953 = 179,2 Utsignalen blir 179 10 = 1011 0011 2 Vi har en 8 bit omvandlare med referensspänningen + 5V. Vilken insignal motsvarar 1000 000 2 Svar 2,5 V Dvs halva referensspänningen. Vi har en 8 bit omvandlare med referensspänningen + 5V. Vilken är den högsta spänning som ger utsignalen 0x00? Vilken ä den garanterat minsta spänning som ger utsignalen 0xFF? 2005-09-20 CT3769 F8 7/8
1 LSB motsvarar 0,01953 V 0,5 LSB motsvarrar då 0,0098 V Inspänningen kan inte vara större än 0,5 LSB då noggranheten hos en omvandlare är ± 0,5 LSB. För att få utsignalen till 0xFF måste man ha inspänningen Vref 1LSB i det här fallet blir det 5,0000 0,01953 = 4,98047 V. Detta är det idala värdet. Om man även tar hänsyn till gänserna ± 0,5 LSB måste man lägga till 0,5 LSB Resultatet blir då 4,9902 V. I det här sammanhanget är det lämpligt att fundera på hur många siffror som man kan ange ett tal med. Vi har en 10 bit omvandlare. Referensspänningen är 10,240 V. Insignalen 6,67 V skall omvandlas till ett digitalt tal. 1 LSB = 10,24/ 1024 = 10 mv. Decimala talet blir 6,67/ 0,01 = 667 Motsvarande binära tal är 10 1001 1011 Om man istället haft en 8 bit omvandlare med samma referensspänning. Vad hade det get för utsignal? 1LSB = 10,24/256 = 40 mv Decimaltalet blir nu 6,67/0,04 = 166,75 Deciamldelen används ej. 166 10 = 1010 0110 2 167 10 = 1010 0111 2 Antag nu att vi gjort omvandlingen med en 10 bit omvandlare, men bara vill ha ett resultat på 8 bitar. I så fall använder man de 8 mest signifikanta bitarna. 10 bit omvand 1 0 1 0 0 1 1 0 1 1 8 bit (166) 1 0 1 0 0 1 1 0 1 1 8 bit (167) 1 0 1 0 0 1 1 1 1 1 Här ser man att decimaldelen inte kommer att användas. 8 bit omvandlingen kommer att ge 1010 0110 2005-09-20 CT3769 F8 8/8