Arduino Pitch detectie algoritme (AMDF) (2 / 8 stap)

Stap 2: Beperkingen van het Platform


De Arduino Uno (ATMega328P of niet "P") en de inherente beperking

De Arduino zijn leuk, maar ze zijn native eenvoudig zoveel rekenkracht. Uw computer is waarschijnlijk een 64-bits machine, wat betekent dat u rekenen op binaire getallen 64 bits lang kunt. De Uno heeft alleen 8 bits die eenachtste de bandbreedte plus een grote frequentie kloof (~ 2Ghz tot 16mhz) en niet te vergeten cores en bla bla bla...

Betekenis, die met behulp van een Uno rekenkundig is in het nadeel. Eenvoudige poort manipulatie voor led van en kleine motoren zijn goed genoeg voor dat doel, maar algoritmen die wilt crunch een heleboel nummers met behoud van de juiste tijd is heel moeilijk om voldoende snel en accuraat.

Een heleboel de onder overweging zijn grenzen die specifiek voor de Arduino Uno zijn en ik ben het analyseren van hen als een oefening in de techniek van beginselen. Als een toekomstige ingenieur (ik ben nog steeds op de Universiteit, yahoo), ik had om alle aspecten van het probleem te analyseren. Voor mijn doeleinden, had ik al begrepen dat 8 bits niet voldoende, dus kocht ik een Arduino Due zodat ik kan blijven binnen de native 32-bits precisie van een integer gegevenstype (in de mail op de weg). Met een wiskundige gereedschap zoals Matlab was ik in staat om dat te bepalen voordat ik zelfs gecodeerd op de Arduino Uno. In sommige golfvormen in de volgende stap kunt u beelden van de tests die ik deed. Maar ik bleef over met de 8 bit aanpak alleen voor *** en giechelt.

8 bit limiet

Geteld vanaf 0 tot 255 soort zuigt. Vooral wanneer je doet een rekenkundige operator die nodig heeft om binnen deze limiet te blijven. Zo daalt uw werkelijke precision voor dat soort operatie eigenlijk van 8 bits tot 7 bits toevoegen te blijven binnen dat venster van binaire getallen.

Als het niet duidelijk aan u, is de reden overloop. Overloop optreedt in een elektronisch apparaat wanneer u probeert te doen een wiskundige bewerking die out of bounds van de grenzen verder gaat. Dus, bijvoorbeeld, af te trekken-128 van 128 geeft u (128 + 128) = 256. Boom... wiskundig algoritme gebroken.

Gecodeerde Datatypes boven 8 Bits

Het toevoegen van twee getallen van 8 bits neemt één instructiecyclus native, terwijl het toevoegen van een 16-bits geheel getal zal genomen maar liefst drie cycli van de instructie. Dit kan niet als veel klinken aangezien één cyclus de inverse van de crystal-frequentie is (16Mhz ^ -1) die is over 63ns. Hier ligt in het probleem met te vermenigvuldigen met de instructie cycli door 3; Op minimum, wanneer u hoeft te doen 400 aftrekken, 400 toevoegingen (in een grotere datatype dus 800 instructie cycli), dan een divisie (die duurt van 200 + instructie cycli) die slechts een herhaling van ongeveer 200 meer iteraties is... uw relatief langzame kloksnelheid zeer duidelijk aan u wordt.

ADC 10 bits precisie

De ADC op een Uno heeft 10 bits precisie, maar gebaseerd op de voorgaande beperking van 7 of 8 bits, u weet kunt u niet alles; Het is gewoon een verspilling van rekenkracht om de volledige breedte te gebruiken. Ook, met behulp van de analogRead() is gewoon een verspilling uitgave van tijd. Kijken naar de directe haven manipulatie!

Gerelateerde Artikelen

Arduino frequentie detectie

Arduino frequentie detectie

Als een vervolg op de Arduino Audio Input tutorial die ik vorige week gepost, schreef ik een schets die analyseert een signaal binnenkomt de analoge ingang van de Arduino en bepaalt de frequentie. De code maakt gebruik van een sampling rate van 38.5k
Arduino Motion detectie eenvoudig project

Arduino Motion detectie eenvoudig project

Dit is een erg basic tutorial voor Arduino beginners, we wilden het simpel houden en naar het punt, het gebruik van PIR detectie bewegingssensoren en hoe u kunt besturen LED die gebaseerd is op de sensor uitvoergegevens.en zo simpel gezegd, de belang
Arduino Guitar Tuner

