Erik
In order to succeed you must fail, so that you know what not to do the next time.
Hallo,
Voor een projectje ben ik op zoek naar een methode om vrij nauwkeurig een analoog signaal met een pic te creeren. De resolutie dient hoger als 0,05V te zijn hoe hoger hoe beter maar 0,01-0,02V is toch wel het streven. Aangezien ik totaal geen kaas heb gegeten van analoge techniek en al helemaal niet om waardes van componenten te berekenen vraag ik nu jullie hulp om hier iets voor te verzinnen want ik weet niet echt een correcte oplossing hiervoor want er zijn meerdere mogelijkheden zoals ik heb begrepen.
Het bereik moet sowieso van 0 tot 1 volt liggen omdat het signaal wat uit de pic komt een vervanging moet zijn van een sensor die een uitgangsspanning heeft van +/- 0 tot 1V.
Een spanningsdeler zou volgens mij wel kunnen maar door het hoge aantal poorten die hiervoor gebruikt moeten worden en ik hier niet echt plek voor over heb op de pic zal dit hem waarschijnlijk niet worden.
Dan zou de volgende methode dmv pwm kunnen zijn en de uitgang moet je dan van wat ik gelezen heb door een lowpass filter halen wat je dmv een aantal weerstandjes/c'tjes kunt doen of wat ik ook veel zie dmv een op-ampje maar ik weet niet of je hiermee wel de nauwkeurigheid zou kunnen halen.
Als laatste oplossing die ik kan bedenken zou ik gebruik kunnen maken van een klein 8bits I2C D/A convertertje. Dit lijkt mij opzich wel een mooie oplossing maar is dit volgens jullie ook de beste methode?
Aangezien ik geen van allen ooit eerder heb gebruikt en dit signaal toch enigsinds iets van nauwkeurigheid moet bevatten vraag ik dan aan jullie hoe ik dit het beste kan aanpakken.
Alvast bedankt voor de moeite.
Groeten,
Erik
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Met een PIC met 10 bits PWM kun je bij 5 volt voeding een precisie halen van 5 / 2048 = 0.00244 volt...
De stabiliteit hangt hoofdzakelijk af van de stabiliteit van de voedingsspanning van de pic.
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
En dat is dan wel heel rooskleurig voorgesteld. PWM is een. Dan komt je filtering om er een stabiele spanning mee te maken...
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Op 28 maart 2007 07:44:14 schreef elmowww:
PWM, filtering, voltage follower opamp/verzwakkende opamp (1/5x)
kun je daar eens een schemaatje van maken voor mij? ik snap die filtering niet helemaal........ ik kan met het filter wel voorstellen, maar hoe haal ik uit PWM nu een stabiele DC? ik snap wel dat het kan, maar of en hoe je het ECHT stabiel krijgt......
[Bericht gewijzigd door High met Henk op ]
Erik
In order to succeed you must fail, so that you know what not to do the next time.
D/A converter lijkt me idd de makkelijkste oplossing maar toch ben ik wel geinteresseerd in hoe het met PWM gaat maar zoals ik al zei heb ik geen kaas gegeten van analoge techniek dus als elmowww of iemand anders daar een voorbeeldje van kan geven hoe je dat enigsinds stabiel kunt maken zou ik dat op prijs stellen.
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
47K weerstandje in serie en 1µF capje in parallel op de PWM-uitgang.
Ik zal vanavond (kan niet FTP'en van bij mijn klant) een grafiekje van een Proteus VSM simulatie posten van de analoge uitgangsspanning na de cap bij een PWM-waarde tussen 0 en 100% (in 8bits-mode).
CD 
Belangrijke vragen voor PWM zijn:
1) Hoeveel rimpel mag er op het signaal zitten.
2) Hoe snel moet je de uitgang kunnen sturen.
Afhankelijk daarvan kan je uitrekenen welke orde je filter moet zijn en welke kantelfrequentie. (En of je het met een RC netwerkje kan doen of dat je er meerdere, dan wel een aktief filter nodig hebt)
Erik
In order to succeed you must fail, so that you know what not to do the next time.
Nou, hoeveel rimpel erop mag zitten moet ik mezelf ook nog afvragen maar de uitgang moet straks een vervanger worden van het lambda signaal van een auto en volgens mij word dat signaal toch meerdere malen per seconde uitgelezen worden. Dus het hoeft waarschijnlijk niet supersnel te veranderen maar ik zal eens kijken of ik kan achterhalen hoe vaak dit per seconde gebeurd.
LaStei
carpe cerevisi
rimpel is vrij eenvoudig uit te rekenen, bij 1 Volt en 10 bits mag de rimpel niet meer zijn dan 1 mV, anders heeft dat 10e bit geen zin. Wat je dan ook gaat krijgen is 6 dB = factor 2 = 1 oktaaf. Dus als je gaat meten met 5 Hz, moet bij een simpele 6dB/oktaaf filter (RC netwerkje) 60 dB gezakt en dus het kantelpunt op zijn minst 10 oktaven hoger zijn, dus de PWM frequency op zijn minst 10 kHz. (nog een extra facto 2 vanwege het Shannon kriterium) PWM met 10 kHz en 10 bits is weer 1024 hoger, dus je "LSB" tick is 10 MHz.
Erik
In order to succeed you must fail, so that you know what not to do the next time.
Het is nog een beetje abracadabra voor mij Lastei maar ik begrijp het nog niet 100%. Ik moet dus een pwm frequentie hebben van 10khz bij 1024 bit mode? En wat ik ook nog niet doorheb is dat filter. Ik heb wel eens met audio filters gewerkt en daar had je ook bepaalde order filters maar deze filters werken nog net even iets anders heb ik het idee. 6db is toch een eerste orde filter? Of zou je eventueel een voorbeeldje kunnen geven van dat filter met mijn "eisen".
Maar bij nader inzien denk ik toch dat die 1024 bit behoorlijk overkill is voor mijn doel. Als ik 2,5V referentiespanning heb en gewoon normaal 255 bit gebruik kom je op +/- 0.01V uit dit is meer dan prima dus laten we die 1024bit maar varen want het signaal hoeft toch niet zo'n hoge resolutie te hebben als gedacht was.
als het geen wide band lambda sonde is is het signaal niveau niet zo kritiek
0,2 volt = arm
~0,45 volt = Lamda1
0,7 volt = rijk
als het om een fop signaal gaat is een 555 met een blok golf al voldoende.
wat wil je er mee berijken?
[edit]
Je andere topic's even door gelopen, het word dus een wide band?:)
[Bericht gewijzigd door Shiptronic op ]
Erik
In order to succeed you must fail, so that you know what not to do the next time.
klopt word idd wideband, maar die normale sensor geeft zo goed als maar 3 standen maar hoe reageert de computer erop? heeft die ook maar 3 standen of werkt die wel enigsinds variabel? Ik ben nu nog in een ontdekkende fase zegmaar. Ik ga eerst zien of het enigsinds doenbaar is en dan verder denken.
[Bericht gewijzigd door Erik op ]
Op 29 maart 2007 00:23:30 schreef Erik:
klopt word idd wideband, maar die normale sensor geeft zo goed als maar 3 standen maar hoe reageert de computer erop? heeft die ook maar 3 standen of werkt die wel enigsinds variabel? Ik ben nu nog in een ontdekkende fase zegmaar. Ik ga eerst zien of het enigsinds doenbaar is en dan verder denken.
nope kent maar drie (eigenlijk 2)standen
te arm signaal ==> steeds meer brandstof er in tot sensor boven de 0,45 volt komt , dan brandstof afknijpen tot onder de 0,45 volt komt .
bij 0,45 volt gewoon niet aanpassen, alleen de karakterestiek is zo stijl dat je nooit kunt afregelen op lambda 1.
dat wil je ook niet , om een katalisator goed te laten werken heb/wil je het ene moment een overschot aan zuurstof hebben volgend moment een overschot aan brandstof.
Das ook de enige reden dat het ding er in zit, de katalisator "regelen".
als het puur om motorloop gaat en power daar zijn andere middelen voor.
lambda korectie is de laatstelaag , na alle andere parameters zoals belasting tps, rpm, cts, fps, ns ed.
zo'n wideband in een "gewone" auto zetten haald dan ook niks uit, behalve als je er echt aan wil gaan meten, maar dan zul je ook in het bezit moeten zijn van een goede CO meter ( HC O2 CO CO2 Labda)
Erik
In order to succeed you must fail, so that you know what not to do the next time.
Het is niet voor mij zelf maar meer voor een vriend die het leuk vind om met zijn auto te knoeien. De sensor zal inderdaad naderhand enigsinds gecalibreerd worden aan de hand van een al gecalibreerde sensor. Maar dan kun je dus vrij simpel een pwm signaal met zoals turbokeu al zei een elco'tje van 1uf met 47k weerstandje nemen als het toch niet zo nauwkeurig komt toch?
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
PIC 16F876 PWM output simulatie in Proteus VSM over 47K/1µF RC-filter in 8-bit mode (256 stappen):
CD 
LaStei
carpe cerevisi
Sorry dat het abacadabra is, was niet de bedoeling.. Nog een keer proberen:
rimpel is vrij eenvoudig uit te rekenen, bij 1 Volt en 10 bits mag de rimpel niet meer zijn dan 1 mV, anders heeft dat 10e bit geen zin.
Met 10 bits heb je 1024 stapjes, (210), als je maximale uitsturing 1 Volt is, dan moet je rimpel veroorzaakt door het filter onder die 1/1024 V liggen, anders is je rimpel groter dan je laatste bit, dus je "verandering" in je uitgangs signaal is groter dan je laatste bit, dus dit laatste bit doet er niet zoveel toe.
Wat je dan ook gaat krijgen is 6 dB = factor 2 = 1 oktaaf.
Hoe zit het getallenstelsel in elkaar. normaal rekenen we met het tientallig stelsel: 583 is eigenlijk 5 x 102 + 8 x 101 + 3 x 100. Hier zie je dat als een cijfer een plaats naar links opschuift, het met een waarde 10 vermenigvuldigd wordt. De 8 op de tweede plaats is eigenlijk 80, zou hij eentje meer naar rechts staan dan was het 800 geweest, eentje meer naar links, 8. Binair werkt hetzelfde, alleen dan met een factor twee. 1001 is eigenlijk: 1x23+0x22+0x21+1x20=9 in het tientallig stelsel. Dus elke plaats naar rechts is moet je met twee delen, naar links met twee vermenigvuldigen. Vandaar die factor twee.
6dB. De uitdrukking dB = 20log(versterking). Voor een factor 2 is dit dus 20log(2) = 6.0205999 ofwel 6 dB, dus voor elk bit dat we moeten decoderen moet het filter in staat zijn het signaal stabiel te houden voor die periode. Bij 10 bits is dat dus 10 x 6 = 60 dB.
Waarom? Hoe werkt PWM, in feite tellers, bij een 4 bit teller b.v. en een uitsturing van 1 bit, is een periode hoog en de overige 15 laag. Maximale uitsturing 15 V. Als je dit aan een meetsonde zo zou geven, dan is afhankelijk wanneer je meet, of je meet 15 V of je meet 0 Volt. is dus geen mooie gelijkspanning, je zou constant tussen de 0.5 en 1.5 V willen meten. Zetten we er een klein filter tussen, een RC netwerkje. Als de uitgang 15V is wordt de condensator opgeladen, als de uitgang 0V is de condensator weer ontladen. Is het filter klein, dan zal aan het einde van de "15V" periode de spanning laten we zeggen 7.5V zijn, het begin van de "1" periode 0.5V zijn. Dit is al beter, maar nu zie je dat je nog steeds niet binnen je band van 0.5 en 1.5 V blijft zitten. Dus een groter filter.
Dus als je gaat meten met 5 Hz, moet bij een simpele 6dB/oktaaf filter (RC netwerkje) 60 dB gezakt en dus het kantelpunt op zijn minst 10 oktaven hoger zijn, dus de PWM frequency op zijn minst 10 kHz. (nog een extra facto 2 vanwege het Shannon kriterium)
We hadden al gezien dat 6 dB een factor twee is. Ook een bit opschuiven in een binair getal is een factor twee. Dus met 10 bits heb je dus 10 x 6 = 60 dB. Filters hebben ook een leuke eigenschap dat die (meestal) met veelvouden van 2 signalen versterken/verzwakken. Een eenvoudig RC filter doet dit ook precies met 6 dB/oktaaf. (en laat nu net een oktaaf weer een vermenigvuldiging zijn met twee! Een signaal van 1.5 kHz een oktaaf hoger is 3 kHz) Dus als je met een RC combinatie 60 dB wilt verzwakken, moet je het kantelpunt kiezen 10 oktaven lager. Dus als je een signaal met 5 Hz wilt inlezen en stabiel wilt zijn met 10 bit, mag er geen signaal inzitten dat boven die -60 dB van het filter komt te zitten, dus een factor 1024 (weer die 10 bits) hoger. Dan kom je op 5 Hz x 10 oktaven = 5 kHz. Er steekt nog veel meer wiskunde achter het shannon kriterium vandaar een extra factor 2.
PWM met 10 kHz en 10 bits is weer 1024 hoger, dus je "LSB" tick is 10 MHz.
We hadden dus al gezien dat de laagste frequentie in het signaal 10 kHz was. Dit is het de volle periode van 1 PWM. Nu moet je die periode gaan onderverdelen in het aantal bitjes dat je uit wilt sturen. Dus in die 10 kHz wil je 1024 stapjes kunnen maken. Dus moet je stapjes teller lopen met weer een factor 1024 hoger, 10 MHz. dus.
QED
Op 29 maart 2007 09:23:05 schreef LaStei:
Dus in die 10 kHz wil je 1024 stapjes kunnen maken. Dus moet je stapjes teller lopen met weer een factor 1024 hoger, 10 MHz. dus.
En dat red je dus net niet met een PIC (Timer loopt op de Q-clock [kristal/4]).
Hou er ook even rekening mee dat het signaal op de kantelfrequentie al 3dB down is, mag dat niet of wel ??
LaStei
carpe cerevisi
Maakt niet uit, die 3 dB op het kantelpunt, je werkt (in praktijk) alleen met de asymptoten, en die gaan maar met 6 dB (voor een RC netwerkje) omlaag. Een steiler filter levert is natuurlijk een betere oplossing. Wat ik met dit betoog wil zeggen is dat je frequency al vrij snel de pan uit rijst als je nauwkuerig een signaal wilt genereren met PWM. Voor 5 Hz en 10 bits met een RC netwerkje heb je dus een teller frequency van 10 MHz nodig.