a/d - d/a konvertere 30/1-2018 redigeret · a/d - d/a konvertere redigeret 30/1-2018 af: valle...

47
A/D - D/A Konvertere Redigeret 30/1-2018 Af: Valle Thorø Side 1 af 47 Kompendium / noter om signaler og A/D-D/A-konvertering: Først ses her lidt på begrebet harmoniske signaler: Harmoniske Signaler Alle periodiske svingninger kan opløses i en grundtone plus eller minus et antal højere harmoniske frekvenser, med aftagende amplitude. Ethvert periodisk signal, dvs. et, der gentager sig selv, kan uanset kurveform opløses i en række sinustoner med forskellig frekvens, amplitude og fase. Fænomenet blev opdaget af en fransk matematiker, Jean-Baptiste Joseph Fourier [Fur’je´]. Det gav senere navn til Fourier-analyse og Fouriertransformation. At overtonerne kan have forskellig fase betyder, at de kan være forskudt i tid. Givet følgende kredsløb: Den første generators frekvens er 1000 Hz, og amplituden 1 Volt. Den anden er 3000 Hz med en amplitude på 1/3 Volt. Og den 3. har 5000 Hz og amplituden 1/5 Volt. De 3 generatorer giver flg. signaler: f0 V1 FREQ = 1000 VAMPL = 1 VOFF = 0 f3 R5 1k f5 R2 1k 0 R6 1k 0 R4 1k 0 V3 FREQ = 5000 VAMPL = 0.2 VOFF = 0 V V2 FREQ = 3000 VAMPL = 0.33 VOFF = 0 0 Usum U2 OPAMP + - OUT U1 OPAMP + - OUT V V R3 1k V R1 1k 0

Upload: truonghanh

Post on 29-Aug-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 1 af 47

Kompendium / noter om signaler og A/D-D/A-konvertering:

Først ses her lidt på begrebet harmoniske signaler:

Harmoniske Signaler

Alle periodiske svingninger kan opløses i en grundtone plus eller minus et antal højere harmoniske

frekvenser, med aftagende amplitude.

Ethvert periodisk signal, dvs. et, der gentager sig selv, kan uanset kurveform opløses i en række

sinustoner med forskellig frekvens, amplitude og fase.

Fænomenet blev opdaget af en fransk matematiker, Jean-Baptiste Joseph Fourier [Fur’je´]. Det gav

senere navn til Fourier-analyse og Fouriertransformation.

At overtonerne kan have forskellig fase betyder, at de kan være forskudt i tid.

Givet følgende kredsløb:

Den første generators frekvens er 1000 Hz, og amplituden 1 Volt. Den anden er 3000 Hz med en

amplitude på 1/3 Volt. Og den 3. har 5000 Hz og amplituden 1/5 Volt.

De 3 generatorer giver flg. signaler:

f 0

V1

FREQ = 1000VAMPL = 1VOFF = 0

f 3

R5

1k

f 5

R2

1k

0

R6

1k

0

R4

1k

0

V3

FREQ = 5000VAMPL = 0.2VOFF = 0

V

V2

FREQ = 3000VAMPL = 0.33VOFF = 0

0

Usum

U2

OPAMP

+

-

OUT

U1

OPAMP

+

-

OUT

V

VR3

1k

V

R1

1k

0

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 2 af 47

Den matematiske fremstilling er som flg.:

ttt

Atf

5sin

5

13sin

3

1sin

4 hvor A er signalets amplitude, og er lig 2f.

Adderes signalerne fås summen af dem. Det ser ud som flg.:

Her vises alle signaler sat sammen!

Time

0s 0.5ms 1.0ms 1.5ms 2.0ms 2.5ms 3.0ms

V(F0) V(F3) V(F5)

-1.0V

-0.5V

0V

0.5V

1.0V

Time

0s 0.5ms 1.0ms 1.5ms 2.0ms 2.5ms 3.0ms

V(USUM)

-1.0V

-0.5V

0V

0.5V

1.0V

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 3 af 47

Og med 5 generatorer

Med 7 generatorer

Time

0s 0.5ms 1.0ms 1.5ms 2.0ms 2.5ms 3.0ms

V(F0) V(USUM) V(F3) V(F5)

-1.0V

-0.5V

0V

0.5V

1.0V

Time

0s 0.5ms 1.0ms 1.5ms 2.0ms 2.5ms 3.0ms

V(F0) V(USUM) V(F3) V(F5) V(R7:2) V(V5:+)

-1.0V

-0.5V

0V

0.5V

1.0V

Time

0s 0.5ms 1.0ms 1.5ms 2.0ms 2.5ms 3.0ms

V(F0) V(USUM) V(F3) V(F5) V(R7:2) V(R8:2) V(V6:+) V(R10:1) V(R11:1)

-1.0V

-0.5V

0V

0.5V

1.0V

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 4 af 47

Det ses, at jo flere harmoniske signaler, der adderes, jo tættere kommen man på en ren firkant.

Dvs. at ikke-Sinusformige signaler kan opløses i en grundsinus plus et antal harmoniske. Det

betyder også, at skal et ikke-sinusformigt signal forstærkes i en forstærker, skal forstærkeren kunne

håndtere både grundtonen, og de højere harmoniske.

Musikinstrumenter

Baggrunden for at vi kan skelne forskellige musikinstrumenter og stemmer fra hinanden, ligger i den

forskellige kombination af overtoner. Instrumenterne giver altså svingninger, der består af en

grundfrekvens plus et antal harmoniske. Grundfrekvensen er jo den samme hvis instrumenterne

spiller samme tone – eller node. Fx kammertonen, 440 Hz!! Forskellen i lyden ligger i overtonerne.

Skal en lyd fra et instrument med en given frekvens forstærkes i en forstærker, skal forstærkeren

selvfølgelig kunne gengive grundtonen, men altså også den dobbelte frekvens, den 3-dobbelte, den

4-dobbelte osv.

En god forstærker skal altså kunne håndtere betydelig højere frekvenser end 16 kHz for at kunne

gengive høje frekvenser, der ikke er sinusformede.

Denne graf viser forskellige

instrumenter og deres

overtoner.:

Illustrationen viser frekvensområderne, eller toneomfanget, for forskellige musikinstrumenter og

sangstemmer. Til venstre grundtoner, den 2. harmoniske ( overtone ) og den 3. harmoniske. Nederst

er også medtaget flyglets klaviatur samt nodesystemet.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 5 af 47

Og her en anden:

Se den på ” interaktiv” side:

http://www.independentrecording.net/irn/resources/freqchart/

main_display.htm

Her er vist

frekvenserne

( grundtoner )

for et klavers

forskellige

tangenter:

Ikke-periodiske signalers rækkeudvikling:

