Arduino golfvorm Generator Shield (13 / 15 stap)

Stap 13: Firmware


Arduino IDE downloaden en 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 digitaal naar analoog converter (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 arounds 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

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
Arduino golfvorm Generator

Arduino golfvorm Generator

golfvorm generatoren (oftewel FUNCTIEGENERATOREN) zijn handig voor het testen en debuggen van circuits.  Ik gebruik ze vaak om te testen de frequentierespons van elektronica componenten zoals op-amp en sensoren.  Deze generator golfvorm wordt aangedr
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
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
Vloer stofzuiger robot - gecontroleerd door Arduino met motor shield

Vloer stofzuiger robot - gecontroleerd door Arduino met motor shield

vloer stofzuiger robot. Versie #16.Deze versie geaccumuleerde positieve ervaring uit eerdere versies.Materialen en onderdelen:1. Arduino board;2. Arduino Motorschild;3. twee motoren met een versnellingsbak (3 volt, ~ 100 RPM);4. twee wielen of twee a
Vloer stofzuiger robot - gecontroleerd door Arduino met motor shield, met afgedrukt motor-wielen

Vloer stofzuiger robot - gecontroleerd door Arduino met motor shield, met afgedrukt motor-wielen

vloer stofzuiger robot. Versie #17. Poging om het eenvoudiger te maken.De robot wordt verplaatst door kleine gelijkstroommotoren ingebouwde motor-wielen op de 3D-printer worden afgedrukt:http://www.thingiverse.com/Thing:225576Onderdelen:Arduino met m
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 Bluetooth programmering Shield (draadloos uploaden Code)

Arduino Bluetooth programmering Shield (draadloos uploaden Code)

Dit project zal u tonen hoe te maken van een code van de Arduino draadloos uploaden vanaf uw Computer via Bluetooth.Stap 1: Stap #1: het Bluetooth module setup circuit Breadboard. •De Bluetooth-module gebruikt in dit project is de HC-05. Het is goedk
Internet Controlled Arduino (geen Ethernet-shield)

Internet Controlled Arduino (geen Ethernet-shield)

Ethernet schilden zijn een heleboel plezier, maar zij kunnen duur zijn. In dit project zal ik u tonen hoe om te controleren uw Arduino vanaf elke computer die is verbonden met het internet, zonder gebruik te maken van een Ethernet-shield. Dit project
Arduino draadloze SD Shield Tutorial

Arduino draadloze SD Shield Tutorial

zoals de naam al impliceert, het schild van de Arduino Wireless SD heeft twee functies. Bovenal kunt dit schild u gemakkelijk interface met Xbee transceiver modules maken mesh netwerken en andere draadloze apparaten. Ten tweede, de micro SD-aansluiti
Controle van een Camera met een Arduino en RS232 Shield

Controle van een Camera met een Arduino en RS232 Shield

Dit leerprogramma zal u tonen hoe u kunt controleren vele verschillende aspecten van de werking van een camera's met een Arduino. Deze bewerking kan worden de pan en tilt camera, zoom en focus van de lens, en RGB kenmerken. De Arduino zal gebruik mak