Saturday 18 November 2017

Eksponentiell Bevegelse Gjennomsnittet Arduino


Jeg jobber med en mobil robot som styres via en trådløs 2 4 GHz mottaker er koblet til Arduino Uno som fungerer om bord som hovedkontroller. Den mest kritiske og viktigste inngangskanalen kommer fra mottakeren produserer et meget støyende signal, noe som fører til mange mindre endringer i utgangene til aktuatorene, selv om disse ikke er nødvendig. Jeg ser etter biblioteker som kan utføre effektiv utjevning. Er det noen signalutjevningsbiblioteker tilgjengelig for Arduino Uno. asked 16. februar 14 på 13 57. Jeg tror jeg ser mange støypistoler i enkeltprøve i ditt støyende signal. Medianfilteret gjør det bedre å kvitte seg med enkeltprøve støypenner enn et lineært filter. Det er bedre enn noe lavpassfilter, glidende gjennomsnitt, vektet glidende gjennomsnitt osv. i termer av sin responstid og dens evne til å ignorere slike enkeltprøve støy spik outliers. There er faktisk mange signal-utjevning biblioteker for Arduino, hvorav mange inkluderer en median filter. signal-utjevne biblioteker at. signal - smelende biblioteker på github. Vil noe som dette arbeidet i roboten Median-of-3 krever veldig lite CPU-strøm og dermed raskt. Du kan filtrere dette digitalt ved hjelp av et lavpassfilter. Bytt 0 99 for å endre kuttet av Frekvensen nærmere 1 0 er lavere frekvens. Det egentlige uttrykket for den verdien er exp -2 pi f fs hvor f er cutofffrekvensen du vil ha, og fs er frekvensen dataene sampleres på. En annen type digitalt filter er et hendelsesfilter Det Fungerer bra på data som har avvik, f. eks. 9,9,8,10,9,25,9 Et hendelsesfilter returnerer den hyppigste verdien Statistisk er dette modusen. Statistiske gjennomsnitt som Mean, Mode etc kan beregnes ved hjelp av Arduino Average Bibliotek. Et eksempel tatt fra Arduino Library-siden referert til. Filtre Accelerometer Data med Matlab og Arduino 15. april 2016 av Ryan Morrison. I tillegg til undersøkelsen av MATLAB Arduino-grensesnittet, undersøker dette innlegget to metoder for fjerning av støy fra eksponensiell eksponering av sensordata gjennoms Ge og enkle bevegelige gjennomsnittsfiltre Som en forløper til dette, kan en introduksjon til seriekommunikasjon og dataoppsummering med Arduino og MATLAB bli funnet på mitt forrige innlegg. Alle koden som brukes i disse innleggene, er tilgjengelig på min GitHub-repo. Jeg bruker igjen opplæringsvideoer fra som en referanse, samtidig som jeg legger til egne forbedringer underveis. Eksponensiell flytende gjennomsnittlig EMA. Eksponentielt glidende gjennomsnitt er tilordnet en vektningsfaktor, med de nyeste dataene som har størst vekt. Det beregnes av følgende ligning. mitt forrige innlegg, LSM303DLHC akselerometeret er forbundet med en Arduino Uno, seriekommunikasjon mellom Arduino og MATLAB er etablert, og MATLAB plotter tyngdekraft akselerasjonsvektorene. Forrige MATLAB-kode er modifisert for å beregne EMA og vise side om side plott av rå og filtrert data Resultatet er vist under forvarsel forskjellen mellom rå og filtrert data som skyveknappen endrer alfa-verdivariasjonen for rå venstre og E MA-filtrerte høyre akselerasjonsvektorer. I grafen ovenfor holdes akselerometeret i rom med z-vektoren vinkelrett på jorden. Bevegelse og vibrasjon påføres akselerometeret for å vise respons på plutselige endringer i orientering. Sammenligning av rådataene til venstre med de filtrerte dataene til høyre blir følgende observasjoner gjort. Alfa-verdi nærmer seg 1 resulterer i høyfiltrering av det filtrerte plottet beveger seg svært lite som respons på bevegelse. En verdi som nærmer seg 0 resulterer i lavfiltrering, det er liten forskjell mellom rå og filtrert plott. En verdi rundt 0 5 gir et optimalt nivå av filtrering. Det filtrerte plottet er fri for uregelmessig jitter og reagerer på bevegelse. Simpel glidende gjennomsnittlig sma. Som navnet antyder, bruker dette filteret et enkelt gjennomsnitt for innkommende sensordata. Med hver iterasjon av kode-sløyfen, blir den eldste verdien i datasettet slått ut og erstattet med den nyeste lesingen, og et nytt gjennomsnitt beregnes. SMA er gitt av followin g-ligning hvor nivået av støyreduksjon bestemmes av n antall kraner. Størrelsene på xy z-akse-akselerasjoner visualiseres i 2D-plott ved bruk av MATLAB Begge rå og filtrerte data presenteres, og en glidebryter brukes til å justere mengden av filtrering antall tapsparison av raw top og SMA-filtrert bunn xyz akselerasjon magnitudes. Accelerometeret er manipulert på samme måte som med EMA filter For å oppsummere effektene av SMA filter. Zero kraner ingen filtrerende rå akselerometer målinger avslører høy følsomhet for små forstyrrelser. Ved kraner er høy filtrering av kraftig akselerometerbevegelse usynlig i filtrerte resultater. Five kraner optimal filtreringsjitter er eliminert, men filtrerte resultater reflekterer store bevegelser. Jeg er nå ganske kompetent med å bruke MATLAB for sensor karakterisering og vil benytte dette i fremtidige prosjekter Det som umiddelbart kommer til å tenke, er å anvende dette i observasjonsdefinisjonen av terskler ved bruk av akselerometre i robotikkbil Motiveapplikasjoner Et eksempel er forbedringen som er gjort på støt-deteksjon ved å filtrere feilaktig jitter introdusert av kroppsvibrasjoner. Låsefilter. Disse er primært notater. Det vunnet t være komplett i noen grad. Det eksisterer å inneholde fragmenter av nyttig informasjon. Den eksponentielt veide Flytende gjennomsnittlig EWMA er navnet på det som er sannsynligvis det enkleste digitale, tidsdomener-realiseringen av førsteordens lowpass på diskrete data. Dette filteret glatter med et bevegelig lokalt gjennomsnitt, noe som gjør det til en svak følge av inngangssignalet. det vil reagere sakte til de raske endringene høyfrekvensinnholdet, mens det fortsatt følger den generelle tendensen til signalet, lavfrekvensinnholdet. Det veies av en variabel se for å kunne variere dens følsomhet. I applikasjoner som prøver på en vanlig måte intervall, for eksempel lyd du kan forholde seg til frekvensinnhold I disse tilfellene vil du ofte beregne en filtrert utgangsserie for en inngangsserie ved å løse gjennom en liste som gjør noe l Ike. or tilsvarende. Den sistnevnte formen kan føles mer intuitiv informativ endringen i filtrert utgang er proporsjonal med mengden av endring og veid av filterstyrken. Men kan hjelpe å vurdere hvordan bruk av den nylig filtrerte utgangen gir systemet inertia. A. mindre større 1- i den tidligere gjør også større RC betyr at utgangen vil justere mer tregt, og bør vise mindre lyd siden cutofffrekvensen er lavere verifisering. En større mindre 1- mindre RC betyr at utgangen vil justere raskere, har mindre inerti , men vær mer følsom overfor støy siden cutoff-frekvensen er høyere verifisering. Siden beregningen er lokal, vil tilfeller der du bare vil ha den nyeste verdien, unngå å lagre et stort utvalg ved å gjøre følgende for hver ny prøve ofte en rekke ganger i en rad, for å sikre at vi justerer nok. I tilfeller av ikke-så vanlig prøvetaking er mer relatert til tilpasningshastighet enn frekvensinnhold. Det er fortsatt aktuelt, men notene på frekvensinnhold gjelder mindre strengt. Du vil vanligvis implementere arrayminnet som flyter - selv om du returnerer ints - for å unngå problemer som skyldes avrundingsfeil. Mesteparten av problemet når alfaforskjellen selv er en flytende multiplikasjon er mindre enn 1, blir den 0 i en truncatng-cast til et heltall For eksempel når alfa er 0 01, vil signalforskjeller mindre enn 100 gjøre for en justering av 0 via heltallet trunkering, slik at filteret aldri vil justere til den faktiske ADC-verdien. EWMA har ordet eksponentielt i det fordi hver ny filtrert utgang bruker effektivt alle verdiene før det, og effektivt med eksponentielt avtagende vekter. Se wikipedia-koblingene for mer diskusjon. Grafik eksempel. Skjermbilde fra arduinoskop - en flytende graf med de nyeste prøvene til venstre. Råsignalet på toppen er noen få sekunder s verdt av en ADC-prøvetaking fra en flytende pin, med en finger berører det nå og da. De andre er lavpassede versjoner av det, ved å øke styrken. Noen ting å merke seg om det. skape en sakte eksponensiell justering til trinnlignende svar, likt som en ladningskondensator - raskt innledende, så tregere og langsommere fordi det er proporsjonalt med forskjellen igjen. undertrykket av enkelt raske store spikes avvik. det er sikkert mulig å filtrere også hardt, selv om den dommen avhenger mye av prøvetakingshastigheten og tilpasningsinnholdsfrekvensene din trenger. I det andre bildet kommer fullrange-svingningen ut halvveis ikke så mye på grunn av filtrering, men også i stor grad fordi de fleste råprøver rundt der er mettet i hver ende av ADC s-området. På, og cutoff-frekvensen. Denne artikkelseksjonen er en stub, sannsynligvis en haug med halv-sorterte notater, er ikke godt sjekket, slik at det kan ha feil biter. Feil fri å ignorere, fikse , eller fortell meg. Utjevningsfaktoren, teoretisk mellom 0 og 1 0, i praksis vanligvis 0 2 og ofte 0 1 eller mindre, fordi over det du nesten ikke gjør noen filtrering. I DSP er det ofte basert på. t jevnlig w ritten dt tidsintervallet mellom prøvene gjensidige av sampling rate. a valg av tidskonstant tau, aka RC sistnevnte synes en referanse til en motstand-pluss-kondensator krets, som også gjør lavpass Spesifikt gir RC tiden hvor kondensatoren lader til. Hvis du velger en RC i nærheten av dt får du alfaer høyere enn.0 5, og også en cutofffrekvens som ligger nær nyquistfrekvensen skjer ved 0 666 verifisering, noe som filtrerer ut så lite at det gjør filteret ganske meningsløst. I praksis vil du ofte velge en RC som er minst noen få multipler av dt, noe som betyr at den er i størrelsesorden 0 1 eller mindre. Når sampling skjer i strenge intervaller, for eksempel for lyd, er RCs forhold til frekvenser godt definert For eksempel er knefrekvensen hvor den begynner å falle av, omtrent avskjæringsfrekvensen, veldefinert, for eksempel. Når RC 0 002sec er, er cutoffet at. At 200Hz, 2000Hz og 20000Hz sampling, som gir alfaer av 0 7, 0 2 og 0 024, henholdsvis At Den samme samplingshastigheten jo lavere alfa er, jo langsommere tilpasning til nye verdier og jo lavere effektive cutofffrekvensen verifiseres. For en første rekkefølge lowpass. at lavere frekvenser, er responsen nesten helt flat. at denne frekvensen er responsen - 3dB har begynt å falle i et mykt bøye knee. at høyere frekvenser det faller ved 6db oktav 20dB tiår. Høyere rekkefølgevariasjoner faller av raskere og har et vanskeligere kne. ​​Merk at det også vil være en faseskift som ligger bak inngangen. Det avhenger av frekvensen som begynner tidligere enn amplitudfallet, og vil være -45 grader ved knefrekvensen verifiserer. Eksempel på denne artikkelen. Denne artikkelseksjonen er en stub, sannsynligvis en haug med halvdelte notater, ikke godt sjekket, så det kan ha Feil biter. Feil fri, ignorere, reparer eller fortell meg. Dette er en enkeltversjon av minnesversjon, for når du bare er interessert i den nyeste utdaterværdien.

No comments:

Post a Comment