Analoog naar Digitaal conversie
Bij besturing van apparatuur heeft één of meer van de te besturen
grootheden vaak een analoge waarde. Een analoog signaal kan niet
rechtstreeks door de micro-controller verwerkt worden. Om de analoge
waarde om te zetten naar een digitale waarde is een analoog naar digitaal
conversie nodig. Een schakeling die een dergelijke conversie voor zijn
rekening neemt heet een Analoog naar Digitaal converter, ofwel A/D
converter.
Analoog en discreet
Een analoog signaal kan in principe elke willekeurige waarde tussen een
bepaald minimum en een bepaald maximum aannemen. Een discrete waarde kent
tussen minimum en maximum slechts een beperkt aantal tussenwaarden. Alle
waarden die in (gehele) getallen worden uitgedrukt, zijn discreet. Zo is
een meetwaarde die na conversie als getal in de micro-controller voorkomt,
een discrete waarde.
De meetwaarde wordt in het geheugen of de registers van de
micro-controller weergegeven als een getal. Tussen het minimum van dat
getal (vaak 0) en het maximum van dat getal (bepaald door het aantal bits
waarin het getal wordt weergegeven) kan slechts een beperkt aantal
tussenwaarden worden gemaakt.
Resolutie
Het zal duidelijk zijn dat bij conversie van analoog naar discreet,
informatieverlies optreedt. Allerlei tussenwaarden die het analoge signaal
wel kan aannemen, kunnen op discrete wijze niet worden weergegeven. Bij
conversie van analoog naar discreet treedt dus noodgedwongen een fout op.
De grootte van deze fout wordt bepaald door het aantal verschillende
waarden dat het discrete getal kan aannemen. Vaak wordt dit aantal stapjes
waarin het ingangssignaal wordt opgedeeld, weergegeven als het aantal bits
dat voor het getal gebruikt wordt. Zo wordt het ingangssignaal bij een
8-bits converter opgedeeld in 256 stapjes. De conversie heeft dan een
resolutie van 8 bits.
Een andere manier om het aantal stapjes en dus de resolutie aan te
geven, komt men tegen bij de specificatie van een digitale voltmeter. Hier
wordt opgegeven wat het grootste getal is dat op het display kan staan.
Men spreekt dan bijvoorbeeld van een 3½ digit voltmeter. Het getal op het
display kan dan van 0 tot 2000 lopen. De weergave is dan bijvoorbeeld van
0.000 tot en met 1.999 Volt op het 2 Volt bereik. De resolutie is dan 2000
stapjes, in dit geval ook wel 'counts' genoemd.
Nauwkeurigheid
Ofschoon een hoge resolutie de illusie van een hoge nauwkeurigheid
geeft, zijn deze twee gegevens in principe onafhankelijk.
Een converter met een lage resolutie is bijvoorbeeld een comparator.
Een comparator heeft een '1' als uitgangssignaal wanneer de
ingangsspanning een bepaalde drempelwaarde overschrijdt, en anders is de
uitgang een '0'. Men kan een comparator dus opvatten als een A/D converter
met een resolutie van één bit. Er kan, met gelijkblijvende resolutie,
een nauwkeurige comparator gemaakt worden, of een onnauwkeurige.
Bij een nauwkeurige comparator klapt de uitgang bijvoorbeeld om bij een
ingangsspanning van 1 Volt ±0.1%. Het omklapniveau ligt dan tussen 0.999
Volt en 1.001 Volt. De specificatie van een onnauwkeurige comparator zou
kunnen zijn: 1 Volt ±10%. Het omklapniveau ligt in dat geval ergens
tussen 0.9 Volt en 1.1 Volt.
De nauwkeurigheid waarmee het omklapniveau van een comparator vastligt
heeft geen directe relatie met de door de comparator geleverde resolutie
(deze blijft één bit.)
Wanneer een digitale voltmeter met een hoge resolutie (bijvoorbeeld 6½
digit) niet regelmatig wordt gecontroleerd en gecalibreerd, of
onoordeelkundig gerepareerd werd, kan de relatie tussen aanwijzing en
aangeboden spanning zeer onnauwkeurig zijn, ondanks de hoge resolutie van
de aanwijzing.
Digitaal en discreet
Een digitaal signaal is een signaal dat slechts twee niveaus kan
aannemen: een '0' of een '1'. Een discrete waarde is een waarde die wordt
weergegeven als een geheel getal. Er is een subtiel onderscheid tussen de
begrippen digitaal en discreet. Zo heeft de in LES 5 genoemde SMARTEC
temperatuursensor een digitaal uitgangssignaal. De informatie over de door
de sensor gemeten temperatuur wordt in dit digitale signaal weergegeven
middels de duty-cycle van het signaal. Deze duty-cycle kan in principe
alle waarden tussen 0% en 100% aannemen. Het door de sensor geleverde
signaal is dus weliswaar digitaal, maar niet discreet. De discrete waarde
onstaat pas wanneer de micro-controller dit duty-cycle gemoduleerde
signaal heeft gemeten, en de gemeten waarde als getal ergens in het
geheugen heeft opgeslagen.
Elke A/D converter levert een digitaal signaal, maar niet alle typen
A/D converters leveren direct een discrete waarde. In het laatste geval
moet door de micro-controller het door de A/D converter afgegeven signaal
nog bewerkt worden voordat de discrete meetwaarde in het programma in de
micro-controller toegepast kan worden. Verschillende typen A/D converters
zullen in deze les behandeld worden.
Kwantiseringsfout
De fout die ontstaat doordat de meetwaarde discreet wordt weergegeven
heet kwantiseringsfout. Deze en andere fouten die tijdens het converteren
kunnen optreden worden vaak opgegeven in eenheden van het kleinste stapje
dat weergegeven kan worden. Dit kleinste stapje komt bij een binair getal
overeen met een verandering van het Least Significant Bit van de discrete
meetwaarde. De grootte van de kwantiseringsfout is altijd 1 LSB.

