klein signaal van DC afsnoepen

rbeckers

Overleden

Twee probleempjes:
- De DC is geen DC maar AC met veel grotere amplitude dan het meetsignaal en lagere frequentie.
- De ADC moet wel dat laagfrequente 2V signaal aankunnen terwijl het meetsignaal maar 10mV is. Die 10mV moet toch redelijk nauwkeurig gemeten worden aangezien daarin de informatie van de sensor zit.
Dus veel bits.

Frederick E. Terman

Honourable Member

Op 12 maart 2013 17:54:36 schreef Arco:
TS hoeft de spanning niet te weten, alleen een blokgolf voldoet.
Omdat de referentie vertraagd reageert, zullen input en output het signaal volgen en een blok afgeven volgens mij.
(Je moet wel wat experimenteren met de juiste RC waardes)

Nee, met één CR-lid lukt dat niet. Er is geen RC-tijd te vinden waarbij de comparator wèl op de 1Hz, maar niet op de 0,05Hz reageert.
Dat komt doordat de 1Hz 20 maal 0,05Hz is, en 3,5V 350 maal 10mV is.
350 is veel meer dan 20. Die verhouding kun je met één sectie niet omdraaien.

Keramisch, kalibratie, parasitair: woordenlijst.org
benleentje

Golden Member

Op 12 maart 2013 11:50:03 schreef Sonytech:
Het verschil tussen 0,1 Hz en DC is natuurlijk wel heel erg klein om daar onderscheid tussen te kunnen maken.

Ik vrees dat je eea. simpeler voor elkaar krijgt als je aan de bron je AC-signaal eerst bewerkt / codeert en aan het eind weer terugbrengt naar het oorspronkelijke signaal.

Is nog niet eens zo een gekke opmerking. Kan het DC niveau niet op een of andere manier meer contant gemaakt worden. Wat is eigenlijk de reden dat dit signaal er is op de uitgang van de hall sensor? En is dit niet te verbeteren?

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
rbeckers

Overleden

Gezien de reacties zou ik bijna gaan denken dat de meeste posters bang zijn van hogere orde filters. ;)
Uitgezonderd o.a. Shiptronic en FET.

Misschien dat een andere fysieke plaats van de sensor, of het toepassen van meerdere sensoren, een beter en gemakkelijker signaal geeft.

fred101

Golden Member

Iek, filters, dat zijn toch van die enge dingen met gedraaide draadjes en conden-nog-wats. Of nog enger gevormd door een hele zwik opamps.
Ik zou ook filteren maar ik vind filters bouwen nu eenmaal leuk.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs
rbeckers

Overleden

Fred, die gedraaide draadjes heten spoelen. >:)
En die gedraaide draadjes kun jij heel goed meten met o.a. al die bruggen.

Hmm, filters was dat niet iets met koffie ofzo.En dus nooit werken omdat geen enkele koffie te zuipen is.

Ik vraag me ook af waar die net niet DC component vandaan komt? Valt daar echt niets aan te doen. Het DSP idee vind ik ook niet verkeerd. Alleen de AD converter met de enorme resolutie wordt een probleem.

Als er niets aan die DC-component te doen wordt het toch een van die lastige zoveelste orde filters vrees ik.

Shiptronic

Overleden

sorry de link die ik gaf was toch echt een veel poter en niets met glas >:)

Wie de vraag stelt, zal met het antwoord moeten leren leven.

FET heeft natuurlijk wel een punt: bij analoge filters heeft het geen zin om alleen naar de frequentie van een signaal te kijken, als je de amplitude negeert. De flankstijlheid van een signaal op 0.05Hz bij 3.5V is veel groter dan 0.1Hz bij 10mV, en dat gaat je opbreken.

Wat is nu eigenlijk het fundamentele probleem? Het signaal komt blijkbaar uit een of andere analoge hall sensor, maar waarom is dat signaal zo ontzettend klein? Het lijkt me handiger als je die sensor vervangt of anders plaatst, wat hier ga je nooit een betrouwbaar signaal uit krijgen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

oef, 2de dagen weg geweest en veel nieuwe posts. Mijn dank is groot.

Ga ze allemaal aandachtig doorlezen.

Frederick E. Terman

Honourable Member

Misschien is het probleem inderdaad ook anders op te lossen.

Maar zo onmogelijk is een vijfde-orde laagdoorlaatfilter nu ook weer niet. Je hebt alleen vijf lekarme condensatoren nodig, en twee opamps (drie, met de uitgangsbuffer erbij), dat is één IC'tje dus. :)

Keramisch, kalibratie, parasitair: woordenlijst.org

Even uit mijn geheugen:

Destijds werden RTTY signalen met 850 Hz shift gedetecteerd door er een BFO tegenaan te zetten die er 2125 en 2975Hz van maakte .

