Vragen over AD converters

Hallo mensen,

Ik heb een aantal vragen van een oude studie opdracht die ik gebruik om mijn kennis wat op niveau te krijgen.
Van die vragen heb ik wel de antwoorden, maar niet de onderbouwing waarom dit de juiste antwoorden zijn.

Mijn kennis is op dit moment onvoldoende en ik wilde vragen of er iemand is die mij de uitwerking van de afzonderlijke vragen kan uitleggen, zodat ik dit als naslagwerk kan gebruiken om de materie mij eigen te maken.
Het zijn er een stuk of 12, volgens mij...

Is er iemand die mij hierin kan helpen?

Onderstaand een voorbeeldvraag.
https://www.uploadarchief.net/files/download/vraag%202.jpg

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
benleentje

Golden Member

Als ik er even een simpele gedachte erop los laat.
10 bit = 210 = 1024
1mV als kleinste waarde x 1024 = 1,024V of 1024mV
Als je ook negatief wilt kunnen meten is dat -512mV. Maar waarom -512,5mV is dat om zeker te zijn dat je -512mV niet mist en je iets marge moet hebben ook vanwege afrondingsverschijnselen?

[Bericht gewijzigd door benleentje op donderdag 27 juli 2023 21:02:10 (19%)

Als je met een ideale comparator 2 spanningen vergelijkt en die spanningen zijn bv. identiek dan is de comparatoruitgang die de omzetting (start/stop teller) in gang zet onvoorspelbaar en omdat in de praktijk de comparator altijd een voorkeur heeft moet er zekerheid ingebouwd zijn.

Voortgaande op Benleentjes uitleg:

0000000000 = -512,5mV start referentiespanning.
0000000000 = -512V moest de ramp of referentiespanning hier beginnen dan is de uitkomst onvoorspelbaar en kun je al 1mV verkeerd zijn.
0000000001 = -511mV
0000000010 = -510mV
...
...
1111111111 = +512mV +511.5 mV zie 2de vraag.

LDmicro user.
blackdog

Golden Member

Hi,

Waarom negatieve waarden?
Wat staat er nog meer bij?

Een 10 bits encoder heeft 1024 stapjes.
Je begint bij "0" en je eindigt bij 1023, dat zijn 1024 stapjes.
De volle schaal is dan 1023mV, dus de referentie spanning(hier 1024mV) -1 lsb waarde.

Welke interne zaagstand spanning? wordt er aangegeven wat voor soort converter het is bij welke gebruikte voeding spanningen?
Bij een enkele voeding, zou de begin spanning "0V" moeten zijn en het eerste bitje wordt gezet bij +1mV t.o.v. "0V".

Waarbij je in de praktijk ook rekening moet houden met offset spanningen en lineairteit.
Verder zou het kunnen dat ze er vanuit gaan, dat er omgeschakeld wordt op de halve bitwaarden.
Dus 0,5mV, 1,5mV, 2,5mV enz.

Voor mij is de vraag te wazig voor een goed antwoord van mij. :+

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hensz

Golden Member

Op 27 juli 2023 22:49:01 schreef blackdog:
wordt er aangegeven wat voor soort converter het is bij welke gebruikte voeding spanningen?

Laatste idd niet, maar volgens de opdracht (in de startpost) is het een single-slope A/D-omzetter.
Waarom dat ze vinden dat ie ook en net zo ver negatief als positief moet meten is me een raadsel.

Don't Panic!

De vraagstelling deugt niet. Vermoedelijk iemand die (1) DENKT dat het symmetrisch moet zijn en (2) de afronding naar beneden veronderstelt.

Een heel slechte vraagstelling

benleentje

Golden Member

Waarom dat ze vinden dat ie ook en net zo ver negatief als positief moet meten is me een raadsel.

Als je negatief en positieve spanningen van bv een audio signaal wilt meten lijkt met het wel logisch dat je het precies in 2 deelt en je net zover negatief als positief kan omzetten.

Voor mij is de vraag te wazig voor een goed antwoord van mij.

Voor mij ook maar er staat in de vraag een single slope omzetter. Ik ben daar ook niet zo bekent mee maar dat kan je verder gewoon nalezen en je erin verdiepen.

Volgens wij een nadeel van deze omzetters dat ze relatief traag zijn omdat ze altijd bij 0 beginnen te tellen. Als je spanning dan + 450mV is dan duurt dat een stuk langer dan om de waarde -450mV te vinden.

Op 27 juli 2023 23:10:53 schreef Brightnoise:
De vraagstelling deugt niet. Vermoedelijk iemand die (1) DENKT dat het symmetrisch moet zijn en (2) de afronding naar beneden veronderstelt.

Een heel slechte vraagstelling

1) Waarom is dat een probleem
Ik wist zonder te weten hoe een single slope precies werkt wel snel te zien dat ik -512mV gegokt had