En savtak ser således ud :

tttt

Atf

4sin

4

13sin

3

12sin

2

1sin

2

En trekant :

tttt

Atf

7sin

7

15sin

5

13sin

3

1sin

8222

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 6 af 47

Jo kortere en firkantpuls, der skal gengives, jo langsommere klinger de højere harmoniske af. Dvs.

at der ved computerbrug, hvor der jo forekommer firkantpulser, frembringes et stort antal signaler

med meget høje frekvenser.

Dette indikeres af denne scannede

oversigt.

For de forskellige signaler vises

indholdet af harmoniske!

Det ses, at frekvensspektret for

firkantpulser, med lav dutycycle har

næsten uendelig mange harmoniske,

der næsten ikke klinger af i

amplitude!!

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 7 af 47

Her ses øverst

uregelmæssige

svingninger. Det

vil vi opfatte som

støj.

Nederst en sving-

ning, der gentager

sig – i hvert fald

inden for et lille

stykke tid. Vi kal-

der det lyd!

Hvorfor lyder instrumenter forskelligt??

Her ses et billede af lyd-

tryk-svingningerne fra en

Piano og en Clarinet.

De spiller samme frekvens.

Men lyder forskelligt.

Her spilles den samme tone, = frekvens, på et piano og en klarinet. Grundtonen eller grundfrekven-

sen ses, og ”forvanskninger af den” giver den specifikke lyd.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 8 af 47

http://chaos.nus.edu.sg/teaching/GEM2507/tutorials/tutorial%203%20GEM2507.ppt#265,22,Timbre Profile of Tuning Fork, Flute and Clarinet

For mere info: Søg: sound waves music instruments fourier harmonics ppt

Her et skærmbillede fra et

online program.

Man kan manipulere med

grundfrekvensen, og så

forvanske – eller ødelægge

svingningen – og høre ly-

den!!

Kræver Java !!

http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=17

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 9 af 47

Her ses lidt på analoge spændinger:

Analoge spændinger kan antage

uendeligt mange værdier. Fx imellem

0 og 12 Volt, eller over og under 0

Volt.

Analoge signaler på en Vinyl LP-plade:

I grov udgave ser en analog vinyl

grammofonplade sådan ud:

En nål har skåret riller i vinylen. Imens pladen

drejede, har nålen været påvirket af et (musik)-

signal, så rillen svinger i takt med musikken.

De næste plader er lavet som et aftryk af den

første plade!

I de næste billeder er der zoomet ind på rillerne:

Her to eksempler på ”nærbilleder af en LP-plade”

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 10 af 47

En grammofon-nål i en

vinylplade.

Gengivelse af information fra LP-plader

De første grammofon-afspillere havde en nål, hvis vibrationer blev mekanisk overført til en tynd

plade, som satte luften i bevægelse. Altså skabte lyd. Lyden blev ført igennem et rør og ud af en

tragt i retningen af lytteren.

http://keithwright.ca/Thorens/radiophonomania/tranradiophono.html

Pladen lå på en pladetallerken, der blev drejet rundt

af en spiralfjeder med en rimelig konstant hastighed.

Fjederen kunne strammes op med et håndsving.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 11 af 47

Billede af en moderne grammofon:

Pickup‘en sidder på en arm, der kan styre

pickup’en og følge med ind mod midten af

pladen, efterhånden som numrene bliver færdig-

spillet.

Pickup’en genererer et lille elektrisk spændingssignal baseret på nålens svingninger. Dette signal

skal så forstærkes og føres til en udgangsforstærker.

Principperne i Moving Coil og Moving Magnet pickup.

http://electronicdesign.com/components/what-s-difference-between-moving-magnet-coil-and-iron-cartridges-turntables

http://www.djworx.com/skratchworx/reviews/ortofon_manufacture.php

http://en.wikipedia.org/wiki/File:Moving_Coil_Cartridge.jpg

Der er to principper. I det ene vil nålens svingninger overføres til en lille magnet, som dernæst

genererer spændinger i stationære spoler. I det andet er det modsat. Her er det spolerne, der vibrerer,

og via et stationært magnetfelt skaber elektriske spændingssvingninger.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 12 af 47

Herover et par billeder af princippet i informationen i rillerne i en vinylplade: Det ses, hvordan der

er stereo-information i rillen.

Når pladen afspilles, kører en nål igennem rillen. Dens vibration vil være som det originale

musiksignal. Vibrationen overføres fx via en spole og et magnetfelt til en spænding, der forstærkes,

og sendes ud i højtalere.

På skitsen til højre ses, at der kan være 2 retninger på vibrationen. Dvs. der kan være stereo-signal

gemt i rillen.

Støv, fnug og ridser giver selvfølgelig anledning til støjsignaler oveni det ønskede musiksignal.

Digitale signaler.

I den digitale verden eksisterer

der kun 0’ere og 1’ere. Fx gemt

som prikker og streger på en CD-

plade.

Prikkerne og stregerne angiver et

antal bit, der igen angiver et tal,

som omformes til en spænding,

der skal forstærkes og sendes ud

til en højtaler.

Dvs. at et signal gemmes som en række tal, der på grafen herover repræsenterer hvor langt man er

oppe eller nede ad Y-aksen, svarende til en øjeblikkelig spænding.

Men som det ses her, er der en række problemer. Skal man kunne udtrykke et uendeligt antal

spændinger, skal der et uendeligt antal talværdier til, – og dermed et uendeligt antal bit.

Yderligere må det være væsentligt, hvor ofte der udregnes en talværdi for musiksignalet. Dette

kaldes ” Sampling Rate ”.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 13 af 47

Antal bit. Opløsning.

Opløsningen, dvs. nøjagtigheden af et

signal beskrevet med binære tal,

afhænger af antallet af bit.

Her er der vist et eksempel med 4 bit.

Der er med 4 bit mulighed for at

beskrive op til 16 forskellige

spændinger.

De næste eksempler er fra: http://communication.howstuffworks.com/analog-digital3.htm

Et analogt signal kunne se således

ud:

Sampling Rate.

Et analogt signal måles et

bestemt antal gange pr sekund.

Og den målte værdi udtrykkes

som et tal.

Digitalisering betyder, at man

omsætter et analogt signal til

en repræsentation på digital

form. Dvs. en spænding

udtrykkes som et tal.

Hvis det oprindelige analoge signal skal beskrives helt nøjagtigt, skal man sample med meget kort

interval, og med mange bits opløsning. Ovenfor vises et analogt signal, det er den røde graf.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 14 af 47

Og med de grønne søjler vises hvordan signalet vil se ud, når talværdierne senere skal gengives.

Når det gemte signal senere gengives, mistes alle de mellemliggende værdier mellem samplingerne.