Hierboven is een converter met een resolutie van 2 bits (3 stapjes)
gegeven. De converter heeft een ingangsbereik van Vl...Vh. Dit
ingangsbereik wordt door de converter in stapjes verdeeld, en aan elk
stapje wordt een unieke uitgangscode gekoppeld. De kwantiseringsfout is 1
LSB, dus bij een 2-bits converter en een ingangsbereik van Vl....Vh is de
kwantiseringsfout ¼(Vh-Vl).
Wanneer in de bovenste grafiek de uitgangscode bijvoorbeeld 01 is,
geeft dit aan dat de ingangsspanning tussen ¼(Vh-Vl) en ½(Vh-Vl) moet
liggen. De afwijking tussen analoog ingangssignaal en weergegeven getal
ligt tussen -0 en +1 LSB. De converter rondt af naar beneden.
Vaak is het beter wanneer de afwijking tussen -½ en +½ LSB ligt.
Hiertoe moet de conversie volgens de onderste grafiek gedaan worden. De
niveaus waarbij de uitgangscode verandert zijn ½ LSB verschoven. De
meeste converters (ook die in de 68HC11) werken volgens deze onderste
grafiek.
Merk op, dat er geen uitgangscode beschikbaar is voor de 'volle schaal'
waarde Vh. Het maximale ingangssignaal waarvoor nog een 'geldige' code
gegenereerd kan worden ligt ½ LSB onder de volle schaal waarde.
In onderstaande figuur is nog eens de karakteristiek van een 4-bits converter
gegeven.
Offset fouten
Naast de altijd aanwezige kwantiseringsfout kennen converters ook
fouten met een andere oorzaak. Deze onstaan door onnauwkeurigheden in het
ingangscircuit, drift en offset fouten in ingangsversterkers, etc.
Een offsetfout geeft een verschuiving van het nulpunt van de converter.
In de onderste grafiek van figuur 1 zou een offsetfout ertoe leiden dat de
codewisseling van 00 naar 01 niet optreedt bij exact 1/8(Vh-Vl) (bij een
2-bits converter), maar bij een andere ingangsspanning. Het verschil
tussen twee codewisselingen blijft wel steeds exact ¼(Vh-Vl) bij een
2-bits converter. Het verband tussen ingangsspanning en uitgangscode is
weergegeven in de bovenste grafiek van het volgende figuur. Een offsetfout leidt
ertoe dat de overdrachtsfunctie niet exact door het nulpunt van de grafiek
gaat.
Span fouten
Het ingangsbereik van een converter (het verschil tussen maximale en
minimale ingangsspanning) heet ook wel de 'span' van de converter.
Een spanfout in een converter geeft een fout in de volle-schaal waarde
van de converter. Wanneer er sprake is van een spanfout is het verschil
tussen twee codewisselingen groter of kleiner dan exact ¼(Vh-Vl) bij een
2-bits converter. De onderste grafiek in de volgende figuur geeft de
overdrachtsfunctie van een 4-bits converter met een spanfout.

Lineariteitsfouten
Naast de genoemde offset- en spanfouten kan een converter ook fouten in
de lineariteit van de overdracht vertonen. In dat geval is niet voor elke
codewisseling evenveel verschil in ingangssignaal nodig. De onderstaande
figuur geeft
dit aan in een grafiek voor de overdracht van een converter met een
lineariteitsfout.
Offset- en spanfouten zijn door een calibratie over het algemeen goed
op te heffen. Lineariteitsfouten zijn nauwelijks te corrigeren.
In de specificaties van een A/D converter wordt vaak de totale fout ten
gevolge van niet-lineariteit etc. opgegeven in LSB's. Bij een goede A/D
converter is deze fout kleiner dan ±½ LSB. Samen met de
kwantiseringsfout (waaraan in een specificatie meestal geen aandacht wordt
geschonken) zal de maximale conversiefout dan ±1 LSB zijn.
Conversiesnelheid
Een belangrijk kenmerk van een A/D converter is de conversiesnelheid.
Een conversie kost tijd. Daarom wordt van het ingangssignaal een monster
(sample) genomen, en geconverteerd. Daarna kan een nieuw sample genomen
worden en geconverteerd. De geconverteerde waarden geven daarom geen
informatie over het gedrag van het ingangssignaal tussen de samples in.
Men zou kunnen zeggen dat het signaal ook in de tijd gezien discreet
gemaakt wordt.
Doordat alleen op bepaalde tijdstippen informatie over het
ingangssignaal beschikbaar komt, kan uit de geconverteerde waarden de
exacte vorm van het ingangssignaal niet juist gereconstrueerd worden. In
onderstaand figuur zijn twee verschillende signalen weergegeven, die op de
bemonsterings tijdstippen toch dezelfde meetwaarden opleveren.

Voor een op het oog juiste reconstructie van het ingangssignaal
(bijvoorbeeld wanneer het gemeten signaal in een grafiek moet worden
weergegeven) is minstens een tiental meetwaarden nodig in iedere periode
van het ingangssignaal. De theoretische limiet voor een correcte
reconstructie van het ingangssignaal ligt bij een bemonsteringssnelheid
die tweemaal zo hoog is als de hoogste frequentie die in het te meten
signaal voorkomt.
|