2) Lijkt mij logisch dat er bv een offset spanning is op een ingang om ander effecten die voor kleine afwijkingen zorgen.

Weet jij toevallig wel hoe het werkt?

Op 27 juli 2023 17:40:28 schreef Hoeben:
Ik raad deze pagina aan

Ik heb meer vertrouwen in wat analog devices erover zegt en dan ook speciek over een single slope want toch iets anders is.

https://www.analog.com/en/technical-articles/adc-architectures.html

KGE

Golden Member

Op 27 juli 2023 23:22:00 schreef benleentje:
[...]Als je negatief en positieve spanningen van bv een audio signaal wilt meten lijkt met het wel logisch dat je het precies in 2 deelt en je net zover negatief als positief kan omzetten.

Dan kom je één stapje tekort namelijk voor 0 Volt.

Met een even aantal stappen kom je nooit even ver positief als negatief qua bitwaarde. Zou daar de crux van de vraagstelling in zitten?

Het "correct" vinkje staat bij -512.5 mV.

Kennelijk NEEMT DE VRAAGSTELLER aan dat de AD converter bipolair is (kan negatieve spanningen meten), in two's-compliment werkt, en geacht wordt af te ronden naar de dichtstbijzijnde binaire representatie.

Zou je bijvoorbeeld de door de vraagsteller veronderstelde ADC bij -512.0mV laten beginnen, dan truncate ie de gemeten waarde naar beneden (richting negatieve waardes) en dan heeft ie ineens de door benleentje gepropageerde eigenschap dat ie positief en negatief precies dezelfde range heeft.

[offtopic]
Toen ik op de TUD studeerde (eind jaren tachtig) hadden we een prof die zegmaar "in de jaren zeventig" was blijven steken. Als je dan college had gevolgd of z'n dictaat had gelezen, dan kon je enigszins inschatten hoe hij tentamenvragen beantwoord wilde zien. Je moest absoluut niet "naar waarheid" antwoorden, want dat werd zeker fout gerekend. Hoe snel is cache geheugen? 100ns! (30ns was haalbaar in die tijd). Hoe snel is RAM geheugen? 250ns (100-130ns was haalbaar/betaalbaar voor een student in die tijd).

Dus kennelijk heeft deze leraar een idee over hoe hij denkt dat een "single slope ADC" hoort te werken en dat daar allemaal andere keuzes gemaakt kunnen worden die redelijk "arbitrair" zijn dat realiseert ie zich niet. Dat maakt dit soort vragen lastig te beantwoorden als je niet specifiek ZIJN lessen hebt gevolgd.