Dan had je fading, ook selectieve fading, en daarom werd het signaal eerst gefilterd in de audioband tot de bandbreedte die het besloeg en vervolgens werd er met een gepatenteerd diodenetwerk dat zich instelde op de gemiddelde detectieuitgangsspanning de marks en spaces gedetecteerd.

Dat zat in een buizenontwerp dat naar ik meen ST6 werd genoemd en in het ARRL RTTY handbook stond. Later is die converter met 709 of 741 in nederland populair geworden.

Dat diodenetwerkje, dat tamelijk moeilijk te begrijpen was, doet precies wat je hier wilt. Zich instellen op langzame DC variaties en onderscheid maken tussen korte termijn positieve en negatieve afwijkingen daarvan.

Tegenwoordig zou je het met op amps die als "ideale gelijkrichter" zijn geschakeld, kunnen perfectioneren tot in fracties van millivolts.

Frederick E. Terman

Honourable Member

Dat ging om 'gelijkspanningen' die op zijn hoogst vergelijkbaar waren met de signaalspanning.
Hier is de 'gelijkspanning' 350 maal zo hoog. Dat red je niet met een éénsectiefilter, wat dat in de grond ook was.

Keramisch, kalibratie, parasitair: woordenlijst.org

Op 12 maart 2013 19:55:01 schreef rbeckers:
Twee probleempjes:
- De DC is geen DC maar AC met veel grotere amplitude dan het meetsignaal en lagere frequentie.
- De ADC moet wel dat laagfrequente 2V signaal aankunnen terwijl het meetsignaal maar 10mV is. Die 10mV moet toch redelijk nauwkeurig gemeten worden aangezien daarin de informatie van de sensor zit.
Dus veel bits.

Zelfs met een 8bit ADC gaat dit nog perfect. Dit is ook de kracht van fourier analyse, je kunt signalen die bedolven zijn onder de ruis toch herkennen in het frequentie domein. Men zal zien dat er een grote correlatie is voor die frequenties.

Ik zo het DSP gebeuren niet zo snel afschrijven. Met een paar goede keuzes van microcontroller denk ik dat deze weg de analoge oplossingen outperformed. Zeker als er alleen een detectie van de frequentie nodig is.

Op 14 maart 2013 23:42:46 schreef robint91:
[...]

Zelfs met een 8bit ADC gaat dit nog perfect. Dit is ook de kracht van fourier analyse, je kunt signalen die bedolven zijn onder de ruis toch herkennen in het frequentie domein. Men zal zien dat er een grote correlatie is voor die frequenties.

Ik zo het DSP gebeuren niet zo snel afschrijven. Met een paar goede keuzes van microcontroller denk ik dat deze weg de analoge oplossingen outperformed. Zeker als er alleen een detectie van de frequentie nodig is.

Denk ik ook. Als analoge signalen zelfs minder dan een niveau amplitude hebben van een ADC kunnen ze herkend worden als je er ruis bij mengt. De ruis zorgt ervoor dat een wat hoger signaal vaker het volgende niveau doorklieft, zodat je met een integratie (laagdoorlatend filter ) dat toch herkent. Je kunt er zelfs een driehoek van bekende amplitude bijmengen (additief), dan win je nog integratietijd als dat nodig is.

FFT is natuurlijk wel achteraf. Je moet eerst een aantal monsters verzamelen, en dan kun je daarna pas beslissen of een component aanwezig was. Datzelfde verhaal gaat natuurlijk op voor convolutie in het tijddomein.

Wat betreft hogere ordefilters: Als je gaat kijken naar de tolerantie van componenten dan vliegt de gevoeligheid van componenten voor geringe tolerantieverschillen doorgaans omhoog als je de orde verhoogt. Met name het realiseren van steile flanken lijdt daaronder.
De bunzigheid van forumdeelnemers voor hogereorde filters is dus wel verklaarbaar. Dat wat betreft passieve filters, ga je over op actieve, dan is doorgaans de nietlineariteit van secties die polen dicht bij de imaginaire as realiseren een bottleneck.

Opgepast: MaartenBakker citaat: "ruik ik een troll die per ongeluk met de arreslee meegelift is" :

Heb je aan de zendende kant de beschikking over de schone 10mV sinus voordat deze op de "DC"-voedingsspanning gezet wordt?
Zo ja, gebruik dit signaal om bijv 1000Hz te moduleren en zet dit 1000Hz signaal op de "DC"-voedingsspanning. Aan de ontvangende kant haal je de 1000Hz signaal van de voeding af en demoduleer je 'm. En dan heb je weer het originele signaal.

