Autor Tema: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc  (Leído 5269 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« en: 01 de Diciembre de 2011, 10:02:02 »
Hola, quiero retomar un pequeño proyecto.
Tengo unos sensores que me dan tensiones de salida de 1vcc a 5vcc.
Bien, pues me gustaría usar el convertidor a/d para gestionar la información de los sensores en un pc.
He estado estudiando un curso de pic que se público en una revista, el curso esta hecho por Fernando Remiro Domínguez.
Tengo varias dudas:
Donde guardo la conversión a/d para luego cógela y mandarla por el usart.
Si en el bloque de dos palabras de la conversión puedo introducir algún identificador que identifique que entrada es la que va a mandar por el usart, es decir, como la conversión es de 10bit se usan si esta justificada a la derecha la siguiente secuencia: 000000xx   xxxxxxxx , las "x" son los resultados de la conversión, pues donde están los 0 se puede poner algunos a 1 para así poder saber en el pc  de que sensor es esa información, ya quite com he dicho son varios sensores. Al respecto he pensado que primero convierto el primero, luego lo mando, después el siguiente, lo convierto y así sucesivamente y después go to.

Me gustaría escoger el cristal de 3.6864MHz para no tener errores en el generador de baudios del usart. ¿Tendría algún inconveniente?
Bueno por ahora no quiero liar más la pelota.
Después de esto a ver si soy capaz de hacer el programa de configuración del pic.
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #1 en: 01 de Diciembre de 2011, 10:10:55 »
  ¿En que lenguaje pensas trabajar? Si lo haces en C sería muy fácil ya que vas almacenando las lecturas del ADC en distintas variables y luego enviarías dichas variables por el uart.

  Con respecto al cristal, el otro día estuve haciendo pruebas y con 8MHz pude trabajar tranquilamente a 9600 baudios. Claro que no era una comunicación constante sino que le enviaba algo al PIC y luego este respondía con un mensaje.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #2 en: 01 de Diciembre de 2011, 15:18:16 »
Primero, muchas gracias. C se un poco, pero no mucho. Me da igual en que programar. No se si tiene que haber respuesta del pc al pic, pero cuando esta en funcionamiento esta todo el rato enviando información de los sensores, en un bucle. Lo que he visto de programación pic es el de la revista que no os he dicho antes por que no se si ser puede decir marcas de revista.si me dais un sitio donde estudiar un tutorialde C para pic, me lo puedo ir estudiando. Pero al pic se le puede meter toda esa base de datos de cada uno de los registros del convertidor a/d, son al menos 1024?
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #3 en: 01 de Diciembre de 2011, 15:58:27 »
...........
Pero al pic se le puede meter toda esa base de datos de cada uno de los registros del convertidor a/d, son al menos 1024?

  No entiendo a que te referís con eso.

  Siguiendo con el tema de C para PICs, hay distintos compiladores cada uno con sus pro y sus contra y cada quien nos gustará más uno que otro.

  Para la familia 16fxxx los que yo conozco (de nombre) son CCS, SDCC, MikroC y HiTech.
CCS tiene muchas librerías para el manejo de los distintos periféricos del PIC y hay mucha información y ejemplos en la web. Yo particularmente uso HiTech porque su versión lite es gratis (CCS es de pago). Para Hitech hay varios ejemplos en www.microchipc.com
  Una ventaja que le encuentro a HiTech es que para configurar algún periférico se trabaja directamente sobre los registros del PIC, en CCS suele haber funciones predefinidas.

  Obviamente con cualquier compilador uno se puede crear sus propias funciones. De hecho yo hice varias para el manejo del UART, SPI, I2C, también para manejar LCDs 16x2

  Por citar un ejemplo, para habilitar las interrupciones se hace lo siguiente

HiTech C

Código: C
  1. GIE = 1; // habilito las interrupciones globales

CCS C

Código: C
  1. Enable_interrupt (global);


  Si vos vas a transferir la lectura directamente por el uart (no en modo ASCII), una idea de programa sería algo así

Código: C
  1. while (1) // loop infinito
  2. {
  3.   for (canal = 0; canal < 4; canal++)
  4.   {
  5.     setear el canal ADC a leer.
  6.     variable = lectura ADC
  7.     enviar variable
  8.   }
  9. }



  Libros de C que me sirvieron a mí...

  "An introduction to programming PIC in C"
  "Programming 8 bit PIC microcontroller in C"
  "Compilador C CCS y simulador Proteus"
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #4 en: 01 de Diciembre de 2011, 16:51:11 »
Perdona, entendí que haciéndolo por c se puede introducir la libreria de los registros del convertidor y com unas variables controlarlo o algo asi. por eso te dice que si el pic tiene la memoria suficiente para guardar 1024 registros. Seguramente al no saber como funciona no se bien lo que me dividir.
Si programo en Hitec donde puedo encontrar un curso fácil para aprender a programar el pic, donde me puedo bajar el compilador y si esto es fácil o es muy difícil.

Por otro lado una duda que tengo es, si yo tengo un sensor quem me da registros de 1 vcc a 5vcc, la tensión máxima de referencia la tengo por que alimento al pic con 5 vcc pero la tensión mínima de referencia es de 1 vcc, ¿Esta tensión se la puedo introducir en la patilla vss? Si fuera asi no tendría que usar una o dos entradas analógicas y podría poner 5 sensores para un pic de 5 entradas al convertidor.
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #5 en: 01 de Diciembre de 2011, 17:16:17 »
  El compilador lo podés bajar del sitio de microchip.

  Yo configuraría el ADC para que tome como referencia tanto VCC como GND y de esa manera poder usar las entradas analógicas para los sensores.

  ¿Cuanta resolución necesitas? Porque con esa configuración te daría una resolución aproximada de 5mV por bit.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #6 en: 01 de Diciembre de 2011, 18:37:48 »
La máxima resolución posible, el sensor trabaja de 1 a 5 vcc pero yo casi nunca los voy a llevar a su máximo, es decir que en uno voy a trabajar al 75% de su máximo y en otro voy a trabajar al 50%, no puedo perder nada de resolución. Lo que supongo que me dices es que el convertidor empiece de 0 a 5vcc es decir que perdería todo entre 0 y 1 vcc. entonces ¿Por narices pierdo resolucion o emtradas?
Estoy viendo un pequeño curso de hitech c para pic. El circuito para programar el pic donde puedo bajármelo.he visto que el hitech es de pago, dices que tienes uno beta, ¿Tiene algunas restricción?
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #7 en: 01 de Diciembre de 2011, 19:06:59 »
  A ver como trato de explicarme....

  Siempre el máximo valor entregado por el ADC es 1023 que se dará cuando la señal de entrada sea igual a Vref+ y el mínimo valor dado por el ADC 0 y ello ocurrirá cuando la señal de entrada sea igual a Vref-

  En la página 112 del datasheet del 18F87x (documento DS30292C) muestra las posibles configuraciones para el ADC.
  Tal vez que convenga pensar en un PIC16F88x ya que los 87x están discontinuados y además los 88x son más baratos y me parece que mucho más flexible en cuanto a la configuración del ADC.
 
  Si usamos un 16F876 vemos que si se quieren tener 5 entradas analógicas no es posible tener referencias externas para Vref+ y Vref- por lo tanto los mismos serán Vdd y Vss respectivamente.

  Para saber la resolución que tenemos podemos hacer el siguiente cálculo...  ((Vref+) - (Vref-)) / (máximo valor ADC)
para el ejemplo que estamos tratando sería que resolución = (5 - 0) / 1023 --> aproximadamente 4.887mV

  Otro ejemplo para el 876 y suponiendo que quieras una tensión de Vref+ de 4V (ya que sería el 80% de los 5V de tus sensores) y Vref- de 0 (ya que esto permitiría configurar 4 entradas analógicas), la resolución sería 4 / 1023 --> aproximadamente 3.91mV

  Se pierde resolución o canales analógicos por como hay que configurar el PIC.

  Hay varios circuitos para programar el PIC dependiendo del puerto a utilizar. Yo uso el ProPic2 que es por puerto paralelo y fuente de alimentación externa. Hay algunos programadores por RS232 y también los hay USB como el PicKit2. Aquí en el foro podrás encontrar mucha información al respecto.

  Si mal no recuerdo te vas a tener que registrar y te podés bajar el archivo. Es una versión de prueba que pasado cierto tiempo queda la versión Lite. La única restricción que le conozco es que con la versión lite el código es menos optimizado.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #8 en: 01 de Diciembre de 2011, 21:23:05 »
que tipo de señal tienes que capturar?? Es decir, ver cada X tiempo que voltaje tiene el sensor? hacer una captura en determinado tiempo, por ejemplo 2 segundos y enviarlo todo al pc? O una captura continua?

Dependiendo de lo que quieras hacer debes elegir un camino, si es capturar cada X tiempo el voltaje del sensor es sencillo con un timer.
Si es hacer una captura lo mas rapido posible para hacer una grafica tipo osciloscopio con voltaje/tiempo debes ver en que tiempo quieres hacer la captura (limitado por la velocidad del ADC), ver la memoria disponible que tienes y calcular que tiempo maximo puedes "grabar". Una vez acabas la captura vuelcas todos los datos al pc tranquilamente.
Si es una captura continua estas limitado por la velocidad del puerto rs232 por lo cual te tendras que ceñir a la velocidad que pongas en el puerto del pc. Ya que si capturas mas rapido de lo que puedes enviar al pc llegara un momento en el que los datos se acumularan en el pic.

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #9 en: 02 de Diciembre de 2011, 16:48:41 »
Es de captura continúa, mientras refresque todo en un segundo me vale, es decir que haga un bucle cada segundo, me va bien, pero no es lo quite más me importa por ahora. Por el momento quiero usar entre 2 y 3 sensores, pero después me gustaría poder usar 10. La pregunta es ¿Daría tiempo a mandar la información de los 10 sensores uno a uno en un segundo o me haría falta más tiempo. He estado viendo un poco en una aplicación de mi teléfono con androit de librerías pic y he visto que en la familia 16f88x hay algunos con nada menos que 11 puertos de entrada que me vendrían de lujo, cual me aconsejáis y si puede ser con encapsulado rectangular con las patillas a los lados lagos y no cuadrados con las pastillas a todos sus lados.

Yo sólo quiero el pic para que  me convierta la señal de los convertidores y la meta en el pc por puerto serie, y ahí ya gestionó la información. Es parecido a un caudalimetro, imaginaros que por un lado hay que saber cuanto combustible entra en la bomba, pero hay que restar  lo que vuelve al depósito por el retorno.
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #10 en: 02 de Diciembre de 2011, 20:02:08 »
  Fijate en el datasheet del 16F88x hay expresa que es lo que trae cada uno y también los encapsulados en los cuales se los puede conseguir. En el caso del encapsulado plástico es el PDIP. para los de 28 pines como el 886 suele ser el SPDIP.

  En cuanto a si te da o no el tiempo va a depender de la velocidad que quieras usar para la comunicación RS232 y de la cantidad de información a envíar.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #11 en: 13 de Diciembre de 2011, 17:51:49 »
No se cual me recomendáis de esa familia y si me podéis dar algún sitio donde halla un tutorial o cómo se configura el convertidor y el modo usart, asi voy empezando, cómo podéis ver no tengo mucho tiempo. Muchas gracias.
=a2r

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #12 en: 27 de Diciembre de 2011, 08:26:35 »
He estado buscando por internet y no he encontrado nada que me explique como va el pic 16f886. Alguien me podría decir donde puedo encontrar información de como se programa este pic. Muchas gracias.
=a2r

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #13 en: 27 de Diciembre de 2011, 09:54:34 »
He estado buscando por internet y no he encontrado nada que me explique como va el pic 16f886. Alguien me podría decir donde puedo encontrar información de como se programa este pic. Muchas gracias.

  Perdón, pero no entiendo a que te refieres con eso.

  En el datasheet indica cuales son los pines para la programación. Aquí en el foro hay muchísima información respecto a distintos programadores, ya sea por puerto Serie, Paralelo o USB. Con dichos programadores es que se le graba el programa al PIC.

  Para hacer los programas se puede utilizar compiladores C para PIC (hay varios) o directamente en assembler. También hay distintas IDE (entornos de desarrollo) que se pueden utilizar con los distintos compiladores.

  En el propio sitio de microchip vas a contar con mucha información al respecto, incluso podes descargar el MPLAB (entorno de desarrollo) para poder hacer los programas y descargar compiladores C ya sea el HiTechC como el C-18, aunque éste último es para la familia 18Fxxx y no para las 16Fxxxx.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado igua2007

  • PIC10
  • *
  • Mensajes: 17
Re: Ayuda pic16f87x convertidor a/d respuesta por rs232 al pc
« Respuesta #14 en: 27 de Diciembre de 2011, 17:43:17 »
A ver hay unas pautas para programar el pic, por ejemplo en el curso que tengo yo del pic 16f87x, te enseña por ejemplo para hacer las conversiones el registro ADCON0 donde el bit 7-6 sirve para seleccionar el reloj y viene que el 00 es Fosc/2 para 01 Fosc/8 para 10 Fosc/32 y para 11 FRC, donde  el bit 5-3 sirve para la selección del canal analógico y viene la serie de 0 y 1 que corresponde para cada canal, después el bit 2 que si esta a1 la conversión esta en marcha y si esta a0 la conversión a finalizado, el bit 1 no implementado y se le 0 y por último el bit 0 el ADON que a1 el convertidor esta operativo y si esta a0 el convertidor esta apagado y no consume. Te da otro cuadro para el ADCON1 , Te dice las frecuencias máximas del dispositivo para cada fuente del reloj a/d, habla de los registros asociaos , como justificar a la derecha o a la izquierda el resultado de la conversión, etc. y con el usart lo mismo. Entonces pienso que sin estos datos es muy difícil progranar el pic.Soy novato en esto, lo único que se de pic es lo que he leído en este curso. Gracias.
=a2r


 

anything