[Bericht gewijzigd door rew op vrijdag 28 juli 2023 10:18:57 (44%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Jongens, dit brainstormen alleen al is leerzaam voor me!!
Ik ben hier heel blij mee! _/-\o_
Maar goed... Het gaat om het totale plaatje wat ik probeer te begrijpen.
Daarom onderstaande volgende vraag, wederom met een goed antwoord maar geen onderbouwing.

Ongeveer hetzelfde genre. Misschien helpt de redenatie van deze vraag de voorgaande beter te begrijpen.

https://www.uploadarchief.net/files/download/vraag%203.jpg
__________________________________________________

Onderstaand nav de eerste vraagstelling:

Op 28 juli 2023 10:06:11 schreef rew:
Het "correct" vinkje staat bij -512.5 mV.

Kennelijk NEEMT DE VRAAGSTELLER aan dat de AD converter bipolair is (kan negatieve spanningen meten), in two's-compliment werkt, en geacht wordt af te ronden naar de dichtstbijzijnde binaire representatie.

Zou je bijvoorbeeld de door de vraagsteller veronderstelde ADC bij -512.0mV laten beginnen, dan truncate ie de gemeten waarde naar beneden (richting negatieve waardes) en dan heeft ie ineens de door benleentje gepropageerde eigenschap dat ie positief en negatief precies dezelfde range heeft.

Ik probeer je te begrijpen, Rew.
Temeer ook omdat ik me uit de lesstof kon herinneren dat we van afrondingen spraken.

[Bericht gewijzigd door Fantomaz op vrijdag 28 juli 2023 10:13:03 (49%)

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Op 28 juli 2023 10:06:11 schreef rew:

Kennelijk NEEMT DE VRAAGSTELLER aan dat de AD converter bipolair is (kan negatieve spanningen meten)...

Het is een "oude studie opdracht", volgens wat ik mij nog herinner moesten die DAC's met een positieve en negatieve spanning gevoed worden.

Op 28 juli 2023 10:10:13 schreef Fantomaz:

Ongeveer hetzelfde genre. Misschien helpt de redenatie van deze vraag de voorgaande beter te begrijpen...

Waarom een andere vraag als je de eerste nog niet volledig begrijpt?

Op de vraag:
Wat die steilheid hier doet gaat ook mijn petje te boven.
Als je 10bits hebt met een resolutie van 1mV dan kun je uitrekenen hoeveel je kunt meten, 1024 x 1mV is 1024mV.

Dan staat er in mijn eerste antwoord een foutje, 1111111111 = 512 moet dus 511.5 mV zijn

LDmicro user.

Op 28 juli 2023 10:17:29 schreef MGP:
Waarom een andere vraag als je de eerste nog niet volledig begrijpt?

Heb je 2 punten, kun je een lijn trekken.
Heb je meer punten, ben je zekerder van de lijn. ;-)

Als ik meer zulke voorbeelden heb, kan ik de uitleg beter in mij opnemen omdat ik de patronen dan hoop te herkennen.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Lucky Luke

Golden Member

Die stijgtijd in de 2e vraag lijkt er puur ter decoratie bij te staan… als het nu over de maximale samplefrequentie ging oid…

Ik vind dat atmel appnote ‘AVR127’ het aardig helder uitlegt: https://ww1.microchip.com/downloads/en/Appnotes/atmel-8456-8-and-32-bi…

Maar die begint wel bij 0 V te meten. (De aanname is dat het een adc in een microcontroller is welke meet tussen 0 en VCC)

Eluke.nl | handgetypt | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)
benleentje

Golden Member

NU vraag 2 had ik even overheen gelezen.

10 bit betekent heel erg letterlijk 1024 verschillende waarden dus als je ergens een beginpunt legt dan ligt het eindpunt ook vast.
c) omdat -512,5mV + 210 x 1mV = -512,5 + 1024 = 511,5mV

De rest wat in de vraag staat zoals de stijgtijd is enkel maar mis informatie om je in de war te brengen. Je zou daar bv de maximum samplerate kunnen bereken maar dat vroegen ze dus niet.

Kennelijk NEEMT DE VRAAGSTELLER aan dat de AD converter bipolair is (kan negatieve spanningen meten), in two's-compliment werkt, en geacht wordt af te ronden naar de dichtstbijzijnde binaire representatie.

Het gaat over hoe de AD converter intern zijn werk doet.
2 complements staat nergens en is ook niet belangrijk. Ik kan ook zeggen 00 0000 0000 = - 512mV en bit waarde 01 1111 111 is 0 en daarboven is positief. Maar dat is verder niet belangrijk komt ook niet voor in de vraag.
Er word enkel gevraagd waar de zaagtand zou moeten beginnen en dan krijg je 4 antwoorden die allemaal zo rond - 512mV liggen.

