Gör-det-själv husvärmestyrningsautomation, del 3. ADC-ingångar. Vi studerar AVR-mikrokontroller. ADC, vi gör en voltmeter. Bitvis utjämnad analog-till-digital omvandlare

Det hände så att den huvudsakliga MK som jag ständigt arbetar med och som jag gör de allra flesta uppgifter på är ATTiny2313– Han är populär, och viktigast av allt är det billigaste styrenheten från hela linjen AVR med mer än 8 ben. Jag tog ungefär trehundra av dem för 18, chtol, en liten sak. Men här är botten - den har ingen ADC. Inte alls. Och då behövdes han - du måste mäta signalen från sensorn. Bakhåll. Byt inte på grund av sådant skräp till en mer fylld ATTiny26– det kostar mer och fikon där man kan köpa av oss, och vad ska man då göra med den avgrunden ATTiny2313 vad är redan köpt? Hjärntvättad...

Varför inte pang ADC sekventiell jämförelse? Naturligtvis kommer hastighet och noggrannhet inte att vara en fontän, men utan att ändra typ av MK och med bara två öre delar av ett extra bodykit kommer jag att få en fullfjädrad, om än långsam, 8-bitars ADC, som helt tillfredsställer mina blygsamma önskemål!

Hur en seriell jämförelse ADC fungerar.
Vad har vi i ATTiny2313 analog? Höger - . Nu räcker det att applicera den uppmätta signalen på dess ingång och metodiskt jämföra den med referensspänningen, linjärt ändra värdet på referensspänningen. Vid vilken av referensspänningarna komparatorn kommer att trigga, den uppmätta signalen +/_ steget att ändra referensen är ungefär lika med det.

Det återstår att få en variabel referensspänning, och hur kan man, från en rent digital utgång på styrenheten, rita en analog signal? PWM! Har tidigare integrerat det. För integration använder vi det enklaste RC-filtret. Kondensatorn kommer att integrera laddningen, och motståndet kommer inte att låta porten dö när kondern laddas. Resultatet av att köra PWM genom ett sådant filter blir en ganska stabil konstant spänning.

Det återstår bara att uppskatta filtervärdena. Gränsfrekvens - frekvensen från vilken filtret börjar dämpa den variabla komponenten, för det L-formade RC-filtret är lika med den reciproka av dess tidskonstant w=1/RC. Jag satte på condern 0,33Е-6 F och motstånd på 470 Om, visade det sig w=6447 rad/s. I den mån som vinkelfrekvens vi vilade inte någonstans, då dividerar vi det med 2pi = 6,28, vi fick ungefär en kilohertz, 1026,6 Hz, för att vara exakt. Tidsfrekvens PWM och vi kan lätt ha ungefär tiotals kilohertz, då kommer utsignalen att vara en så jämn konstant, med små krusningar.

Nu lindar vi denna toppar på ingången på komparatorn, på den andra startar vi upp vår uppmätta signal och börjar ha kul med koden. Det visade sig här är ett sådant schema, monterat, som. Här dock inte ATTiny2313, utan Mega8 som har en ADC, men än så länge glömmer vi dess existens. Vårt filter är ritat med röda linjer.

Koden kommer att vara enkel, för att inte störa, kommer jag också att posta individuella källkoder i form av filer:

  • - huvudfil
  • - Avbryt vektortabell
  • — Perifer initiering
  • och — Makron och makrodefinitioner

Jag kommer bara att kommentera huvudfunktion Beräkn.
När du anropar en procedur Beräkn först och främst har vi:

  1. Den analoga komparatorn är konfigurerad och, viktigast av allt, dess avbrott aktiveras.
  2. Sedan kastas det initiala avsökningsvärdet på 255 in i avsökningsregistret (R21).
  3. Därefter slängs detta värde in i PWM-jämförelseregistret OCR1AL. PWM var på förhand, i sektionen init.asm konfigurerad och lanserad, så att en signal omedelbart uppträder vid dess utgång med en arbetscykel (driftcykel är förhållandet mellan signalens varaktighet och perioden för denna signal) 1, dvs. i själva verket är det för närvarande bara en.
  4. Vi väntar i fördröjningsfunktionen en tid så att den transienta processen slutar (kondensatorn kan inte omedelbart ändra sin spänning)
  5. Minska värdet på skanningsregistret (som när det laddas in i OCR1AL kommer att minska arbetscykeln med 1/255), kontrollera om den har blivit noll. Om inte, gå till punkt 3.
Resultatet blir en konsekvent minskning av signalens arbetscykel från 1 till 0, med ett steg på 1/255 , som kommer att omvandlas efter filtret till en minskande spänning. Och, eftersom i huvudproceduren har jag Beräkn kallas cykliskt, då kommer det att finnas en såg vid ingången av komparatorn.

Som du kan se är det en del snitt på toppen. Detta beror på det faktum att den maximala spänningen som MK-benet kan ge ut, med hänsyn till fallen på alla motstånd, är cirka 4,7 volt, och jag kan skruva av alla 5 från masterpotentiometern. Tja, även topparna faller lite. Om du sänker frekvensen kommer räckvidden att utökas något.

Så, med lite uppfinningsrikedom och ytterligare två detaljer den totala summan i en rubel och ett dussin rader kod sparade jag mycket deg =)

Den här artikeln diskuterar huvudfrågorna relaterade till ADC:s funktionsprincip olika typer. Samtidigt höll sig några viktiga teoretiska beräkningar angående den matematiska beskrivningen av analog-till-digital konvertering utanför artikelns ram, men länkar tillhandahålls där den intresserade läsaren kan hitta en djupare övervägande. teoretiska aspekter ADC-drift. Således handlar artikeln mer om förståelsen av de allmänna principerna för ADC-funktion än om den teoretiska analysen av deras arbete.

Introduktion

