Arduino golfvorm Generator (25 / 29 stap)

Stap 25: Firmware


Uploaden van de code op de bodem van deze stap op de Arduino.  De code wordt een timer onderbreken met een frequentie van 100kHz om nieuwe gegevens afgeven aan de DAC.  De rest van de code controleert de status van de knoppen en knoppen en past variabelen dienovereenkomstig.  Aangezien de interrupts op dergelijke een hoge frequentie optreden, moest ik de interrupt routine, het stukje code ingekapseld in de ISR(TIMER1_COMPA_vect) {} zo kort mogelijk houden. Tijd intensieve operaties zoals rekenkundige bewerkingen met drijvende komma's en het gebruik van de functie sin() teveel tijd in beslag nemen.  Ik gebruikte meerdere werk rond te krijgen door dit:

Voor driehoek en zag ik de variabelen sawByte, triByte, sawInc en triInc gemaakt.  Elke keer de frequentie veranderd ik berekend dat het bedrag dat de driehoek en zag functie zou hebben op Automatische toename, bij een sampling rate van 100kHz:

triInc = 511/periode;
Als (triInc == 0) {}
triInc = 1;
}
sawInc = 255/periode;
Als (sawInc == 0) {}
sawInc = 1;
}

vervolgens al het moest gebeuren in de interrupt routine was wat eenvoudige wiskunde:

geval 1: / / driehoek
if((period-t) > t);
Als (t == 0) {}
triByte = 0;
}
else {}
triByte += triInc;
}
}
else {}
triByte-= triInc;
}
Als (triByte > 255) {}
triByte = 255;
}
else if (triByte < 0) {}
triByte = 0;
}
Golf = triByte;
breken;

geval 2: / / zagen
Als (t = 0) {}
sawByte = 0;
}
else {}
sawByte += sawInc;
}
Golf = sawByte;
breken;

Voor de functie van de sinus schreef ik een eenvoudige python script dat uitgangen van 20000 waarden van 127+127sin(x) voor een volledige cyclus:

importeren van math

voor x in bereik (0, 20000):
afdrukken van str(int(127+127*math.sin(2*math.pi*x*0.00005)),)+str(","),

Ik deze array opgeslagen in het geheugen van de Arduino genaamd [sine20000] en herinnert aan de waarden die ik nodig had om het verzenden van de DAC.  Dit is veel sneller dan de berekening van de waarden afzonderlijk.

Gerelateerde Artikelen

Arduino golfvorm Generator Shield

Arduino golfvorm Generator Shield

Golfvorm generatoren (oftewel FUNCTIEGENERATOREN) zijn handig voor het testen en debuggen van circuits. Ze kunnen worden gebruikt om te testen de frequentierespons van elektronische componenten zoals op versterkers en sensoren of te karakteriseren en
10 weerstand Arduino golfvorm Generator

10 weerstand Arduino golfvorm Generator

Hebt u een Arduino UNO is dit project praktisch gratis!Het maakt ook een groot project van Arduino Nano.Wat u nodig hebt (alleen passieve componenten):Slechts 10 weerstandenÉén filter condensatorWat je krijgt:Een directe digitale synthese (DDS) golfv
IOS-gecontroleerde Arduino golfvorm generator

IOS-gecontroleerde Arduino golfvorm generator

Deze golfvorm generator is gebaseerd op het werk door Amanda Ghassaei. Golfvorm generatoren (of FUNCTIEGENERATOREN) worden gebruikt voor testen en debuggen van circuits. bijvoorbeeld frequentierespons van op-amp of sensoren. Deze generator golfvorm w
Atmel Xmega USB/serieel willekeurige golfvorm Generator

Atmel Xmega USB/serieel willekeurige golfvorm Generator

dit instructable loopt u via programmering en de Boston Android Xmega evaluatie board gebruiken om te werken als een eenvoudige willekeurige golfvorm generator te profiteren van de geïntegreerde 12 bit DAC en hoge snelheid DMA-controller. Ik heb voor
Low-cost golfvorm generator (0 - 20MHz)

