Arduino frekvens identifiering (3 / 4 steg)

Steg 3: sinusvåg frekvens identifiering



Nästa jag mätt av en inkommande sinusvåg, beräknad frekvens och tryckt frekvensen. För att göra detta ställa jag in en timer i ADC avbrottet som ökar stegvis varje gång avbrottet kör (en frekvens på 38462Hz). Varje gång den inkommande signalen korsar 2.5V med en stigande lutning jag skickade det aktuella värdet för timern till en variabel kallas "period" och återställa timern till 0. Att koden återges nedan (alla äger rum inom ADC avbrottet).

prevData = newData; //store tidigare värde
newData = ADCH; //get värde från A0
om (prevData < 127 & & newData > = 127) {//if ökar och passage mittpunkten
period = timer; //get perioden från nuvarande timer-värde
timer = 0; //reset timer
}

timer ++; //increment timer

Sedan i den huvudsakliga loop() funktionen beräknade jag frekvensen genom att dividera andelen timer perioden. Jag brukade Serial.print att skriva ut dessa resultat i Arduino seriell monitor.

frekvens = 38462/period; //timer rate/period
skriva ut resultaten
Serial.Print(Frequency);
Serial.println ("hz");

Fig 1 visar signalen till A0. Början och slutet av en cykel av timer framgår av bild anteckningen. Figur 2 visar utdata från seriella monitor (kommando/ctrl + SKIFT + m). Denna teknik fungerar bra för sinustoner, men när vågen blivit mer komplicerad (och cross 2.5V mer än två gånger i en cykel) denna teknik går sönder.

sinusvåg freq upptäckten med 38,5 kHz samplingsfrekvens och avbryter
av Amanda Ghassaei

Juli 2012

/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/

Clipping indicator variabler
booleska klippning = 0;

data storage variabler
byte newData = 0;
byte prevData = 0;

Freq variabler
unsigned int timer = 0; //counts period av wave
unsigned int period.
int frekvens;

void setup() {

Serial.BEGIN(9600);

pinMode (13, OUTPUT); //led indikator pin

(CLI); //diable avbrott

Ställ in kontinuerlig provtagning av analoga pin 0

Rensa ADCSRA och ADCSRB register
ADCSRA = 0;
ADCSRB = 0;

ADMUX | = (1 << REFS0); ange referens spänning
ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast

ADCSRA | = (1 << ADPS2) | (1 << ADPS0); ställa in ADC klockan med 32 prescaler - 16mHz/32 = 500 kHz
ADCSRA | = (1 << ADATE); enabble automatisk utlösare
ADCSRA | = (1 << Ebba Grön); Aktivera avbrott när mätningen är klar
ADCSRA | = (1 << ADEN); Aktivera ADC
ADCSRA | = (1 << ADSC); Starta ADC mätningar

SEI (); //enable avbrott
}

ISR(ADC_vect) {//when nya ADC värdet redo

prevData = newData; //store tidigare värde
newData = ADCH; //get värde från A0
om (prevData < 127 & & newData > = 127) {//if ökar och passage mittpunkten
period = timer; //get perioden
timer = 0; //reset timer
}

om (newData == 0 || newData == 1023) {//if klippning
PORTB | = B00100000; //set stift 13 hög-sväng på klippning indikator ledde
klippningen = 1; //currently klippning
}

timer ++; //increment timer i takt på 38,5 kHz
}

void loop() {
om (klippning) {//if för närvarande klippning
PORTB & = B11011111; //turn off clippng indikator ledde
klippningen = 0;
}

frekvens = 38462/period; //timer rate/period
skriva ut resultaten
Serial.Print(Frequency);
Serial.println ("hz");

Delay(100);
}

Se Steg
Relaterade Ämnen

Pålitlig frekvens identifiering med hjälp av DSP tekniker

korrekt frekvens upptäckt är viktigt för många projekt som gitarr/Piano Tuners, vibrationer analysatorer, hjärtrytm bildskärmar, MEMs Sensor analys och laboratorieutrustning.Det har varit många fina exempel på projekt som försöker lösa detta problem,...

Arduino frekvens synthesizer med 160MHz Si5351

Detta Instructable beskriver konstruktion och drift av en fristående frekvens synt lämpliga för användning som en signalgenerator, eller för användning som den lokala oscillatorn i ett Amatörmässigt musikband sändare eller mottagare.Min prototyp bygg...

Arduino gitarr Tuner

Bygg din egen gitarr tuner använder Arduino! Jag beslöt att göra detta eftersom jag ville experimentera med ljudingång och frekvens identifiering. Jag använde Amanda Ghassaei metod för Arduino frekvensen upptäckt för att få frekvens avläsningar med A...

Arduino Pitch upptäckt algoritm (med AMDF)

Senaste uppdatering: 16 januari 2016 (nyligen lagt till en förbättrad matlab-kod (step7) med prover och massor av anteckningar)Förord: Detta Instructable är skrivna på en att visa hur jag analyserat, testat, genomfört och optimerad en algoritm. Även...