Arduino Guitar Tuner

Bouw je eigen elektrische gitaar tuner met behulp van de Arduino! Ik besloot om dit te maken want ik wilde om te experimenteren met de audio-invoer en frequentie detectie. Ik gebruikte Amanda Ghassaei de methode voor de detectie van Arduino frequenti
Betrouwbare frequentie detectie met DSP technieken

Betrouwbare frequentie detectie met DSP technieken

nauwkeurige detectie van frequentie is belangrijk voor vele projecten zoals gitaar/Piano-Tuners, trillingen Analyzers, tekeer beeldschermen, MEMs Sensor analyse en laboratoriuminstrumenten.Er zijn vele mooie voorbeelden van projecten die proberen op
Real Time ' Face-Tracking Robot met Arduino en Matlab

Real Time ' Face-Tracking Robot met Arduino en Matlab

Real time ' face-tracking verwijst naar de taak van het opsporen van menselijke gezichten in een video-stream en bijhouden van de gedetecteerde of herkende gezichten. Er zijn tegenwoordig veel echte wereld toepassingen van gezichtsherkenning en ander
Arduino Pocket Lightning Detector

Arduino Pocket Lightning Detector

Wij allen genieten van werken en buiten spelen. Maar ik denk dat iedereen het ermee eens dat door bliksem terwijl je plezier buiten uitdagend krijgen getroffen... niet leuk!OK genoeg met de leuke intro...Dit project kwam tot stand toen, terwijl ik wa
Pad van de Arduino Synth DIY 4 x 4

Pad van de Arduino Synth DIY 4 x 4

Dit project neemt een Arduino Uno en tal van andere onderdelen en hen verandert in een synth-pad dat kan een verscheidenheid van verschillende tonen spelen, opnemen die tonen en spelen ze terug en leren een gebruiker hoe om nieuwe muziek te spelen.St
Automatische geheime bibliotheek deur

Automatische geheime bibliotheek deur

Ik heb altijd al wilde hebben een geheime boekenplank deur. Wie zou niet? Dus toen ik klaar mijn zolder was, ik had de kans om te bouwen van een aangepaste boekenplank deur die opent en sluit door te schuiven in een ruimte achter de muur, waaruit mij
Contactloze AC detector

Contactloze AC detector

Dit instructable idee was als een technische uitdaging: probeer te detecteren van de aanwezigheid van een AC live wire, zonder contact en zonder stroom die. De schoonheid van het is dat u enkel een MCU (hier arduino nano), een draad, twee weerstanden
Ouderenzorg Monitor (Intel IoT)

Ouderenzorg Monitor (Intel IoT)

OverzichtDit is een Instructable voor een controle en het attenderen van apparaat voor iemand zoals een bejaarde die zich op hun eigen tijde tijdens de dag of de nacht en die mogelijk een risico voor het vallen of wellicht wat hulp gedurende die tijd
Self Balancing ondersteboven slinger

Self Balancing ondersteboven slinger

Dit is mijn poging om de omgekeerde slinger balanceren op een kar met twee wielen chassis. Ik had gezien de anderen hier en werd geïnspireerd om te proberen mijn eigen versie. De Arduino is heerlijk eenvoudig te programmeren en u kunt oprapen het in
Mobiele vaccin Monitor (Intel IoT)

Mobiele vaccin Monitor (Intel IoT)

Overzicht van het project:Dit is vaak voor onder ontwikkelde (N.Africa) en ontwikkelende landen (zoals India) waar de vaccins opslagomgeving (temperatuur) bijhouden een groot probleem is. Wanneer het milieu is niet optimaal (temperatuur is niet binne
EL Wire Lightsuit

EL Wire Lightsuit

Elektroluminescente Wire is zeer interessant. Terwijl het niet bijzonder goed, in een donkere kamer fotograferen, is het effect heel briljant. Heb ik besloten om een Arduino gecontroleerd licht pak met een bijgevoegde helm. De hier geschetste methode
Slim draagbare IOT vaccin

Slim draagbare IOT vaccin

Smart vaccin Monitor met IOTProbleemstelling: dit project is van toepassing op onder ontwikkelde als minder ontwikkelde landen waar de vaccins opslagomgeving (temperatuur) bijhouden een groot probleem is. Wanneer het milieu is niet optimaal (temperat