Alleen al omdat je enkel deze 4 antwoorden krijgt en dat 10 bit 1024 waarden heeft is het helemaal niet zo moeilijk om daar het goede antwoord uit te vinden.
Me het geven dat er minimaal 1mV gemeten kan worden en het fout dat er tijden het meten altijd afgerond moet worden omdat nu eenmaal inherent is aan een waarde digitaal maken is het logisch dat je net iets onder de 512mV moet beginnen met de zaagtand.

Als ik het goed resumeer, zou het betekenen dat ik het ook goed begrijp. ;-)

10 bits = 1024 mogelijkheden. Dat is mij bekend.
Splits ik die, zou ik 512 enerzijds en 512 anderzijds hebben. Oftewel, positief en negatief, weergegeven door de 2 complements manier van opschrijven.

Tot zover snap ik het.

Maar waarom is het -512,5 en niet -512?
Dan heb je toch die offset van 1/2 ULSB?

Waarom die afwijking en waarom is deze een halve ULSB?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
benleentje

Golden Member

Maar waarom is het -512,5 en niet -512?

Een AD omzetter is nu eenmaal geen absoluut nauwkeurig ding, er zit op veel punten waar het kleine afwijkingen kunnen ontstaan. In een AD converter zit intern ook altijd een DA converter. Het is die DA converter die de zaagspanning maakt. Maar een beter word is vergelijk spanning. Daar zit al de eerste fout. Als je dus op precies -512mV met de zaagtand zou beginnen dan kan je -512mV als meetwaarde missen. Je moet dus net iets onder die waarde beginnen met de zaagtand om zo niet het begin al te kunnen missen.

Waarom die afwijking en waarom is deze een halve ULSB?

Dat weet ik ook niet precies, maar volgens de reken regels is dat wel wat afronding betekend,ik denk dus gewoon daarom.
-512,6 zou dan net te laag zijn en -512,4 net te hoog.

Op 28 juli 2023 21:53:53 schreef benleentje:
Dat weet ik ook niet precies, maar volgens de reken regels is dat wel wat afronding betekend,ik denk dus gewoon daarom.
-512,6 zou dan net te laag zijn en -512,4 net te hoog.

Dus precies op een waarde uitkomen mag niet, dus gaat hij een halve ULSB er vanaf zitten. Niet meer en niet minder omdat hij anders gaat afronden, wat ook iets was wat ik in de lesstof nog mee had gekregen.
Denk ik zo goed?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
benleentje

Golden Member

Ja zo ongeveer. Het afronden is meer een betekenis die wij eraan geven in werkelijkheid word er een 1 op 1 vergelijk gemaakt met de spanning van de zaagtand en de meetwaarde. maar omdat er in het meetsysteem onzekerheden en fout mogelijk heden zitten moet je de zaagtand net iets onder de kleinste meetwaarde beginnen. En waar begin je dan? OP een waarde die nog logisch en wat je kan zien als afronding.

Op 28 juli 2023 22:21:40 schreef benleentje:
Ja zo ongeveer. Het afronden is meer een betekenis die wij eraan geven in werkelijkheid word er een 1 op 1 vergelijk gemaakt met de spanning van de zaagtand en de meetwaarde. maar omdat er in het meetsysteem onzekerheden en fout mogelijk heden zitten moet je de zaagtand net iets onder de kleinste meetwaarde beginnen. En waar begin je dan? OP een waarde die nog logisch en wat je kan zien als afronding.

Het zou het anwoord verklaren, benleentje.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Ik ben even zo brutaal om door te gaan met een volgende vraag.
Waarbij ik hoop dat men mij hierin ook verder kan helpen.

Of deze?