Rita ut Data från Arduino

Arduino inte har mycket i form av debug och analys förmåga inbyggt, så det kan vara mycket användbart att ha en anläggning till tomt data som skickas från Arduino över serieporten.Det finns flera sätt att göra det inklusive bearbetning, Python + Matp...

Arduino IR Remote mottagare

jag har varit framgångsrika i programmering min Arduino att identifiera grupper av siffror från min IR-fjärrkontroll.Med detta program kan du styra 4 lysdioder över en IR-fjärrkontroll.Steg 1: delar Behöver du:-En TV-IR-fjärr (jag använde en från sam...

Frekvens detektor PIC 12F683 Processor med

detta projekt beskriver maskin- och programvara har jag utvecklat som låter en liten 8 bitar PIC mikroprocessor kan fungera som en enda frekvens detektor eller tonen.En sådan krets kan användas för att påvisa förekomsten av en viss frekvens inom en a...

Arduino kompatibel Luna Mod Looper

The Luna Mod Looper, i princip kan du registrera en sekvens med en potentiometer för att styra tonhöjden för noteringen, och sedan spela upp den tillbaka och lägga till effekter. Ända sedan jag såg videor av Luna Mod som spelas, ville jag bygga min e...

Arduino Mini-Shields

Detta är en uppsättning av enkel, liten formfaktor, mini-sköldar som jag skapade nästan av en slump. När jag gjorde mer och mer av dem, insåg jag att de kan vara riktigt användbara. Det som började som ett sätt att använda vissa reservdelar, förvandl...

Komma igång med RFID

Har du någonsin undrat hur ditt ID tag fungerar?I denna handledning kommer vi att kunna visa dig hur man läsa en RFID -knappen, eller tag, om det hålls upp mot ID-12 RFID-läsare eller någon 125 KHz modul. Även är detta projekt ett enkelt och roligt s...

Adafruit Motor sköld användning

Hej vänner, jag nämner robotiserade applikationer i motordrift, en av de mest använda kort adafruit L293d företag som utvecklat den integrerad bar från Adafruit motor sköld motor förarkort. Huvudskälet tillhandahålls för inställningen på grund av ans...

Ihållande Vision småsak. POV dekoration.

Ihållande Vision småsak. POV dekorationDet är tiden på året att få trädet och dekorera med alla underbara ljus, glitter och grannlåt. Och detta projekt handlar om grannlåt, varje gång jag satte dekorationer på ett träd jag inte kan hjälpa men avveckl...

RFID-Emulator - hur man klona RFID-kort, Tag...

Där idén kom.Idén att skapa RFID-Emulator kommer från idén att skapa en miljö för att utveckla och experimentera med olika RFID-tillämpningar. Denna artikel skapades med målet att ingenjörer amatör entusiaster och fans av elektronik som gillar att ex...

Glödande färgskiftande gitarr

I kungariket av rock and roll är det viktigt att ställa sig själv isär. Med miljontals människor i denna värld som kan spela gitarr, kommer spelar enkelt väl bara inte att klippa den. Du behöver något extra att stiga upp som en Gud som rock. Anser de...

Power System frekvens bestämning genom att använda Arduino

IntroduktionNätström distribueras allmänt på 50 eller 60 Hz.This-projektet syftar till att "Beräkna hur levande ac power system ofta använda Arduino" kit och liten transformator ckt setup. Detta projekt är byggd av vårt team caféer, Venkat, Abhi...

Arduino - AC Main frekvens Monitor

Hej, detta är min första gången, så snälla, bli mjuk!Varning: Arbeta med AC-spänning kan vara dödliga. Om du inte vet vad du gör vänligen försök inte detta.Jag har haft i åtanke utveckla en monitor system, för min reservkraft, bestående av 4 6V batte...

Arduioscillo-Arduino VoltMeter/frekvens Generator

vad gjorde jag? Syftet med detta projekt är att skapa en prisvärd och praktisk voltmeter/frekvens generator av material liggande på din arbetsbänk. Denna länk tar dig till min youtube video förklarar enheten http://www.youtube.com/watch?v=dkgbP2kvnME...

Arduino gränssnitt TSL230R ljus frekvens Converter

Syftet med denna sida är att visa hur deTSL239R ljus till frekvensomriktare. Enheten utgångar en 50% duty fyrkantsvåg vars frekvens är proportionell mot ljusintensiteten. Inte bara kan TSL230R användas för att upptäcka ljusintensiteten justera säger...

OBJEKTET identifiering och spårning med hjälp av OPENCV, VISUAL STUDIO C ++ 2010 och ARDUINO

IntroduktionI detta projekt skickar Webcam video ramar till Visual Studio C ++ som innehåller öppen CV biblioteket på vår dator.Om Visual Studio C ++ programmet upptäcker bilden av objektet från webbkameran och sedan beräknas de co koordinaterna X, Y...