Ik heb hier een aantal MX7226 DAC's liggen, deze zijn quad 8-bits DAC's.
Nu speel ik al bijna twee jaar met de gedachte om de '82-voeding te bouwen, maar dan digitaal geregeld op de manier zoals Pros dat ook heeft gedaan.
Een 8-bits resolutie op een 30V uitgangsspanning is ruim 100mV per stap, dit is mij iets teveel, 10mV of in de buurt is een stuk mooier.
Nu zat ik net even in de tuin (niet heel warm, maar ok) met een biertje en bedacht me dat ik dit misschien wel met de DAC kan bereiken door 2 DAC's te gebruiken en deze te voeden aan een sommeerversterker.
Stel ik wil de 16bits halen (haal je effectief niet, maar 13 is misschien wel haalbaar) en ik zou zoiets maken (ascii probeersel)
+----[4k7]---+
| |
| |--\ |
DAC1 ------[1.2M]---+---| + \ |
| | ----+---Vout
DAC2 --[4k7]--[18R]-+ +-| - /
| |--/
|
|
V
Met deze verdeling heb ik ongeveer de 8 LSB's op DAC1 en de 8 MSB's op DAC2 als ik het goed heb.
Nu mijn vraag, is dit haalbaar voor een betere resolutie of is het gewoon zonde van de tijd?
Alvast bedankt!
- Bernard
//EDIT: Het is natuurlijk in de marges werken zo en maar afwachten of je het resultaat kunt halen, want als ik bijvoorbeeld een Vref pak van 15V heb je voor de 8 LSB's een 60mV, de andere 14.94V heb je op de MSB's 
benleentje
Golden Member
Kan je niet net zoals bij potmeters een grof en een fijn afstemming maken. Als je dan toch als spanning bij elkaar gaat optellen.
Wat misschien ook een mogelijkheid is, is de uitgang van DAC1 die zelf met een Vref van 15V werkt aanbieden als Vref aan DAC2, dan kun je steeds nauwkeuriger regelen naar mate de spanning lager is. En het is ook zo dat regelen op mV ook meer van belang is bij lagere spanningen. Of het nu 29.9 of 30V is maakt niet zoveel uit.
Dat zou je dus het volle bereik hebben op 2 x "255" en als DAC1 nu op 7.5V zou staan (128) en deze als Vref aanbiedt aan DAC2 kun je al regelen op 7.5/256 ofwel 3mV (6mV als je dit schaalt naar 30V uitgangsspanning).
Als het enkel om de resolutie gaat kan het wel, maar het zou mij sterk verbazen als de DAC's vele malen nauwkeuriger zijn als noodzakelijk is voor acht bits bedrijf. Dus qua nauwkeurigheid win je weinig.
Voor het realiseren van kleinere stapjes bij het opregelen van lage spanningen werkt het cascade-idee echter wel.
Het brengt mij op het idee om een enkele DAC analoog scheef te trekken zodat je een niet-lineaire karakteristiek krijgt, met de meeste resolutie daar waar je het nodig hebt.
Hoewel hoge resoluties niet moeilijk of duur meer zijn is nauwkeurigheid dat wel. Mits goed uitgevoerd is dit in dat verband allicht een idee. Ik heb het echter nog nooit gezien.
Daar heb je inderdaad een goed punt, qua nauwkeurigheid zal ik inderdaad niets winnen, aangezien deze DAC toch minstens +/- 1 LSB is, dus de andere 8 die ik zou willen maken doen er niet meer toe.
Het cascading idee kan inderdaad werken als ik hier verder over nadenk, maar is ook relatief veel werk, ook in de software.
Het idee van je om het signaal analoog scheef te trekken is wel een goede! Heb net al even gekeken naar log amplifiers en antilog amplifiers en daar is best iets leuks mee te maken inderdaad! Misschien zijn de 8 bits dan nog wel te weinig, maar met een 12 bits DAC en zo'n oplossing heb je goede resolutie bij lage spanningen.
Bedankt voor de tip!
Ik dacht meer in de richting van een positieve terugkoppeling van Uout naar Uref of zoiets, goede log amps zijn duur / moeilijk. Maar ik ben benieuwd 
Moet heel eerlijk zeggen dat ik tot nu nog niet eens van een (anti)log mogelijkheid had gehoord met opamps.
Maar had dit even snel doorgelezen: pdf
Zal eens wat gaan testen op een breadboard... Ook met die terugkoppeling.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Ik zat ook meteen aan de nauwkeurigheid te denken. Anderzijds, vaak kan je daar wel wat aan doen.
Het grootste probleem met je 8bit DAC is dus dat de stap tussen de 126 en de 127 gewoon een enkel stapje is. Maar de stap tussen 127 en 128 is het uitschakelen van alle lagere bitjes en het aanzetten van de ene grootste bitje. Het is zomaar mogelijk dat die stap 2x groter of kleiner is dan de stap tussen 126 en 127.
Jou truuk zou je met een aanpassing wel kunnen doen. Dus niet mikken op 16 bits maar op 14. Dus een factor 64 tussen de "invloed" van beide DACs. Dan kan je met een tabel corrigeren voor de stapgrootte.
Dus als het goed is krijg je bij 35/0 (grote dac kleine dac) een bepaalde spanning. Deze zelfde spanning kan je ook maken door in theorie 34/64 te sturen. Maar in de praktijk zal je een tabel moeten maken van welke waarde je "kleine dac" moet hebben voordat de grote een stapje verder moet.
De nauwkeurigheid is inderdaad het probleem. Volgens de datasheet is het inderdaad +/- 1 LSB dus als ik de verdeling zo zou maken dat er bijvoorbeeld 60mV over 1 DAC staat en 14.94V over de andere, dan doet die 60mV er niet meer toe want dat is al de foutmarge op de 2de DAC.
Wat wel zou kunnen is inderdaad in de software kijken wat de waarde van de 2de DAC zou moeten zijn als de eerste een bepaalde spanning heeft aangenomen.
Stel ik neem voor DAC 1 een Vref van 3.75V en voor DAC 2 een Vref van 15V. Dan kan ik als bijvoorbeeld DAC 1 de waarde 4 heeft (00000100) deze 2 bits shiften (>>) naar DAC 2, immers heeft deze dan als het goed is dezelfde spanning. Maar dan nog zit je met de LSB 
Ik had ongeveer hetzelfde idee om een Elektuur82 voeding aan te passen, maar ben (bij gebrek aan voorraad) meteen gaan kijken naar wat er aan DAC's te vinden is...
Microchip heeft bijvoorbeeld hele goedkope 12bit DAC's als de MPC4821 (Vref intern) of MPC4921 (Vref extern) voor $1.66, zowel in DIP als SOIC. Enig nadeel is dat deze maximaal 5V uitgang geeft terwijl jouw MX7226 tot circa 15V gaat.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Die grap met twee dacs is toch gewoon niet zo moeilijk en redelijk te managen zoals ik net schreef?
En als je dan toch een sommerende opamp gebruikt kan je die ook meteen een "vermenigvuldiging" laten doen. Maar goed, het idee achter de 12bit DAC was natuurlijk: "geen opamp".
@rew: In mijn geval was "geen op-amp" geen eis, maar het lijkt mij gewoon eenvoudiger te ontwerpen en af te regelen dan de 2-DAC methode.
Een heel ander idee, voortbordurend op de suggestie van benleentje, al heb je daar dan volgens mij minimaal 3 op-amps voor nodig :
1 DAC voor het mV een 1 DAC voor het V bereik. Volgens mij ook makkelijker qua software.
Nu je de MCP typenummers schreef ging er een lampje branden.. en jahoor ik heb nog 2x een MCP4822 12bits SPI DAC liggen!
Daar ga ik vanavond eens mee testen.
Dat kan zeker, filtertje en een buffer erbij moet te doen zijn, maar is een duty cycle linear met de uitgangsspanning? Daarbij zul je redelijk goed moeten filteren wil je niets van de PWM frequentie terugzien in je uitgangsspanning.
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
De (gefilterde) DC-spanning zal wel lineair zijn met de duty-cycle.
Voorwaarden zijn daarbij een stabiele voedingsspanning en een goed filter. Dat laatste is niet eenvoudig, omdat een 16-bit PWM-frequentie doorgaans niet erg hoog is.
Bij een PWM-klok van 20MHz is de frequentie maar een tikkeltje hoger dan 305Hz. Filteren met grote weerstanden en grote elco's is niet ideaal - elco's durven stroom lekken, hetgeen meteen voor een afwijking zorgt.
Vanavond eerst even begonnen met het inlezen van de rotary encoders, nog niet echt getest met de DAC's.
Zal ook PWM testen, kan met de rigol nu redelijk goed meten (met dank aan je 100x amp).
[OT]
Ik zag trouwens vandaag op youtube een filmpje van EEVBlog m.b.t. de Rigol scoop. Hier had hij de scoop open en de ingangen zitten keurig in blik, maar de schakelende voeding hangt haaks op de hoofdprint en misschien pikt hij dat signaal wel op. Denk dat ik die van mij eens open haal en er een stuk alu tussen plaats, die ruimte is er.
[/OT]
Op 31 mei 2012 18:52:19 schreef pros:
De (gefilterde) DC-spanning zal wel lineair zijn met de duty-cycle.
Voorwaarden zijn daarbij een stabiele voedingsspanning en een goed filter. Dat laatste is niet eenvoudig, omdat een 16-bit PWM-frequentie doorgaans niet erg hoog is.
Bij een PWM-klok van 20MHz is de frequentie maar een tikkeltje hoger dan 305Hz. Filteren met grote weerstanden en grote elco's is niet ideaal - elco's durven stroom lekken, hetgeen meteen voor een afwijking zorgt.
De lekstroom van de elco's had ik niet bij stilgestaan, maar dat zou je op kunnen lossen door de uitgangsspanning met een adc in te lezen en met een PI regeling te compenseren.
De meeste microcontrollers hebben een 10 bit adc ingebouwd, maar als de adc genoeg ruis heeft dan kun je een 16 bit meting krijgen door 64 metingen bij elkaar op te tellen.
Misschien is het een idee om de schakeling met de 2 DACs te compenseren met een PI regeling?
Je brengt me op een nog ander idee.
8Bits DAC voor de grote stappen, 16bits PWM om het bij te regelen naar de gewenste spanning. Dan heb je ook minder last van eventuele lekstroom op de C's. Als je al een 10-bits ADC gebruikt voor de uitlezing komt het er in de basis opneer dat je de laatste 2 bits probeert te regelen met je 16-bits PWM.
//EDIT:
Ben ook al rustig aan aan het ontwerpen, stuurprint wordt los, dus deze is makkelijk te vervangen door een eventuele test op een breadboard of in de toekomst een andere regeling.
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Ik ben wat aan het testen geweest met een PWM-signaal. Eerst met een lowpass-filter, dat rechtstreeks door een AVR gestuurd werd - dat was allesbehalve bevredigend.
Toen kwam ik op het idee, eens te kijken of een FET-driver het beter zou doen.
Laat ik beginnen met het schema:
De voedingsspanning vergt wat uitleg. Ik heb eerst het compare-register ingesteld op 59999 (dat zijn dus 60000 stappen), en vervolgens de voedingsspanning bijgeregeld tot er 12V op de uitgang verscheen - nou ja, beter dan 11.9999V kreeg ik het niet.
Dat komt overeen met 12000 / 60000 = 0.2mV/stap.
Vervolgens wat metingen uitgevoerd:
Steps Theoretisch Real
60000 12.0000 11.9999
59995 11.9990 11.9989
40000 8.0000 8.0001
30000 6.0000 6.0001
20000 4.0000 4.0001
10000 2.0000 2.0000
5000 1.0000 1.0001
3000 0.6000 0.6002
2000 0.4000 0.4001
1000 0.2000 0.2002
Dat is dus een maximale afwijking van 0.1mV naar onder en 0.2mV naar boven - op een spanningsbereik van 12000mV. Niet slecht, zou ik zeggen.
De rimpel op de uitgang blijft beperkt tot 30µV. Ook bruikbaar, dus.
Toch is niet alles ideaal - wat had je anders verwacht? 
Na het instellen van een nieuwe waarde duurt het nogal lang, alvorens de spanning op de uitgang helemaal stabiel is. En met "lang" bedoel ik: meer dan een minuut.
Als ik bv. van 5V naar 10V spring, duurt het enkele seconden alvorens de spanning tot 9.9V gestegen is, maar daar komt nog een minuut bij om ook de laatste millivolt goed te krijgen.
RobK
Vertel welk probleem je wilt oplossen, niet met welke oplossing je een probleem hebt.
Misschien kan je hier nog wat ideeën uit halen:
http://edn.com/design/other/4326640/DC-accurate-32-bit-DAC-achieves-32…
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op 1 juni 2012 16:28:33 schreef bobo1on1:
De meeste microcontrollers hebben een 10 bit adc ingebouwd, maar als de adc genoeg ruis heeft dan kun je een 16 bit meting krijgen door 64 metingen bij elkaar op te tellen.
Nee, om een 16bits meting te krijgen moet je 4096 metingen bij mekaar op tellen en dan de onderste 6 bits weggooien.