Oorzaak ruis na ADC?

Alleen berichten met de trefwoorden “digitale voeding” worden getoond. Alle berichten tonen

Hoi allemaal,

Ik ben wat aan het knoeien met mijn analoog digitaal conversie op een PIC16F877. Het signaal komt er heel mooi terug uit maar er zit behoorlijk wat ruis op. Ik heb de versterkingen gecontroleerd en daar is de ruis niet van afkomstig. Ik ben dus vrij zeker dat het door de analoog digitaal conversie gebeurd. De ruis lijkt apart te zijn, dus niet Op het signaal te zitten. Wat zou hiervan de oorzaak kunnen zijn?
Misschien mijn referentiespanning? Deze heb ik gewoon gelijk gezet met de voeding. Misschien zet ik de Vref- beter op 300mV ofzo zodat de ruis enzo niet wordt meegeADC'd?

Input is een gitaar die ik door een opamp versterker gestuurd heb (versterkingsfactor 1, inputimpedantie 1Mohm) en wordt dan out geput naar een R2R ladder ...

Alles staat trouwens nog op een breadboardje voorlopig maar ben niet zeker of de ruis wel daardoor veroorzaakt wordt ...

Ik heb trouwens ook enkel de hoogste 8 bits van de 10-bit conversie genomen maar denk opnieuw dat het hier niet aan kan liggen ...

Bedankt voor de hulp!

Mvg,

Pieter-Jan

8 bits ... ik heb 10K en 20k gebruikt, ben niet bewust van de tolerantie maar met m'n multimeter meten ze toch redelijk OK.

het signaal wordt op 10 bit geconvert' dus laat ik al 2 bits weg.