En meget større opløsning –

både i antallet af bit, og i

samplingsrate medfører et

meget bedre beskrivelse af det

oprindelige signal.

Sampling med dobbelt frekvens.

Her ses på sample-ratens betydning:

Eksempel:

Sampleraten for viste signal er meget større end

signalets frekvens.

Eller sagt på en anden måde: Tiden mellem

samples er meget kortere end signalets

periodetid, T.

De sorte pletter viser, hvor der er taget samples.

Her er der ikke så mange samples pr hel

svingning.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 15 af 47

Og her ca. 1 sample pr bølgelængde. ( T )

Det, der skal bemærkes, er, at når signalet

gengives, vil der fremkomme en meget lavere

frekvens end det oprindelige signal.

Derfor er det vigtigt, at samplefrekvensen er

større end signalets frekvens.

Her et andet eksempel på for lav samplingsfrekvens:

Tommelfinger-regel:

Der skal bruges mindst den dobbelte

samplingsfrekvens, som signalets frekvens.

http://www.ee.nmt.edu/~rison/ee308_spr12/notes/Lecture_22.pdf

http://www.asel.udel.edu/speech/tutorials/instrument/sam_rat.html

CD-skive.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 16 af 47

Hvis man optager noget musik, gemmes det i dag fx på en CD-skive. Det er 1’ere og 0’ere, der

gemmes.

Her ses en grov beregning over

antallet af bytes, der er gemt på en

CD med musik i 74 minutter:

Der samples med 44,1 KHz.

44.100 samples/(channel*second) * 2

bytes/sample * 2 channels * 74 minutes * 60 seconds/minute = 783,216,000 bytes

Altså mindst 783 Mbyte skal

gemmes på en CD-skive.

Oversampling:

Oversampling kan forbedre lyden fra en Cd-

afspiller. Det foregår ved, at afspillerens

computer beregner mellemliggende værdier

imellem de samplede ved hjælp af Interpolation.

Dvs. at den 44,100 kHz firkant, der normalt

overlejrer signalet fra CD-afspilleren, vil få en

meget højere frekvens ved oversampling.

Det betyder, et simpelt RC-filter meget lettere

kan fjerne samplingsstøjen, uden at påvirke

selve signalet.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 17 af 47

Eksempel:

Her er vist et eksempel på et signal fra en CD-

afspiller.

Det var oprindeligt en sinus, men er efter

digitaliseringen – med 44,1 kHz, - blevet hakket.

Et digitalt signal hentes i fx fra en CD eller en

RAM og konverteres til analog.

Udgangssignalet ses til højre.

Efter Digital til Analog-konverteren kommer

signalet igennem et lavpas-filter, der dæmper de

høje frekvenser.

Det digitale signal før og efter filtrering.

Det ”firkant hakkede” fra A/D-konverteren og

signalet efter en filtrering i et RC-led, et

lavpasfilter.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 18 af 47

Med 4-dobbelt oversampling i afspilleren får

samplings-firkanterne en meget højere frekvens.

Dermed bliver det meget lettere at filtrere de

uønskede signaler væk med et simpelt RC-filter.!

8 gange oversampling.

Dvs. at man med et simpelt

RC-filter kan fjerne den nu

meget højere sampling-

”støj –frekvens”. Dette

ses herunder:

Den stiplede skrånende linje

viser et Bodeplot for et RC-led.

Bodeplottet har sit knæk ved 20

KHz.

Dette vil ganske vist medføre en fasedrejning på 45 grader i knækket!! Men samplestøjen, der ved

oversampling fx ligger på 352,8 kHz fjernes meget lettere.

Samplerate for et telefonsignal:

I en telefon overføres frekvenser fra 100 Hz til 3 kHz. Derfor bør sampleraten være på 8 kHz.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 19 af 47

A/D-D/A konvertering

Digitale komponenter kan ikke håndtere analoge signaler, - bortset fra, at en komparering kan siges

at være en form for digitalisering. Det kan ske med en komparator, evt. bygget af en OPAMP, eller

fx en NAND-gate med hysterese. Men dette giver kun en 1-bits opløsning.

Ønsker man fx en 8-bits opløsning må der mere sofistikerede løsninger til. Det kan illustreres med

følgende skitse:

På omformerens udgang optræder et binært tal. I dette tilfælde et 8-bits tal. Dvs. værdier fra 0 til

255D eller fra 00000000B til 11111111B.

Hvis indgangssignalet fx går fra 0 til 10 Volt, kan det følgelig indrettes således, at 8 nuller svarer til

en indgangsspænding på 0 Volt, og 8 1’ere til 10 Volt. Altså, hvert tal på udgangen repræsenterer et

spring på mVolt2,39255

10 . Hvis potentiometeret på indgangen langsomt skrues fra 0 til 10 Volt,

vil udgangen bevæge sig fra 8 nuller og opad i det binære talsystem som en 8 bit tæller. Hver gang

indgangsspændingen stiger ca. 39 mV vil tallet på udgangen stige med 1.

Et eksempel på en digitalisering.

Her ses et indscannet billede af et indgangssignal, der er digitaliseret til 4 bit. Når de 4 bit

talværdier senere igen konverteres til analog spænding, ( det højre billede ) ses at de analoge

spændinger antager en trappe-kurveform.

En opløsning med 8 bit ville gøre opløsningen meget bedre.

0

tilDigital

LSB

R13

1

2

MSB

VCC

Bit 7

Bit 0

Analog

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 20 af 47

Opbygning af A/D konvertere.

Flash-konverter:

Dette eksempel viser et

diagram, hvor der er brugt

komparatorer, og en

referencespænding.

Som denne skitse indikerer,

vil man ved større bit-

opløsninger komme op på

rigtig mange modstande og

komparatorer i en converter

af denne type.

Til en konverter med bare

3-bit skal bruges 8

referencespændinger, og 8

komparatorer.

Dette princip er det

hurtigste til at lave en

konvertering!

Men princippet bruger mange komponenter, og bruges kun ved lav opløsning, dvs. <= 8 bit.

Modstandsnetværket skaber 2n – 1

spændingsniveauer.

Opløsningen er:

2 1

ref

n

U

R6

1k

U1

OPAMP

+

-

OUT

R9

1k

U2

OPAMP

+

-

OUT

Bit 2

8 til 3

kon-

verter

0

U3

OPAMP

+

-

OUT

Bit 0

Bit 1

0

R7

1k

U5

OPAMP

+

-

OUT

R4

1k

R13

1

2

Ureference

VCC

R5

1k

R10

500

U8

OPAMP

+

-

OUT

U4

OPAMP

+

-

OUT

U6

OPAMP

+

-

OUT

R2

1k

