A/D conversie en oversampling

A/D conversie en oversampling? Eh wat?

Ik heb gisteren, na een goede tip van iemand op tweakers, mijn code voor het uitlezen van de VFS flowsensor aangepast. Mijn flowsensor had nogal de neiging om te schommelen qua uitgelezen waarde. De VFS sensor is analoog en voordat ik die dus kan uitlezen moet ik het signaal eerst digitaal maken. Dit doe ik simpel met een Arduino die het 0 tot 5V signaal op een pin omzet in een getal van 0 tot 1023.In de praktijk levert de VFS flowsensor een waarde van tussen de 0 en 3,5V waarbij alles kleiner dan 0,35V betekent dat er geen flow is. 3,5V staat gelijk aan 40liter/minuut.

Bij het uitlezen van de sensor zag ik dat binnen een seconde de uitgelezen waarden toch best behoorlijk konden fluctueren. Mijn eerste oplossing was om te werken met een “dode” band. Het verschil tussen twee waarden moest bijvoorbeeld minimaal 4 punten zijn. Als een waarde van bijvoorbeeld 250 naar 253 ging dan was dat voor mijn database geen aanleiding om de waarde op te slaan.

Dat leverde echter van dit soort grafieken op:

Let hierbij vooral op hoe ‘dik’ de lijn lijkt van gelezen waarden. Als ik inzoom ziet dit er zo uit:

Hier komt nu oversampling om de hoek kijken.

Oversampling

In plaats van 1x de waarde uit te lezen lees ik nu meerdere keren de sensor uit en middel dan de waarde. Na wat experimenteren geeft vanaf 32x oversampling het beste resultaat. Met 32x oversampling ziet de grafiek er zo uit.

Dit ziet er stukken strakker uit.

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.