Conversoranalgicodigital
Laconversinanalgicadigital,eslaquenospermitetransformarunasealanalgica(unvoltaje),enunarepresentacin
digital(nmerosbinarios)delvalorcorrespondientealatensinenelpindeentradaparapodertrabajarconella.Seutilizaen
infinidaddeaplicaciones,lomscomnesusarlaparaleersealesprovenientesdealgnsensor(temperatura,humedad,
acelermetros,etc.).
ElPICquesehautilizadoenestetutorial,eselPIC16f877A,perosiseutilizacualquierotro,elfuncionamientoes
prcticamenteelmismo.
Enestaprimerapartedeltutorial,sehaceunapequeaintroduccinconeldatasheetdelPIC16f877A,paradarnosaconocer
unpocosufuncionamientoydeestemodotambintenerencuentaqueparmetrosdebemosfijarnosalahoradeconfigurarel
conversorconcualquierotroPIC.Tambinsehablaunpocodelasfuncionesautilizarenelcdigoyloquerealizacadauna.
Enelsegundovdeo,seexponeuncdigodeejemplo,enelcualseleeunatensindeenlaentradaanalgicaAN0queest
conectadaaunpotencimetro(lacualpodraserlasealanalgicaprovenientedecualquiersensoruotrodispositivo),y
dependiendodeculseasuniveldetensin,seenciendeundeterminadonmerodeledsqueesequivalentealatensin
leda.Tambinseexplicaunaconfiguracinprevia,delacualnosproveeelpropiocompiladoralusarelWizardaunquenoes
necesariopuestoquelopodemoshacerdirectamentenosotrosmismossiconecemoslasfuncionesnecesariasparallevara
cabolaconfiguracin
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 1/25
2017514 Conversoranalgicodigital
Comovenimoshaciendoenlosltimostutoriales,elltimovdeooenlapartefinaldelvdeo,lesmostramosel
ejemplorealizadoenelcdigofuncionandoenunaprotoboard.Asustedespuedenhacerlapruebatambinquesiemprees
recomendableparaafianzarlosconocimientos.
Sitienenalgunadudanodudenencomentarlaenelforodelblog.
Descarga:CdigoyEsquemtico
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
71Comentarios
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 2/25
2017514 Conversoranalgicodigital
HECTORGONZALEZ noviembre28,2010alas8:04am
OYECOMPAEROYOTRATEDEMONTARELMAINTUYOYELCIRCUITOENPROTEUSYNOFUNCIONANOSEQUE
TENGOMALPEROSIEMPRESALTAALCASE6SIMEPODRIASCOLABORARENVIANDOMEELLENGUAJEESQUE
LONESECITOURGENTISIMOPARAMIPROYECTOOSITIENESCOMOUNIRUNLCDYUNADCTELOAGRADECERIA
COMPAEROESPEROTURESPUESYDEANTEMANOGRACIAS
Twistx77 noviembre28,2010alas10:21pm
Buenas,
Posteatucdigoenelforoparaversitepodemosayudarpuestoaquesinverelcdigoesmuydificil.
Encualquiercasovoyasubirelprogramaquemicompaeronolohahecho.
Saludos!
Dantechs diciembre16,2010alas6:01am
muyinterezantestodoslosvideotutorialesmeparecenqueestanmuybienestructuradosyvanaloquetodosnosinterezaal
grano
felicitaciones!
Twistx77 diciembre16,2010alas3:34pm
Muchasgracias!
Mealegroquetegusten.
Saludos!
ulysseszxy diciembre19,2010alas6:35pm
Ehestadoviendolostutorialesyverdadsonmuyinteresantes,
ymeestanayudandomuchopararelizarmisproyectos
talvezpodriashaceruntutorialdecomorealizarelcontrol
deADCaunPWM.enestecasounpotenciometrocomoADC,ycontrolarunservomotor.buenograciasy
FELICITACIONES!
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
Josean diciembre21,2010alas10:04pm
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 3/25
2017514 Conversoranalgicodigital
FelicidadesTwistx77,
respectoalADC,megustarasabersiseraposiblecentrarlaconversinenunrangodeterminado.Porejemplo,siquiero
medirlatensindeunabateraqueoscilamuypoco,siemprevaaestarentre20y24voltios,comohagoparaqueel0sea
20voltiosyel24el1024?
Gracias
Twistx77 diciembre22,2010alas12:29am
Buenas,
graciasporelcomentario.PorahorayahemostradocomousarelADC,elprximovdeohablardelPWMymsadelante
pondrtodojuntoenunasolaaplicacin.
Saludos!
Twistx77 diciembre22,2010alas12:59am
Muchasgracias,
lomsfcilquesemeocurreeshacerundivisorresistivodemodoqueparacuandotengas24Venlaresistenciadeldivisor
tengas5Vmximo.Deesamaneratendrsque24Vson1024ocasi.Luegoaunque20Vnosean0eneldivisorloquepuedes
haceresusarunatensindereferenciaparalaVrefcomopuedeserporejemplo2Vloqueharaquetengaslalecturaentre
5Vy2Vparalocualtendrasunaresolucindeunos3mVparaextrapolarloluegoalatensindelabatera.Nosesime
explicadobien.Terecomiendoquesilohacespongasunzenerde5.1Veninversaenlaentradadelconversorparaevitarque
sequemeelconversorsilabaterasobrepasalos24V,otrasolucinpodraserbajara4Vlos24Veneldivisorresistivo.Ten
encuentaquenodebesusarresistenciasdevalorpequeopuestoqueesoharquecirculemuchacorrientedelabaterapor
tudivisor.
Cualquierdudaporfavorexponlaenelforoquenospermitesubirimgenesparaexplicarmejor.Saludos!
Josean diciembre22,2010alas12:53pm
GraciasTwistx77,
alfinalhecambiadolabaterade24a12v,yheaadidoundivisordetensinpara,comodices,hacerquealconversorle
lleguen5vcuandohayunos14vy0vcuandohay0v.Enelclculoquehehechomesaleunade12kconotrade6k8.Como
estoyusandolaarduinoUNO,nossiponiendounatensinde7venlaVrefmeharaque7vfuerael0lgicoyel14los
1023.Paraobtenerlos7venelVrefsupongoquetendraquehacerotrodivisordetensinparaobtenerenvezde5v7v(con
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
dosde12k),no?Supongoqueusandoresistenciasdeestevalornoharfaltameterundiodo,no?
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
Gracias. mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 4/25
2017514 Conversoranalgicodigital
Twistx77 diciembre24,2010alas7:02pm
Holaamigo,
Sientodecirtequenopodrsconectarlos7ValVRefdelADCpuestoaquesegneldatasheetdelATMega328(Elmicrode
Arduino)latensinmximaenVRefeslaquetengasenAVccyestacomomximopuedevalerVcc+0.3Vporloquesiest
alimentadoa5Vlamximatensinquepodrsponeresde5.3V.Lopuedescomprobareneldatasheetenlapgina328,aqu
tedejounlinkhttp://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf.
Saludos!
Josean diciembre24,2010alas9:51pm
Graciasporelapunte,
enmicasoalimentoelarduinoUNOconlapropiabatera(12v),atravsdeuncircuitoreguladordetensinLM317(lotendra
queajustara6.7<V<7.3)conectadoal"jack"delarduino.Detodosmodosluegomehedadocuentaquenecesitosensaruna
tensinms,enestecasode5V,porloqueentiendoqueenelcasodelaarduinolareferenciaescomnparatodaslas
entradasanalgicas,no?,porloquemigozoenunpozo.
GraciasTwistx77
Enrique88 enero2,2011alas6:45pm
Hola,
EstoyrealizandounproyectoenelquesiquenecesitoqueelADCvayalomsrpidoposible.LohagoconelPIC18F4550.
Tengounasdudasqueaversimepuedesayudararesolver.Comobiendices,paraconseguirlamximarapidezhayquebajar
lafrecuenciadetrabajo,poniendouncristalmenosrpido.Elproblemaquetengoesquenecesitouncristaltrabajandorpido
debidoaquehagoelenvoporUSB2.0.Megustarasaberqueposiblessolucionestengo,comosepodranconfigurarlos
fuses,algunamaneradesolucionarlo,yaquehevistopordatasheetquepuedeserqueelcristaltengaunaconfiguracinpara
elUSByasuvezotroparaelresto.
Graciasyesperohabermeexplicado.
Saludos,
Enrique
Twistx77 enero6,2011alas4:10pm
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
Buenas,
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 5/25
2017514 Conversoranalgicodigital
nosesitehasconfundidoalescribirloperoparaconseguirlamximarapideztienesquesubirlafrecuenciadetrabajono
bajarla,poniendouncristalmsrpido.AhoralavelocidaddelADCvendrdeterminadoporelrelojqueelijasenla
configuracinperotienesquetenerencuentaquetienesqueconfigurarloparaqueeltiempodeadquisicindecadabitseael
suficiente.SimalnorecuerdoparalamayoradelosPICdelaserie16era1.6uS.Ademstienesquetenerencuentaque
tienequepasaruntiempomnimoentreconversionesquetambinlotendrsespecificadoeneldatasheet.Porlotantono
esperesfrecuenciasdemuestreode500k/ssinoinferiores.
PorlotantoponuncristalquetesirvaparaelUSBpuestoaqueseguroqueesmsquesuficienteparaconseguirlamxima
velocidaddelADC.
Saludos!
vicente febrero2,2011alas7:33am
podriasponermastutorialessobrecodigosenpiccysimularloenproteus!!!
saludos!!
Twistx77 febrero5,2011alas12:18pm
HepuestotutorialesenCdePIC,cuandotengatiemposubirelprximo.
NolossimuloenProteus,losmontoenunaprotoboardydemuestrocomofuncionan.
Saludos!
Lennon abril3,2011alas8:23pm
Buenastardes,Twistx77.
Enprimerainstanciaquierofelicitarteporeltrabajorealizado,meparecequeestasaportandomuchoalconocimientoconeste
blog.EscriboporquemeencuentrodesarrollandounproyectodondenecesitomedircorrienteyvisualizarlaenunLCD.Como
solucinplantierealizarunamedidaindirectadelacorientemedienteelvoltajeylaresistencia(Leydeohm),perotuveun
problemayaquelosrangosdecorrienteamedirestabanenmicroamperiosyportantoelvoltajeenlaentradadelA/Deramuy
pequeo,parasolucionarloutilizeunamplificadordeinstrumentacinyestableciunarelacin.Buenoenfintengoelpseudo
cdigoparalasolucindelproblema..enespecialqueriaversimepodriasayudarconlavisualizacinenelLCDdelosvalores
obtenidos.
Twistx77 abril4,2011alas10:41pm
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
Buenas,
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 6/25
2017514 Conversoranalgicodigital
Necesitosabercualeselproblemaquetienesparapoderayudarte
Exactamentequetepasa?
quemicroyquelenguajeestsusando.
queLCD?
Saludos!
Lennon abril5,2011alas3:40am
HolaTwistx77,
EstoyusandoelPIC16F877A,inicialmenteestabadesarrollandoelproyectoenAssembleperomepareciomuytediosoyel
proyectocomotalnorequiereunestrictocontroldemaquina.PoresobusquealternativasyviqueprogramasenCconCCS
esbastantesencillo.NecesitounejemplodondesehagausodelconversorADysemuestreenunLCDalgunvalor
relacionadoconlalecturadelA/D.Soloquierotomarlocomoejemploparasentarmeadesarrollarmiproyecto.
Saludos,Gracias
jonathan abril11,2011alas3:02pm
hola.megustanmuchoestosvideossonmuyclarosensumayoria.
miraloqpasaesqpuesnoentiendomuybnlatabladefrecuanciadeoperacionytdaypuesnosediigamoscomoobtener
este1,6us,tengoqhacerunconversorelcualdebeserlomasrapidoposibleyloquierohacerconun16,cualeselminimo
tiempoqpuedoobtener?
Eduardo abril11,2011alas4:53pm
Quicierasabersimepuedesorientar,comohagoparamanejarelconvertidoranalogodigitaldelpic16f873conectadoa5cny
Twistx77 abril12,2011alas12:51pm
Buenas,
noentiendocualestuproblema.Solonecesitassaberlafrecuenciaalaqueesttrabajandotumicroparacalculareltiempo.
Detodasmaneras,sivasaldatasheetybuscasSelectingtheA/DConversionClock,tendrseneseapartado,unatablaenla
quedicelaconfiguracincorrespondientedependiendodelosciladorqueestsusando.
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
Conun16terefieresaunpicdelaserie16no?Siesascreoquetodoslosdelaserie16tienenuntiempomnimoporbitde
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
1,6uS.Quizshayaalgunoespecialperoengenerallaserie16usaconversoresdeesavelocidad.
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 7/25
2017514 Conversoranalgicodigital
Saludos!
Andrea abril14,2011alas10:43pm
Muchasgraciasportuaporte!
foraneo77 mayo7,2011alas6:16am
amigoheestadousandoelarduinoheinvestigadounpoco,hevistotustutorialesdichodepasosonmuybuenoshayalgo
quenomequedaclaroaunesrespectoalacomunicacionserial,quisieraporfavorqueexpliquesestetematantoenarduino
comoenpic(veoqueseusabastanteenvariasfuncionesdelarduino)
neo3shion junio2,2011alas3:53pm
buendia
hemontadolaslineastalcuallasponesenelvideo:
#includeI:\U\Electronica3\proyecto\programaadc.h
#bytePORTB=0x06
voidmain()
{
////Config///
setup_adc_ports(AN0)
setup_adc(ADC_CLOCK_INTERNAL)
//setup_pp(PMP_DISABLED)
setup_spi(SPI_SS_DISABLED)
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1)
setup_timer_1(T1_DISABLED)
setup_timer_2(T2_DISABLED,0,1)
setup_comparator(NC_NC_NC_NC)
unsignedint16tension=0
set_tris_b(0x00)
set_adc_channel(0)
delay_us(10)
while(1){
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
tension=read_adc()
delay_ms(1) mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 8/25
2017514 Conversoranalgicodigital
valor=tension/127
switch(valor){
case0:PORTB=0b00000000
break
case1:PORTB=0b00000001
break
case2:PORTB=0b00000011
break
case3:PORTB=0b00000111
break
case4:PORTB=0b00001111
break
case5:PORTB=0b00011111
break
case6:PORTB=0b00111111
break
case7:PORTB=0b01111111
break
case8:PORTB=0b11111111
break
default:break
}
}
//TODO:USERCODE!!
yalmomentodecompilarelarchivoseproducen14errores:
***Error51programaadc.cLine16(1,9):Anumericexpressionmustappearhere
***Error12programaadc.cLine25(4,11):Undefinedidentifiertension
***Error12programaadc.cLine27(4,9):Undefinedidentifiervalor
***Error12programaadc.cLine29(11,16):Undefinedidentifiervalor
***Error51programaadc.cLine30(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine32(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine34(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine36(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine38(7,11):Anumericexpressionmustappearhere
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
***Error51programaadc.cLine40(7,11):Anumericexpressionmustappearhere
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
***Error51programaadc.cLine42(7,11):Anumericexpressionmustappearhere
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 9/25
2017514 Conversoranalgicodigital
***Error51programaadc.cLine44(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine46(7,11):Anumericexpressionmustappearhere
***Error51programaadc.cLine49(7,14):Anumericexpressionmustappearhere
esperomepuedasayudarpronto,enverdadlonecesito.
milgracias
Luicho666 junio10,2011alas6:14pm
Elprimererrorpuedeserquenohayasdefinidolavariablevalor.
Saludos.
Twistx77 junio12,2011alas11:03pm
Buenas,hascomprobadoqueel.hestbien?Mepuedesdecircualaheslalinea16?
starter junio16,2011alas11:01pm
Holaneo3shion,ammepasaexactamentelomismo.Aquesedebe?
saludos,
Twistx77 junio16,2011alas11:07pm
Nohaydeque.Saludos!
Twistx77 junio16,2011alas11:08pm
Hehechovdeossobreambos.Queesloquenoentiendesexactamente?
Twistx77 junio16,2011alas11:09pm
Pruebaaponerdebajodeestalnea:unsignedint16tension=0
unsignedint8valor=0
Saludos!
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 10/25
2017514 Conversoranalgicodigital
starter junio16,2011alas11:21pm
Hola,
medaigual15errores,
yloraroesquehedescargadoelcdigoescritoportiylohecompiladoymedatambin15errores.
Queestarhaciendomal.?
saludos
starter junio16,2011alas11:33pm
unsignedint16tension=0//VariableparaalmacenarelvalordetensinleidoporelADC
unsignedint8valor=0//Variabletemporal.
set_tris_b(0x00)//0b0000000//ConfiguramoselpuertoBcomosalida.
set_adc_channel(0)//elegimoselcanalquevamosaleer.
delay_us(10)//esperamos10uSnecesariosparaelADC
while(1){
tension=read_adc()//Leemoslatensinenelcanalqueelegimos.
delay_ms(1)//Esperamosunpoco.
valor=tension/127//CalculamosacuantosLEDsencendidoscorrespondelatensinleida.
switch(valor){//Encendemoslosledsquehaganfalta.
case0:PORTB=0b00000000
break
case1:PORTB=0b00000001
break
case2:PORTB=0b00000011
break
case3:PORTB=0b00000111
break
case4:PORTB=0b00001111
break
case5:PORTB=0b00011111
break
case6:PORTB=0b00111111
break
case7:PORTB=0b01111111
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
break
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 11/25
2017514 Conversoranalgicodigital
case8:PORTB=0b11111111
break
default:break
}
**ERROR51adc.cLine18(4,12):Anumericexpressionmustappearhere
**ERROR51adc.cLine19(4,12):Anumericexpressionmustappearhere
**ERROR12adc.cLine29(7,14):Undefinedidentifiertension
**ERROR12adc.cLine31(7,12):Undefinedidentifiervalor
**ERROR12adc.cLine23(14,19):Undefinedidentifiervalor
**Error51adc.cline34(10,14):Anumericexpressionmustappearhere
**Error51adc.cline36(10,14):Anumericexpressionmustappearhere
**Error51adc.cline38(10,14):Anumericexpressionmustappearhere
**Error51adc.cline40(10,14):Anumericexpressionmustappearhere
**Error51adc.cline42(10,14):Anumericexpressionmustappearhere
**Error51adc.cline44(10,14):Anumericexpressionmustappearhere
**Error51adc.cline46(10,14):Anumericexpressionmustappearhere
**Error51adc.cline48(10,14):Anumericexpressionmustappearhere
**Error51adc.cline50(10,14):Anumericexpressionmustappearhere
**Error51adc.cline53(10,17):Anumericexpressionmustappearhere
15Errors,OWarning
CoolDann julio5,2011alas5:36pm
Seveinteresantelainformacion,lomalodeesosvideos,elsonidoestahorrible,ysiaesoleagregamoslamaneradeque
hablaselvideosaleechadoaperdertodo.comoseateagradezcotucolaboracion
AVEAE julio9,2011alas5:05am
Holameaparecenlosmismoserroresalcompilarlocomolodicenloscomentarios,sepuedetratardelcompilador?yaqueel
cdigoestbien,yolorealicparaelpic16f873aconuncriztalde4mhz
AVEAE julio9,2011alas7:20am
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
Holaatodosdenuevoyareparelerrorquehanmencionadoanteriormente,loquedebenhaceresdeclararlasdosvariables:
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
unsignedint16=tension=0yunsignedint8=valoralprincipiodelprogramadespuesdelvoidmain(){
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 12/25
2017514 Conversoranalgicodigital
nosesidigolocorrectoperodeestaformasetomancomountipodevariablesglobales.Enciertoscompiladoresocurrelo
mismo,tuveunproblemaparecidoconunprogramaquerealicenjava.Buenoesoestodoamimefuncionintentenlo
AVEAE julio9,2011alas8:35am
nota:
unsignedint16tension=0
unsignedint8valor
nollevaneligualcomolopusearriba(unsignedint16=tension=0yunsignedint8=valor)
porsilasdudas
Bravo julio22,2011alas4:36am
Felicitaciones!!!muyinteresantelostutorialesdetuweb.sobretodoparalosquenosiniciamosolosquetenemosnociones
deprogramacion,excelentesitioygraciasporcompartirtusconocimientosatodoslosinteresados.
hastapronto..
Gracias,
Mealegrodequeteguste.
Unsaludo.
Bravo julio23,2011alas7:08pm
Saludos
mecustariasabercomohagoparatomarvaloresconpuntodecimalesenloscase:delswitch,puestoqueenvesdel
potenciometrousoresistenciasy100homenserie.
Ejemplo:
case0.20:
portb=0b00000001
break
case0.50:
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
portb=0b00000010
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
break
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 13/25
2017514 Conversoranalgicodigital
Enestecasotomalosvaloresdecase:comorepetidos.
israel julio25,2011alas6:16am
holaestoyempezandoaprogramarenpicctengounsensorultrasonicodedistanciaLvmaxsonarez1quieromedirdistancia
encmensumodoanalogicoelsensortieneunrangodemedidade0a254pulgadasestesensorvaria9.8mvporpulgada
nosesimepuedarunaideaparalaprogramacionylaconversionenpicc
Twistx77 julio27,2011alas2:13pm
SabesusarelADCdePIC?
israel julio27,2011alas8:21pm
masomenosatupregunta,conelapoyodelosvideotutialesyejemplosdelaredconelpicquevoyautilzar,puderealizarun
programaqueleelatensionde5voltiossolomefaltaintegrarelsensorLvmaxsonarez1perotengodudasparadela
conversionalquienquemeexpliqueymedespejedudas.elprogramalosimuleenproteusyfunciona
gracias!
#include
#deviceadc=10
#FUSESHS,NOWDT,NOPROTECT,PUT
#usedelay(clock=8000000)
#include
#usefast_io(d)//DirectivaEntrada/SalidadelPuertoD
voidmain()
{
int16q
floatp
setup_adc_ports(AN0)//Canal0analgico
setup_adc(ADC_CLOCK_INTERNAL)//FuentederelojRCinterno
delay_ms(100)
lcd_init()
for()
{ Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
set_adc_channel(0)//Habilitacincanal0
delay_us(20) mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 14/25
2017514 Conversoranalgicodigital
q=read_adc()//Lecturacanal0
p=q*5.0/1024//Conversinatensin
printf(lcd_putc,\fADC=%4ld,q)
printf(lcd_putc,\nVoltage=%01.2fV,p)
delay_ms(1000)
}
}
carblack julio29,2011alas8:44pm
MuchasgraciasporcompartirtusexperienciasTwistx77ytambienquisieradarmiaportedandosolucionalosproblemas
quesepresentaronconunoserroresdecompilacion.
estaesteeselprogramafuentequefuncionaprobadotantoenproteuscomoenprotoboard:
/////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////ledsconcontrolanalogico(potenciometro////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////
#include
#deviceadc=10
#FUSESNOWDT//NoWatchDogTimer
#FUSESHS//HighspeedOsc(>4mhzforPCM/PCH)(>10mhzforPCD)
#FUSESPUT//PowerUpTimer
#FUSESNOPROTECT//Codenotprotectedfromreading
#FUSESNODEBUG//NoDebugmodeforICD
#FUSESNOBROWNOUT//Nobrownoutreset
#FUSESNOLVP//Nolowvoltageprgming,B3(PIC16)orB5(PIC18)usedforI/O
#FUSESNOCPD//NoEEprotection
#FUSESNOWRT//Programmemorynotwriteprotected
#usedelay(clock=8000000)
/////////////////////////////////////////////////////
//#include
#bytePORTB=0x06//DefinimosPORTBconladireccindelregistroPORTB.
voidmain()
{
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
inttension=0
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 15/25
2017514 Conversoranalgicodigital
////Configuracin///
setup_adc_ports(AN0_AN1_AN3)
setup_adc(ADC_CLOCK_INTERNAL)
//setup_pp(PMP_DISABLED)
setup_spi(SPI_SS_DISABLED)
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1)
setup_timer_1(T1_DISABLED)
setup_timer_2(T2_DISABLED,0,1)
setup_comparator(NC_NC_NC_NC)
//unsignedint16tension=0
//VariableparaalmacenarelvalordetensinleidoporelADC
//unsignedint8valor//Variabletemporal.
set_tris_b(0x00)//0b0000000//ConfiguramoselpuertoBcomosalida.
set_adc_channel(0)//elegimoselcanalquevamosaleer.
delay_us(10)//esperamos10uSnecesariosparaelADC
while(1){
tension=read_adc()//Leemoslatensinenelcanalqueelegimos.
delay_ms(1)//Esperamosunpoco.
//valor=tension/127
//CalculamosacuantosLEDsencendidoscorrespondelatensinleida.
valor=tension/25//puedesvariarparaverelcambioderespuesta
//CalculamosacuantosLEDsencendidoscorrespondelatensinleida.
switch(valor){//Encendemoslosledsquehaganfalta.
case0:PORTB=0b00000000
break
case1:PORTB=0b00000001
break
case2:PORTB=0b00000011
break
case3:PORTB=0b00000111
break
case4:PORTB=0b00001111
break
case5:PORTB=0b00011111
break
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
case6:PORTB=0b00111111
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
break
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 16/25
2017514 Conversoranalgicodigital
case7:PORTB=0b01111111
break
case8:PORTB=0b11111111
break
default:break
}
Atte
Carblack
jorgeluis noviembre18,2011alas5:51pm
olaantesquenadakierofecilitarlosbuenosvideostutorialesquedanaconocerestanbastantebuenos,tengopocotiempode
estarmetidoenestodeprogramaciondemicrocontroladoresyaoratengounaduda,estuvebuscandoenlawebalgoqme
aiudaraperonopudesolucionaraun
elprogramaquekierohacerfuncionareselsiguiente:
alencenderdebomostrarunafraseenellcdpulsetecla0o1,elcualconalgunodeestosvaloresdeboseleccionarelcanal
0ocanal1parahacerlaconversionADymostrarelvalordelvoltajeenellcddelcanalselecccionadoysinoesningunade
estasteclasquememuestreteclaincorrectapor1segundoyluegoquememuestreotravezlafrasepulsetecla0o1.
miproblemaesqalparecernoiegalasealdeltecladoyporellonoejecutaningunadelasconversiones.nocedondeestael
errorxfaaversipuedenaiudar
aquimuestroelcodigoquerealiceaversiaiudanaencontrarelerrorxfavor
#include16f877a.h
#deviceADC=10
#fusesNOWDT,HS,NOLVP
#usedelay(clock=10M)
#includelcd.c
#includekbd.c
voidmain()
{
charc
int16q,m
int8x
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
floatp,n
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 17/25
2017514 Conversoranalgicodigital
lcd_init()
port_b_pullups(TRUE)
kbd_init()
set_tris_a(0xFF)
set_tris_b(0xFF)
setup_adc(ADC_CLOCK_DIV_32)//32/10M=3.2us
setup_adc_ports(AN0_AN1_AN3)
printf(lcd_putc,\fpulsetecla01)
BUCLE:
do
{
c=kbd_getc()
}while(c==0||c==1)
x=c48//loconviertodeASCIIadecimal
if(x==0)
{
delay_ms(100)
set_adc_channel(0)//seleccionocanal0
delay_us(20)
q=read_adc()
p=q*(5.0/1023.0)
printf(lcd_putc,\fCANAL0=%fv,p)
}
if(x==1)
{
delay_ms(100)
set_adc_channel(1)//seleccionocanal1
delay_us(20)
m=read_adc()
n=m*(5.0/1023.0)
printf(lcd_putc,\nCANAL1=%fv,n)
}
else
{
printf(lcd_putc,\fteclaincorrecta)
delay_ms(1000)
printf(lcd_putc,\fpulsetecla01)
} Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
gotoBUCLE
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
} mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 18/25
2017514 Conversoranalgicodigital
keydarkman noviembre19,2011alas4:13pm
HevistoqueelMikrocesmuchomasfacilqueelcssyademasmasintuitivoenunascuantaslineasdecodigoseobtieneel
valordigitaldelaconversionanalogicadeberiandeprobarloyountiempotambiencomenseconelcssperonomegustoya
queparacadacosatieneunafuncionyunotienequememorizarsemuchasfuncionesenesteIDEparahaceralgomuysimple
comoconvertirunvaloranalogicoendigital.
leonardo diciembre3,2011alas1:24pm
#include
#deviceadc=10
#usedelay(clock=4m)
#bytepuerto_a=0x05
unsignedint16tension=0
unsignedintvalor
voidmain(){
setup_adc_ports(AN0_analog)
setup_adc(adc_clock_internal)
set_tris_a(0x00)
set_adc_channel(0)
delay_us(10)
while(1){
tension=read_adc()
delay_ms(1)
valor=tension/255
switch(valor){
case0:puerto_a=0b00000000
break
case1:puerto_a=0b00000001
break
case2:puerto_a=0b00000011
break
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
case3:puerto_a=0b00000111
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
break
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 19/25
2017514 Conversoranalgicodigital
default:break
leonardo diciembre3,2011alas1:27pm
perdontengoalgunasdudasyaquecambieelcodigo.
1)porquenomedejaponerlasvariablesenelmain..
2)comodeclaroeltrisenestepic12f683
3)quepuertopongoenestepicycomoencuentroladireccion..
4)funcionaenelproteussiloquierodepurarahi..
graciasportodoysiguecontusvideossaludos
leonardo diciembre3,2011alas1:29pm
sicopiasypeganofunciona,tienequerealizartuelcodigo,saludos
leonardo diciembre3,2011alas1:35pm
yamedicuentalodelasvariableshayquedeclararlasentesdelossetup,lodelpuertotodabianoloentiendocomolodeclaro
yeltrismenos
leonardo diciembre7,2011alas9:30pm
holafuncionaenelproteus?????yaqueahinomeandavoyaprobarenlarealidad,saludos
ALFONSO abril2,2012alas9:54pm
hola,muycheveretusvideos,sabesdeberiashacerunoconunmoduloLCD.yexplicarelcodigoseriadegranutilidad.
graciasymuchosexitos.
yeison abril14,2012alas3:44pm
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
muybuenoperocomoutilizolosvoltajesdereferencia
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
vrefy+verftengounasealqueoscilaentre4.5y5voltioscomolehagoagradezcocualquierayudadeantemanoquedios
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 20/25
2017514 Conversoranalgicodigital
losbendiga
Gonzalo abril25,2012alas6:23pm
holasoydeperutabienxeverelostutos,quisieraquemeayudarasaadecuarlasealdelsensorlm35paraleertodosurango
conelpic16f877,agradescotuprontarespuesta
Twistx77 abril25,2012alas6:28pm
Buenas,
nonecesitashacernada,lasealdelLM35eslosuficientementealtaparaleertodoelrangoconelADCdelpic
directamente.
Saludos!
Daniela mayo2,2012alas4:33pm
Hola,decuantosonlasresistenciasqueponesenelcircuito?
Muchasgraciasporeltutorial!!!
Twistx77 mayo2,2012alas8:08pm
ElPotenciometrode10KlaresistenciaenMCLRtambin.Lasdelosleds.Dependerdelosledsqueusespero330ohms
estarbiencasiseguro.
danielhernandez mayo10,2012alas4:26am
Holabuenasnachosbuenisimolaaplicacinyexplicacindeestetutorial,perotratedesimularloconproteusyaquenotengo
loscomponentesperoquevanoepodidosimularlo.sipuedesayudarmeconesoseriabuenisimograciasamigo.
ericksantiago mayo11,2012alas7:34am
perdonaeselpic16f690
ericksantiago mayo11,2012alas6:28pm
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 21/25
2017514 Conversoranalgicodigital
holaquieroddecirtequemegustomuchotututorialymehaservidodeejemplo,sinembargoaviacomentadoyapareceqse
borro,buenodejomicuestin.
Quierosabersipodriasdarmelamanoparahabilitar11o12adcconelpic16f690
seguituejemploperonopasode8,deantemanogracias
david julio25,2012alas10:37pm
hola,buenonosesiseaellugarcorrectoparapreguntarte,perodicequeesparalosqueapenasseadientranalosmicros,asi
quepreguntare.
Buenoestoyempezandoconel18f4550demicrochip,yquisierapoderponerunpanelsolarenmicasa,ypodermonitorearla
cargadelabateriadecicloprofundoparaquenollegueadescargarsecompletamente,ytambienmonitorearelpanelsolarpara
verificarlacargaquenosestaofreciendo,conunodetustutorialesaprendiamanejarlospuertosadcdelpic,buenoelpanel
meofreceencondicionesoptimas140Wp,8.4Ay18Vcd,escapaselpicdemedir18Vcd?,sedescompondrasirecibe8.4A,
quemerecomiendasparapodermonitorearesto??,,Buenomuchasgraciasportutiempo
emerson julio29,2012alas3:41am
HOLADAVIDCONRESPECTOATUPREGUNTADEKDICESDEDESCOMPONERSENOALADCDELPIC
NORMALMENTESELEPUEDEAPLICAR110VOJOYNOPASANADASABESPORK?ESKFIJATEENCADAADC
YASEA(AN0,AN1.),HAYDOSDIODOSESOSSIRVENCOMOLIMITADORESPORLOTAMTOTELOLIMTARAEN
ELVSSYVDDOENVOLTAJEKESTASALIMENTANDOALPIC..PEROCUANDOHABLASSOBRELACORRIENTEE
SOSICUIDATEMUCHOPORKESPERMITIDOCREOENPICSOLO25mACREOPEROUSASALGUNOSDIVISORES
YASITRABAJASBUENOESTEAPAORTEKTEDOYESTAENFOROSDEELECTRONICA
Richard septiembre6,2012alas5:37am
Saludosatodosestabuenoeltutorial,porfavorpodrianponereldiagramadetalladoenpdfycomoserialaconexiondel
conectorRS232conectadoalapc.Seriademuchaayudagraciasatodos.
Podrianmandarmeloalgundiseoparahacerloyprobarlomiemailes:raguilar111@hotmail.com
polux octubre21,2012alas3:20am
holacomoestasdimeamigocomopuedoconvertiresasalidaparalelaaunasalidaenseriecualseriaeldiagramadeconexion
JOSS44 noviembre9,2012alas1:21am
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 22/25
2017514 Conversoranalgicodigital
holaestamuybuenoestetutolesfelicitoyesperoquesiganadelanteensusplanesdeorientarenestemundodela
electrnicayoestoydandomisprimerospasosenestemundodelospicperoustedesayudanaqueseamasfaciresto
muchasgraciasporsuaporteyleseguirtodoloquepuedamiinteresesconenelpwmyadc
JOSS44 noviembre9,2012alas1:23am
ademaspuseenpracticasucodigoconlosledsymefuncionademaravillaporaorasololosimuloenproteusperoestoy
preparandomiprogramadorymanosalaobraparaaserloenrealidad
Ruben diciembre17,2012alas12:28am
Holaheintentadohacerloconun16F876ymeenciendepermanentementelosled012y7.
simuladoenproteus,ynolocalizoelerror.alguienmepuedeayudar?
graciasadelantadas
#include
#deviceadc=10
#FUSESNOWDT//NoWatchDogTimer
#FUSESHS//HighspeedOsc(>4mhzforPCM/PCH)(>10mhzforPCD)
#FUSESNOPUT//NoPowerUpTimer
#FUSESNOPROTECT//Codenotprotectedfromreading
#FUSESNOBROWNOUT//Nobrownoutreset
#FUSESNOLVP//Nolowvoltageprgming,B3(PIC16)orB5(PIC18)usedforI/O
#FUSESNOCPD//NoEEprotection
#FUSESNOWRT//Programmemorynotwriteprotected
#FUSESNODEBUG//NoDebugmodeforICD
#FUSESRESERVED//UsedtosetthereservedFUSEbits
#USEFAST_IO(B)
#usedelay(clock=4000000)
#byteportb=0x06
#bytetrisb=0x86
voidmain()
{
setup_adc_ports(AN0)
setup_adc(ADC_CLOCK_INTERNAL)
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
setup_spi(SPI_SS_DISABLED)
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1)
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 23/25
2017514 Conversoranalgicodigital
setup_timer_1(T1_DISABLED)
setup_timer_2(T2_DISABLED,0,1)
set_tris_b(0)
set_adc_channel(0)
delay_us(10)
unsignedint16tension=0
unsignedint8valor
while(1)
{
tension=read_adc()
delay_ms(1)
valor=(tension/127)
switch(valor)
{
case0:portb=0b00000000
break
case1:portb=0b00000001
break
case2:portb=0b00000011
break
case3:portb=0b00000111
break
case4:portb=0b00001111
break
case5:portb=0b00011111
break
case6:portb=0b00111111
break
case7:portb=0b01111111
break
case8:portb=0b11111111
break
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
default:break
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
} mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 24/25
2017514 Conversoranalgicodigital
}
}
Ruben diciembre17,2012alas12:39am
yaencontrelerror,eldelwhile.Peronoentiendoporqueconlsemeenciendenlosterminalesqueoscomentaba.
jjponce octubre24,2013alas4:39pm
amigobuentutorialdelconversorperomepodriasayudaracomoprogramaryconectarelvoltajederefrenciaparaqnosea5
voltssino12hehechoalgunosintentosperonofuncionaconmasde5volts
Hardpic octubre29,2013alas2:32am
Holatwist,elprogramamefuncionamuybienenproteus,perofisicamentenofuncionanoprendeniunled,quepuedeestar
mal.talvezestamalgrabado,comodebeestarelMCLRalmomentodegrabar?oquepuedesergraciasporturespuesta..
sbedoya febrero17,2014alas11:04pm
Saludos,Deseorealizarlalecturadelvoltajedeunpanelsolar,pormediodeunmicrocontrolador,poseelassiguientes
caracteristicas:60W18V3.33A,comopuedotomarestalecturadelpanel?Midudaeslacorrientedeestequemarialos
pinesdeI/OdelPICosolobastariaconrealizarundivisor?Gracias
lucas octubre21,2014alas6:57pm
holaalguientendriaunejemplodeconversionanalogodigitalperoconlacaptaciondeaudioenvesdeunpotenciometro?
QuealasalidadeXpuertoquesolouse3desussalidasmuestreenformadedistintassecuenciasRGB.Esperoquealguien
mepuedaayudarGracias
Lascookiesdeestesitioseusanparapersonalizarelcontenidoylosanuncios,paraofrecerfuncionesdemediossocialesy
paraanalizareltrfico.Adems,compartimosinformacinsobreelusoquehagadelsitiowebconnuestrospartnersde
mediossociales,depublicidadydeanlisisweb.. Accept ReadMore
http://www.tutoelectro.com/tutoriales/microcontroladores/guiapic/conversoranalogicodigital/ 25/25