A/D- och D/A- omvandlare Jan Carlsson 1 Inledning Om vi tänker oss att vi skall reglera en process så ställer vi in ett börvärde, det är det värde som man vill processen skall åstadkomma. Sedan har vi ett ärvärde, det är det värde som processen faktiskt har. Detta värde mäter vi med hjälp av en givare. Skillnaden mellan ärvärdet och börvärdet är reglerfelet. En regulator får, på grundval av reglerfelet, styra processen via ett ställdon. Därmed har vi fått ett återkopplat system. Regulatorer är ofta digitala, det vill säga att processen styrs av en dator. Detta betyder att vi måste kunna omvandla ärvärdet, som vi mäter med hjälp av givaren, från ett analogt värde till ett digitalt värde. Detta gör vi med en A/Domvandlare När regulatorn har beräknat sin styrsignal så måste denna kunna påverka ställdonet. Då behöver vi en D/A-omvandlare som omvandlar det digitala värdet till en analog signal. Vi skall nu se hur vi skall åstadkomma detta. 2 Sampling och filtrering När man skall omvandla analoga signaler till digitala värden så kan vi inte göra detta exakt, detta innebär att vi får en kvantifiering av värderna 1. Vi arbetar med en viss bitlängd som kan sägas vara ett mått på den upplösning som vi arbetar med. Den biten som representerar den mest betydande biten kallas för MSB och den minst betydande biten för LSB. I talet 1110100 så är den understrukna ettan MSB och den understrukna nollan LSB. Givetvis får vi bättre kvallitet om vi arbetar med en större bitupplösning, men men detta leder naturligtvis till en mera kostsam lösning. Med sampling menar man att man periodvis går in och mäter på en signal 2. Det är då intressant att veta hur ofta man måste gå in och mäta för att mätningen skall vara meningsfull. Enligt Shannons samplingsteorem så måste man ha en samplingsfrekvens som är minst dubbelt så stor som den högsta fekvensen som man är intresserad av att kunna mäta 3. Rent allmänt gäller det att man 1 Se Alciatore[1] p. 302. 2 Signalbehandling är en betydelsefull del av modern elektroteknik som dock ligger utanför ramarna för denna kurs. Den intresserade kan hänvisas till Svärdström[4]. 3 Se Alciatore[1] p. 299. 1
kan uppfatta varje periodisk signal som en summa av sinus och cosinustermer 4 Ofta är det så att de signaler som man är intresserad av är förorenade av olika störningar som ofta har en högre frekvens än den signal som man är intresserad av. Dessa vill man vanligen filtrera bort med ett lågpassfilter (LP-filter) innan man mäter på signalen. Ett sätt att göra dett på är att använda sig av ett RC-nät 5. Ett sådant nät har en överföringsfunktion som är: A = V o 1 = V i 1 + (ωrc) Detta betyder att för låga frakvenser, dvs då ω 0, kommer A 1. Detta betyder att vi för låga frekvenser kommer att släppa igenom signalerna. För höga frekvenser, dvs då ω kommer A 0. Det betyder att filltret kommer att spärra för höga signaler. Därmed har vi fått ett lågpassfilter. När man skall omvandla analoga värden till digitala så går man in och mäter under en viss tid på denna signal. Då kan man knappast acceptera att signalen ändrar sig under den tid vi mäter. Vi vill därför hålla signalen konstant under den tid omvandlingen tar. Detta kan man göra med en sample and hold krets 6. Punkterna 1-5 i Alciatore[1] p 303. Sammanfattar gången i en A/D-omvandling på ett bra sätt. 3 D/A-omvandling När man gör en D/A-omvandling, omvandlar man ett digitalt värde till en analog signal. Efter det att man har gjort detta filtrerar man ofta denna signal med hjälp ave LP-filter för att bli av med övertoner orsakade av kvantifieringen. Vi skall nu se på några olika D/A-omvandlare. 3.1 D/A-omvandlare med viktade reistorer Denna kan man se som en vidareutveckling av en inverterad förstärkare byggd med hjälp av en OP-förstärkare 7. För en sådan gäller att: V out V in = R F R Antag nu att vi inte enbart har en insignal, utan flera och att vi väljer motstånden här som 2 n R där n = 1, 2, 3, 4,... Då får vi på ingångssidan ett antal insignaler med viktade morstånd där viktera är 2R, 4R, 8R, 16R och så vidare. Sätter vi sedan R F = R så kan vi få en D/A-omvandlare där MSB kopplas in på 2R motståndet och LSB kopplas in på det största motståndet, i vårt fall 16R. Vi kan på detta sätt åstadkomma en D/A-omvandling på så sätt att en etta 4 Titta på figurerna i Alciatore[1] p 101-102. 5 Se Alciatore[1] p 106-107. 6 Alciatore[1] p 159-160. 7 Se Alciatore[1] p 147-148. Se även Hemert[2] p 438-440. 2
som går via 2R motståndet får en större betydelse än en etta som går via 16R motståndet. 3.2 D/A-omvandling med R-2R-resistorstege Nackdelen med att använda sig av D/A-omvandling med hjälp av viktade resistorer är att det uppstår problem på grund av att storleken på resistorna kommer att variera mycket om man ökar bitlängden. Ett sätt att undvika detta är att använda sig av D/A-omvandling med R-2R-resistorstege. Denna finns beskriven i Alciatore[1] p 310-312. Här undviker man problemet genom att man bygger upp ett resistornät där motstånden bara håller sig mellan R och 2R. 3.3 D/A-omvandling genom pulsbreddsmodulering PWM Detta är en ganska vanlig form av D/A-omvandling. Principen är att man matar ut det digitala värdet på seriell form. Pulsens bredd kommer då att vara propotionell mot det digitala värdet. Sedan lågpassfiltrerar man detta pulståg och man får då en analog signal som är proportionell mot det digitala värdet 8. 4 A/D-omvandlare En A/D-omvandlare är en komponent som omvandlar analoga signaler till motsvarande digitala värden. Dessa använder sig ofta av komparatorer 9. En komparators funktion är att jämföra två spänningar med varandra och utsignalen kommer då att bottna i hög eller låg utspänning. Har vi en insignal V in, en utsignal V out, en referenssignal V ref samt bottenspänningarna +V sat respektive V sat får vi att: { +V sat om V in > V ref V out = V sat om V in < V ref Vi skall nu se på några olika typer av A/D-omvandlare. 4.1 A/D-omvandlare av flash typ Detta är en snabb form av A/D-omvandling 10. Här jämför man den analoga insignalen med en referensspänning som är inkopplad via en resistorstege. Jämförelsen görs med hjälp av komparatorer. Utsignalerna från komparatorerna omvandlas sedan, med hjälp av ett kombinatoriskt nät, till motsvarande digitala värden. Denna typ av A/D-omvandlare är snabba, i princip är det enbart omslagstiderna hos komparatorena och det kombinatoriska nätet som avgör hur snabbt man kan omvandla en analog signal till dess motsvarande digitala värde. 8 Se Hemert[2] p 446. 9 Se Alciatore[1] p 160-161. Samt även Molin[3] p 43, som kan rekomenderas om ni vill läsa mera om, till exempel, OP-förstärkare. 10 Se Alciatore[1] p 309. 3
Nackdelen är att antalet komparatorer växer snabbt med bitlängden, nämligen som 2 n 1 där n är antalet bitar. Detta betyder exempelvis att man för en 18-bitars omvandlare skulle behöva 262143 stycken komparatorer. 4.2 A/D-omvandlare av typ nivåramp En komponentsnålare, men långsammare, metod är att använda sig en A/Domvandlare av typ nivåramp 11. Principen för denna är följande: Den analoga insignalen jämförs, med hjälp av en komparator, med ett värde som man har erhållit från en D/A-omvandlare. De värden som D/A-omvandlaren arbetar med kommer från en räknare 12. Räknaren ökar sitt värde med ett för varje klockpuls ända tills dess att den får en signal från komparatorn som gör att den slutar räkna. Komparatorn ger denna signal då jämförelsen med den analoga insignalen och det värde som komparatorn motager från D/A-omvandlaren indikerar att värderna är likartade. Då avbryts räkningen och man kan läsa av det digitala värdet på räknarnas utgångar. Därmed har man omvandlat en analog insignal till dess motsvarande digitala värde. 4.3 A/D-omvandling med hjälp av successiv approximation Nackdelen med en A/D-omvandlare som arbetar enligt nivårampsprincipen är naturligtvis att det kan ta lång tid att räkna upp tills dess att man erhåller rätt värde. Denna omvandlingstid kan man minska genom att använda sig av successiv approximation 13. Denna kan ses som en förbättring av nivårampskonstruktionen genom att man byter ut räknaren mot ett successivt approximationsregister, SAR. I övrigt stämmer dessa två metoder principiellt överens med varandra. Idén är följande: I stället för att räkna från 0 ända tills det att man kommer fram till rätt värde så startar man i mitten. Då testar man om man ligger i den övre eller undre delen. Då har man en ny grupp att utgå ifrån. Även denna gång utgår man från mitten och testar på nytt. Så håller man på, ända tills dess att man har erhållit rätt värde. Praktiskt sett betyder det att man kan utgå från den mest signifikanta biten, MSB, vid testet. Är denna bit ett ligger man på den övre sidan, är den noll ligger vi på den undre sidan. Detta betyder att, om vi antar att vi har ett 8-bitars tal, så är den första jämförelsen vi gör, är med talet 10000000. Sedan fortsätter man att jämföra på motsvarande sätt tills dess att man är klar. Då har man omvandlat den analoga signalen till motsvarande digitala värde. 11 Se Hemert[2] p 450-451. 12 Under laborationen fick ni bygga en räknare som räknade...00, 01, 10, 11,... och så vidare. Givetvis finns det räknare som standardkretsar, se Alciatore[1] p 217-219. 13 Se Alciatore[1] p 307-308. 4
Referenser [1] Alciatore, David G. & Histand, Michael B. Introduction to Mechatronics and Measurement Systems, 2 ed. McGraw-Hill, ISBN 0-07-11955-7 [2] Hemert, Lars-Hugo Digitala kretsar, 3 ed. Studentlitteratur, ISBN 91-44-01918-1 [3] Molin, Bengt Analog elektronik Studentlitteratur, ISBN 91-44-01435-X [4] Svärdström, Anders Signaler och system Studentlitteratur, ISBN 91-44-00811-2 5