DTMF Touch Toon Decoder met Microchip PIC Microprocessor (2 / 9 stap)

Stap 2: Signaal verwerking algoritme beschrijving


De PIC 12F683 microprocessoren gebouwd in A/D converter wordt gebruikt om te proeven van een input audio golfvorm. De monsters worden geanalyseerd met behulp van de Goertzel-algoritme om te ontdekken of om het even welk van de 8 tonen aanwezig zijn.

Het Goertzel-algoritme is een algoritme dat wordt gebruikt voor het opsporen van een enkele frequentie voor signaalverwerking. Het fungeert als een zeer smalle bandfilter filter.  Het produceert een zeer scherpe reactie op frequenties binnen de pass-band, en een veel lagere reactie voor frequenties buiten de pass-band.

In mijn implementatie van het algoritme, worden de monsters genomen met een snelheid van 4 keer de frequentie worden gedetecteerd. Met behulp van een sample rate van 4 keer het doel frequentie maakt coëfficiënten gebruikt in het algoritme worden gelijk is aan 1 of 0. Dit elimineert de noodzaak voor het uitvoeren van ingewikkelde en tijdrovende vermenigvuldiging op een 8-bit micro.  Ik heb niet alle wiskundige details van het algoritme hier opgenomen, maar een Google-zoekopdracht zal produceren artikelen over het onderwerp als u geïnteresseerd bent in het leren van meer over het algoritme zelf.

Als gevolg van de beperking zullen dat de samplefrequentie 4 keer de frequentie van de doelgroep, moet de samplefrequentie vereist anders is voor elk van de 8 tonen die worden gebruikt voor DTMF. Het algoritme moet dus één keer worden uitgevoerd voor elk van de 8 frequenties. Dit betekent dat een aparte set van monsters moet worden genomen voor elke frequentie van belang, zoals elke frequentie zal worden getest met een verschillende sample rate.

De scherpte van de filter reactie ten opzichte van frequentie is evenredig aan het aantal genomen monsters. Het antwoord van het algoritme moet scherp genoeg dat het reageert op de frequentie van de doelgroep, maar niet op een van de andere 7 frequenties reageert. Een waarde van 120 monsters bleek te produceren een redelijk smal reactie in experimenten. Er is natuurlijk een afweging tussen het aantal monsters en de uitvoeringstermijn. Oog op de opsporing van korte tonen, moet de uitvoeringstermijn zo kort mogelijk. Maar, zodat een smalle antwoord het aantal monsters moet groter, wat resulteert in een langere uitvoeringstermijn. Het aantal monsters wordt de beperking factor in het kort een Toon kan worden gedetecteerd.

Zodra het algoritme 120 monsters verwerkt heeft, uitgangen het een waarde. De omvang van deze waarde is evenredig aan de amplitude van de frequentie van belang. Dit resulterende waarde wordt vergeleken met een drempel om te bepalen als doel frequentie aanwezig is.
Zodra het algoritme is uitgevoerd voor alle 8 frequenties, voert de microprocessor logica op de resultaten om te bepalen of een geldig DTMF paar aanwezig is. Een geldige DTMF-paar wordt beschouwd als aanwezig alleen als 1 rij freq en 1 col freq wordt gedetecteerd. Andere combinaties worden als ongeldig beschouwd.

De grafiek toont de echte reactie gemeten met behulp van dit algoritme die wordt uitgevoerd op een PIC-12F683.  De grafiek toont dat de frequentierespons van het algoritme al 8 keer wordt uitgevoerd.  De x-as is frequentie in Hz.  De verticale as is de output van de waarde van het algoritme.  De ingang was een 1V sinusgolf, veegde van 600Hz tot 1800Hz.  Merk op dat de breedte van de respons groter voor de hogere frequentie-filters is.  Dit is de wijten aan het feit dat de breedte van de reactie evenredig aan de samplefrequentie is, gedeeld door het aantal genomen monsters.  In deze implementatie van het algoritme, de samplefrequentie is altijd vier keer de frequentie van de doelstelling, te gewoon en versnellen van de wiskunde.  Hetzelfde aantal monsters wordt echter gebruikt voor elk van de 8 doel frequenties.  De om de breedte van de reactie hetzelfde voor elk worden met de zelfde samplefrequentie voor elk, die leiden tot meer tijdrovend wiskunde moeten zou zou, of het vereisen zou dat het aantal monsters genomen op de hogere frequenties groter worden, die zou de uitvoeringstermijn te verlengen.  Als u een microprocessor met echte DSP functionaliteit, de extra wiskunde kon zeer snel worden uitgevoerd en dus zou iets dat u waarschijnlijk zou omvatten.

Ondanks de verschillen in de breedte van het antwoord, is de operatie zeer robuust op het opsporen van tonen, zelfs in aanwezigheid van significant geluid geweest.

Gerelateerde Artikelen

Met behulp van MT8870 DTMF-Decoder met Arduino

Met behulp van MT8870 DTMF-Decoder met Arduino

DTMF DECODERS worden gebruikt om te detecteren van DTMF-tonen Genrated door mobiele telefoon DTMF toetsenbord.In dit project gaan we te decoderen de DTMF-tonen in 4 bit Output en deze uitvoer wordt gegeven aan de arduino die detecteert de druk op de
Laat een PIC microprocessor program