Ik hoop niet dat het vervelend overkomt dat ik dit zo vraag.
Het is alleen dat ik vast loop in de vragen wanneer ik de onderbouwing van het antwoord mis. ;-(

Overigens... Niet dat ik helemaal niets doe hoor.
Over die eerste:
6 bits is 32 mogelijkheden x 0,02V = 0,64V
Dus is de helft van 111111 (0,64) 011111 (0,32) in mijn optiek.
0,34 is 1 stap hoger dus 011111 + 1 = 100000
Maar dat is nog geen 110001, wat het antwoord zegt.

OK... Dan moet ik het offset binary vanaf halen. Dat is volgens mij dus ook de helft en daarmee 010000. En ook dat klopt niet.

Waar zit(ten) mijn denkfout(en)?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
benleentje

Golden Member

Op 28 juli 2023 22:28:39 schreef Fantomaz:
[...]

Het zou het anwoord verklaren, benleentje.

Ik weet de lesstof verder ook niet maar probeer het zo logisch mogelijk te beredeneren.
AD converter is ergens ook maar beetje een zo goed mogelijk benadering van een analoge spanning met een systeem wat niet helemaal perfect is.

Ik hoop niet dat het vervelend overkomt dat ik dit zo vraag.

Nee dat zeker niet.
Als je vast loopt mag je dat gewoon vragen.

Als ik het goed interpreteer is offset offset binary code
gewoon dat je de hoogste bit waarde een 1 maakt als het positief is en anders is die nul.
Dus voor 6 bit is 1x xxxx een positief getal.
Dat offset binary code gebruikt word beteken dus ook dat je bipolair aan het meten bent dus inclusief negatieve waarden

0,02V = de kleinste meetwaarde. 0,34 = 0,02 = 17.
Binair zou je dan op 1 0001 uitkomen via offset binary code zet je daar gewoon een 1 voor en krijg je 11 0001.

OK... Dan moet ik het offset binary vanaf halen.

Of gewoon goed lezen ;). Maar het gaat dus omoffset binary code. Dat kende ik 5 minuten gelden ook nog niet maar heb dat even opgezocht. Het gewoon de meeste simpele methode voor een computer om met negatieve getallen te werken.

Nu zelf even de laatste vraag proberen
50V/s seconde betekent ook letterlijk 50V/s en dat de zaagspanning in 1 seconde 50V hoger word. 50V/s = 50 000mV/s.
En hoeveel milivolt kan een 10 bit zaagspanning maximaal zijn als je vanaf 0 begint.
Hoe lang doet die 210 x de kleinste meetspanning erover om met 50V/s te stijgen?
Wat is dan de conversie tijd?

Op 28 juli 2023 21:05:19 schreef benleentje:
Het gaat over hoe de AD converter intern zijn werk doet.
2 complements staat nergens en is ook niet belangrijk. Ik kan ook zeggen 00 0000 0000 = - 512mV en bit waarde 01 1111 111 is 0 en daarboven is positief.

Maar als je een random bitcombinatie aan bepaalde spanningen gaat toekennen, dan is de vraag helemaal niet te beantwoorden.

Dus de vraagsteller neemt aan
* Dat er in two's compliment gewerkt wordt.
* Dat gegeven 1mv per LSB de natuurlijke representatie van de resulterende waarde direct het aantal mV gaat aangeven.

Als dat geen aanname is, dan NEEM IK AAN dat van -300 tot +723 mV gemeten kan worden en staat het juiste antwoord er gewoon niet bij.

Die "single slope" en "dual slope" ADCs die zijn traag maar hebben wel het voordeel dat je er redelijk van uit kan gaan dat er geen rare dingen gebeuren als er "high value" bitjes omklappen. Bij de RP2040 is er wat misgegaan waardoor de ADC een discontinuiteit heeft als de onderste 8 bitjes omklappen. Dus tussen 0011111111 en 0100000000 zit een grotere of juist negatieve stap. Dat is hier niet het geval.

Maar dit 1 LSB = 1.00 mV dat is leuk als je de waarde direct in het display als "gemeten mV" wil laten zien. In een multimeter of zo. Maar die dingen hebben dan "bijna 12 bits" aan resolutie: Van -1999 tot +1999.