Low-cost golfvorm generator (0 - 20MHz)

ABSTRATHDit Project komt van de noodzaak om een generator van de Golf met een bandbreedte van meer dan 10 Mhz en een harmonische vervorming minder dan 1 procent, dit alles met een lage kostprijs.Dit document beschrijft een model van een golf-generato
Gemakkelijk Atmel Xmega sinusgolf / golfvorm Generator

Gemakkelijk Atmel Xmega sinusgolf / golfvorm Generator

dit is hoe u kunt een van de BostonAndroid.com Xmega evaluatie boards ($20) maken een eenvoudige verstelbare sinus golfvorm generator met 12 bit resolutie en geschikt voor het produceren van frequenties van 125Hz - 20KHz met behulp van de geïntegreer
Controle van de analoge Discovery™ golfvorm Generator in LabVIEW

Controle van de analoge Discovery™ golfvorm Generator in LabVIEW

Het doel van dit project is om je te leren hoe de controle van de analoge ontdekking met LabVIEW. Met name zal dit project aantonen hoe de controle van de analoge ontdekkingen Golf formulier generator. U kunt de frequentie en amplitude een 2d box. Af
Arduino Tone Generator SD Log vervolgens afspelen

Arduino Tone Generator SD Log vervolgens afspelen

dit is hoe u ons radio golven, kosmische straling, te zenden interferentie van mobiele telefoons en TL-lampen, en zo verder voor het genereren van willekeurige tonen op je Arduino sla hen en SD-kaart en dan spelen ze terug.Stap 1: Wat u nodig hebt. W
Arduino Timer onderbreekt

Arduino Timer onderbreekt

Timer interrupts kunnen u een taak met zeer specifiek bepaalde tussenpozen ongeacht wat is in uw code gaande er. In dit instructable ik zal uitleggen hoe te installeren en uitvoeren van een interrupt in duidelijke Timer op vergelijk Match of CTC modu
Voorbeeld van de Generator van de golfvorm en Arduino nul DAC overzicht

Voorbeeld van de Generator van de golfvorm en Arduino nul DAC overzicht

Dit Instructable nemen we een kijkje op het digitaal naar analoog converter (DAC) op de Arduino nul. We zullen kijken naar een eenvoudig voorbeeld hoe met de DAC en vervolgens zullen we te kijken naar een complexer voorbeeld dat de DAC in een pseudo
De generator van willekeurige golfvorm, voor ~ 20$

De generator van willekeurige golfvorm, voor ~ 20$

een willekeurige golfvorm generator (AWG) is een nuttige maar vaak duur stuk van testapparatuur (ebay voor lacht). Gebruiken om te bepalen component frequentiebereik, genereren van vervoerder signalen, als een LCR-meter als u een bereik, tune resonan
Girino - snel Arduino oscilloscoop

Girino - snel Arduino oscilloscoop

ik ben een natuurkundige en het mooiste deel van werken op dit gebied is dat ik krijg om te bouwen van mijn eigen instrumenten. Met deze manier van denken besloten heb ik om te bouwen van een homebrew Arduino oscilloscoop. Dit instructable werd gesch
Arduino Audio-uitgang

Arduino Audio-uitgang

Genereren van geluids- of uitgang analoge spanningen met een Arduino. Dit Instructable zal u tonen hoe een echt basic digitaal naar analoog converter instellen zodat u kunt beginnen met het genereren van analoge golven in alle soorten en maten van ee
Arduino Audio DSP Shield

Arduino Audio DSP Shield

De Arduino Audio DSP schild heeft Ringmodulatie, echo, reverb, een oscope, oscillator, willekeurige golfvorm generator, enz. Het is een software- en hardware-systeem, een goede man, in een blikje!Stap 1: Krijgen een arduino audio schildDe schilden zi