R3

1k

R8

1k

U7OPAMP

+

-

OUT

010

001

000

011

Kode

Usignal

100

Delta

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 21 af 47

Det er meget vigtigt, at modstandene i modstandsnetværket er ret præcis, at de genererede

referencespændinger er nøjagtige.

For at lave bedre overensstemmelse

mellem faktisk værdi og konverteret

værdi, bør første Delta værdi kun være

den halve værdi:

Digital til Analog konvertere

Her ses et ”diagram-symbol” for en Digital til Analog konverter: Fra venstre tilføres et antal bit:

Hvis bittene ind i en DAC kaldes d1, d2, .. dn,

hvor MSB er d1, fås, idet Uout = D * Uref:

( d1, d2, osv. er enten 1 eller 0 )

1 2 3

1 2 32 2 2 2 n

nD d d d d

out refU D U

Hvis Uref er 10 Volt, medfører det, at der fås 10 / 2n amplitude – muligheder.

Eller måske en mere logisk måde at udregne udgangsspændingen på:

𝑈𝑂𝑢𝑡 = (𝐷7

2+

𝐷6

4+

𝐷5

8+

𝐷4

16+

𝐷3

32+

𝐷2

64+

𝐷1

128+

𝐷0

256) ∗ 𝑈𝑅𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑒

Graduerede modstande:

010

001

000

011

Kode

Usignal

100

Delta

d1

0

d2

d3

Uout

dn

Gnd

Uref

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 22 af 47

Ved store opløsninger er det nødvendigt med ret store modstandsspring, og ret nøjagtige

modstandsstørrelser. Anvendes derimod et andet princip, opereres der kun med 2

modstandsstørrelser:

Her er et eksempel på opbygning af en Digital til Analogkonverter, hvor der er brugt forskellige

størrelser af modstande.:

I kredsløbet indgår en række switche, og nogle graduerede modstande. Når en switch er ”ON”, løber

der en strøm mod nul, dvs. virtuel stel. Strømmen må fortsætte op gennem R11, mod Uout, som må

være negativ. Derfor følger, at jo flere switche der er ON, jo mere negativ vil Uout være!

I stedet for switchene kunne udgangene i fx en CMOS-tæller bruges.

Det ses, at med store opløsninger, dvs. større antal bit, skal der ret store modstande til for mindst

betydende bit, LSB.

R-2-R netværk

Dette problem er løst med følgende kredsløb. Der er anvendt et såkaldt R2R-netværk, der kan

opbygges af almindelige modstande, men også fås færdig i en SIL, ( Single in Line ).

R2R-Modstandene er placeret i et SIL-hus

( Single In Line )

Se fx: http://www.bourns.com/pdfs/r2rap.pdf

2^2

0

R1

1k

2^0

R11

1k

MSB

12

Uref

R5

16k

12

LSB

12

Uout

R2

2k

2^32^4

R3

4k1

2

R4

8k

2^1 Negativ

U9

OPAMP+

-

OUT

12

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 23 af 47

Et R2R-

netværk består

af 2 størrelser

modstande. Fx

en værdi på

10K og den

dobbelte værdi,

20K.

Konvertere på markedet har en opløsning på mindst 8 bit, men for overskuelighedens skyld er her

vist en 4 bit udgave.

Ved hjælp af en kombination af switchene kan der frembringes i alt 24 forskellige

udgangsspændinger. Er alle switche på 0, dvs. mod højre, er udgangsspændingen = 0.

Switches MSB-switchen ON, vil der løbe en strøm i R8. Den løber gennem R7 og forgrener sig så.

Ses på modstandene fra venstre, ses, at R1 og R2 er parallelle. Altså = 10 K. I serie med R3 giver

det 20 K. Og så fremdeles. Det betyder i alt, at strømmen gennem R8 = 20 K går videre ind i ialt 20

K. gennem R7 på 10 K og resten, der også udgør 10 K.

Alt i alt vil spændingsdelingen mellem R8 og R7 + resten give halv spænding til

operationsforstærkeren, der blot er koblet som 1 gangs forstærker.

Vha. beregninger med superpositionsprincippet, Thevenin og Mayer Norton, eller ved brug af

ORCAD Bias Voltage simuleringer, kan de forskellige kombinationer af switchene udregnes. Det

giver i alt 16 forskellige spændinger på udgangen med 4 kontakter.

Her er vist en

ORCAD-

simulering hvor

kontakterne er

indikeret med

påtrykte

spændinger.

Med MSB = ’1’,

må udgangs-

spændingen være

det halve af den

påtrykte spænding.

R2

20k

R5

10k

R8

20k

0

R6

20k

MSB

Uref

R3

10k

LSB

Uout

R7

10k

R1

20k

R4

20k

0

U1

OPAMP

+

-

OUT

R7

1k

R2R-Netværk

5.000V

U3

OPAMP

+

-

OUT

1.250V

R2

2k

0V

R8

1k

312.5mV

0

4

2.500V

1V4

0Vdc

00

0V

R1

2k

0V 0V

V3

0Vdc

625.0mVR6

1k

R4

2k

0

8

R3

2k

R5

2k

V1

5Vdc

V2

0Vdc

0

2.500V

2

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 24 af 47

Gøres nu

også den

næst mest

betydende

bit høj,

stiger

udgangs-

spændingen

.

Opløsningen er 5/16 = 0,3125 Volt.

Udgangsspændingen skal altså være 5

16 ∙ 12 = 3,75 𝑉𝑜𝑙𝑡

Strømmen fra 5 Volts-

kilden fordeler sig i to

lige store dele. Fordi, den

”ser ind i ” lige store

modstande til begge sider

efter R2.

Strømmen gennem R6

deler sig igen i to lige

store dele,

Den ene gennem R7, den anden gennem R3.

Dvs. strømmen halveres for hvert led, og strømmen gennem R11 er meget lille i forhold til gennem

R2.

Derfor giver LSB kun el lille bidrag til strømmen gennem R11 og dermed udgangsspændingen!

Opgave:

Opbyg ovenstående i ORCAD. Som Uref bruges fx VDC, der sættes på 5 volt.

Prøv forskellige bit-værdier, og regn efter.

Øvelse:

Opbyg en 8-bit CMOS-tæller. Brug fx en funktionsgenerator til at give pulser. ( Tjek pulserne med

scoopet, inden de tilsluttes tælleren. ).

R3

2k

R2R-Netværk

5.000V

V2

0Vdc

3.125V

R5

2k

5.000V

V1

5Vdc

U3

OPAMP

+

-

OUT

781.3mV

0

4

3.750V

1V3

5Vdc

00

0V

R6

1k

0V 0V

R8

1k

R2

2k

1.563V

V4

0Vdc