Laat een PIC microprocessor program

OK hoe hard kan een PIC microprocessor programmering worden?Nou het hangt ervan af, sommige zijn harder dan anderen voor verschillende redenen, de programmeertaal, het type microprocessor, het gebruiksgemak van de software voor het bewerken en vooral
LED LYT Meter: LED, PIC Microcontroller en bewegende gemiddelde Code

LED LYT Meter: LED, PIC Microcontroller en bewegende gemiddelde Code

Hallo iedereen, dank u voor het controleren van mijn eerste Instructable. Ik heb genoten van het zien van je creaties door de jaren heen en hou van wat jullie allemaal dragen. Dit project is een spin-off van een die ik onlangs zag hier en ik wil een
Interfacing een M74HC238 3-8 lijn Decoder met een Arduino (voorbeeld)

Interfacing een M74HC238 3-8 lijn Decoder met een Arduino (voorbeeld)

dit is een basic tutorial ontworpen om u een basiskennis van het gebruik van een M74HC238 3-8 lijn Decoder.Zoals de naam al impliceert, hoeft u alleen 3 digitale pinnen op je Arduino waarmee alle 8 uitgangen.Het project kan je (maximaal 8) afzonderli
Het interpreteren van de draairichting van een digitale draaischakelaar met een PIC

Het interpreteren van de draairichting van een digitale draaischakelaar met een PIC

de doelstelling voor dit Instructable dient ter illustratie van hoe een digitale (quadrature gecodeerd) interface draaischakelaar met een microcontroller. Maak je geen zorgen, ik zal uitleggen wat quadrature gecodeerd betekent voor ons. Deze interfac
Virtuele touch scherm spel met behulp van Zybo

Virtuele touch scherm spel met behulp van Zybo

Virtuele Touch-screen Game hands-on leerprogramma voor de Zybo zal bevatten stapsgewijze instructies voor het aanpassen van uw hardware te emuleren scherm van de aanraking op eenvoudige inch TFT-scherm met behulp van camera en vinger detectie.Vereist
Morse Code Encoder/Decoder met LinkIt One

Morse Code Encoder/Decoder met LinkIt One

Dit is het tweede project met behulp van de LinkIt een boord in de vorige instructable toonde ik u hoe te bouwen van een afstand meetlint.In deze tutorial ga ik om u te tonen hoe maak je een Morse Code Decoder/Encoder met de LinkIt One. De output kan
Microchip PIC Library to Control een 20 door 4 LCD over I2C

Microchip PIC Library to Control een 20 door 4 LCD over I2C

Dit Instructable presenteert een 'C'-bibliotheek voor het beheersen van een enkele 20 door 4 LCD op basis van de HD44780 LCD controller over I2C met behulp van de NXP PCF8574 externe 8 bits IO Expander. Het LCD-scherm kan is geconfigureerd voor 4 bit
7 segment LED-display met een PIC controller en Flowcode V5

7 segment LED-display met een PIC controller en Flowcode V5

Allereerst, als u vragen hebt, voel je vrij om commentaar te leveren! Ik zou meer dan blij om uw vraag zo goed mogelijk beantwoorden!Gebruikte materialen:-PIC 18F452 Microcontroller (PIC-microcontroller met genoeg pinnen zal doen)-7 segment gemeensch
Touch scherm Overlay met Arduino

Touch scherm Overlay met Arduino

mijn vriend Ankush kocht een Nintendo DS-vervanging onlangs Touch schermen en breakout boards voor een "Arduino motorfiets RGB led" project werkt hij aan. Na het met weinig succes met de Touch Screen-bibliotheek en andere tutorials online beslot
Moderne blauwe doos met een PIC-12F683

Moderne blauwe doos met een PIC-12F683

een blauw vak is een elektronisch apparaat dat wordt uitgevoerd, repliceert de tonen die werden gebruikt om over te schakelen van interlokale telefoongesprekken. Ze kon u uw eigen gesprekken rondsturen en normale telefoon schakelen en facturering te
Infrarood Decoder met de LinkIT ONE

Infrarood Decoder met de LinkIT ONE

Universele afstandsbedieningen bug u? Wenst u dat uw home entertainment-center kan automatisch inschakelen het maandag avond voetbal zodra u liep de deur na het werk? Goed met de LinkIt One kan het allemaal ook. Met behulp van enkele handige infraroo
Arduino - Touch sensor schakelaar met behulp van de KY-036

Arduino - Touch sensor schakelaar met behulp van de KY-036

Hallo mensen! Hier gaan we weer!... Ik heb een ander voorbeeld op een van de sensoren die ik heb gemaakt.Dit keer maakte ik een voorbeeld voor de KY-036 Touch sensor.Volg de volgende stap voor het schema en de code.Stap 1: Schematische Code & onderde
TFT Touch gebaseerd UI met Arduino UNO

TFT Touch gebaseerd UI met Arduino UNO

I, m dol van TFT LCD-display. Dus besloten heb ik om het te leren. Er was al bibliotheek beschikbaar voor dit werk. Maar ik vond de meeste van hen was voor verschillende controllers. Er was een vent op intructables die deze bibliotheken voor spfd5408