Friday, 20 October 2017

Arduino Flytting Gjennomsnittet Bibliotek


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-bibliotekssiden referert til. En av hovedapplikasjonene til Arduino-kortet er lesing og logging av sensordata. For eksempel overvåker man trykk hvert sekund av dagen. Som høye samplingsfrekvenser genererer ofte pigger i grafene en vil også ha en avera Ge av målingene Da målingene ikke er statiske i tid, trenger vi ofte et løpende gjennomsnitt. Dette er gjennomsnittet av en bestemt periode og svært verdifull når det gjør trendanalyse. Den enkleste form av et løpende gjennomsnitt kan gjøres med kode som bygger på forrige løpende gjennomsnitt. Hvis man ikke vil bruke flytende punktmatematikk - da dette tar opp minne og reduserer hastighet - kan man gjøre det samme helt i integer-domenet. Deling med 256 i sample-koden er en shift-høyre 8, som er raskere enn å si divisjon med f. eks. 100 Dette er sant for hver kraft av 2 som divider og en må bare passe summen av veiene er lik kraften til 2 Og selvfølgelig må man passe på at det ikke er mellomliggende overløp vurdere å bruke usignert long. If du trenger et mer nøyaktig løpende gjennomsnitt, i konkreto fra de siste 10 målingene, trenger du en matrise eller lenket liste for å holde dem. Dette arrayet fungerer som en sirkulær buffer og med hver ny måling blir den eldste fjernet. Running a verage er beregnet som summen av alle elementene dividert med antall elementer i gruppen Koden for løpende gjennomsnitt vil være noe slikt. Drawback av denne koden er at arrayet for å holde alle verdier kan bli ganske store Hvis du har en måling per sekund og du vil ha et løpende gjennomsnitt per minutt du trenger en rekkevidde av 60 en gjennomsnittlig per time vil trenge en rekkevidde på 3600 som ikke kunne gjøres på denne måten på en Arduino, da den bare har 2K RAM, men ved å bygge en 2-trinns gjennomsnittlig det kan nærmer seg ganske godt ansvarsfraskrivelse ikke for alle målinger I psuedo code. As et nytt internt statisk array er nødvendig for hver runningAverage-funksjon, skriker dette for å bli implementert som en klasse. RunningAverage-biblioteket. RunAverage-biblioteket gjør en klasse av funksjonen ovenfor, slik at den kan brukes flere ganger i en skisse. Det avbryter tilleggs - og avg-funksjonen til å være litt mer fleksibel, for eksempel kan man ringe gjennomsnittet flere ganger uten å legge til noe. Vær oppmerksom på at hver forekomst o f klassen legger til sitt eget array for å holde målinger, og at dette legger til minnebruk Grensesnittet til klassen holdes så liten som mulig. Merk med versjon 0 2 navnene på metodene blir alle gjort mer beskrivende. En liten skisse viser hvordan det kan brukes En tilfeldig generator brukes til å etterligne en sensor. I oppsettet blir myRAen fjernet, slik at vi kan begynne å legge til nye data. I sløyfe først genereres et tilfeldig tall og konverteres til en flyte som skal legges til myRA Then runningAverage skrives ut til seriell port. En kan også vise den på noen LCD eller sende over ethernet etc. Når 300 elementer er lagt til, slettes myRA for å starte igjen. For å bruke biblioteket, lag en mappe i SKETCHBOOKPATH libariene med navnet RunningAverage og legg h og der Valgfritt lage en eksemplar underkatalog for å plassere prøven app.2011-01-30 første versjon.2011-02-28 fast manglende destructor i h file.2011-02-28 fjernet default constructor.2012- - trimValue Yuval Naveh la til trimValue funnet på web.2012- 11-21 refactored.2012-12-30 added fillValue refactored for publishing.2014-07-03 lagt til minnebeskyttelseskode - hvis intern array ikke kan tildeles størrelse blir 0 Dette er for å løse problemet beskrevet her. Test omfattende. Template class. RunningAverage h. RunningAverage. Latest versjon på - Github. En av hovedapplikasjonene til Arduino-kortet leser og logger sensordata. For eksempel overvåker man temperaturen og lufttrykket hvert minutt av dagen. Da det innebærer mange poster, gjør vi ofte vil gjennomsnittlig og standardavvik for å få et bilde av variasjonene i temperaturen på den dagen. Statisk bibliotek. Statistisk bibliotek beregner bare gjennomsnittet og stdev av et sett med dataflyter. Videre inneholder det minimum og maksimumsverdier som er angitt. Grensesnittet består av av ni funksjoner versjon 0 3 3 på Github. Internalt registrerer ikke biblioteket de individuelle verdiene, bare tallet, summen og den kvadrerte sum sum summen, minimum og maksimum Disse fem er nok til å ca lculate gjennomsnittet og stdev Den fine delen er at det ikke spiller noen rolle om man legger til 10, 100 eller 1000 verdier. En liten skisse viser hvordan den kan brukes En tilfeldig generator brukes til å etterligne en sensor. I oppsettet blir myStats fjernet så vi kan begynne å legge til nye data. I sløyfe først blir et tilfeldig tall generert og konvertert til en float som skal legges til myStats Da er tallet, gjennomsnittet og stdavviket så langt skrevet ut til seriell port. En kan også vise den på noen LCD eller send over Ethernet osv. Når 300 elementer legges til, blir myStats fjernet for å starte igjen. I den første versjonen samlet jeg alle prøvene i en matrise, men det resulterte i ganske mye minnebruk og brukeren måtte vite antall eksempler på forhånd for å Fordel nok plass Som jeg fant dette ikke helt akseptabelt, fjernet jeg data-arrayet fra klassen for å gjøre det mer elementært. For å bruke biblioteket, lag en mappe i SKETCHBOOKPATH libariene med navnet Statistikk og sett h og der. på en mer utvidet statistisk lib.2010-11-01 Lagt til stdev, minimum og maksimum.2011-01-07 Gil Ross send meg en forbedret versjon av biblioteket som er numerisk stabilere Dette er versjon 0 3 Thanx Gil.2012-05-19 Lagt til NAN som feil i stedet for -1 som var feil.2015-03-07 - versjon 0 3 3 - endret flyte til dobbelt for å støtte ARM proc. Statistic h-fil.

No comments:

Post a Comment