
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02

Jeg er en veldig stor fan av akellyirls instrukser om pålitelig frekvensdeteksjon ved bruk av DSP -teknikker, men noen ganger er teknikken han brukte ikke god nok hvis du har støyende målinger.
En enkel løsning for å få en renere inngang for frekvensdetektoren er å bruke et slags filter rundt frekvensen du vil oppdage.
Dessverre er det ikke lett å lage et digitalt filter, og det er ganske mye matematikk involvert. Så jeg tenkte på å lage et slags program for å forenkle opprettelsen av slike filtre, slik at alle kan bruke dem i prosjektene sine uten å grave i detaljene.
I denne instruksen skal jeg oppdage en 50Hz sinusbølge i en støyende måling med en Arduino Uno (Arduino er egentlig ikke nødvendig).
Trinn 1: Problemet

Tenk deg at de målte inndataene ser ut som kurven ovenfor - ganske bråkete.
Hvis vi konstruerer en enkel frekvensdetektor som den i akellyirl's Instructable, er resultatet "-inf" eller i tilfellet med koden nedenfor: "Ja, for mye støy …"
Merk: Jeg brukte stort sett hele koden til akellyirl, men la til en rawData -matrise øverst som inneholder støyende målinger.
Nedenfor finner du hele koden i en fil som heter "unfiltered.ino".
Trinn 2: Løsningen

Siden inngangsdataene er bråkete, men vi kjenner frekvensen vi leter etter, kan vi bruke et verktøy jeg opprettet kalt easyFIR for å lage et båndpassfilter og bruke det på inngangsdataene, noe som resulterer i en mye renere inngang for frekvensdetektoren (bildet ovenfor).
Trinn 3: EasyFIR

EasyFIR -verktøyet er ganske enkelt å bruke, bare last ned GitHub -depotet og kjør filen easyFIR.py med ett eksempel på målingene dine (i CSV -format).
Hvis du åpner easyFIR.py -filen, finner du 5 parametere (se bildet ovenfor) du kan og bør endre avhengig av resultatet du ønsker å oppnå. Etter at du har justert de 5 parameterne og kjørt python -filen, vil du se de beregnede koeffisientene i terminalen din. Disse koeffisientene er avgjørende for neste trinn!
Mer informasjon om den eksakte bruken finner du her:
Trinn 4: Filtrering

Hvis du har beregnet de nødvendige filterkoeffisientene, er det ganske enkelt å bruke den faktiske filen på frekvensdetektoren.
Som du kan se på bildet ovenfor, trenger du bare å legge til koeffisientene, ApplyFilter -funksjonen og deretter filtrere inngangsmålene.
Nedenfor finner du hele koden i en fil som heter "filtered.ino".
Merk: stor takk til denne Stack Overflow Post for den flotte filterapplikasjonsalgoritmen!
Trinn 5: Nyt

Som du kan se, nå er vi i stand til å oppdage et 50Hz signal selv i et støyende miljø?
Tilpass gjerne ideen min og koden til dine behov. Jeg vil være veldig takknemlig for å inkludere forbedringene dine!
Hvis du liker arbeidet mitt, vil jeg virkelig sette pris på om du støtter arbeidet mitt med stjerne på GitHub!
Takk for støtten!:)
Anbefalt:
Smart motorsykkel HUD-prototype (sving-for-sving-navigasjon og så mye mer): 9 trinn

Smart motorsykkel HUD-prototype (sving-for-sving-navigasjon og så mye mer): Hei! Denne instruksen er historien om hvordan jeg designet og bygde en HUD-plattform (Heads-Up Display) designet for montering på motorsykkelhjelmer. Den ble skrevet i sammenheng med "kart" -konkurransen. Dessverre klarte jeg ikke å fullføre
Grunnleggende om VBScript - Start skript, forsinkelser og mer !: 5 trinn

Grunnleggende om VBScript - Start skript, forsinkelser og mer !: Velkommen til min første opplæring om hvordan du lager VBScripts med notisblokk. With.vbs -filer kan du lage noen morsomme pranks eller dødelige virus. I denne opplæringen skal jeg vise deg grunnleggende kommandoer som å starte skriptet ditt, åpne filer og mye mer. På t
Voksende mer salat på mindre plass eller voksende salat i verdensrommet, (mer eller mindre) .: 10 trinn

Voksende mer salat på mindre plass eller … Voksende salat i verdensrommet, (mer eller mindre) .: Dette er en profesjonell innsending til Growing Beyond Earth, Maker Contest, sendt gjennom Instructables. Jeg kunne ikke vært mer begeistret for å designe for produksjon av romfrukter og legge ut min første Instructable.Til å begynne ba konkurransen oss om å
Enkel, billig og pålitelig berøringssensor med bare 3 deler: 3 trinn

Enkel, billig og pålitelig berøringssensor med bare 3 deler: Kontroller alle slags elektroniske enheter med fingertrykket kan være ganske nyttig. I denne instruksen vil jeg vise deg hvordan du bygger en enkel, men kraftig berøringssensor som fungerer feilfritt. Alt du trenger er en standard transistor og to
Pålitelig, sikker, tilpassbar SMS -fjernkontroll (Arduino/pfodApp) - Ingen koding nødvendig: 4 trinn

Pålitelig, sikker, tilpassbar SMS -fjernkontroll (Arduino/pfodApp) - Ingen koding nødvendig: Oppdatering 6. juli 2018: En 3G/2G -versjon av dette prosjektet, som bruker SIM5320, er tilgjengelig her Oppdatering: 19. mai 2015: Bruk pfodParser -biblioteket versjon 2.5 eller høyere. Det løser et rapportert problem med å ikke tillate nok tid til skjoldet å koble seg til