Er zijn switched capacitor low pass filters in de handel (Maxim) voor een vijftal euro. 8 pole Cauer of Chebesjev (ander typenummer), MAX7400 8 pens DIL en hogere nummers, de grensfrequentie is meen ik een honderdste van de clockfrequentie vanaf 1 Hz. Die kun je dus zelf kiezen. Ze werken in het analoge domein. Sperdemping kun je desgewenst nog verdubbelen als je er twee achterelkaar zet in een 16 pens DIL voetje.

Stel nu dat je met zo'n filter de DC component doorlaat en de rest niet, en vervolgens de doorgelaten DC component van het origineel aftrekt.

Is maar een wilde gedachte.

[Bericht gewijzigd door Druiloor op vrijdag 15 maart 2013 00:49:25 (11%)

Opgepast: MaartenBakker citaat: "ruik ik een troll die per ongeluk met de arreslee meegelift is" :

sorry kan gewist

[Bericht gewijzigd door Druiloor op vrijdag 15 maart 2013 00:29:41 (52%)

Opgepast: MaartenBakker citaat: "ruik ik een troll die per ongeluk met de arreslee meegelift is" :

Op 14 maart 2013 23:42:46 schreef robint91:
[...]
Zelfs met een 8bit ADC gaat dit nog perfect.

Volgens mij heb je minimum een 10-bit ADC nodig als je dit principe zou toepassen.

8 bits heeft een signaal/quantisatieruis verhouding van 6,02 x 8 + 1,76 = 49,92 dB tot gevolg. Het vereiste dynamische bereik is 20log(350) = 50,88 dB, zonder het NF van de analoge electronika in de ADC.

Frederick E. Terman

Honourable Member

Op 14 maart 2013 17:31:19 schreef Dr Blan:
..Dat diodenetwerkje, dat tamelijk moeilijk te begrijpen was, doet precies wat je hier wilt. Zich instellen op langzame DC variaties en onderscheid maken tussen korte termijn positieve en negatieve afwijkingen daarvan.

Op 14 maart 2013 23:29:13 schreef Frederick E. Terman:
Dat ging om 'gelijkspanningen' die op zijn hoogst vergelijkbaar waren met de signaalspanning.

Ik heb het even opgezocht. Het is inderdaad zoals ik zei: dat netwerk kan offsets tot aan de grootte van het signaal zelf compenseren (hier dus 10mV - met ideale diodes dan :)); daarboven loopt alles gewoon weer mee (de overige 3490mV).

Wat de Butterworth betreft: in plaats van 5, blijkt 4 condensatoren ook wel genoeg. :)
http://www.uploadarchief.net/files/download/20130315fet_4pbutterworth.png

Keramisch, kalibratie, parasitair: woordenlijst.org

Op 15 maart 2013 06:37:23 schreef YokoTsuno:
[...]
Volgens mij heb je minimum een 10-bit ADC nodig als je dit principe zou toepassen.

8 bits heeft een signaal/quantisatieruis verhouding van 6,02 x 8 + 1,76 = 49,92 dB tot gevolg. Het vereiste dynamische bereik is 20log(350) = 50,88 dB, zonder het NF van de analoge electronika in de ADC.

Net boven je post wordt gezegd dat je verrassend genoeg behoorlijk diep in de ruis nog signalen kan vinden met een fourier analyse. Het zou me helemaal niks verbazen als je met 8 bits sampling gewoon prima uit de fourier de frequentie kan halen, ook al zit het signaal onder de quantisatie-ruis. Ik ben niet zo handig met matlab of zo. Ik neem aan dat je daar makkelijk een willekeurige spanning tussen 3 en 4 volt kan kiezen, daar een AC signaal van 10mV op kan zetten, en dan quantiseren met 8 bits en analyseren. Stel je hebt 1000 samples per periode van de AC, dan denk ik dat je signaal rond de 30 DB boven de ruis uit kan steken.... Anderzijds, als je gaat digitaliseren, zou ik dat doen met een 0.1V "vref" en een AC koppeling tussen het signaal en de ADC....

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

Overleden

Zonder meer informatie over de signalen is FFT geen optie.
Hoe verandert het 10mV signaal, hoe nauwkeurig moet er gemeten worden? etc.
Stel het 10mV signnaal is 3 periodes 1Hz en dan snel oplopend in frequentie tot 200Hz. Moeilijk voor FFT.

Op 15 maart 2013 11:42:14 schreef rew:
[...]
Net boven je post wordt gezegd dat je verrassend genoeg behoorlijk diep in de ruis nog signalen kan vinden met een fourier analyse.

Dag Rew,

We wijken hier wat af. Toch dit noch. Een signaal uit ruis halen is enkel mogelijk met codering (Zoals bij CDMA mobiele telefonie of DTMB digitale TV). Een sinus, zoals in dit geval, welke onder het ruisniveau zakt is voor altijd verloren omdat het ruissignaal over een 1Hz bandbreedte natuurlijk ook een sinus is. Je kan deze twee nooit meer onderscheiden.

