0% found this document useful (0 votes)
248 views

Arduino Audio Output

This document discusses how to set up a digital to analog converter (DAC) using an Arduino to generate analog waves and voltages. It explains how to build an 8-bit DAC from resistors to convert digital signals from the Arduino into analog voltages. Code examples are provided to generate different waveforms and control analog devices.

Uploaded by

dragon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
248 views

Arduino Audio Output

This document discusses how to set up a digital to analog converter (DAC) using an Arduino to generate analog waves and voltages. It explains how to build an 8-bit DAC from resistors to convert digital signals from the Arduino into analog voltages. Code examples are provided to generate different waveforms and control analog devices.

Uploaded by

dragon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

let's make

Explore(/tag/typeid/)

Publish(/about/create.jsp)
Login(/account/login/) | SignUp(/account/gopro)

Classes(/classes/)
Featured: share what
(/id/intel/)
IntelIoT(/id/intel/)
you make
(/)
(/tag/typeid/categorytechnology/channelarduino/) Arduino(/tag/typeid/categorytechnology/channelarduino/)
(/tag/typeid/categorycraft/channelknittingandcrocheting/) Yarn(/tag/typeid/categorycraft/channelknittingandcrocheting/)
(/tag/typeid/categoryworkshop/channellighting/) Lighting(/tag/typeid/categoryworkshop/channellighting/)

AboutThisInstructable
8 324,072 views

License:

490 favorites
amandaghassaei
(/member/amandaghassaei/)
uhmanduhgusseyedotcom
(http://www.amandaghassaei.com)

(/member/amandaghassaei/)
Follow
3240

(/file/F8GZNXPH7KZ2FVW/)

GeneratesoundoroutputanalogvoltageswithanArduino.ThisInstructablewill
showyouhowtosetupareallybasicdigitaltoanalogconvertersoyoucanstart
generatinganalogwavesofallshapesandsizesfromafewdigitalpinsonan
Arduino.(ThisarticleisacompaniontoanotherInstructableI'vewrittenabout
sendingaudiointoanArduino,findthathere
(http://www.instructables.com/id/ArduinoAudioInput/))
Someideasthatcometomind:
samplebasedinstrumentstoresamplesontheArduinooronanSDcardand
triggerplaybackwithbuttonsorothertypesofcontrols.CheckoutmyArduino
drumsampler(http://www.instructables.com/id/ElectronicInstrument/)foran
ideaofhowtogetstarted.
digitalsynthesizermakesaw,sine,triangle,pulse,orarbitrarywaveshapes
checkoutmywaveformgenerator
(http://www.instructables.com/id/E7T6UN2H12SVHY8/)togetstarted
MIDItocontrolvoltagemodule/MIDIsynthesizerreceiveMIDImessages
(http://www.instructables.com/id/SendandReceiveMIDIwithArduino/)and
translatethemintoavoltagesoyoucancontrolananalogsynthesizerwith
MIDI,orusetheMIDIdatatooutputaudioofacertainfrequency
analogoutputyoumayfindyourselfneedingtogenerateanalogvoltagesfrom
yourArduinoatsomepoint,maybetocommunicatewithananalogdevice
effectsbox/digitalsignalprocessingincombinationwithamicrophone/audio
input(http://www.instructables.com/id/ArduinoAudioInput/)youcanperformall
kindsofdigitalsignalmanipulationsandsendtheprocessedaudiooutto
speakers.Checkoutmyvocaleffectsbox
(http://www.instructables.com/id/ArduinoVocalEffectsBox/)foranexample.
audioplaybackdevicemakeyourownipod.WiththeadditionofanSDshield
youcouldcreateyourownArduinomp3player(checkoutthewaveshield

Bio:I'magradstudentattheCenterfor
BitsandAtomsatMITMediaLab.Before
thatIworkedatInstructables,writingcode
for...More(/member/amandaghassaei/)
Morebyamandaghassaei:

(/id/OTCA

MetapixelConwaysGameofLife/)

(/id/9Degreesof

FreedomIMU/)

(/id/TwitterControlledPetFeeder/)

Related

(/id/Speech

SpeechRecognitionand
SynthesiswithArduino
(/id/SpeechRecognitionand
SynthesisWithArduino/)
byleandro4b
HowtouseanICDAC
(/id/HowtouseanICDAC/)
byJColvin91

(/member/JColvin91/)

(http://www.adafruit.com/products/94)documentationforanideaofhowtoget
startedwiththecode).Thecircuitsandcodeprovidedherearecompatiblewith
SDshieldsthatcommunicateviaSPI.
Feelfreetouseanyoftheinfoheretoputtogetheranamazingprojectfor
theDIYAudioContest(http://www.instructables.com/contest/audio/)!
We'regivingawayanHDTV,someDSLRcameras,andtonsofothergreat
stuff!ThecontestclosesNov26.
PartsList:
(x9)1/4Watt20kOhmResistorsDigikey0KQBKND
(http://www.digikey.com/productdetail/en/CFR25JB5220K/20KQBKND/880)
(x7)1/4Watt10kOhmResistorsDigiikeyCF14JT10K0CTND
(http://www.digikey.com/productdetail/en/CF14JT10K0/CF14JT10K0CT
ND/1830374)
(x2)TS922INDigikey49730495ND
(http://www.digikey.com/scripts/dksearch/dksus.dll?
vendor=0&keywords=ts922in)Ilikethesebecausetheycanbepoweredoffthe
Arduino's5Vsupply(one924workstoo,buttheydon'tseemtobeavailableon
digikey(http://www.digikey.com/productdetail/en/TS924IN/TS924IN
ND/1040358)atthemoment)
(x1)10kOhmpotentiometerlinearDigikey9871308ND
(http://www.digikey.com/productdetail/en/P160KN0QD15B10K/9871308
ND/2408885)
(x1)0.01uFcapacitorDigikey4455252ND(http://www.digikey.com/product
detail/en/FK28X7R1H103K/4455252ND/2256732)
(x1)220uFcapacitorDigikeyP5183ND(http://www.digikey.com/product
detail/en/ECA1HM221/P5183ND/245042)
(x1)0.1uFcapacitorDigikey4455303ND(http://www.digikey.com/product
detail/en/FK18X7R1H104K/4455303ND/2256783)
(x1)1/4Watt3kOhmResistorDigikeyCF14JT3K00CTND
(http://www.digikey.com/productdetail/en/CF14JT3K00/CF14JT3K00CT
ND/1830361)
(x1)1/4Watt10OhmResistorDigikeyCF14JT10R0CTND
(http://www.digikey.com/productdetail/en/CF14JT10R0/CF14JT10R0CT
ND/1830306)
(x1)ArduinoUnoAmazon(http://amzn.to/1JGTEPT)
AdditionalMaterials:
(1x)usbcableAmazon(http://amzn.to/1TRcNz2)
(1x)breadboard(thisonecomeswithjumperwires)Amazon
(http://amzn.to/1JGTTup)
(1x)jumperwiresAmazon(http://amzn.to/1JGTUOV)

Step1:DigitaltoAnalogConverter

ArduinoAudioInput
(/id/ArduinoAudioInput/)
byamandaghassaei
(/member/amandaghassaei/)
(/id/Arduino

(/file/FGYC0NCH742FUAL/)

(/file/FDST2OAH7431PG5/)

(/file/FKGRU1UH74326MJ/)

DACstandsfor"digitaltoanalogconverter."SincetheArduinodoesnothave
analogoutcapabilities,weneedtouseaDACtoconvertdigitaldata
(numbers/ints/bytes)toananalogwaveform(oscillatingvoltage).Asimple,easy
toprogram,andcheapwaytodothisistousesomethingcalledanR2Rresistor
ladder(http://en.wikipedia.org/wiki/Resistor_ladder).Essentially,ittakes
incomingdigitalbits(0Vand5VfromArduino),weightsthem,andsumsthemto
produceavoltagebetween0and5volts(seetheschematicinfig2,takenfrom
theWikipediaresistorladderpage(http://en.wikipedia.org/wiki/Resistor_ladder)).
Youcanthinkofaresistorladderasamultileveledvoltagedivider
(http://en.wikipedia.org/wiki/Voltage_divider).
TheresistorladderI'llbedemonstratinginthistutorialisan8bitDAC,this
meansitcanproduce256(2^8)differentvoltagelevelsbetween0and5v.I
connectedeachofdigitalpins07toeachofthe8junctionsinmy8bitDAC
(showninfigs1and3).
IlikeusingtheseresistorladderDACsbecauseIalwayshavethematerials
around,they'recheap,andIthinkthey'rekindoffun,buttheywillnotgiveyou
thehighestqualityaudio.Youcanbuyachipthatworksintheexactsamewas
asanR2RDAC(andwillworkwithallthecodeinthisinstructable),buthas
internal,highlymatchedresistorsforbetteraudioquality,Ilikethisone
(http://www.digikey.com/productdetail/en/TLC7528CN/29618715ND/277516)
bcitrunsoffasingle5Vsupply(youcanevendostereoaudio
(http://www.instructables.com/id/StereoAudiowithArduino/)withit),butthere
aremanymoreavailable,lookfor"parallelinput,8bit,dacic".
Alternatively,therearechipsthattakeinserialdatatoperformdigitaltoanalog
conversion.Thesechipsaregenerallyhigherfidelity(definitelybetterqualitythat
theresistorladderDAC)andtheyonlyusetwoorthreeoftheArduino'soutput
pins(asopposedto8).Downsidesaretheyarealittlemorechallengingto
program,moreexpensive,andwillnotworkwiththecodeinthisInstructable,
thoughI'msuretherearesomeothertutorialsavailable.Afteraquicksearchon
digikey,these(http://www.digikey.com/productsearch/en?
pv243=79&pv243=87&pv243=23&pv243=78&FV=fff40027%2Cfff80184%2C114

0050%2C2640002&k=dac&mnonly=0&newproducts=0&ColumnSort=0&page=1
&quantity=0&ptm=0&fid=0&pageSize=25)lookedgood,forArduino,trytofind
somethingthatwillrunoffasingle5Vsupply.
Onemorenotethereseemstobekindofamisconceptionabut8bitaudio
thatitalwayshastosoundlikethesoundseffectsfromaMariogamebut8bit
audiowiththisreallybasicDACcanactuallyreplicatethesoundsofpeople's
voicesandinstrumentsreallywell,I'malwaysamazedatthequalityofsound
thatcancomefromabunchofresistors.

Previous

Next(/id/ArduinoAudioOutput/step2/SetupDACandTest/)
Download

ViewAllSteps(/id/ArduinoAudioOutput/?ALLSTEPS)

Wehaveabenicecommentpolicy.

Pleasebepositiveandconstructive.

wIMadeit!

AddImages PostComment

adrianio(/member/adrianio)

9daysago

Reply

Hello!Nicetutorial.IwanttomakealowpassfilterlikeyouforArduino
toneAC().WithtoneAC,we'resendingoutofphasesignalsontwopins.How
willIconnecttheresistorandcapacitor?Ineedtworesistorsandtwocapacitors
connectedbetweeneverypinandground?Orissufficientoneresistorandone
capacitorbetweenonepinandground?

DebojitK(/member/DebojitK)

5monthsago

Reply

Ididatestonthetimingsofdirectportwrite.Iusedthefollowingpins:
PB1,PB0,PD7,PD6,PD5,PD4,PD3,PD2()leavingPD1andPD0forrx/tx).
PORTD=(PORTD&B00000011)|((input<<2)&B11111100)
PORTB=(PORTB&B11111100)|((input>>6)&B00000011)
Thesetwolinessettheinputontheaforementionedpinswithdirectbitbanging
writemethoddescribed.TheresultisastonishingItonlytakes~1.6usecto
executethesetwolines.Soforinterruptserviceroutineyougetampletimeto
dootherprocessing.
Hereisthecode:
#include"Arduino.h"
//Thesetupfunctioniscalledonceatstartupofthesketch
uint8_tinput=100
StringinputString=""
voidsetup()
{
//Addyourinitializationcodehere
Serial.begin(115200)
}
//Theloopfunctioniscalledinanendlessloop
voidloop()
{
//Addyourrepeatedcodehere
testSerialEvent()

longsTime=millis()
for(longi=0i<100000i++){
PORTD=(PORTD&B00000011)|((input<<2)&B11111100)
PORTB=(PORTB&B11111100)|((input>>6)&B00000011)
}
longeTime=millis()sTime
Serial.println(eTime)
Serial.print("[")
for(inti=1i>=0i){
Serial.print(((PORTB&(1<<i))>>i))Serial.print("")
}
for(inti=7i>=2i){
Serial.print(((PORTD&(1<<i))>>i))Serial.print("")
}
Serial.println("]")
delay(1000)
//outputeverylooptakes170msecthatmeanoneiterationtakes~1.7usec.Its
toogood.
}
voidtestSerialEvent(){
while(Serial.available()){
charc=(char)Serial.read()
inputString+=c
if(c=='\n'){
input=inputString.toInt()
inputString=""
Serial.print("Input>")Serial.println(input)
break
}
}
}

chrisdefrancisci(/member/chrisdefrancisci)

5monthsago

Reply

Hello,Ithinkthistutorialiswonderful,thankyousomuchforpostingit,however
I'verunintoaproblemnow.WhenIhooktheArduinouptoanoscilloscope,it
showsaperfectsinewave.However,whenIplugmyArduinointomyaudio
interface,soIcanrecordtheoutputonmycomputer,thesignalbecomes
truncatedandonlyhasapeaktopeakvoltageof80mV.Couldyoupleasehelp
meunderstandwhythisishappening,andwhatIcandotofixit?
Thankyou.

AndreaS76(/member/AndreaS76)

8monthsago

Reply

HiAmanda,
thankyouverymuch,allthisisgreat.
Iwouldusethisprojecttogenerateawaveandsplitthesignalfromoneoutput
tomultipleguitarampsthroughsomethinglikeaplugboard(Ibelieveitwillbe
connectedinparalel),doineedtochangesomethingintheschemetosenda
goodsignaltoallthespeakers?
Thankyou:)

gabor64(/member/gabor64)madeit!

10monthsago

Reply

HiAmanda,
thxforthebrilliantproject.Isentthe6mostsignificantbitstoPORTDand2to
PORTB.Iusedthefollowingcommandstodecreasethediscontinuitiesas
muchaspossibleandalsospeeduptheoutputbyusingjustoneinstructionper
port:

PORTD=x[i]&B11111100|PORTD&(x[i]|B00000011)
PORTB=x[i]&B00000011|PORTB&(x[i]|B11111100)
NowIgoontotheanalogpart.
Thx,rgds,
Gabor

(https://cdn.instructables.com/FS0/32M2/IKA08HFK/FS032M2IKA08HFK.LARGE.jpg)

PaulC175(/member/PaulC175)

11monthsago

Reply

11monthsago

Reply

thankyouforthisexcellentproject

LucianM4(/member/LucianM4)

Hiamandaghassaei(http://www.instructables.com/member/amandaghassaei/)!
Nicework!
Itryingtodothisprojectbutihaveonebigproblem.Ican'thindTS922IN/24in
mycountry!andidon'thaveenoughtimetobuyfromotherone.Isn'tan
alternativeforTS922IN/24?

henroljeo.gutierrez(/member/henroljeo.gutierrez)

ayearago

Reply

HelloSir,IwanttooutputananalogSignalusingthistutorial,butmyproblemis
Iwantmyinputtobedigital,whatImeanis,someoneisgoingtosendmea
bunchofbitsandthenIwanttooutputthemintoanalog,MyproblemisIdont
knowhowtoreadthatincomingbitsinmyarduino.Doyouhaveanycodesfor
readingabitsinthepinofarduino.?

syikas93(/member/syikas93)

henroljeo.gutierrez(/member/henroljeo.gutierrez)
ayearago

Reply

ayearago

Reply

2yearsago

Reply

NeeravP(/member/NeeravP) 2yearsago

Reply

diduhvegettheans,ifyes...canushareit=)

JuanSebastianO1(/member/JuanSebastianO1)

NeeravP(/member/NeeravP)

heycaniuse8analogoutputfromArduinoUNO.

PaulS20(/member/PaulS20)

Interestingquestion,butIseethreeproblemswithit:
1)TheUnoonlyhas6analogoutputpins3,5,6,9,10,and11.
2)Thearenottrueanalog,butinsteadusesquarewavesfor"PulseWidth
Modulations",Asaresult,they'dbeplayingtonesofapproximately490Hz
and980Hzintoyoursound.
3)Youneedtouseeightpinsthatareallpartofaneightbitportsothat
youcanenteronenumber,suchasPORTD=125settingalleight
pinsatonce.Otherwise,you'dhavetosetonepinatatimewith

digitalWrite()(oranalogWrite)whichwouldtaketoomuchtimetokeepup
withyoursoundwaves.

KaushikK1(/member/KaushikK1)

2yearsago

Reply

Hey..
Firstoff,thankyouforthegreattutorials.
I'mtryingtoincorporateyourinstructableintomy"Arduinoshortrangewalkie
talkie"project.
I'musingamemsmic(https://www.sparkfun.com/products/9868)torecordmy
voice.Canyouhelpmeoutwithhowtoreducelagduringtranmission?
I'vetrieddecreasingdelayduringinputbutthatrallydoesntseemtodothejob.

m_osik(/member/m_osik)

2yearsago

Reply

HIall,
atfirstiwouldliketoTHNXforcooltutorial.
ItriedtouseasoutputconverterMCP4921(withAH_MCP4921.h)butiamnot
abletogetany"audible"sounds.HaveanybodytriedthisD/Aconverterwith
thissolution?
Bestregards
Jan

zacaj(/member/zacaj)

3yearsago

Reply

Hi,thanksforthisgreattutorial!
I'vegotlimitedinputs,soIwaslookingatusingaserialinDACchipinsteadof
usingaladder,doyouthinkthatthishttp://www.digikey.com/product
detail/en/MCP4901E...(http://www.digikey.com/productdetail/en/MCP4901
E%2FP/MCP4901E%2FPND/2332819)(MCP4901E/P)wouldwork?CouldI
justdropitintoyourschematicaslongasIhandletheprogrammingcorrectly?
Also,Ihopetopowersomecomputerspeakers(withtheirownamp/volume
control)usingthiscircuit.Sincethey'dhavetheirownvolume,IassumeIdon't
needtoinstallapotentiometer?Wouldthesamebufferwork,orwouldIneed
somethingbiggertosupportlouder/largerspeakers?
Thanks

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

zacaj(/member/zacaj)
3yearsago

Reply

Yeahthatchiplooksgood,but(asyoumentioned)the
codewillhavetochangeabit.Ifyourspeakershavetheirownamp,you
canprobablygetawaywithconnectingtheoutputofthebuffertotheinput
ofyourspeaker'samp.It'spossibleyoumayneedalittlepreampinthere,
inthatcaseyoucanusetheampinmyschematicwaresistorinplaceof
thepotentiometer.

zacaj(/member/zacaj)

amandaghassaei(/member/amandaghassaei)

Reply

2yearsago

ItalsoseemsI'mgoingtoneedtorunoff3Vinsteadof5V.I
knowI'llneedadifferentDAC,butotherthanthat:IassumeI'llneeda
differentDCoffsetcapacitor?ArethereanyothercomponentsI'llneedto
change?

somethingsmart(/member/somethingsmart)

Hey,thanksforthetutorial!

3yearsago

Reply

Theinputtutorialworksgreat.Forthisone,though,TS922INDigikey4973049
5ND(http://www.digikey.com/scripts/dksearch/dksus.dll?
vendor=0&keywords=ts922in)isobsolete.IcalledDigikeyand
http://www.digikey.com/productdetail/en/TS922IDT/...
(http://www.digikey.com/productdetail/en/TS922IDT/49760351ND/1632064)
istheclosest,butit'sasurfacemountchip.Wearejustgonnasoldersome
wiresandgiveitago.

lynettequek(/member/lynettequek)

3yearsago

Reply

CouldthebitmanipulationbeusedtofreeupDigitalpins0and1forserial
communication?IhaveonlyoneserialcommunicationusedsoIcan'tuse
softwareserialforthat.Ihavethiscodesofar:
//bitmanipulation,sendingnumber36to0and1.PORTB:digitalPin813
//definevariables:
booleanbit0state
booleanbit1state
//inyourmainloop():
bit0state=(36&B00000001)>>0//getthezerobitof36
bit1state=(36&B00000010)>>1//getthefirstbitof36
//senddatatoportdw/odisruptingpins0and1
PORTD|=(36&B11111100)//sethighpinshighusingthenumber36withzeros
replacingbits0and1
PORTD&=(36|B00000011)//setlowpinslowusingthenumber36withones
replacingbits0and1

//senddatatoportbw/odisruptingpins9,10,and11,affect8,12and13???
PORTB|=0|(bit3state)|(bit5state<<4)|(bit6state<<5)//sethighpins
PORTB&=255&~(1bit3state)&~((1bit5state)<<4)&~((1bit6state)<<5)//set
lowpins
i'mstuckatthelastpartwhereisenddatatoportb,whichionlywanttoaffect
pins11and12,inreplacementofpins0and1.AmIontherighttracktodo
this?Thankssomuch!

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

lynettequek
3yearsago

(/member/lynettequek)

Reply

isthenumber36justanexample?youcansendoutnumberslessthan
64usingonlysixbits,soyouwouldn'tevenhavetoworryaboutpins8,
12,and13.
//senddatatoportdw/odisruptingpins0and1
PORTD|=((36<<2)&B11111100)
PORTD&=((36<<2)|B00000011)

lynettequek(/member/lynettequek)

amandaghassaei(/member/amandaghassaei)
3yearsago

Reply

thanksforyourreply!yup36isjustanexample.
followingwhatyoudidfortheinstructable:)whatifIwantto"shift"pins0
and1backtopins11and12?doIhavetoincludethispart?

//senddatatoportbw/odisruptingpins9,10,and11,affect8,12and13
PORTB|=0|(bit3state)|(bit5state<<4)|(bit6state<<5)//sethighpins
PORTB&=255&~(1bit3state)&~((1bit5state)<<4)&~((1bit6state)
<<5)//setlowpins

X
|
8

amandaghassaei(/member/amandaghassaei)(author)
(/member/lynettequek)

lynettequek
3yearsago

PORTB|=0|(bit0state<<4)|(bit1state<<5)//sethighpins

Reply

PORTB&=255&~((1bit0state)<<4)&~((1bit1state)<<5)//setlowpins
I'mprettysurethatwillworkforpins12and13

lynettequek(/member/lynettequek)

amandaghassaei(/member/amandaghassaei)

thankssomuch!willtryitout!

AbdulW87(/member/AbdulW87)

3yearsago

Reply

3yearsago

Reply

Thanksforthisinstructable,veryhelpful.CaniuseanAD712KNZsincethey
dontmakethe922anymore.

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

AbdulW87
3yearsago

(/member/AbdulW87)

Reply

yes,youmightalsocheckoutthelm386bcitdoesn'trequireadualpower
supply.

hopkinskong(/member/hopkinskong)

3yearsago

Reply

Hello,
Thanksforyourinstructable!Iamnowmanagedtousethistrickononeofmy
8051microcontroller!

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

(/member/hopkinskong)

hopkinskong
3yearsago

Reply

3yearsago

Reply

nice!

starock(/member/starock)

Tnankyousomuch~\()/~
1QuestionPlz:
HowcanIgenerateasoundlikeMarioGmae?ILove8Bitmusic.Makea8Bit
synthesizerismydream.T_T

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

(/member/starock)

starock
3yearsago

Reply

3yearsago

Reply

http://arduino.cc/en/Reference/tone

Reddyco(/member/Reddyco)

HeyAmanda!Greatjobonthisinstructable,I'musingittoembasemyworkon
aeletronicdrumsoundgeneratorwithArduino(hopefully,onedayI'llposthere
howtodoit).
I'mwritingtoaskabuotthat0.01uFand10ohmresistorinparallelwiththe
speakerandtheDCoffsetcapacitor.Whataretheyusedfor?
Thanksinadvance!

X
|
8

amandaghassaei(/member/amandaghassaei)(author)
(/member/Reddyco)

Reddyco
3yearsago

Reply

thanks!they'rejustthreretoreducenoise,notabigdealifyoudon'thave
them

flowirin(/member/flowirin)

3yearsago

Reply

what'stheupperlimitonthesamplingfrequencyforthearudino?canigetitup
to80kHz?

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

flowirin
3yearsago

(/member/flowirin)

Reply

definitely,youcouldgetuptoafewhundredkHzwithnoproblem.
OneconcernisthattheresistorladderdacthatIshowinthisiblemight
notrespondfastenoughasyouincreasethesamplingratethismight
endupapplyingalowpassfilteronyouroutput.Iupdatedstep1witha
littlemoreinfoaboutalternativeDACs,youmightcheckouttheR2RDAC
IC(http://www.digikey.com/productdetail/en/TLC7528CN/29618715
ND/277516)IdemonstratedinthisInstructable
(http://www.instructables.com/id/StereoAudiowithArduino/)(youcan
wireituptoonlyuseonechannelifyouneed),ithasmuchbetterquality
controlthenjustthrowingabunchofresistorstogetheronabreadboard
andIthinkitwillgiveyoubetterresults.Itsaysthesettlingtimeforthat
DACis100ns,whichshouldworkfinefor80kHzsamplingrate.
youwillalsohavetochangethefrequencyoftheinterrupt.For40kZI
usedthisline:
OCR0A=49//=(16*10^6)/(40000*8)1
trythisinstead:
OCR0A=24//=(16*10^6)/(40000*8)1

ibirnam(/member/ibirnam)

3yearsago

Reply

Justwantedtoconfirmthis:sincetheTS922INisnowobsolete,wouldthis
(http://www.mouser.com/Search/ProductDetail.aspx?
qs=UqMwQYdMOTar844FDvZpSw%3d%3d)beasufficientreplacement?
Thankyou!

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

ibirnam
3yearsago

(/member/ibirnam)

Reply

that'sgoingtobereallyhardtoworkwbcit'ssurfacemount.Justgetthe
lm386chipandacoupleofresistorsandcapacitorsandwireituplike
this:
http://www.hobbyhour.com/electronics/lm38620.gif
itmayneeda9vsupplyinsteadof5v,Ican'tremember.

heymarky(/member/heymarky)

amandaghassaei(/member/amandaghassaei)
3yearsago

Reply

I'mworkingmywaythroughthistryingtosubstitutethe
lm386atStep3.Thegifyoulinkedlookslikethereplacementforthe
amplifier.Icanseethepartthatreplacesthelowpassfilter(thanksto
yourexcellentexplanationofwhatthatis)butIdon'tseeanythingthatI
recognizeasbeingtheDACbuffer.Isthebufferunnecessarywiththe
lm386,orisitthereandIdon'trecognizeit?
Thanks!
PSI'masoftwareengineer,sousesmallwords.:)

X
|
8

amandaghassaei(/member/amandaghassaei)(author)
(/member/heymarky)

heymarky
3yearsago

Reply

actually,aresistorandcapacitoronlyactasalowpassfilterwhenthe
outputsignalisconnectedtothejunctionbetweenthem,here
(http://tuxgraphics.org/toolbox/circuitdesignrc.gif)isapic.Youcansee
thatswitchingtheorderofthecomponentswillturnitintoahighpass
filter.Thelm386circuitisnotwiredupthesameway,soitwon'tactasa
lowpassfilter.Sohere'swhatIwoulddo:
arduinodaclm386lowpassfilteroutput
youcouldalsouseatl1072ortl082toreplacebothts922's,butthese
requirea+/9vsupply,whichisannoying.

ibirnam(/member/ibirnam)

amandaghassaei(/member/amandaghassaei)

Reply

3yearsago

Awesome,thanksforthehelp!

waqarahmed236(/member/waqarahmed236)

ibirnam(/member/ibirnam)

IbirnamIsLM386workinginsteadofusingTS922IN?

joshuaphua1(/member/joshuaphua1)

3yearsago

Reply

3yearsago

Reply

neartheendofthecircuit,what'sthe0.1uFcapacitorand10Ohmresistorfor?
anotherkindoffilter?

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

(/member/joshuaphua1)

joshuaphua1
3yearsago

Reply

3yearsago

Reply

notafilter,justhelpsmaketheDCoffsetmorestable.

joshuaphua1(/member/joshuaphua1)

CanyouexplaintheDCoffsetmore?Iunderstandhowa+2.5VDCoffsetworks
butamconfusedaboutthisone.Thanks!

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

joshuaphua1
3yearsago

(/member/joshuaphua1)

Reply

Ialwaysthinkofitlikethis:thesignalgoingintoonesideofthecapacitor
causesanalternatingexcessofpositiveornegativechargeononesideof
thecap.Theothersideofthecapreactsbyaccumulatingoppositecharge
thiscausesanalternatingvoltageontheoppositesideofthecap.Since
nocurrent(oranegligibleamount)actuallygetspassedacrossthecap,
theDCvoltageononesidedoesnottransferovertotheotherside,sothe
alternatingvoltageiscenteredaround0.

joshuaphua1(/member/joshuaphua1)
(/member/amandaghassaei)

amandaghassaei
3yearsago

Reply

3yearsago

Reply

thanks!!

punk1290(/member/punk1290)

IhadtoreplacetheTS922withanLM386.Iamtryingtogetstep3working.
UnfortunatelyIdon'thaveanoscillatortoverifyIdidthingsrightinstep2.My
issueisthatwhenIconnectmyAdruinotomybreadboardwiththiscircuitthe
powerLEDdimsandmycomputernolongerseestheArduino.Itried
unhookingthebreadboardandthenloadingtheprogramtomyArduino.That
workedfine.WhenIconnectedeverythingbackup,theLEDcameon
immediatelywithoutrampingup.Anythoughtsorideasforme?

amandaghassaei(/member/amandaghassaei)(author)

X
|
8

punk1290
3yearsago

(/member/punk1290)

Reply

soundslikeyou'reshortingoutoneofthearduino'spowerpins(thestrip
ofpinsneartheanaloginputs).Doublecheckthose.

Ploopy(/member/Ploopy)

X
|
8

3yearsago

Reply

Howdidyouwriteyourcodeinthosesquaresthatyouscroll?

amandaghassaei(/member/amandaghassaei)(author)

X
|
8

Ploopy
3yearsago

(/member/Ploopy)

Reply

it'safeaturethat'sactuallynolongersupported,sorry!we'relookingat
newwaystomakecodeeasiertoembedintheeditor,itwillhappen.

avionics2(/member/avionics2)

3yearsago

Reply

ThankyousomuchformakingitclearnowIunderstandeverythingveryclearly
andthankyouformakingsuchaconcisetutorial.Myhatofftoyou.
takecareandpleasegiveusmoretutorials.

X
|
8

amandaghassaei(/member/amandaghassaei)(author)

avionics2
3yearsago

(/member/avionics2)

Reply

thanks!

I MoreComments

FEATURED CHANNELS

Woodworking

Paper

KitchenHacks

Puzzles

LaserCutting

Space

Homesteading

3DPrinting

Sewing

(/tag/type

(/tag/type

(/tag/type

(/tag/type

(/tag/type

(/tag/type

(/tag/type

(/tag/type

(/tag/type

id/category
id/category
id/keyword
id/category
workshop/channelcraft/channel kitchen%20hacks/?play/channel
woodworking/)

paper/)
Newsletter

sort=FAVORITES)

Join2million+toreceiveinstant
DIYinspirationinyourinbox.
enteremail

I'min!

id/category
id/keyword
workshop/channel astronomy/?

puzzles/)

lasercutting/)
AboutUs

id/category
id/category
id/category
home/channel technology/channel
craft/channel

sort=FAVORITES)homesteading/)

WhoWeAre(/about/)
Advertise(/advertise/)
Contact(/about/contact.jsp)
Jobs(/community/PositionsavailableatInstructables/)
Help(/id/howtowriteagreatinstructable/)

FindUs

Resources

Facebook(http://www.facebook.com/instructables)

ForTeachers(/teachers/)

Youtube(http://www.youtube.com/user/instructablestv)

ArtistsinResidence(/air)

Twitter(http://www.twitter.com/instructables)

GiftPremiumAccount(/account/give?sourcea=footer)

Pinterest(http://www.pinterest.com/instructables)
Google+(https://plus.google.com/+instructables)

Forums(/community/)
Answers(/tag/typequestion/?sort=RECENT)
Sitemap(/sitemap/)

3DPrinting/)

sewing/)

TermsofService(http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=21959721) |
PrivacyStatement(http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=21292079) |
LegalNotices&Trademarks(http://usa.autodesk.com/legalnoticestrademarks/) | MobileSite(http://www.instructables.com)
(http://usa.autodesk.com/adsk/servlet/pc/index?id=20781545&siteID=123112)
2016Autodesk,Inc.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy