Stap 2: Signaal verwerking algoritme beschrijving
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.