Arduino Timer onderbreekt (5 / 6 stap)

Stap 5: Voorbeeld 3: DAC


In dit project gebruikte ik een timer onderbreken voor de uitvoer van een sinusgolf van een specifieke frequentie van de Arduino. Ik gesoldeerd een eenvoudige 8 bit R2R DAC naar digitale pinnen 0-7.  Deze DAC was opgebouwd uit 10k en 20 k weerstanden in een multi-herverdeeld voltage dividergerangschikt.  Ik zal detachering meer over de bouw van de DAC in andere instructable, voor nu ik heb ook de foto's hierboven.
Ik heb verbonden de output van de DAC tot een oscilloscoop.  Als u begrijpen hoe moet te gebruiken/Lees de oscilloscoop check out deze tutorial.  Ik laadde de volgende code op de Arduino:

 //63Hz sine wave //by Amanda Ghassaei 2012 

Mij troep opwaarts een timer-interrupt die stappen de variabele t met een frequentie van 40kHz.  Zodra t 627 bereikt het herstelt terug naar nul (dit gebeurt met een frequentie van 40.000/628 = 63 Hz).  Ondertussen in de hoofdlus stuurt de Arduino een waarde tussen 0 (00000000 binair) en 255 (11111111 binair) naar digitale pinnen 0 t/m 7 (PORTD).  Het berekent deze waarde met de volgende vergelijking:

PORTD=byte(127+127*Sin(t/100));

Dus als t stappen van 0 naar 627 doorloopt de sinus-functie in een volledige cyclus.  De waarde die wordt verzonden naar PORTD is een sinusgolf met 63Hz frequentie en amplitude 127, oscillerende ongeveer 127.  Wanneer dit wordt verzonden via de ladder van de weerstand 8 bit DAC het uitgangen een oscillerende signaal ongeveer 2.5V met een amplitude van de 2.5V en de frequentie van 63 Hz.

De frequentie van de sinus kan worden verdubbeld door te vermenigvuldigen met de term (t/100) 2, verviervoudigd door te vermenigvuldigen met 4, enzovoort...
Merk ook op dat als u de frequentie van de timer onderbreken verhogen teveel door het verlagen van de prescaler of OCR2A de sinusgolf zal niet de uitgang correct.  Dit is omdat de functie sin() computationeel duur is, en bij hoge interrupt frequenties deze hoeft niet genoeg tijd om uit te voeren.  Als u hoge frequentie interrupts, in plaats van het uitvoeren van een berekening tijdens de interrupt routine, gezien het opslaan van waarden in een array en gewoon roepen deze waarden met behulp van een soort van index.  U vindt een voorbeeld van dat in mijn arduino golfvorm generator-20.000 waarden van zonde door in te slaan een matrix, ik kon uitgang sinus golven met een sampling-frequentie van 100kHz.

Gerelateerde Artikelen

Maken van een Arduino-timer

Maken van een Arduino-timer

Hi, dus mij en mijn vriend instelt zodat we PCB´s kunnen maken. We zijn momenteel het maken van een UV blootstelling box (eventueel een ander instrucable) en voor dit vak, we nodig hadden een timer, dus dit is wat we tot nu toe hebben gedaan, en wat
Arduino Timer

Arduino Timer

