TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Danygenius en 15 de Septiembre de 2005, 16:42:00
-
hola a todos este es mi primer mensaje y mi pregunta es la siguiente
¿Alguien sabe como adquirir datos con el conversor A/D, pero de mas de una señal?
la idea es captar 3 señales analogas ( 3 potenciometros) a traves de C A/D.
cualquier aporte y consulta sera bien recibido
de antemano gracias !!!
Danygenius.-
-
Hola Danygenius, existen conversores AD de varios canales, creo que MAXIM tiene bastantes en su catálogo.
De todas formas, quizá lo más sencillo y rápido sería emplear un micro como el 16f876 que posee 5 canales de conversión analógico / digital.
Saludos!
-
No estoy seguro, pero creo a q t refieres como en codigo lees esas señales, bueno antes q nada asegurate q NINGUNA de ellas supere los 5V en su valor maximo, sino dile adios al PIC.
Todos los ADC del la familia PIC funcionan de forma multiplexada, es decir, realment existe solo 1 conversor A/D en el PIC sin embargo se puede seleccionar cual de los canales va a utilizar ese conversor, existen los de 5 canales y los de 8, la resolucion es otro factor importante porq indica q tan precisa o detallada kieres la señal convertida, los hay de 8 bits (256 posibles valores) y de 10 bit (1024 posibles valores), no ire en mas detalle porq no se cual PIC estas interesado en trabajar para darte las locaciones de los registros q configuran el comportamiento del modulo ADC y aparte en cual lenguaje estarias interesado en escribir el codigo. Estoy suponiendo q kieres usar un PIC para esta tarea. Dinos mas...
-
gracias por responder, el que me entendio fue fenix, eso es lo que quiero hacer, tengo claro que el PIC ( para mi caso el 16F877 o uno de la linea 18...) tiene un solo CAD y obviamente procesa de a una las señales. Y mi pregunta es acerca de como tendria que hacerlo para leer mas de una señal, que en mi caso serian 3 señales analogas provenientes de 3 potenciometros. Como configuro el CAD?, no se si tu lo has hecho. Lo que se me ocurre, pero no se si funcionara, y que es crear un codigo que simplemente vaya cambiando la entrada por la que se recibe la señal analoga (RAO-RA7), y que vaya guardando la informacion en registros auxiliares para su posterior manejo en el programa principal.
Ademas tengo una consulta sobre como tendria que hacerlo para mandar el procesamiento de cada señal por el USART?, aunque eso ya es otra problematica que espero resolver despues.
Y disculpen el abuso, pero tambien tengo una gran duda ya que cuando consulte sobre esto a otra persona me hablo algo de "tramas" y me dejo muy confundido por que no se si se referia a la parte de adquisicion con el CAD o a la parte envio de datos por USART?
Bueno espero sus grandes aportes y una vez mas gracias !!!
-
Bueno ya tienes buena parte del camino pensado, precisamente de eso se trata; leer cada señal pasando una por una al ADC. Lo de enviar datos a un PC (supongo por lo de RS232) es tb cosa sencilla y de eso lo puedes encargar al propio pic q posee su modulo USART para hacer ese trabajo, asi q el codigo se simplifica mucho porq solo seria cosa de leer el dato y enviarlo.
Lo de la trama es como un protocolo con el cual le dices al receptor cada dato como un identificador por ejemplo, supon q usas un conversor de 8 bits y obtienes los siguientes valores: 125, 54, 200.
la via rapida es enviar los valores tal como estan por el puerto, ahora supon q necesitas decirle al programa q escribiste en el PC q el dato viene del conversor y no de algun otro proceso en el PIC (suponiendo q habria otro), entonces le decimos al PIC q antes de enviar los 3 datos agregue un codigo (otro numero) para q el programa en PC lo identifique, suponemos 208, asi q el programa ahora enviaria:
208 125 54 200
siendo el 208 como un ID para el programa q recibe indicandole q etos datos vienen del conversor AD. Ok todo bien hasta aki, ahora supon q tienes identificado cada potenciometro y asi como lo tienes fisicamente, tb t gustaria hacer ese identificacion particular para cada uno, asi q asignamos 101, 102 y 103 a cada uno, este dato se envia antes de cada codigo, ahora nuestro programa debera enviar:
208 101 125 102 54 103 200
y finalmente, keremos decirle al programa en el PC q ya terminamos de enviar todos los datos k keriamos para q pueda procesarlos (graficos, calculos??) asi q necesitamos un nuevo valor... usemos 45:
208 101 125 102 54 103 200 45
ahora pasamos de enviar 3 datos a enviar 8!!, la trama q vemos seria:
Id de fuente - Pot 1 - Valor en P1 - Pot 2 - Valor en P2 - pot3 - valor en P3 - Fin
Como cada pot tiene un ID propio el orden no importa supon q keremos enviar primero el valor el P2 sin q la PC se confunda con el dato de P1, simplemente cambiamos el orden agregando el ID primero:
208 102 54 101 125 103 200 45
Como puedes ver, la trama es un conjunto de datos q son un pokito mas q los datos y ya, ahora este tipo de comportamiento es util solo si tienes mas de un proceso en el PIC o en el PC o si necesitas identificar dispositivos o enviar "notas" o modificadores, si solo usas el PIC para realizar la conversion y nada mas o si siempre enviaras los datos en un orden fijo puedes simplemente enviar los datos y ya y no complicarte la vida con todo lo q esta arriba.
solo me falta preguntarte en q lenguaje va eso??
-
hola!!!
muchisimas gracias fenix, te pasaste, con esto ya se me comienza a aclarar el panorama.
el lenguaje que yo manejo es ensamblado, la verdad que en C no me manejo, lo unico que se es que es mas facil y corto (pero ocupa mas memoria al compilar).
Disculpa si pido demasiado pero ¿tu tienes ejemplos acerca del tema? ¿o alguna parte donde se explique bien el asunto?
bueno nuevamente gracias y espero tu respuesta
-
Nice otro ASM mas!!!. Bueno, tngo un codigo pero es aplicado al 16C71 pero no debe ser muy dificil convertirlo al 16F877 ya q usan registros comunes. Me da algo de pesadez escribir codigo asi q t mando las imagenes escaneadas del libro:
Bueno la idea era poner las imagenes en el almacen pero el maximo es 256KB y por mas q comprimo las imagenes no me bajan de 300 KB asi q bueno si las kieres mandame tu mail y t las envio
-
ok, muchas gracias
este es mi mail danygeniuss@yahoo.com
se agradece tu amabilidad
bye
-
Ok ya estan enviadas