Ik denk bovendien dat een FFT op zich niet voldoende is omdat de TS een blokgolf van het ingangssignaal wil maken. Dit vereist een bijkomende IFFT. Geen probleem voor en PC, of DSP bord, maar al heel wat voor een kleine microcontroller.

Een oplossing met een filter van hogere orde zoals hierboven lijkt mij nog het meest realistisch.

Groetjes

Nog een paar testjes,

http://i.imgur.com/XD9pjkv.png

Dit is een 1024 punts FFT met een overlap van 128 samples. Hier is een een 8 bit ADC gesimuleerd met een Vref van 3.3volt. Het signaal zelf bevat een 2Volt DC amplitude met een 10mV of 20mv sinus.
Dit wil zeggen dat er wanneer 128 nieuwe samples binnen komen er opnieuw de fft word berekend van de laatste 1024 samples. Hier door kun je beter in het tijdsdomein bekijken.

Je ziet hier in het begin verschillende signalen:
-2 seconden 10mV @ 10Hz
-3 seconden 20mV @ 100Hz
-2 seconden 10mV @ 10Hz
-3 seconden 10mV @ 100Hz

Dus door het opsplitsen in kleinere delen krijg je een beter overzicht van wat er gebeurt. Hoe meer overlap je toe laat, hoe sneller je nieuwe signale gaat zien.

@YokoTsuno

Zo je kunt zien zie je wel degelijk dat er een sinus in het signaal zit "onder het ruis niveau". We weten dat het gemiddelde van ruis 0 is. En ruis nergens correleerde. Jouw formule is correct als je elke sample wilt zeker zij dat je nog het signaal kan vinden. Als je correlatie wilt bekijken is deze regel wat lakser.

Een STM32 microcontroller ( een cortex M3 arm die draait op 72MHz) kan een 1024 punt FFT berekenen in ongeveer 2ms. Als we met 128 samples overlap werken is er ongeveer 125ms tussen elke FFT berekening wat meer dan genoeg is voor die microcontroller.

Wat ben je met een analoge filter? Je moet nog steeds het signaal er uithalen. Hoe behandeld de filter ruis?

De matlab code:

code:


%DEMO CO

clc; clear all; close all;

sr = 1024; %samples per seconde
t_max = 10; %seconde

t = 1:(sr*t_max);

t1 = 1:(sr*2);
t2 = 1:(sr*3);
t3 = 1:(sr*2);
t4 = 1:(sr*3);

signaal = 2 + randn(1,length(t))*0.01;

signaal_gen = [ 0.01*sin(t1/1024*10*2*pi) 0.02*sin(t2/1024*100*2*pi) 0.01*sin(t3/1024*20*2*pi) 0.01*sin(t4/1024*100*2*pi)]
signaal = signaal_gen + signaal;
% 2 Volt amplitude, 0.01V signaal 10Hz

figure();
plot(t,signaal,t,0);

SIGNAAL = abs(fft(signaal(1:1024))); %FFT berekenen
SIGNAAL(1) = 0; %DC er uit gooien

figure();
plot(SIGNAAL);


%Quantiseren met 8 bits
%ADC met VREF = 3.3Volt
u8signaal = uint8((signaal/3.3)*256);
figure();
plot(t,u8signaal,t,0);

U8SIGNAAL = abs(fft(u8signaal(1:1024))); %FFT berekenen
U8SIGNAAL(1) = 0; %DC er uit gooien

figure();
plot(U8SIGNAAL);

OVERLAP = 128;
k = 1;
l = 1;
while l < (sr*t_max-sr)
    specto(k,1:sr) = abs(fft(u8signaal(l:(l+sr-1))));
    specto(k,1) = 0; 
    l = OVERLAP + l;
    k = k + 1;
end

figure();
surf(specto);

Shiptronic

Overleden

Ben ben verbaast over de creatieve oplossing hierboven, mij een deur te ver ;) Maar zou de TS mischien iets meer over de herkomst van het signaal kunnen geven?

Sensor opnemer toepassing, mischien is er een veel voor de hand ligender oplossing.

toen ik de post begon te lezen was mijn eerste gedachte: die probeert de rimpel van een alternator op een Laadspanning van 14V DC te meten om hier vervolges het toerental van de motor van een diesel te berekenen. Oplossing , de W aansluiting pakken ;)

Bij een hall sensor , Er zit een slingering in je puls schijf ;)

maar ik kan me geen voorstelling maken van de opstelling van waaruit dit signaal komt.

Wie de vraag stelt, zal met het antwoord moeten leren leven.