R1

2k

0

8

R7

1k

R4

2k

0

3.750V

2

R5

2k

42

R3

2k

1

R11

2k

R7

1k

0

V1

0Vdc

R2

2k

0

R4

2k

LSB

V3

0Vdc

V2

5Vdc

R12

2k

0

V4

0Vdc

0

R1

2k

R6

1k

MSB

R8

1k

0

8

R2R-Netværk

0

U1

OPAMP

+

-

OUT

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 25 af 47

Monter et R2R-netværk på tælleren, og mål på netværkets udgang med et scoop.

R2R-netværk med inverterende OPAMP

Mange steder ser man i stedet for ovenstående kobling med noninverting OPAMP, en opstilling,

hvor en inverting OPAMP er brugt. Det betyder, at man belaster netværket med modstanden før den

inverterende indgang.

Det betyder også, at der trækkes en strøm ud af netværket.

Strømmen fra den mest betydende bit løber igennem R5, og deler sig i 2. En gren løber mod højre

mod virtuel stel gennem R11, den anden mod venstre gennem R8.

Regnes de næste modstande sammen til venstre for R8, fås værdien 1K. Dvs. strømmen mod venstre

også ”ser” ind i 2 K, og de to strømme er altså lige store.

Strømmen op gennem R5 skal altså videre gennem en modstand på 1 K ( Summa R8 parallel med

R11 ). Spændingen mellem R8 og R11 vil altså være ( 5 / 3K ) * 1 K = 1,667 V.

Hvis udgangsspændingen skal være 2,5 Volt efter de to OPAMP’s skal gain være 1,5 gange.

Her ses et

eksempel,

hvor alle 4 bit

er høje.

Udgangsspændingen skal altså være 5

16 ∙ 15 = 4,6875 𝑉𝑜𝑙𝑡

R2

2k

0

833.3mV

R3

2k

R5

2k

0V

R4

2k

R6

1k

1.667V

0V 8V4

0Vdc

R7

1k

1

416.7mV

0

V2

0Vdc

R12

3k

00

-2.500uV

0V

2.500V

0V

V1

5Vdc

R11

2k

2

R1

2k

5.000V

R8

1k

R2R-Netværk

0

U1

OPAMP

+

-

OUT

4

R13

1k

U2

OPAMP

+

-

OUT

V3

0Vdc

R14

1k

0

208.3mV

2.500uV

0

R2

2k

0

3.750V

R3

2k

R5

2k

5.000V

R4

2k

R6

1k

3.125V

0V 2V4

5Vdc

R7

1k

3.750V

0

V2

5Vdc

R12

3k

00

-4.688uV

R2R-Netværk

5.000V

4.688V

5.000V 8

V1

5Vdc

R11

2k

R1

2k

5.000V

R8

1k

4

0

U1

OPAMP

+

-

OUT

1

R13

1k

U2

OPAMP

+

-

OUT

V3

5Vdc

R14

1k

0

3.125V

4.688uV

0

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 26 af 47

8 bit R2R-netværk.

Her en skitse af et 8 bit R2R-

netværk.

Øvelse: Opbyg følgende kredsløb i ORCAD.

I light versioner af ORCAD vælges tælleren 74393.

Reset kan sættes til at give en kort puls, eller stelles, men så skal man ind i Simulation Settings ->

Output ??? og tvinge alle flipflops til at starte på ”0”.

R7

20k

R4

10k

V

0

R3

10k

CLKDSTM1OFFTIME = .5uS

ONTIME = .5uSDELAY =

STARTVAL = 0OPPVAL = 1

Reset

R2

10k

Uout

R11

20k

Resetpuls

R10

20k

S1DSTM2

R1

20kClock

Stim1

V

R5

10k

R8

20k

Digclock

R9

20k

U2

CD4040B

9765324131214151

10

11

Q1Q2Q3Q4Q5Q6Q7Q8Q9

Q10Q11Q12

INPUT

RE

SE

T

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 27 af 47

Grafen burde se

nogenlunde sådan

ud:

De små ”glitches”

stammer fra

tællerens udgange,

der ikke skifter

nøjagtig på samme

tid.

De kan evt. fjernes

med en lille

kondensator.

Lyd eller signal fra en EPROM ( Alarm, det brænder )

EPROM.

Erasable Programmable Read Only Rom.

Slettes med intens UV-lys.

2764, betyder 64 KBit, dvs. 8 KByte.

Her ses gennem Kvarts-vinduet.

Se i mikroskop:

https://www.youtube.com/watch?v=cwl4P36r4Ls

https://www.youtube.com/watch?v=Fxv3JoS1uY8

Time

0s 10us 20us 30us 40us 50us

V(UOUT)

0V

2.5V

5.0V

0s 10us 20us 30us 40us 50us

RESET

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 28 af 47

Ses på data på ” hylderne ” i EPROM’en

kunne det se således ud.

Her er vist et eksempel på en

oscillator, der tæller op og stepper sig

gennem hylderne i en EPROM.

Forskellige A/D konverter-principper:

Ofte bruges en D/A-konverter bygget ind i en A/D-konverter-IC.

Der er fremstillet et antal forskellige typer. De vigtigste gennemgås her.:

Rampetæller AD Konverter:

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 29 af 47

Efter reset vil tællerens udgang være 00000000.

Dette betyder, at spændingen fra R2R-netværket

mærket Ux er 0 Volt. Ux stiger eftersom tælleren

tæller pulser fra oscillatoren.

Komparatoren sammenligner den påtrykte

spænding, Uin, med spændingen fra R2R-

netværket. Når Ux bliver højere end Uin lukker

AND-gaten ikke flere klocksignaler gennem til

tælleren. Tællerens værdi er nu et udtryk for Uin.

Dual Slope-konverter:

I en Dual Slope konverter udnyttes, at det tager tid at oplade en kondensator gennem en modstand.

På indgangen af den første OPAMP, U2, vil der være 0 volt. Strømmen, der kommer fra Uin vil gå

gennem modstanden R, og op gennem kondensatoren C. Venstre side ophober ladninger. Og for

ikke at spændingen skal stige på den inverterende indgang, må højre side af kondensatoren skulle

have mere og mere negativ spænding.

Digital ud

U3

AND2 12

3

ResetUin

U1

Komparator

+

-

OUT

Osc

R2R

Binær Tæller

8 x

Clk

Netværk

Oscillator

Ux

t

Uin

Ux

R

Reset

LSB

U3AND2 1

2

3

Clock

1

2

3

4

Uin

U1

Komparator

+

-

OUT

0

- U reference

Tæller

0Integrator

MSB

C Oscillator

U2OPAMP

+

-

OUT

SWitch

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 30 af 47