Kortom, het is een "rare" opdracht met bepaalde elementen uit 1 toepassing (LSB = 1mV uit de multimeters, ook negatieve spanningen meten) en andere elementen uit andere toepassingen (10 bits ADC in een microcontroller).

Je moet echt goed gaan zitten gokken op een aantal punten over wat de vraagsteller voor aannames heeft gedaan en vergeten is er bij te zetten. Het kan natuurlijk dat onze TS hier de inleiding van het hoofdstuk aan vragen is vergeten te posten. Daar kan dan staan: We hebben het in de volgende vragen over een ADC die bipolair meet en de meetresultaten zo nauwkeurig mogelijk (afgerond) op het display gaat zetten.

Ik heb een keer een tentamen nagekeken. 1 student kreeg een 11 voor een antwoord: Prof had een detail over het hoofd gezien (ik ook) en een correcter, vollediger antwoord gegeven dan wat er op mijn "dit zijn de juiste antwoorden" lijstje stond.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
benleentje

Golden Member

Maar als je een random bitcombinatie aan bepaalde spanningen gaat toekennen, dan is de vraag helemaal niet te beantwoorden.

Ik heb het niet over random. Wat ik bedoel is ook gewoon een bestaande format
Die hele bitwaarde komt niet eens in de vraag voor. Dat heb je er zelf bij verzonnen. De vraag gaat enkel waar de zaagtand zou moeten beginnen niet hoe de zaagtand gemaakt moet worden.

Als dat geen aanname is, dan NEEM IK AAN dat van -300 tot +723 mV gemeten kan worden en staat het juiste antwoord er gewoon niet bij.

Je moet gewoon een keuze maken uit 4 antwoorden. Uit de antwoorden blijkt dat de ADC symetsich is. Wat maakt dat verder uit? Met wat er dan verder in de leerstof is uitgelegd moet je nu gewoon het goede antwoord eruit kunnen halen. Het gaat er dus om dat wat je geleerd uit de leerstof kan toepassen en je dan ook als er de vraag een andere situatie staat je nog steeds het goed antwoord eruit kan halen.

Op 29 juli 2023 19:29:43 schreef benleentje:
[...]

Ik heb het niet over random. Wat ik bedoel is ook gewoon een bestaande format
Die hele bitwaarde komt niet eens in de vraag voor. Dat heb je er zelf bij verzonnen. De vraag gaat enkel waar de zaagtand zou moeten beginnen niet hoe de zaagtand gemaakt moet worden.

Precies. Maar stel nu dat ik 00 0000 0000 = -300mV, 11 1111 1111 = 723 mV als codering gebruik, dan zou de zaagtand ergens bij -300mV moeten beginnen. Dit is maar een RAAR voorbeeld om aan te tonen dat eea afhangt van de bitcodering die in de opgave niet genoemd wordt.

Als je een sign-magnitude gebruikt, dan zijn er twee representaties voor "0": "+0" en "-0". Als je nu toch een uniforme range wil hebben is dan dus +0 de representatie voor "tussen 0 en 1 mV". en "-0" is dan "tussen -1 mV en 0". Deze codering heeft het voordeel t.o.v. de waarschijnlijk aangenomen codering en interpretatie dat ie symmetrisch is. Dus waarom zou je deze niet gebruiken? Dit is een "bestaande codering" zoals jij dat zo graag ziet.

Een gebruikelijkere interpretatie van de 10 bits dan wat de vraagsteller AANNEEMT is 0V = 00 0000 0000 en 11 1111 1111 is 1023mV. Waarom is dat "fout"? Waar staat in de opgave dat dit niet de bedoeling is?

Een aanname die dus niet in de opgave staat is: "en de waarde wordt direct naar een display gestuurd voor menselijke consumptie".

Als je een "regeling" aan het maken bent dan is het 1) onverstandig om op dat LSB bitje of de halve-LSB afronding te moeten vertrouwen, maar 2) onbelangrijk of de zaagtand nu bij -512 of -512.5mV begint. Die halve LSB is onbelangrijk voor de regeling.

[Bericht gewijzigd door rew op zondag 30 juli 2023 16:20:20 (13%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/