voor mijn ADC heb ik nu een gepaste versterkingsfactor gevonden die nét de opamp niet doet satureren en die bedraagt ongeveer 220/100. Ga misschien we is een preciezere meting moeten gaan doen op school ofzo want ik heb geen scoop of iets dergelijks ... :( (opamp is op zelfde spanning gevoed als Vref+ zodat ik geen digitale clip krijg, bweik!)

LP filter staat nu op 20nF maar ik denk dat 40 ofzo beter is maar da heb ik hier ni liggen ...

Bedankt voor de hulp hé

Anoniem

Wat voor voeding hangt er aan de uC? Ik heb ooit eens wat vergelijkbaars gehad. De boosdoener was een geschakelde voeding.

Ten eerste zit je met voedingsrejectie, ik heb geen idee wat de PowerSupply Rejection Ratio (PSRR) van de interne ADC is. Daarnaast is je PSRR op je Vref dus 0. Als jij 2 mV rimpel op je voeding hebt staat je Vref dus ook 2 mV te klapperen. Dit wil je dus écht niet voor audio. Daarnaast zit je nog met het theorema van ene heer Nyquist. Deze zegt dat je minimale Fsample 2 x hoger moet zijn dan je hoogst te sampelen frequentie. Een heel stevig filter is dus nooit weg asn de ingang van je ADC. Als je micro een aparte analoge VCC heeft moet je die ook niet zomaar aan je digitale voeding hangen, goed filteren is een must op je voeding.

mzzls

Correct me if I'm wrong!

Zoals justme zegt: Houdt er rekening mee dat de voeding ook voor ruis kan zorgen. Ik heb laatst voor iemand een versterkertje gemaakt om zijn elektrische gitaar op zijn versterker/computer te kunnen hangen. En dan was een 7805 spanningsregelaartje toch te ruiserig.

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.

Haha ik wordt hier toch hard bestookt precies ...

Er zit inderdaad een 7805 tussen en een hele oude universele DC converter die in commerciele gitaarpedalen ook veel ruis veroorzaakt. Maar ik heb niets anders. Als ik de analoge ingangspin aan de massa hang hoor ik de ruis ook, als ik de gitaar onmiddellijk van de voorversterkende OpAmp aftak niet, en als ik de DAC onmiddelijk beluister hoor ik ook ruis. Ik vermoed dus de voeding, en vroeg daarom ook in mijn eerste post of de Vref- niet iéts hoger moest zijn ... er zitten genoeg filters op. Sampling frequentie is ongeveer 50khz volgens deze code:

c code:

void ADC(void) {
         __delay_us(19.72);								// Tacq (19.72uS)
	GODONE = 1;									// AD-Conversie Starten
	while(GODONE);
}

waarna ik ADRESH rechstreeks op PORTD schrijf ...

je hebt maar 40khz nodig voor het menselijk gehoor volgens nyquist en een gitaar is maar een fractie hiervan... dit mag dus geen probleem zijn

De commentaar op mijn opamp die satureert vind ik een beetje vreemd? Ik heb gewoon zo hard mogelijk gespeeld, gemeten, en gekeken zodat de piek nét niet aan de saturatiespanning komt. Ik heb nergens gezegd dat mijn opamp continu net onder saturatie is ...

Met de opmerkingen van gisteren en het preciezer maken van mijn LP filter na de ADC (RC netwerk en een opamp) zit ik al bijna aan een gewenst resultaat. De ruis is er nog maar nog helemaal niet meer zo storend. Ik heb commerciele pedalen die meer ruis maken ...

Ik ga wel nog wat verder experimenteren met Vref-, deze bv op 50mV ofzo zetten ipv aan de negatieve klem misschien met wat afvlakcondensatoren ofzo ... als iemand nog concrete tips heeft, laat maar komen!

Ontkoppel je voeding voor je analoge deel goed. De opamp en de Analoge Vcc en Vref en het R2R netwerk. Doe dit door een weerstand en choke in serie op te nemen in je voedingslijn en een condensatortje parallel te plaatsen. Op die manier hou je hoogfrequente zooi buiten. Verder kun je goed opletten met je massaverbindingen. Zorg dat je returnstromen van je processor niet door hetzelfde stukje koper lopen waar ook je analoge returnstromen lopen. Je krijgt "groundbounce" als gevolg van de schakelstromen van je uC. Ik zou een extern referentie IC inzetten. De PSRR van die dingen is wel netjes namelijk.

Je universele adapter is op zich niet zo een ramp. Een 7805 haalt een PSRR van ongeveer -50dB tot -60dB. Het probleem is alleen dat het dingetje zelf hoogfrequente ruis veroorzaakt op je voeding welke je terug hoort. Verder zou ik de samplefrequentie opschroeven en een 3e of 4e orde LDF van +/- 20kHz (of nog lager als je je dat kunt veroorloven) plaatsen. Op die manier zit je minder tegen het Nyquist theorema aan te werken en heb je véél meer bewegingsruimte en véél minder kans op stoorsignalen.

Kun je omschrijven wat voor soort ruis het is? Hoe klinkt ie ongeveer? Misschien dat we dan ongeveer kunnen inschatten waar t probleem zit .

Mzzls

Correct me if I'm wrong!

Op 29 maart 2010 19:31:34 schreef JustME125:
Doe dit door een weerstand en choke in serie op te nemen in je voedingslijn en een condensatortje parallel te plaatsen.

Wow, op die manier heb ik nog nooit ontkoppelt! Ik schakel gewoon altijd een condensatortje van 100nF parallel. Maar een weerstand in serie?? Wat voor een dan? En wat is een "choke" juist? Nog nooit van gehoord!!

Op 29 maart 2010 19:31:34 schreef JustME125
Zorg dat je returnstromen van je processor niet door hetzelfde stukje koper lopen waar ook je analoge returnstromen lopen. Je krijgt "groundbounce" als gevolg van de schakelstromen van je uC. Ik zou een extern referentie IC inzetten. De PSRR van die dingen is wel netjes namelijk.

Opnieuw dezelfde verbaasdheid ... returnstromen? Geen idee hoe ik dit probleem te lijf zou kunnen gaan ...

Op 29 maart 2010 19:31:34 schreef JustME125
Verder zou ik de samplefrequentie opschroeven en een 3e of 4e orde LDF van +/- 20kHz (of nog lager als je je dat kunt veroorloven) plaatsen.

3e 4e orde LPF? Hoe verhoog ik de orde? ...

Sorry voor alle vragen ... misschien heb ik een projectje op mij gepakt dat net iets boven mijn huidig niveau gaat ..

Bedankt toch, het is interessant

Op 29 maart 2010 21:54:51 schreef Pieter-Jan:
Wow, op die manier heb ik nog nooit ontkoppelt! Ik schakel gewoon altijd een condensatortje van 100nF parallel. Maar een weerstand in serie??

In digitale schakelingen doe je normaal ook alleen de C. Die moet nl alleen maar piekstromen opvangen. In een analoge schakeling wil je meer, en wel de voeding schoon houden. Daarvoor kun je dan een laagdoorlaat filter gebruiken. Een R en C dus (of zelfs L en C).

Over die return stromen. Stel je het stukje print voor waar zowel digitale als analoge stromen terug naar de voeding lopen. Die "harde" digitale spijkers geven aardige spanningsverschillen door dat spoor. En dit tilt dan ahw de gnd bij de analoge schakeling op. Die variatie zie je weer terug op je signaal. Vandaar dat vaak een aparte gnd voor analoog en digitaal gebruikt wordt die op een strategische plaats wordt doorverbonden. Voert ver om de hele theorie hier even neer te zetten. Zoek en gij zult vinden.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Ik heb even snel een plaatje getekend in paint over de returnstromen:
http://www.plaatjesupload.nl/bekijken/2513270.html

Je ziet dat de "digitale" stroom via een massa spoor wegloopt. Dit massa spoor deelt het laatste stukje met het analoge circuit. Wanneer jij nu stroompiekjes hebt op je digitale stroom dan krijg je dus spanningspiekjes over dat stukje spoor (een spoor heeft nu ook eenmaal een weerstand). Hierdoor is dus je analoge ground niet meer netjes 0V maar misschien 0,2V. Je hele voedingsspanning is dus bijvoorbeeld 5V - 0.2V = 4.8V over je analoge stukje. Deze rimpel loopt dus door je hele analoge stukje en zal door een versterker (opamp) bijvoorbeeld mee versterkt worden. Zo heb je dus al ruis te pakken. Door nu je vuile stromen te dwingen een andere weg te kiezen vervuil je de analoge ground niet :D. Dit fenomeen noemen we groundbounce. Let wel op dat je je returnstromen niet je hele print rond gaat leiden om ze apart te houden, zo maak je weer stroomlussen waarin stoorspanningen kunnen inkoppelen (inductie).

Dit plaatje is een voorbeeldje van het ontkoppelen zoals ik beschreef:
http://www.plaatjesupload.nl/bekijken/2513273.html
Op deze manier filter je de voedingsspanning. Het is overigens beter om elk digitaal IC van dit soort filters te voorzien dan juist het analoge stuk te filteren. Als je de digitale IC's voorziet van dit soort filters hou je de troep lokaal (alleen bij je digitaal IC), hierdoor blijft je hele voedingsdomein netjes schoon. De weerstand zit er puur in om eventuele resonantie (LC kringen willen wel eens resoneren bij bepaalde frequenties) te dempen.

Ik hoop dat je er wat aan hebt.
Mzzls

Correct me if I'm wrong!

Op 29 maart 2010 22:42:24 schreef flipflop:
In digitale schakelingen doe je normaal ook alleen de C. Die moet nl alleen maar piekstromen opvangen.

Kleine kanttekening: in feite maak je met die ene C een LC-netwerkje. Traces, leads, etc.

If you want to succeed, double your failure rate.

voor de weerstand zou ik maximaal 10 ohm pakken. Anders zakt je voedingsspanning teveel in. die 2 condensatoren zorgen voor 2 kantelpunten (hoog en laagfrequent).

Als je toegang tot een scoop kunt krijgen meet dan je voeding eens op standje AC, zo meet je alleen de rimpel.

mzzls

[Bericht gewijzigd door JustME125 op 30 maart 2010 15:17:05 (25%)

Correct me if I'm wrong!

Je moet echt nooit, maar dan ook nooit de voedingsspanning als Vref nemen. Je hebt dan namelijk 0,0 ruis onderdrukking van de voedingsspanning. Elke ruis op je voedingsspanning wordt gewogen vermenigvuldigt met je ingangssignaal. Beter is het dus een schone referentie aan te bieden. Wat ook heel belangrijk is voor een nette conversie is de manier waarop de schakeling bedraad is, verwacht geen hele nette resultaten met een broodplank en een hoop draadjes ;-)

Mijn ervaring met diverse 10 bit MCU ADC's is dat ze hele nette prestaties leveren als je zorgt voor een schone stabiele referentiespanning, je bereik goed schaalt, voeding goed ontkoppelt en een goede bedradingsstrategie toepast. Vermijd vooral elke vorm van gemeenschappelijke impedanties in het signaalpad.

Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand
Henry S.

Moderator

Ik heb uren zit klooien met een wazige ADC uitlezing, heel onstabiel. Bleek de voedingsadapter die ondanks minimale belasting een reuze rimpel veroorzaakte. Werkte door tot op de gebruikte stroombron. Genoeg om aan de laagste bits te rommelen.

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.