Dette sker så længe tælleren er 0 på MSB. Bliver den høj, starter de øvrige bit jo fra 0, og switchen

skifter ned til den negative reference-spænding. Det får strømmen til at gå modsat vej gennem

modstanden R. Strømmen kommer oppe fra de ophobede ladninger i kondensatoren. Spændingen på

kondensatorens højre side vil stige, og når den når over nul, vil komparatoren U1 stoppe

klockpulserne til tælleren. Tællerens output er nu et udtryk for indgangsspændingen!!

Jo højere indgangsspændingen er, jo mere bliver kondensatoren opladet, og jo længere tid vil det

tage at aflade den igen.

Altså, man lader kondensatoren i en kendt tid, og måler så tiden, det tager at aflade den igen.

Når kondensatoren lades, sker det med konstant strøm. Derfor gælder følgende formler:

Q U C og Q I t

Strømmen I er givet ved: 𝐼 =𝑈𝑆𝑖𝑔𝑛𝑎𝑙

𝑅

Herved fås: 𝑈 ∙ 𝐶 =𝑈𝑆𝑖𝑔𝑛𝑎𝑙∙𝑡

𝑅

Og endelig kondensatorens opladning:

𝑈𝐶 =𝑈𝑆𝑖𝑔𝑛𝑎𝑙∙𝑡

𝑅∙𝐶

Bemærk, her er

kondensatorens

opladespænding vist positiv.

Der lades en konstant tid, og

så måles der hvor lang tid

det tager at aflade den igen

med en kendt strøm.

Spænding til frekvens-konverter.

En spænding til frekvens-A/D-konverter bygger på at jo højere indgangsspænding, der påtrykkes, jo

flere gange kan man nå, at oplade en kondensator til en bestemt spænding inden for en given tid.

t1 = opladning

Fixed tid

Usignal

Fixed strøm

I = k

t2 = afladning

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 31 af 47

Når en bestemt oplade-spænding er nået, kortsluttes kondensatoren, og opladningen gentages.

Opladningen går hurtigere ved højere indgangsspænding. Herved vil antallet af opladninger i løbet

af en bestemt tid sige noget om indgangsspændingen.

Spændingen på punkt 3 går retlinet nedad. Når den når den negative referencespænding, går

komparatoren høj, og sender en puls til tælleren og til pulsformeren, der kortslutter kondensatoren!

Herefter gentages forløbet.!

Antallet af pulser til tælleren i løbet af en bestemt tid, en timebase, er ligefrem proportional med

indgangsspændingen!

Successiv approximationsprincippet

I en successive approximations konverter startes med at sætte MSB høj. En komparator

sammenligner så den spænding, der kommer ud af R2R-D/A-konverteren. Er spændingen lavere end

den spænding man vil måle, fortsætter MSB med at være høj, ellers resettes den til 0.

Herefter ”prøves” med næste bit. Så hver bit sættes høj eller lav, alt efter om den genererede

spænding er højere eller lavere end inputspændingen.

Når alle bit er gennemløbet, vil det binære tal være et udtryk for inputspændingen.

R1

U3

AND2 12

3

7

4

- U reference

Kontrollogik

6

Uin

Reset12

U1

Komparator

+

-

OUT

Tæller

Timebase &

0

2

Impulsformer

Integrator

C

Reset

Count_Enable

3U2OPAMP

+

-

OUT

5

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 32 af 47

Skitse over det

indre i en ZN449

A/D konverter.

Princippet svarer til at man skal

gætte et tal mellem 1 og 100.

Først gætter man på 50, og får at

vide, det er højere. Så på 75, og får at

vide, det er lavere. Derefter midt

mellem 50 og 75, fx 62, osv.

Sample & Hold kredsløb.

For at undgå, at Uin ændres under et konverteringsforløb, anvendes et ” Sample and hold” kredsløb.

Den viste kontakt sluttes kortvarigt. Herved

får kondensatoren samme spænding som

Uin. Denne spænding holdes konstant af

kondensatoren, når kontakten åbnes.

Hvis der anvendes en god kondensator med lille lækstrøm, og en god operationsforstærker med en

stor Ri, kan spændingen opretholdes ganske længe. Meget længere tid, end der skal til for at foretage

en A/D konvertering.

Switches

FlipFlop

Uin

R2R-net

Skifteregister

LSB

U1

Komparator

+

-

OUT

MSB

Clok

C1

U1

OPAMP

+

-

OUT

0

1 2Uin

x BitA/D

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 33 af 47

Orcad simulering af en D/A konverter.

Her er igen vist en ORCAD-simulering af en D/A-konverter. Der er her brugt en TTL-tæller, en

74393.

For at få ORCAD til at køre skal man ind i Simulating Settings, / Options / Gate Level Simulations,

og tvinge alle tællerens FF’s til at være 0 som startværdi.

Grafen ser således ud!!

0

R6

20k

0

R9

10k

R7

10k U2

OPAMP

+

-

OUT

U1A

74393

1 3456

2

A QAQBQCQDC

LR

R10 20k

CLKDSTM1OFFTIME = .5mS

ONTIME = .5mSDELAY =

STARTVAL = 0OPPVAL = 1

R12

1k

R3

10k

R4

20k

0

0

R2

20k

R11

1k

U3

OPAMP

+

-

OUT Uout

R5

10k

R1

20k

VR8

20k

Time

0s 5ms 10ms 15ms 20ms

V(Uout)

0V

1.0V

2.0V

3.0V

4.0V

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 34 af 47

Et eksempel på en digital styret

analog udgang. Vha. switchene i

4066 forbindes en kombination af

modstandene til en reference-

spænding.

Der kan på denne måde genereres

udgangsspændinger fra 0 til -7,5

Volt, med spring på 0,5 Volt.

Kredsløbet kan også bruges til at

lave digital styret

signalforstærkning.

Kilde: Elrad 1990, Heft 6

Principdiagram for ovenstående kredsløb.

Opgave:

Undersøg kredsen 4066

Her et andet kredsløb.

Bemærk, at kontakterne er åbne ved

lav på de digitale indgange!

Kilde: Elrad 1990, Heft 6

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 35 af 47

Her et principdiagram af

Ovenstående!

Et

eksempel

på en 6-bit

DA-

konverter

Princip-diagram for

ovenstående.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 36 af 47

Serielle konvertere:

I vores Arduino chip, ATMEGA328P er der indbygget A/D-konvertering. Men ingen D/A.

Det kan evt. laves med et R2R-netværk, men det vil tage mange pins.

Men der findes eksterne løsninger, dvs. ICér, der kan monteres sammen med UC-en.

For at spare på benforbruget i en uC, kan man vælge IC-er, der forbindes og overfører data til eller

fra UC-en via en seriel busforbindelse.