Hallo iedereen, dit instructable is allen over hoe te bouwen van een stopwatch / Timer met behulp van Arduino.Kenmerken van deze Timer: (Check voor meer in de diepte details hoe u deze functies kunt in "Code/schets" sectie1. u kunt een doeltijd
Iontoforese gecontroleerd door arduino timer

Iontoforese gecontroleerd door arduino timer

DIY Iontoforese apparaat aangedreven door Arduino met timerfunctieDeze apparaat zal zijn voorzien van een schakelaar van polariteit op de ingestelde tijdsinterval (aan / uit).Stap 1: achtergrond GESCHIEDENIS:Hyperhidrosis is de aandoening gekenmerkt
Arduino Time-Lapse Panorama Controller

Arduino Time-Lapse Panorama Controller

Panorama Controller voor GoPro camera 'sDe controller zal uw GoPro draaien over een bepaalde hoek voor een reeks duur of je GoPro voor een volledige rotatie voor een reeks duur zal draaien.Dit project is gebaseerd op de oorspronkelijke instructable d
Arduino Time Lapse

Arduino Time Lapse

dat is wat we gaan doen:We moeten:-Arduino board.-Sd Breakout Board.-TTL seriële JPEG Camera.-RTC Breakout Board (optioneel).Stap 1: bedrading Dit is hoe de bedrading werkt:Camera:5V -> 5VGND -> GNDTX -> D2RX -> 10 K Ohm weerstand -> D3SD:5
DIY Arduino Time Lapse Panner voor GoPro

DIY Arduino Time Lapse Panner voor GoPro

Ik moest het maken van een panner dat zou 1 rotatie meer dan 5 minuten.Ik ontdekte twee andere projecten aan mijne baseren. Bouw is vrij veel het zelfde als de onderstaande bronprojecten.Ik herschreef deel van de code. Mijn TimeLapse Panner gevraagd
Arduino Audio Input

Arduino Audio Input

Geluid in je Arduino sturen. Dit Instructable zal u tonen hoe om audio te bereiden, zodat het kan worden bemonsterd en verwerkt door een Arduino sound responsieve projecten en audio-effecten te maken. (Dit artikel is een aanvulling op een ander Instr
Arduino Home basketbal hoepel Score Detection System alias teamscorer

Arduino Home basketbal hoepel Score Detection System alias teamscorer

Mijn zusje en ik vond deze indoor basketbal hoepel (hierboven afgebeeld) op een dumpster een paar weken geleden. We kwamen thuis van kerk net zoals twee mensen waren het lossen van hun vrachtwagen. We besloten om te grijpen, samen met de air hockey t
Stereo Audio met Arduino

Stereo Audio met Arduino

Onlangs heb ik zijn detachering een heleboel projecten die een 8 bit weerstand ladderdigitaal naar analoog converter (DAC) en een Arduino gebruiken om geluid te maken. (Zie het vocale effecten Arduino, de Arduino drum sampler en mijn audio-uitgang-tu
Nachtelijke emissies: Mijn Arduino Powered Internet ingeschakeld droom Generator

Nachtelijke emissies: Mijn Arduino Powered Internet ingeschakeld droom Generator

We moeten allemaal dromen meer dus ik deze Arduino Powered gemaakt heb "dream generator" om te helpen plant de zaden voor sommige grote denken-gekte.  Wanneer u nadert de generator een ultrasone sensor Maxbotix triggers lichten en muziek die tek
Arduino Schateiland

Arduino Schateiland

Ik heb altijd graag films zoals National Treasure en dergelijke. Degenen die beschikt over een team van mensen die worden uitgevoerd over de hele probeert op te lossen een raadsel of een tekenreeks van raadsels om, het goud, krijgen het meisje, behal
Infrarood Tachometer met behulp van Arduino

Infrarood Tachometer met behulp van Arduino

Hoi, is dit gewoon een toerenteller zoals u ook vele tutorials die er vindt. Er zijn verschillende benaderingen over het meten van rpm, wat ik hier gebruik is gebaseerd op analogRead methode zoals geschreven in de arduino playground leren pagina (htt
Arduino Schaken klok - multi spel vak

Arduino Schaken klok - multi spel vak

CHECK OUT mijn andere projecten >>Wekker met infrarood- en Bluetooth-luidsprekersArduino stappenteller horloge, met temperatuur, hoogte en kompas!Hey mensen! Na het maken van een Arduino smartwatch net vorige week, kreeg ik veel klachten of tips, ee
Google weer op grafisch display met Arduino

Google weer op grafisch display met Arduino

In dit project, ben ik met behulp van een Arduino board voorspelling van het weer uit Google weer service op een VGA scherm weergeven. Het display is duidelijk grafische, met iconen en sommige kleurrijke tekst. Het is een van die gadgets die ik wilde