Som en utgångspunkt, låt oss definiera analog-till-digital konvertering. Analog-till-digital-omvandling är processen att konvertera en ingående fysisk kvantitet till dess numeriska representation. En analog-till-digital-omvandlare är en enhet som utför en sådan omvandling. Formellt kan ingångsvärdet för ADC vara vilket som helst fysisk kvantitet- spänning, ström, resistans, kapacitans, pulsrepetitionshastighet, axelrotationsvinkel, etc. Men för säkerhets skull, i framtiden kommer vi med ADC endast att förstå spänning-till-kod-omvandlare.


Begreppet analog-till-digital konvertering är nära besläktat med begreppet mätning. Mätning förstås som processen att jämföra det uppmätta värdet med en viss standard; under analog-till-digital konvertering jämförs ingångsvärdet med ett visst referensvärde (vanligtvis med en referensspänning). Således kan analog-till-digital omvandling betraktas som ett mått på värdet på insignalen, och alla begrepp inom metrologi, såsom mätfel, gäller för det.

Huvudegenskaper hos ADC

ADC har många egenskaper, varav omvandlingsfrekvensen och bitdjupet kan kallas de viktigaste. Omvandlingsfrekvensen uttrycks vanligtvis i sampel per sekund (SPS), bitdjupet är i bitar. Moderna ADC:er kan ha ett bitdjup på upp till 24 bitar och en omvandlingshastighet på upp till GSPS-enheter (naturligtvis inte samtidigt). Ju högre hastighet och bitdjup, desto svårare är det att erhålla de erforderliga egenskaperna, desto dyrare och mer komplex blir omvandlaren. Konverteringshastighet och bitdjup är relaterade till varandra på ett visst sätt, och vi kan öka det effektiva konverteringsbitdjupet genom att offra hastigheten.

ADC-typer

Det finns många typer av ADC, men i den här artikeln kommer vi att begränsa oss till att endast överväga följande typer:

  • Parallell konvertering ADC (direkt konvertering, flash ADC)
  • ADC successiv approximation(SARADC)
  • delta-sigma ADC (laddningsbalanserad ADC)
Det finns också andra typer av ADC:er, inklusive pipelined och kombinerade typer, bestående av flera ADC:er med (vanligtvis) annorlunda arkitektur. Ovanstående arkitekturer för ADC:er är dock de mest indikativa på grund av det faktum att varje arkitektur upptar en viss nisch i det allmänna hastighet-till-bit-intervallet.

ADC:er för direkt (parallell) omvandling har den högsta prestandan och det lägsta bitdjupet. TLC5540 parallellkonvertering ADC från Texas Instruments har till exempel en hastighet på 40MSPS med en bitbredd på endast 8 bitar. ADC av denna typ kan ha omvandlingsfrekvenser på upp till 1 GSPS. Det kan noteras här att pipelined ADCs (pipelined ADCs) har ännu högre hastighet, men de är en kombination av flera ADCs med lägre hastighet och deras övervägande ligger utanför ramen för denna artikel.

Den mellersta nischen i bithastighetsserien upptas av successiva approximations-ADC. Typiska värden är 12-18 bitar vid en omvandlingshastighet på 100KSPS-1MSPS.

Den högsta noggrannheten uppnås av sigma-delta ADC:er med ett bitdjup på upp till 24 bitar inklusive och en hastighet från SPS-enheter till KSPS-enheter.

En annan typ av ADC som har funnit användning på senare tid är den integrerande ADC. Integrerande ADC:er ersätts nu nästan helt av andra typer av ADC:er, men kan hittas i äldre mätinstrument.

direktkonvertering ADC

direktkonvertering ADC mottagen bred användning 1960-1970, och började tillverkas i form integrerade kretsar på 1980-talet. De används ofta som en del av "pipelined" ADC:er (som inte beaktas i denna artikel), och har en kapacitet på 6-8 bitar med en hastighet på upp till 1 GSPS.

ADC-arkitekturen för direktkonvertering visas i fig. ett

Ris. ett. Strukturplan direktkonvertering ADC

Funktionsprincipen för ADC:n är extremt enkel: ingångssignalen matas samtidigt till alla "positiva" ingångar på komparatorerna, och de "negativa" ingångarna matas med en serie spänningar som erhålls från referensen genom att dividera med motstånd R För kretsen i fig. 1 denna rad kommer att vara: (1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16) Uref, där Uref är ADC-referensspänningen.

Låt en spänning lika med 1/2 Uref appliceras på ingången till ADC. Då kommer de första 4 komparatorerna att fungera (om du räknar underifrån), och logiska kommer att dyka upp vid deras utgångar. Prioritetskodare (prioritetskodare) kommer att bildas från "kolumnen" av enheter binär kod, som är fixerad av utgångsregistret.

Nu blir fördelarna och nackdelarna med en sådan omvandlare tydliga. Alla komparatorer arbetar parallellt, fördröjningstiden för kretsen är lika med fördröjningstiden i en komparator plus fördröjningstiden i givaren. Komparatorn och kodaren kan göras mycket snabba, och som ett resultat har hela kretsen en mycket hög hastighet.

Men för att få N bitar behöver du 2^N komparatorer (och kodarens komplexitet växer också med 2^N). Schemat i fig. 1. innehåller 8 komparatorer och har 3 bitar, för att få 8 bitar behöver man 256 komparatorer, för 10 bitar - 1024 komparatorer, för en 24-bitars ADC skulle de behöva mer än 16 miljoner. Dock har tekniken ännu inte nått sådana höjder.

successiv approximation ADC

Successive Approximation Register (SAR) analog-till-digital-omvandlare mäter storleken på en insignal genom att utföra en serie av på varandra följande "viktningar", det vill säga jämförelser av ingångsspänningens storlek med en serie av magnituder som genereras enligt följande:

1. I det första steget sätts värdet lika med 1/2Uref på utgången av den inbyggda digital-till-analogomvandlaren (hädanefter antar vi att signalen ligger i intervallet (0 - Uref).

2. om signalen är större än detta värde jämförs den med spänningen som ligger i mitten av det återstående intervallet, dvs. det här fallet, 3/4Uref. Om signalen är mindre etablerad nivå, så kommer nästa jämförelse att göras med mindre än hälften av det återstående intervallet (dvs med 1/4Uref-nivån).

3. Steg 2 upprepas N gånger. Således genererar N jämförelser ("viktningar") N bitar av resultatet.

Ris. 2. Strukturdiagram av den successiva approximationen ADC.

Således består den successiva approximationen ADC av följande noder:

1. Komparator. Den jämför ingångsvärdet och det aktuella värdet för "vikt"-spänningen (indikerad med en triangel i fig. 2).

2. D/A-omvandlare(Digital till Analog Converter, DAC). Den genererar ett "vägt" spänningsvärde baserat på den digitala koden som tas emot vid ingången.

3. Successive Approximation Register (SAR). Den implementerar den successiva approximationsalgoritmen och genererar det aktuella värdet av koden som matas till ingången på DAC:n. Hela given arkitektur ADC.

4. Provhållningsschema (Sample/Hold, S/H). För att denna ADC ska fungera är det viktigt att inspänning höll samma värde under hela konverteringscykeln. Men "riktiga" signaler tenderar att förändras över tiden. Hämta-och-håll-schemat "kommer ihåg" det aktuella värdet analog signal, och håller den oförändrad under hela enhetens cykel.

Fördelen med enheten är relativt hög hastighet konvertering: N-bitars ADC-omvandlingstiden är N cykler. Omvandlingsnoggrannheten begränsas av den interna DAC:ns noggrannhet och kan vara 16-18 bitar (nu har 24-bitars ADC SAR börjat dyka upp, till exempel AD7766 och AD7767).

Delta Sigma ADC

Slutligen, den mest intressanta typen av ADC är sigma-delta ADC, ibland kallad en laddningsbalanserad ADC i litteraturen. Blockschemat för sigma-delta ADC visas i fig. 3.

Fig.3. Strukturdiagram av sigma-delta ADC.

Funktionsprincipen för denna ADC är något mer komplicerad än den för andra typer av ADC. Dess kärna är att inspänningen jämförs med spänningsvärdet som ackumuleras av integratorn. Pulser med positiv eller negativ polaritet matas till integratorns ingång, beroende på resultatet av jämförelsen. Således är denna ADC ett enkelt spårningssystem: spänningen vid integratorns utgång "spår" inspänningen (fig. 4). Resultatet av denna krets är en ström av nollor och ettor vid utgången av komparatorn, som sedan leds genom ett digitalt lågpassfilter, vilket resulterar i ett N-bitars resultat. LPF i fig. 3. Kombinerat med en "decimator", en anordning som minskar frekvensen av avläsningar genom att "tunna ut" dem.

Ris. 4. Sigma-delta ADC som spårningssystem

För stränghetens skull måste det sägas att i fig. 3 är ett blockschema över en första ordningens sigma-delta ADC. Sigma-delta 2nd order ADC har två integratorer och två loopar respons, men kommer inte att behandlas här. De som är intresserade av detta ämne kan hänvisa till.

På fig. 5 visar signalerna i ADC vid nollnivå vid ingången (överst) och vid nivån Vref / 2 (nederst).

Ris. 5. Signaler i ADC kl olika nivåer ingångssignal.

Nu, utan att fördjupa sig i komplexet matematisk analys, låt oss försöka förstå varför sigma-delta ADC har mycket låg nivå egna ljud.

Betrakta blockschemat för sigma-delta-modulatorn som visas i fig. 3, och presentera den i denna form (Fig. 6):

Ris. 6. Strukturdiagram för sigma-delta-modulatorn

Här representeras komparatorn som en adderare som summerar en kontinuerlig användbar signal och kvantiseringsbrus.

Låt integratören ha överföringsfunktion 1/s. Sedan, representerande den användbara signalen som X(s), utsignalen från sigma-delta-modulatorn som Y(s), och kvantiseringsbruset som E(s), erhåller vi överföringsfunktionen för ADC:n:

Y(s) = X(s)/(s+1) + E(s)s/(s+1)

Det vill säga, i själva verket är sigma-delta-modulatorn ett filter låga frekvenser(1/(s+1)) för den användbara signalen och filtret höga frekvenser(s/(s+1)) för brus, med båda filtren med samma gränsfrekvens. Brus som är koncentrerat till högfrekvensområdet av spektrumet avlägsnas enkelt med ett digitalt lågpassfilter, som är placerat efter modulatorn.

Ris. 7. Fenomenet "förskjutning" av brus i den högfrekventa delen av spektrumet

Det bör dock förstås att detta är en extremt förenklad förklaring av brusformning i en sigma-delta ADC.

Så den största fördelen med sigma-delta ADC är Hög precision på grund av den extremt låga självljudnivån. Men för att uppnå hög noggrannhet är det nödvändigt att gränsfrekvensen digitalt filter var så låg som möjligt, många gånger mindre än frekvensen för sigma-delta-modulatorn. Därför har sigma-delta ADC låg hastighet transformationer.

De kan användas inom ljudteknik, men den huvudsakliga användningen är inom industriell automation för att konvertera sensorsignaler, i mätinstrument och i andra applikationer där hög noggrannhet krävs. men ingen hög hastighet krävs.

Lite historia

Den äldsta ADC-referensen i historien är förmodligen Paul M. Raineys patent, "Facsimile Telegraph System", U.S. Patent 1 608 527, inlämnat 20 juli 1921, utfärdat 30 november 1926. Enheten som avbildas i patentet är faktiskt en 5-bitars direktkonvertering ADC.

Ris. 8. Första ADC-patentet

Ris. 9. Direktkonvertering ADC (1975)

Enheten som visas i figuren är en direktkonvertering ADC MOD-4100 tillverkad av Computer Labs, tillverkad 1975, sammansatt på basis av diskreta komparatorer. Det finns 16 komparatorer (de är placerade i en halvcirkel för att utjämna signalutbredningsfördröjningen till varje komparator), därför har ADC en kapacitet på endast 4 bitar. Omvandlingshastighet 100 MSPS, strömförbrukning 14 watt.

Följande bild visar en avancerad version av ADC för direktkonvertering.

Ris. 10. Direktkonvertering ADC (1970)

1970 års VHS-630, tillverkad av Computer Labs, hade 64 komparatorer, var 6-bitars, 30 MSPS och förbrukade 100 watt (1975 VHS-675 hade 75 MSPS och förbrukade 130 watt).

Litteratur

W. Kester. ADC Architectures I: The Flash Converter. Analoga enheter, MT-020 Handledning.

För närvarande används analog-till-digital-omvandlare (ADC) alltmer i amatörradiodesigner. Detta beror på tillkomsten av prisvärda ADC-chips och fördelarna som digital bearbetning analoga signaler. Med hjälp av en ADC kan du enkelt konvertera Personlig dator(PC) till valfri virtuell mätenhet. Och elektronisk del en sådan enhet kan vara mycket enkel, och all signalbehandling kommer att göras i programvara.

Enheten som beskrivs i artikeln är utformad för att konvertera en analog signal till en digital sexbitarskod och kan fungera som ett prefix till en PC. Användningsområdena är mycket olika - från virtuella mätinstrument till olika ljudinspelningssystem.

Design baserade på ADC har upprepade gånger publicerats på sidorna i tidningen "Radio". De använde dock mestadels IC:er med en binärkodad decimalutgångskod eller en kod för indikatorer med sju element. Detta tillvägagångssätt är inte praktiskt för att mata in information i en PC.

I enheten som uppmärksammats av läsarna används KR1107PV1-chippet, som är en höghastighets parallell sexbitars ADC. Den är utformad för att omvandla spänning i intervallet -2...0 V till en av de potentiella parallellläsningskoderna: binär kod (direkt och omvänd) och tvås komplementkod (direkt och omvänd). Denna mikrokrets valdes för att för det första är den tillgänglig för ett brett spektrum av radioamatörer och är relativt billig, och för det andra har den hög hastighet (maximal omvandlingsfrekvens är 20 MHz, en omvandlingstid är inte mer än 100 ns).

Det schematiska diagrammet för anordningen visas i fig. ett.

Den rekommenderade kopplingskretsen KR1107PV1A tas som grund, vilket är avsevärt förenklat utan en märkbar försämring av omvandlingsnoggrannheten. Den konverterade analoga signalen via uttag 1 på XS1-uttaget och motståndet R4 matas till den inverterande ingången på op-amp DA1. En sådan inkludering användes eftersom det oftare är nödvändigt att digitalisera den positiva polaritetsspänningen, och ADC-chippet omvandlar spänningen i intervallet från 0 till -2 V. Nollförspänningen tas bort från trimmerns R1-motor. Motstånden R5 och R4 bestämmer den erforderliga förstärkningen för op-förstärkaren. Den förstärkta analoga signalen matas genom motstånden R7-R9 till stiften 10, 13, 15 på ADC.

Driften av ADC DA2 styrs av klockpulser som kommer från PC:n (via stift 8 på XS2-uttaget) till stift 4. Kodning utförs efter att klockpulsen har passerat, och resultatet som erhålls under omvandlingsprocessen överförs till utgångsregister samtidigt med kanten av nästa klockpuls. Detta tillåter kanterna på klockpulsen att producera nästa sampel, dvs i det ögonblick då resultatet av det n:te samplet är närvarande vid utgången av DA2, görs (n + 2)-te samplet vid ingången. Den digitala koden tas från utgångarna D1 - D6 och utgången till uttaget XS2.

Det bör noteras att beteckningen på mikrokretsens utgångar är motsatt deras vikt: D1-utgången motsvarar den höga ordningen och D6 till den låga ordningen. Typen av kod (direkt, invers, extra) vid utgångarna på mikrokretsen bestäms av signalnivåerna vid ingångarna Cl och C2 på mikrokretsen. Deras anslutning till +5 V-bussen motsvarar en hög nivå och en gemensam tråd - låg. Den erforderliga typen av kod vid utgången av mikrokretsen ställs in av en kombination av signalnivåer vid ingångarna C1 och C2 i enlighet med Tabell. ett.

ADC KR1107PV1A kräver en bipolär matningsspänning på +5 och -6 V. Dessutom krävs två referensspänningar. De definierar intervallet för digitaliserade spänningar. I det här fallet tas en av dessa spänningar (Uobr1) lika med noll (stift 16 på mikrokretsen är ansluten till en gemensam tråd), och den andra (Uobr2) är lika med -2 ​​V, vilket i enlighet med bestämmer ADC-ingångsspänningsområde 0 ... -2 V En exemplifierande spänning på -2 V tas från motorn till trimmermotståndet R6, som ingår i matningsspänningskretsen med negativ polaritet. Kondensatorer C1 - C5 används för att eliminera störningar.

Vid montering av enheten används MLT-, OMLT-motstånd, oxid- och keramiska kondensatorer av alla slag. Trimmermotstånd R1 - också av vilken typ som helst, R6 - helst en flervarvstråd, till exempel SP5-1V, SP5-14, SP5-15, SP5-2, etc. Op-amp DA1 - nästan vilken som helst som kan fungera vid låga matningsspänningar, till exempel KR140UD7. För expansion frekvensomfång du kan använda operationsförstärkaren K574UDZ, där enhetsförstärkningsfrekvensen är 10 MHz.

Enheten drivs av en bipolär stabiliserad källa som ger utspänningar på +5 V vid en ström på 35 ... 40 mA och -6 V vid en ström på 200 mA

Innan du slår på ADC för första gången, ställs skjutreglaget för motståndet R6 i mittläget. Slå på strömmen, mät referensspänningen vid stift 9 på DA2-chippet och ställ in den på -2 V så exakt som möjligt. Den erforderliga nollförskjutningen uppnås trimmermotstånd R1. Du kan styra nollpositionen på utgången digital kod eller konstant spänning på de analoga ingångarna på ADC (stift 10, 13, 15 DA2). På denna inställning kan anses vara komplett.

ADC:n är ansluten till PC:n via ett gränssnitt (Fig. 2) installerat i en ledig ISA-kontakt på moderkortet.

Gränssnittskortet innehåller fyra in-/utgångsportar med adresserna ZE0N-ZEZN. Elementen DD1.1-DD1.3 och DD2 bildar en adressavkodare. Signaler från PC-adressbussen tas emot vid deras ingångar, och om ZE0N-ZEZN-kombinationen visas på den, bildas en lågnivåaktiveringsspänning vid DD2-utgången. Signalerna som definierar portnumret i portarnas adressutrymme motsvarar de två minst signifikanta bitarna på adressbussen och matas till DD4-avkodaren. Den tar även emot aktiveringssignaler via AEN-bussen (det betyder att det inte finns någon direkt minnesåtkomst i denna cykel) och IOW, IOR-signaler, vilket motsvarar skrivning till och läsning från en extern enhet. Signalen från stift 15 på avkodaren matas till ingång E på bussformaren DD7 och tillåter dataöverföring från ADC:n till databussen.

Signalen som uppträder vid stift 14 på DD4-avkodaren tjänar till att klocka ADC DA2, vid stift 13 - för att återställa triggern DD6.1, och vid stift 12 - för att tillåta information att matas från den till databussen. Triggern är utformad för att synkronisera ADC:n med en extern enhet som kan generera klockpulser eller en klarsignal. Synkroniseringssignal från extern enhet kommer genom stift 1 på uttaget XS2 till klockingången på triggern. Tillståndet för den senare läses av programmet. Om hittad hög nivå vid stift 5 DD6.1 betyder det att en synkroniseringspuls har tagits emot från en extern enhet. När väl vippans status har lästs måste den återställas för att förbereda för att ta emot nästa klockpuls.

Några ord om syftet med hamnar. Porten med adressen ZE0H är utformad för att läsa data från ADC (bitarna D0-D5 innehåller värdet på den digitaliserade signalen), med adressen ZE1H - för att leverera en klockpuls till ADC:n (när man skriver vilken byte som helst till denna port, den analoga signalen omvandlas till digital). Port ZE2H används för att återställa synkroniseringstriggern DD6.1 efter att ha läst dess status. En återställning sker när någon byte skrivs till denna port. Slutligen är 3ZN-porten dedikerad till att läsa triggertillståndet, vilket återspeglas av bit 5 av byten som läses från denna port. Triggern behövs för att fixera de kortvariga synkpulserna. Om, när man läser från PEZN-porten, en hög logisk nivå detekteras vid den direkta utgången av triggern (bit D5=1), så returnerar programmet den till initialtillståndet, skriver valfri byte till ZE2H-porten.

Programmet för att läsa data från ADC, skrivet i Pascal, visas i tabell. 2.

Det är bekvämt att använda som grund för designen felaktig bräda förlängningar för ISA-kortplatsen. Alla "höga" element (kondensatorer, kontakter) tas bort från den och de tryckta ledarna som går till kontaktdynorna på den del som sätts in i skåran (XP1-kontakt i fig. 2) skärs. Delarna är monterade på ett litet tryckt kretskort, som fästs med rack på expansionskortet. Enhetens terminaler är anslutna till kontakterna på XP1-kontakten med korta bitar av monteringstråden. Stifttilldelningen för ISA-platsen finns i .

Sammanfattningsvis noterar vi att i de flesta fall räcker sex bitar för att representera en analog signal. Om en ADC med ett inspänningsområde på 0...2 V används för att mäta 2 V, kommer felet inte att överstiga 0,03 V (eller 1,5%). Vid mätning av en spänning på 0,2 V kommer felet att öka till 15 %. För att förbättra noggrannheten i mätningarna kan du använda en ADC med större kapacitet eller förstärka den uppmätta spänningen till ett värde nära den övre gränsen för intervallet (ändra till exempel förhållandet mellan motstånden för motstånden R5 och R4). Med de värden som anges i diagrammet (se fig. 1) digitaliserar enheten ingångsspänningar i intervallet 0 ... 0,5 V och kan arbeta med en hushållsmikrofon.

Om, av skäl för riktigheten av "digitalisering" svaga signaler ett högre bitdjup behövs, mikrokretsen KR1107PV1A kan ersättas med en åttabitars K1107PV2-omvandlare (naturligtvis med hänsyn till skillnader i "pinout" och strömförbrukning).

Litteratur

  1. Biryukov S. Termometer "Hus - gata". - Radio, 2000, nr 3, sid. 32, 33.
  2. Novachenko I. V., Petukhov V. M., Bludov I. P., Yurovsky A. V. Mikrokretsar för hushållsradioutrustning. Katalog. - M.: KUBK, 1995.
  3. Danilin N. S., Ulitenko V. P., Kripak A. A. Felsöknings- och reparationsguide IBM-datorer PC. - M.: Publishing house of standards, 1992.

Se andra artiklar sektion.

ADC - Analog-till-digital-omvandlare. Av namnet kan du gissa att en analog signal matas in, som omvandlas till ett tal.

Det första att säga är mikrokontroller ADC kan bara mäta spänning. För att mäta andra fysiska storheter måste de först omvandlas till spänning. Signalen mäts alltid i förhållande till en punkt som kallas referensspänningen, samma punkt är det maximala som kan mätas. Det rekommenderas att välja en mycket stabil spänningskälla som referensspänningskälla (ION), annars dansar alla mätningar med referensen.

En av de viktigaste egenskapernaär upplösningen, som påverkar mätningens noggrannhet. Hela mätområdet är uppdelat i delar. Minsta noll, maxspänning ION. För 8 bitars ADC är det 2^8=256 värden, för 10 bitars 2^10=1024 värden. Således, ju högre bitdjup, desto mer exakt kan signalen mätas.

Låt oss säga att du mäter en signal från 0 till 10V. Vi använder en Atmega8 mikrokontroller med 10 bitars ADC. Detta innebär att 10V-området kommer att delas upp i 1024 värden. 10V / 1024 \u003d 0,0097V - med detta steg kan vi mäta spänningen. Men kom ihåg att mikrokontrollern kommer att överväga värdet 0,0097, 0,0098, 0,0099 ... detsamma.

Ändå är ett steg på 0,01 ganska bra. Det finns dock flera rekommendationer, utan vilka denna noggrannhet inte kommer att observeras, till exempel för att mäta med en noggrannhet på 10 bitar, bör frekvensen som ADC arbetar med vara 50-200 kHz. Den första transformationen tar 25 cykler och 13 cykler vidare. Således, vid en frekvens på 200 kHz, kan vi pressa max
200 000/13 = 15 384 mätningar.

Som referensspänningskälla kan du använda en intern och en extern. Spänningen för den interna källan (2,3-2,7V) rekommenderas inte att användas på grund av låg stabilitet. Extern källa ansluts till AVCC- eller Aref-stiftet, beroende på programinställningarna.

När du använder en ADC måste AVCC-stiftet vara anslutet. AVCC-spänningen bör inte skilja sig från mikrokontrollerns matningsspänning med mer än 0,3V. Som nämnts är den maximala mätbara spänningen lika med referensspänningen (Vref), den ligger i intervallet 2V-AVCC. Således kan mikrokontrollern inte mäta mer än 5V.

För att utöka mätområdet måste du mäta signalen genom en spänningsdelare. Till exempel är den maximala uppmätta spänningen 10V, referensspänningen är 5V. För att utöka mätområdet måste du minska den uppmätta signalen med 2 gånger.

Formeln för att beräkna divisorn ser ut så här:

U ut \u003d U in R 2 / (R 1 + R 2)

Ersätt våra värden i formeln:

5 = 10*R2/(R1+R2)

de där. du kan ta vilka två identiska motstånd som helst och ansluta dem enligt schemat

Därför, när vi mäter spänningen genom en delare, måste vi multiplicera det erhållna värdet av ADC med koefficienten = Uout / Uin.

Den fullständiga formeln för att beräkna den uppmätta spänningen kommer att se ut så här:
U=(referensspänning*ADC-värde*delarförhållande)/antal ADC-bitar

Exempel: referens 5V, ADC uppmätt värde = 512, divider ratio = 2, ADC 10 bitar.

(5*512*2)/1024=5V — faktiskt uppmätt spänningsvärde.

Vissa programmerare skriver ett program så att mikrokontrollern automatiskt beräknar divisorkoefficienten, för detta mäts utsignalen med ett referensinstrument och detta värde matas in i programmet. Mikrokontrollern själv korrelerar den sanna spänningen till varje värde på ADC, själva processen är engångsföreteelse och kallas kalibrering.

Låt oss gå vidare till mjukvaruimplementering. Skapa ett projekt med de angivna parametrarna. Vi kommer också att ansluta en display till port D för att visa information.

Mätningen kommer att tas in automatiskt läge, kodbehandling i avbrottet, referensspänningen är ansluten till AVCC-benet. I själva verket behöver vi bara behandla de mottagna uppgifterna. Uppmätta data lagras i variabeln adc_data. Om du behöver polla flera kanaler, välj sedan vilka kanaler som ska skannas, och data kommer att vara för del 0 i adc_data, för del 1 i adc_data, etc.

Lägg till raderna i huvudslingan:

resultat=((5.00*adc_data)/1024.00); //beräkna om ADC-värdet i volt
sprintf(lcd_buffer,"U=%.2fV",resultat); // placera resultatet i en temporär variabel
lcd_puts(lcd_buffer); //visa

En liten notering, för att använda flyttal måste du ändra (s)printf Funktioner: int, bredd till flytande, bredd, precision i projektinställningarna. Om detta inte görs kommer vi inte att se tiondelar och hundradelar.

Således konverterade vi bara ADC-värdet till volt och visade det på displayen. Resultatet i proteus ser ut så här:

Motståndet kan ändra spänningen, den uppmätta spänningen visas. När du monterar på riktig hårdvara måste du ansluta en 0,1uF kondensator till Aref-benet. Lektionen visade sig vara lite komplicerad, men jag tror att du kommer att gilla den.

Proteus fil och firmware:

uppdatering:
Aktuell mätning:

Den här artikeln diskuterar huvudfrågorna relaterade till principen om drift av ADC:er av olika typer. Samtidigt låg några viktiga teoretiska beräkningar angående den matematiska beskrivningen av analog-till-digital-omvandlingen utanför artikelns ram, men länkar tillhandahålls där den intresserade läsaren kan hitta en djupare övervägande av de teoretiska aspekterna av ADC-operationen . Således handlar artikeln mer om förståelsen av de allmänna principerna för ADC-funktion än om den teoretiska analysen av deras arbete.

Introduktion

Som en utgångspunkt, låt oss definiera analog-till-digital konvertering. Analog-till-digital-omvandling är processen att konvertera en ingående fysisk kvantitet till dess numeriska representation. En analog-till-digital-omvandlare är en enhet som utför en sådan omvandling. Formellt kan ingångsvärdet för ADC vara vilken fysisk storhet som helst - spänning, ström, motstånd, kapacitans, pulsrepetitionshastighet, axelrotationsvinkel, etc. Men för säkerhets skull, i framtiden kommer vi med ADC endast att förstå spänning-till-kod-omvandlare.


Begreppet analog-till-digital konvertering är nära besläktat med begreppet mätning. Mätning förstås som processen att jämföra det uppmätta värdet med en viss standard; under analog-till-digital konvertering jämförs ingångsvärdet med ett visst referensvärde (vanligtvis med en referensspänning). Således kan analog-till-digital omvandling betraktas som ett mått på värdet på insignalen, och alla begrepp inom metrologi, såsom mätfel, gäller för det.

Huvudegenskaper hos ADC

ADC har många egenskaper, varav omvandlingsfrekvensen och bitdjupet kan kallas de viktigaste. Omvandlingsfrekvensen uttrycks vanligtvis i sampel per sekund (SPS), bitdjupet är i bitar. Moderna ADC:er kan ha ett bitdjup på upp till 24 bitar och en omvandlingshastighet på upp till GSPS-enheter (naturligtvis inte samtidigt). Ju högre hastighet och bitdjup, desto svårare är det att erhålla de erforderliga egenskaperna, desto dyrare och mer komplex blir omvandlaren. Konverteringshastighet och bitdjup är relaterade till varandra på ett visst sätt, och vi kan öka det effektiva konverteringsbitdjupet genom att offra hastigheten.

ADC-typer

Det finns många typer av ADC, men i den här artikeln kommer vi att begränsa oss till att endast överväga följande typer:

  • Parallell konvertering ADC (direkt konvertering, flash ADC)
  • Successive Approximation ADC (SAR ADC)
  • delta-sigma ADC (laddningsbalanserad ADC)
Det finns även andra typer av ADC:er, inklusive pipelined och kombinerade typer, bestående av flera ADC:er med (i allmänhet) olika arkitekturer. Ovanstående arkitekturer för ADC:er är dock de mest indikativa på grund av det faktum att varje arkitektur upptar en viss nisch i det allmänna hastighet-till-bit-intervallet.

ADC:er för direkt (parallell) omvandling har den högsta prestandan och det lägsta bitdjupet. TLC5540 parallellkonvertering ADC från Texas Instruments har till exempel en hastighet på 40MSPS med en bitbredd på endast 8 bitar. ADC:er av denna typ kan ha omvandlingsfrekvenser på upp till 1 GSPS. Det kan noteras här att pipelined ADCs (pipelined ADCs) har ännu högre hastighet, men de är en kombination av flera ADCs med lägre hastighet och deras övervägande ligger utanför ramen för denna artikel.

Den mellersta nischen i bithastighetsserien upptas av successiva approximations-ADC. Typiska värden är 12-18 bitar vid en omvandlingshastighet på 100KSPS-1MSPS.

Den högsta noggrannheten uppnås av sigma-delta ADC:er med ett bitdjup på upp till 24 bitar inklusive och en hastighet från SPS-enheter till KSPS-enheter.

En annan typ av ADC som har funnit användning på senare tid är den integrerande ADC. Integrerande ADC:er har nu nästan helt ersatts av andra typer av ADC:er, men kan hittas i äldre mätinstrument.

direktkonvertering ADC

Direktkonvertering ADC blev utbredd på 1960- och 1970-talen och började produceras som integrerade kretsar på 1980-talet. De används ofta som en del av "pipelined" ADC:er (som inte beaktas i denna artikel), och har en kapacitet på 6-8 bitar med en hastighet på upp till 1 GSPS.

ADC-arkitekturen för direktkonvertering visas i fig. ett

Ris. 1. Strukturdiagram för direktkonvertering ADC

Funktionsprincipen för ADC:n är extremt enkel: ingångssignalen matas samtidigt till alla "positiva" ingångar på komparatorerna, och de "negativa" ingångarna matas med en serie spänningar som erhålls från referensen genom att dividera med motstånd R För kretsen i fig. 1 denna rad kommer att vara: (1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16) Uref, där Uref är ADC-referensspänningen.

Låt en spänning lika med 1/2 Uref appliceras på ingången till ADC. Då kommer de första 4 komparatorerna att fungera (om du räknar underifrån), och logiska kommer att dyka upp vid deras utgångar. Prioritetskodare (prioritetskodare) kommer att bilda en binär kod från "kolumnen" av enheter, som är fixerad av utgångsregistret.

Nu blir fördelarna och nackdelarna med en sådan omvandlare tydliga. Alla komparatorer arbetar parallellt, fördröjningstiden för kretsen är lika med fördröjningstiden i en komparator plus fördröjningstiden i givaren. Komparatorn och kodaren kan göras mycket snabba, och som ett resultat har hela kretsen en mycket hög hastighet.

Men för att få N bitar behöver du 2^N komparatorer (och kodarens komplexitet växer också med 2^N). Schemat i fig. 1. innehåller 8 komparatorer och har 3 bitar, för att få 8 bitar behöver man 256 komparatorer, för 10 bitar - 1024 komparatorer, för en 24-bitars ADC skulle de behöva mer än 16 miljoner. Dock har tekniken ännu inte nått sådana höjder.

successiv approximation ADC

Successive Approximation Register (SAR) analog-till-digital-omvandlare mäter storleken på en insignal genom att utföra en serie av på varandra följande "viktningar", det vill säga jämförelser av ingångsspänningens storlek med en serie av magnituder som genereras enligt följande:

1. I det första steget sätts värdet lika med 1/2Uref på utgången av den inbyggda digital-till-analogomvandlaren (hädanefter antar vi att signalen ligger i intervallet (0 - Uref).

2. om signalen är större än detta värde jämförs den med spänningen som ligger i mitten av det återstående intervallet, dvs i detta fall 3/4Uref. Om signalen är mindre än den inställda nivån, kommer nästa jämförelse att göras med mindre än hälften av det återstående intervallet (dvs med 1/4Uref-nivån).

3. Steg 2 upprepas N gånger. Således genererar N jämförelser ("viktningar") N bitar av resultatet.

Ris. 2. Strukturdiagram av den successiva approximationen ADC.

Således består den successiva approximationen ADC av följande noder:

1. Komparator. Den jämför ingångsvärdet och det aktuella värdet för "vikt"-spänningen (indikerad med en triangel i fig. 2).

2. Digital-till-analog-omvandlare (Digital till Analog Converter, DAC). Den genererar ett "vägt" spänningsvärde baserat på den digitala koden som tas emot vid ingången.

3. Successive Approximation Register (SAR). Den implementerar den successiva approximationsalgoritmen och genererar det aktuella värdet av koden som matas till ingången på DAC:n. Hela ADC-arkitekturen är uppkallad efter dess namn.

4. Provhållningsschema (Sample/Hold, S/H). För driften av denna ADC är det fundamentalt viktigt att inspänningen förblir konstant under hela omvandlingscykeln. Men "riktiga" signaler tenderar att förändras över tiden. Samplings-och-håll-kretsen "minns" det aktuella värdet för den analoga signalen och håller det oförändrat under hela enhetens cykel.

Fördelen med enheten är en relativt hög omvandlingshastighet: omvandlingstiden för en N-bitars ADC är N cykler. Omvandlingsnoggrannheten begränsas av den interna DAC:ns noggrannhet och kan vara 16-18 bitar (nu har 24-bitars ADC SAR börjat dyka upp, till exempel AD7766 och AD7767).

Delta Sigma ADC

Slutligen, den mest intressanta typen av ADC är sigma-delta ADC, ibland kallad en laddningsbalanserad ADC i litteraturen. Blockschemat för sigma-delta ADC visas i fig. 3.

Fig.3. Strukturdiagram av sigma-delta ADC.

Funktionsprincipen för denna ADC är något mer komplicerad än den för andra typer av ADC. Dess kärna är att inspänningen jämförs med spänningsvärdet som ackumuleras av integratorn. Pulser med positiv eller negativ polaritet matas till integratorns ingång, beroende på resultatet av jämförelsen. Således är denna ADC ett enkelt spårningssystem: spänningen vid integratorns utgång "spår" inspänningen (fig. 4). Resultatet av denna krets är en ström av nollor och ettor vid utgången av komparatorn, som sedan leds genom ett digitalt lågpassfilter, vilket resulterar i ett N-bitars resultat. LPF i fig. 3. Kombinerat med en "decimator", en anordning som minskar frekvensen av avläsningar genom att "tunna ut" dem.

Ris. 4. Sigma-delta ADC som spårningssystem

För stränghetens skull måste det sägas att i fig. 3 är ett blockschema över en första ordningens sigma-delta ADC. En andra ordningens sigma-delta ADC har två integratorer och två återkopplingsslingor, men kommer inte att diskuteras här. De som är intresserade av detta ämne kan hänvisa till.

På fig. 5 visar signalerna i ADC vid nollnivå vid ingången (överst) och vid nivån Vref / 2 (nederst).

Ris. 5. Signaler i ADC vid olika signalnivåer vid ingången.

Nu, utan att gå in på komplex matematisk analys, låt oss försöka förstå varför sigma-delta ADC:er har en mycket låg nivå av självbrus.

Betrakta blockschemat för sigma-delta-modulatorn som visas i fig. 3, och presentera den i denna form (Fig. 6):

Ris. 6. Strukturdiagram för sigma-delta-modulatorn

Här representeras komparatorn som en adderare som summerar en kontinuerlig användbar signal och kvantiseringsbrus.

Låt integratorn ha en överföringsfunktion 1/s. Sedan, representerande den användbara signalen som X(s), utsignalen från sigma-delta-modulatorn som Y(s), och kvantiseringsbruset som E(s), erhåller vi överföringsfunktionen för ADC:n:

Y(s) = X(s)/(s+1) + E(s)s/(s+1)

Det vill säga, i själva verket är sigma-delta-modulatorn ett lågpassfilter (1/(s+1)) för den användbara signalen och ett högpassfilter (s/(s+1)) för brus, båda filter som har samma gränsfrekvens. Brus som är koncentrerat till högfrekvensområdet av spektrumet avlägsnas enkelt med ett digitalt lågpassfilter, som är placerat efter modulatorn.

Ris. 7. Fenomenet "förskjutning" av brus i den högfrekventa delen av spektrumet

Det bör dock förstås att detta är en extremt förenklad förklaring av brusformning i en sigma-delta ADC.

Så den största fördelen med sigma-delta ADC är hög noggrannhet, på grund av den extremt låga nivån av inre brus. För att uppnå hög noggrannhet är det emellertid nödvändigt att gränsfrekvensen för det digitala filtret är så låg som möjligt, många gånger mindre än frekvensen för sigma-delta-modulatorn. Därför har sigma-delta ADC:er en låg omvandlingsfrekvens.

De kan användas inom ljudteknik, men den huvudsakliga användningen är inom industriell automation för att konvertera sensorsignaler, i mätinstrument och i andra applikationer där hög noggrannhet krävs. men ingen hög hastighet krävs.

Lite historia

Den äldsta ADC-referensen i historien är förmodligen Paul M. Raineys patent, "Facsimile Telegraph System", U.S. Patent 1 608 527, inlämnat 20 juli 1921, utfärdat 30 november 1926. Enheten som avbildas i patentet är faktiskt en 5-bitars direktkonvertering ADC.

Ris. 8. Första ADC-patentet

Ris. 9. Direktkonvertering ADC (1975)

Enheten som visas i figuren är en direktkonvertering ADC MOD-4100 tillverkad av Computer Labs, tillverkad 1975, sammansatt på basis av diskreta komparatorer. Det finns 16 komparatorer (de är placerade i en halvcirkel för att utjämna signalutbredningsfördröjningen till varje komparator), därför har ADC en kapacitet på endast 4 bitar. Omvandlingshastighet 100 MSPS, strömförbrukning 14 watt.

Följande bild visar en avancerad version av ADC för direktkonvertering.

Ris. 10. Direktkonvertering ADC (1970)

1970 års VHS-630, tillverkad av Computer Labs, hade 64 komparatorer, var 6-bitars, 30 MSPS och förbrukade 100 watt (1975 VHS-675 hade 75 MSPS och förbrukade 130 watt).

Litteratur

W. Kester. ADC Architectures I: The Flash Converter. Analoga enheter, MT-020 handledning.