Og det sker på en bestemt måde, beskrevet i en såkaldt protokol. Der findes flere typer protokoller!

TLC549, A/D-konverter

TLC549 er en lille A/D konverter i en 8 bens DIL hus. Det er en 8 bit konverter, beregnet til brug

sammen med en microcontroller. Dvs. den kan konvertere en spænding mellem fx 0 og 5 Volt til et

tal mellem 0 og 255.

En konvertering startes ved at controlleren sætter CS lav. CS står for ”Chip Select”.

De 8 bit kommer serielt ud på ben 6. Hver gang microcontrolleren sætter et clock-signal høj, sætter

TLC549 næste bit ud på dens Data-pin.

Blokdiagram for TLC549

Clockpulserne og dataene ses på næste skitse: Princippet kaldes ” Bitbanging”.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 37 af 47

Pin outline:

Her er det forsøgt

at tegne et

blokdiagram over

TLC549.

Kode, der kan bruges til 8051-uC-en.

R5 bruges som tæller, så der kan genereres 8

Clock-pulser. Data skiftes ind i A-registeret fra

C-bittet.

TLC_549:

Setb CS

Mov R5, #8 ; R5 er tæller.

Clr A

Clr Clk ; Clocken lav.

Clr CS ; Enable Chippen.

Loop:

Mov C, Data ;Læs data ind i C-bit

Setb Clk

Nop

Clr Clk

RLC A ;Roter ind i Acc

DJNZ R5, Loop ; gentag hvis > 0.

Setb CS ; Disable Chip.

Ret

Her en oversigt over andre konverter-kredse:

LSB

6

8

1

5

Uref ->= 0 Volt

MSB

VCC, 5 V

Uref +<= 5 Volt

/ CS

Analog in (0 til 5 V )

3

Data out, Seriel

7

U2A1 2

Clk

TLC549

4

Kon-

verterlogik

Clk

Skifteregister 8 Bit

U1A

1

23

0

Chip select

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 38 af 47

Analog til Digital konverter: Digital til analog konverter:

TLC1549 svarer til TLC549, men er en 10 bit-

konverter.

ADC0804, 8 bit parallel

MAX548, MAX549, 3 wire, 8 bit.

LTC1257, 12 bit / CYPAX.

MAX518, 2 wire DAC, ca. 50 kr. / Farnell Til

I2C-bussen.

Opgave:

En Microcontroller skal hente en analog spænding ind fra et potentiometer via en TLC549 /

TLC1549, og vise spændingen på et LCD-display med 2 decimaler.

Brug et Kit med display, - og forbind det til A/D-konverteren på et fumlebrædt.

Udbyg derefter opstillingen, så den målte spænding tillige vises på et analogt ( evt. digitalt ) display

via en MAX548 D/A-konverter.

Se blokdiagram herunder:

Dokumenter!

Blokdiagram over

testopstillingen

For info om MAX548,

se senere!

Se efterfølgende for info om TLC549 og MAX548.

Timingdiagram for TLC549:

Bus

Display

LCD-Display

Uc

Analog

MAX548TLC549

Pot

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 39 af 47

Når Cs går lav,

starter

konverteringen.

Det tager max

18 ms, hvorefter

MSB (A7) kan

læses på Data

Out.

De resterende 7 bit, A6-A0, clockes ud på Data Out, på et faldende clocksignal.

Når alle data er sendt ud, skal CS gå høj i en periode, mindst på 25 uS for at starte en ny

konvertering.

Clock-frekvens max 1 MHz

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 40 af 47

Flowchart eksempel for konvertering og læsning

af data fra TLC549!

TLC549, Start

Clr Clk

Clr CS

Pause

Setb CS

Clr CS

Clr A

Setb Clk

Nop, Nop

Clr Clk

Datapin Equ P3.2

CS Equ P3.3

Datapin

lav ?

Setb Acc.7

Setb Clk

Nop, Nop

Clr Clk

Datapin

lav ?

Setb Acc.6

Nej

Nej

Ja

Ja

Osv. Indtil 8 gange

MAX548 D/A-konverter

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 41 af 47

Max 548 er en 8 bit Dual output DAC. Dvs. den indeholder 2 D/A-

konvertere. Den arbejder på 5 Volt. Output er fra 0 til 5 volt.

Den har 2 stk R2R-netværk indbygget.

Rout = 33 KOhm, - som derfor kræver stor ri på den efterfølgende

kreds.

Pin 6: Skal til +5 Volt hvis ikke brugt!

Pin 5: Data clockes ind på positiv clocksignal.

Her en principskitse for Max548

En kondensator på 0,2nF til 1 nF på Uout kan forhindre glitches.

Konverteren arbejder med 3-wire styring, ( kompatibel med SPI & Microwire )

Kredsen har latch´d input.

Dvs. hvis den ”fodres” med

en 8 bit binær værdi, holder

den den tilsvarende ud-

gangsspænding indtil ny

data læses ind.

Max548 skal kontrolleres

med 16 bit, eller 2 x 8 bit

ord @ max 10 MHz. Den

første byte, der sendes til

den er en kontrolbyte, den

anden er Data.

Begge DAC – registre kan updates samtidig.

Input register kan updates, uden at der overføres til DAC x register.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 42 af 47

/LDAC gående lav kan loade DAC fra Inputregister, hvis det vælges i kontrolordet.

( C1 = 1, C0 = 0 ).

Ved Poweron er alle registre = 0, Dvs. det ikke er nødvendigt at initiere den.

Kontrolordet

Max548 skal for hver operation have tilsendt 2 byte. Et kontrol-ord og en Data-byte.

Kontrolordet bestemmer hvordan konverteren skal reagere på næste byte. Dvs. valg af hvilke input-

registre, der skal opdateres.

Do

nt

care

Do

nt

care

Do

nt

care

0 =

Po

wer

UP

mo

de

??

1 =

Po

wer

DO

WN

Mo

de

1 =

DA

C r

eg

Lo

ad e

nab

le.

0 =

DA

C u

p-

dat

e p

å /C

S.

1 =

Ad

ress

erer

DA

C B

1 =

Ad

ress

erer

DA

C A

Dat

a B

it 7

Dat

a B

it 7

x x x C2 C1 C0 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 Før-

ste bit

Sidste

bit

Der behøver ikke være ophold mellem de to Byte.

Send fx:

Gør /CS lav,

Send x x x 0 1 0 B A + ( D7 – D0 )

Gør /CS Høj.

Værdien i Data D7 til D0 sendes til DAC b, hvis B er 1, til DAC A, hvis A er 1, eller til begge ved 1

1.

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 43 af 47

Udgangsspændingen Uout:

𝑈𝑜𝑢𝑡 = 5 ∗ (𝐷𝑎𝑡𝑎𝑣æ𝑟𝑑𝑖

256) [𝑉𝑜𝑙𝑡]

Sendes fx værdien 113 decimal til konverteren fås en udgangsspænding på:

𝑈𝑜𝑢𝑡 = 5 ∗ (113

256) [𝑉𝑜𝑙𝑡] = 2,207 [𝑉𝑜𝑙𝑡]

Blokskema:

Her er det forsøgt at lave et blokskema over indmaden i MAX548, og hvordan den reagerer på data

!

Men det har ikke været sådan ligetil! Vi får se, om det er rigtigt!

Eller?

364

5

1 2

U_out_A

U_out_B

A1

A0

C1

C0/CS

D_IN

Clk

Input Skifte-Register A

Og R2R net B

Og R2R net A

DAC Register

DAC Register

Input Skifte-Register B

8 Bit

Bus

8 BitBus

/Valle

MAX 548

Parallel

Load

Bit i kontrol-ord

R_out ~ 33 KOhm

364

5

1 2

364

5

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 44 af 47

Håber, det er rigtigt!! Får vi se ved test!!

Kode:

Strategi:

Allerførst gøres Chip Select lav.

Først sendes et kontrolord til MAX_548, vist nok lig med 0000 10BA, hvor A = 1 hvis man ønsker

at sende en værdi til output A. Tilsvarende for output B

Derefter sendes data til MAX_548 D/A-konverter

Og til slut gøres CS høj igen.

Her et forsøg på at lave noget kode til at styre den:

;Def af pins

Max_548_Clk equ P3.0 ; pin 5, Clock

Max_548_Cs Equ P3.1 ; pin 3, Chipselect, aktiv lav

Max_548_Data Equ P3.2 ; pin 4, Data

; Max_548 OutA Pin 2, Analog ud

; Max_548 OutB Pin 7, Analog ud

; / Ldac Pin 6, Forbindes til plus

; Def af Registre brugt:

; Max_548_Data i R0

; Max_548_counter i R5

; bruger Acc.

Send:

Clr Max_548_CS ; Gør Chip Select lav

Mov A, #kontrolkode ; vist nok = 000010BA

Call Send_8

9

108

12

1311

1122

13

364

5

1 2

U_out_A

U_out_B

A1

A0

C0 C1/CS

D_IN

Clk

Input Skifte-Register A

Og R2R net B

Og R2R net A

DAC Register

DAC Register

Input Skifte-Register B

8 Bit

Bus

8 BitBus

/Valle

MAX 548

9

108 Parallel

Load

Bit i kontrol-ord

R_out ~ 33 KOhm

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 45 af 47

Mov A, R0 ; data fra Reg R0 sendes

Call Send_8

Setb Max_548_CS ; Gør Chip Select høj igen

Ret

;--------------------------------------------

Send_8: ; sender 8 bit I reg A

Mov R5, #8 ; tæller I reg 5

Send_8_a:

RLC A ; roter bit 8 ud i Cy

Mov Max_548_Data, C ; Cy til Datapin

Setb Max_548_Clk ; Clock-signal

Nop

Nop

Nop

Clr Max_548_Clk

Nop

Nop

Nop

Djnz R5, Send_8_a

Ret

; ---------------------------------------------------------

Eller man kan generere en puls via et call til subrutine:

PULSE: SETB SCLK

MOV R3,#2

PULS1: DJNZ R3,PULS1

CLR SCLK

MOV R3,#2

PULS2: DJNZ R3,PULS2

RET

;----

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 46 af 47

Her en gaflet kode:

( koden er fundet på nettet, men ikke testet. Max549 er også en D/A-konverter! )

ORG 0000H

JMP MAIN

ORG 30H

; Def af pins

CS EQU P1.7 ; Chipselect

SCLK EQU P1.5 ; Clock

DIN EQU P1.6 ; Data

MAIN: MOV SP,#60H

FDOWN: CLR CS ; gør CS lav

F11: MOV R7,#08H ; Tæller defineres

MOV A,#255 ; Tal, der skal sendes

LOOP2: RLC A ; Roter bit 7 ud I CY

MOV DIN,C ; Cy til datapin

LCALL PULSE ; generer en puls på Clk

DJNZ R7,LOOP2 ; gentag 7 gange mere

CLR CS ; mener ikke dette er nødvendig !!

NOP ; do

SETB CS ; do fejl ??

LCALL T01MS ; do

MOV R7,#08H ; gør ny tæller klar

MOV A,#100 ; Ny værdi

LOOP3: RLC A

MOV DIN,C

LCALL PULSE

DJNZ R7,LOOP3

;

CLR CS ; færdig,

NOP

SETB CS

LCALL T01MS

; Slut

; -----------

; generer en klockpuls.

PULSE: SETB SCLK

MOV R3,#2

PULS1: DJNZ R3,PULS1

CLR SCLK

MOV R3,#2

PULS2: DJNZ R3,PULS2

RET

; pause 1 ms.

T01MS: MOV 38H,#02H

L1: MOV 39H,#0FFH

L2: DJNZ 39H,L2

DJNZ 38H,L1

RET

END

A/D - D/A Konvertere

Redigeret

30/1-2018

Af: Valle Thorø Side 47 af 47

Kilde: http://read.pudn.com/downloads33/sourcecode/embed/106163/max549/max549.ASM__.htm

Arduino

Arduino kan direkte læse en analog spænding, og konvertere den til 10 bit.

Dvs. opløsning fra 0 til 5 Volt til et tal fra 0 til 1023. Dvs. spændings-step på 5/1023 Volt.

Men Analog output kan ikke direkte laves. De analoge output pinde, mærket med ~ er PWM-

output. Frekvensen er ca. 400 Hz, og opløsningen er på 8 bit, dvs. fra 0 til 255. !!

Se på Arduino D/A-korvertering med R2R-netværk:

http://www.instructables.com/id/Arduino-Audio-Output/

Med I2C-og PCF8591.

Se: http://tronixstuff.com/2013/06/17/tutorial-arduino-and-pcf8591-adc-dac-ic/

Brug evt. 74HC595 eller

74HCT595 8-bit serial-in, serial or

parallel-out shift register with out-

put latches

http://www.ritsumei.ac.jp/~piumarta/topics4/arduino-09.pdf

Se også: https://www.youtube.com/watch?v=bqfPZXEuyuc

( om brug af 74HC595 til at skabe flere outputs til Arduinoen! )

Input shiftregister: Brug fx 74HC165

Mål temperaturen med en DS1620og vis den LCD / PC-en. Der kan findes et bibliotek på nettet !!

DS1621 er en I2C temperaturkreds!! Biblioteket Wire.h