Filtrering Accelerometer buller i labVIEW (1 / 2 steg)
Steg 1: kod
Allmän översikt
Koden jag har lämnat bygger bort av de tidigare projekt. Du kanske har märkt det finns två loop strukturer. Först är vad jag kallar "Data Aquistion Loop" som i huvudsak läser data från chipKIT så snabbt som möjligt. Den andra slingan jag hänvisar till som "beräkningar Loop". Denna loop hanterar alla beräkningar som vi vill göra med data. Anledningen jag avgränsa data förvärv verksamheten från beräkningarna av data är att öka prestanda. LabVIEW är smart nog att kompilera koden i varje slinga så det kommer att köras på en separat kärna av din processor.
För att överföra data mellan två slingor, använder jag en lokal variabel. Varje gång beräkning loopen itererar, läser data från variabeln "XYZ kalibrerade värden" .
Jag har tagit två data tomter för detta särskilda projekt. En visar rådata, medan den andra visar filtrerade data. Tomterna är ett bra verktyg för att avgöra hur effektiva våra filtrering är. Tyvärr bug data tomterna om beräkningar loopen itererar till snabbt. Så måste en tidsfördröjning inkluderas till cap andelen loop.
Filtrera SubVI översikt
Allt filtreringen i detta projekt görs i en anpassad subVI. Denna subVI hjälper till att hålla koden snyggt och förståeligt. Inuti subVI finns det två typer av filtrering metoder som används. Först är enkel genomsnitt, och andra är låg passera Butterworth filtrering. Varje filtrering metod har en On/Off urval växla. När den är påslagen, spottar den ut filtrerade data. När växeln är avstängd, spottar den ut ofiltrerade rådata.
Filtrering med hjälp av medelvärden
Om ni minns från tidigare projekt, skulle rådata indata uppdatera så fort det var svårt att läsa. För att motverka detta, vi vill att genomsnittet (ta medelvärdet) av ett par datapunkter och Visa det värdet. Om vi i genomsnitt rätt antal datapunkter, visas informationen i läsbar takt. För att åstadkomma detta använde jag "menar PtByPt.vi". Här är lite mer information om det om du är nyfiken på hur det fungerar.
Filtrering med hjälp av ett lågpassfilter
Ett annat problem du kan ha råkat i föregående instructable är oberäkneligt jumpiness data. Detta kan bero på externa vibrationer eller vackla av din hand. Du kan använda ett lågpassfilter för att bli av detta. I huvudsak lågpass filtret smooth's ut abrupt hoppen mellan datapunkterna. Den särskilda lågpassfilter som jag använde i det här projektet är "Butterworth Filter PtByPt.vi". Om du är nyfiken på hur detta .vi fungerar, kolla in dess dokumentation. Observera att denna VI kan konfigureras för att fungera som 4 olika typer av filter (variabelt, Brytfrekvens, Bandpass eller Bandstop). Vi sysslar endast med variabelt filtrering, därav den "hög cuttof freq: fh" terminal lämnas osammanhängande.