Ett urval D/A- och A/D-omvandlare Om man vill ansluta en mikrodator (eller annan digital krets) till sensorer och givare så är det inga problem så länge givarna själva är digitala. Strömbrytare, reläer och vinkelgivare är lätta att ansluta till digitala kretsar eftersom signalerna är digitala (av/på, etta/nolla). Men om analoga kretsar används blir gränssnittet mer komplicerat. Vad som behövs är ett sätt att översätta analoga signaler till digitala (och tvärtom). Vi behöver alltså en analog till digital-omvandlare (ADC) och en digital till analogomvandlare (DAC). En A/D-omvandlare har en ingång för elektrisk analog signal (kan vara spänning eller ström) och ger ett värde i binär form. Se blockschemat: En D/A-omvandlare gör precis tvärtom; omvandlar ett binärt värde till en analog signal: 1
A/D- och D/A-omvandlare är viktiga delar i en dators gränssnitt. De finns nästan alltid inbyggda i en eller annan form i datorsystem och enchipsdatorer. Det är mycket enklare att konvertera från digital till analog än tvärtom. I denna översikt börjar vi därför med D/A-omvandlare. 2
R/2nR-omvandlaren Denna D/A-omvandlare är en s.k. binärviktad D/A-omvandlare. Det är en variant av en inverterad summator. Den klassiska summeraren med operationsförstärkare har flera spänningsingångar, en negativ återkoppling och en spänningsutgång. Utgångsspänningen är den inverterade summan av alla ingångsspänningar. Tack vare operationsförstärkarens virtuella jord blir detta en direkt följd av Kirchhoffs 1.a lag. I denna summator har naturligtvis alla resistorer samma värde. Men låter man resistanserna vara olika, så kommer ingångsspänningarna att ha olika stark effekt eftersom en lägre resistans ger en större ström. Låt resistorerna vara t.ex. R, 2R och 4R. Då blir följden denna: V out /R = -(V 1 /R + V 2 /2R + V 3 /4R) 3
Om man tänker sig att V 1, V 2 och V 3 alla är 5V så kommer V 1 att ha dubbelt så stor inverkan som V 2 och V 2 dubbelt så stor inverkan på V 3. Tänker vi oss då ett binärt tal på tre bitar med den mest signifikanta inkopplad på V 1 så blir V out en analog motsvarighet till 3-bitars-talet. Vad blir utspänningen i ovanstående nät, ifall V 1, V 2 och V 3 alla är = 5V? 4
Om vi vill bygga ut A/D-omvandlaren till att omfatta fler bitar (6) så ser de tut såhär: Det är naturligtvis viktigt att alla logiska nivåer är exakt lika. 5,03 V på en ingång och 4,87 V på en annan ställer till problem med noggrannheten. Likaså är det oerhört viktigt att motstånden är mycket noggrant utvalda. Det duger inte med 10% eller 5% noggrannhet! Speciellt de låga resistanserna måste vara väldigt exakta. Det är faktiskt så att just denna svaghet gör att man sällan använder denna typ av A/D-omvandlare. Det finns ett bättre alternativ. R/2R-omvandlaren Svårigheten att bygga ett nätverk av exakta resistanser med mycket skilda värden elimineras med den s.k. R/2R-omvandlaren. Den använder bara två unika resistorvärden. Detta listiga sätt att sätta ihop en resistorstege gör att vi bara behöver två resistorvärden, något som lätt kan utföras på en integrerad krets. 5
Man kan lätt visa att den översta biten här ovan i ritningen har lika stor inverkan på strömmen som resten av bitarna tillsammans. För varje steg vi kommer mot lägre bitar sväljs halva strömmen mot steget ovanför, dvs. vi får en binärviktad stege precis som i föregående konstruktion men med den skillnaden att här har vi bara två olika motståndsvärden. Detta går att tillverka med stor precision. PWM - pulsbreddsmodulering En pulsbreddsmodulerad signal består av en följd av pulser av olika längd. Många komponenter är "tröga" och hinner inte uppfatta att signalen ändrar sig, utan reagerar på signalens medelvärde som om det vore en konstant spänning (medelspänningen). Man kan också enkelt lågpassfiltrera signalen. 5 0 5 0 bredd 1 V 3 V period 6
D/A-omvandlaren är ofta en delkomponent i A/D-omvandlare. Men vi ska först titta på en som är principiellt enkel och lätt att förstå. Flash A/D Flash = blixt! Denna A/D-omvandlare är riktigt snabb. Den kallas även parallell A/D-omvandlare och är väldigt lätt att förstå. Den består av ett stort antal komparatorer, en för varje diskret spänningsnivå. Här nedanför visas en omvandlare för tre bitar. Observera att det krävs en förfärlig massa komparatorer; det är priset man får betala. Behöver man 8 bitars noggrannhet så krävs 255 komparatorer! Men snabbt blir det. Om vi tänker oss att omvandla inom området 0-8V, får vi sätta V ref till 7 V och får en upplösning på 1 V. 7
Här visas en alternativ konstruktion med EXOR-grindar och dioder: Flash-omvandlaren är utan tvekan den mest effektiva A/D-omvandlaren. Den är snabb och den kan också lätt anpassas för speciella ändamål när man behöver ickelinjär omvandlare. Tyvärr är den också dyr, för varje extra bits noggrannhet fördubblas antalet komponenter. 8
Räknebaserade A/D Andra A/D-omvandlare som är ganska lätt att förstå sig på är de som baserar sig på räknare och komparator. Enkelt uttryckt så letar man på olika sätt upp det digitala värdet med hjälp av en komparator. En modell är känd under namnet trappstegsomvandlare. En räknare räknar upp, dess D/A-omvandlade värde jämförs med det eftersökta och när komparatorn slår om så har man hittat det digitala värdet. 9
En nackdel med trappstegsmetoden är att man börjar från noll omigen efter varje träff. Låter man istället räknaren gå både upp och ned så får man en snabbare funktion: Följar-A/D. En nackdel med denna A/D är att den digitala utsignalen aldrig är stabil även om den analoga signalen är det. 10
Successiv approximation A/D är en tredje variant av räknebaserad A/D som har ett par fördelar: den är både snabbare och har en stabil utsignal. Istället för att bara räkna upp och ner, så styr man räknaren till att i steg hitta fram till rätt värde genom att halvera området som är aktuellt. För varje sånt steg kommer man bit för bit närmare det riktiga digitala värdet. Denna omvandlare finner vi i vår AtMega-processor. 11
Integrerande A/D Många A/D-omvandlare använder sig av en D/A-omvandlare + komparator. Men har vi tillgång till en exakt tidbas, kan vi klara oss med enklare metoder. Metoden med integrerande omvandling bygger på att man under en exakt tid laddar upp en kondensator och mäter den tiden. Den kräver noggrann kalibrering och det är svårt att över tid få ett stabilt värde på utsignalen. En förbättrad variant av denna är den s.k. dual slope -omvandlaren som efter uppladdningen med en okänd spänning gör en urladdning med en känd. Man får då en automatisk självkalibrering hela tiden och resultatet blir mer okänsligt för komponentvariationer. Denna typ är vanlig i kommersiella sammanhang. 12
Delta-Sigma (ΔΣ) A/D Denna typ av omvandlare producerar pulser vars täthet är proportionell mot den uppmätta spänningen. En integrerare har en central roll. Ju snabbare den integrerar insignalen, desto tätare kommer pulserna. Dessa kan sen lätt räknas i t.ex. processorns timer. 13
Denna typ av omvandlare är mycket använd. Billig, effektiv och snabb. 14
Praktiska problem Upplösning Noggrannhet Kvantiseringsfel Samplingsfrekvens Sample & Hold Vikning Skalfaktorfel Offsetfel Linjäritetsfel Brus Stegsvar 15
16
Förhållande upplösning/komplexitet: 1. Integrerande, single-slope 2. Integrerande, dual-slope 3. Trappstegs-A/D 4. Följar-A/D 5. Successiv approximation 6. Flash Snabbhet: 1. Flash 2. Följar-A/D 3. Successiv approximation 4. Integrerande, single-slope 5. Trappstegs-A/D 6. Integrerande, dual-slope Stegsvar: 1. Flash 2. Successiv approximation 3. Integrerande, single-slope 4. Trappstegs-A/D 5. Integrerande, dual-slope 6. Följar-A/D 17