Autor Tema: Recepcion de señal analogia con PIC 16F870  (Leído 3022 veces)

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

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
Recepcion de señal analogia con PIC 16F870
« en: 13 de Noviembre de 2004, 11:15:00 »
Hola a todos, soy super nuevo en esto asi que disculpen mi ignorancia casi total.

Estoy trabajando en un proyecto para monitorear presion diferencial con un pic. El sensor entrega una señal analogica de 0 a 5 Vcc, y quisiera saber si con el pic 16F870 se puede recibir directamente esa señal en uno de sus pines, o se requiere algo mas. Si es asi, le agradeceria a alguien que me de una idea general sobre como hacerlo, y luego pregunto mas detalles.

Mi objetivo es enviar la señal de presion al hiperterminal de una pc, indicando fecha y hora, y activar una alarma en caso de que este fuera de rango.

Mi mayor duda es que cuando leo un byte en un pin cualquiera del puerto A, lo grabo en un registro, pero luego no se como hacer para compararlo con mis valores de maximo y minimo (porque no se como fijar esos valores).

Antes de que alguien se enoje porque estoy tratando de utilizar algo que no entiendo del todo, les aclaro que es en funcion del costo y la urgencia. tengo una auditoria en meses, y un sistema con PLC me sale U$1500, asi que se imaginaran porque quiero usar el pic, y estoy aprendiendo lo mas rapido que puedo.

Gracias de antemano!!!!!!!!!!

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #1 en: 13 de Noviembre de 2004, 12:05:00 »
Veamos, lo primero que debes de comprobar es, si ese modelo de PIC tiene ADC integrado. Si asi fuera, la salida del sensor iria a un pin analogico del PIC, y mediante un procedimiento, el PIC te dara un valor entre 0 y 1024 normalmente (en un ADC de 10 bits), el cual, representa el voltaje que hay en el pin, en el momento de la lectura. Por logica, 1024 seran 5V, y 0 seran 0V.
Mediante unos simples procedimientos (regla de tres) , conviertes ese valor al voltaje respectivo.

Y para enviar cosas al hyperterminal, usas transmision serie, mediante un MAX232.

salu2

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #2 en: 13 de Noviembre de 2004, 12:10:00 »
Hola amigo:
Mira el PIC16F870 dispone de 5 canales de entrada analogicos que pueden ser multiplexados con entradas digiitales. Es decir 5 pines que los puedes utilizar segun los programes como entradas-salidas digitales o como entradas analogicas.
Por tanto puedes utilizar este micro para lo que propones enviando la señal directamente al canal analogico seleccionado.
El resultado de la conversion se guarda en dos registros ADRESH y ADRESL, luego con ello ya puedes hacer lo que quieras y el resultado de la operacion mandarlo al hiperterminal.
Fermin
Todos los días se aprende algo nuevo.

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #3 en: 13 de Noviembre de 2004, 12:12:00 »
Ok, muchas gracias, entiendo perfectamente.

Ahora otra consulta.

Supongamos que yo leo el pin del pic, (que tiene ADC incorporado, ya confirme) y me da un valor correspondiente a 3 V , que sera aprox. 614 (1024x3/5).

Supongamos que ese valor, es superior al limite que yo estableci. Como hago para realizar esa comparacion? Escribo el valor 614 en un registro, y le pido al PIC que compare lo que leyo con ese registro guardado? O hay que hacerlo de otra manera?

Mil gracias!!!!!!!!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #4 en: 13 de Noviembre de 2004, 13:08:00 »
dime. creo que el tamaño de las posiciones de memoria del PIC16F870 es de 8 bits, por lo tanto, el valor 614 no te va a "entrar" en 1 sola posicion... Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #5 en: 13 de Noviembre de 2004, 13:58:00 »
locodisculpame, pero no entiendo lo que tratas de decirme

Lo que necesito hacer es poner un valor fijo (no se si en un registro, o como hacerlo) que represente una presion diferencial X, que seria mi limite.

luego necesito comparar el valor que leo en mi pin de recepcion analogico, para saber si es mayor, y en ese caso sonar una alarma.

Yo se como hacer la comparacion entre un dos registros, y las operaciones logicas que correspondan.

Lo que no se es como establecer mi valor de referencia, que en este caso seria 614, (mas o menos 3 Vcc, asumiendo que 1024 corresponda a 5 Vcc)

por favor, disculpen una vez mas mi ignorancia, esto esta a punto de romperme la cabeza!!!!!!!!!!Llorando

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #6 en: 13 de Noviembre de 2004, 14:26:00 »
Lo que quiere decir es cierto.
El valor del ADC viene dado en 10 bits, y la memoria RAM del PIC es de 8 bits. Por lo tanto , tendras que guardar los 8 bits menores en una posicion, los 2 mayores en otra. Y para hacer operaciones matematicas con ellos (tales como la comparacion con otro numero) pues un poco mas complicadillo...

Aunque si buscas, en internet hay 1001 rutinas matematicas en assembler.

salu2

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #7 en: 14 de Noviembre de 2004, 00:36:00 »
Si tu aplicación no necesita una precisión de 10 bits, es decir, si el rango de uso de la misma va "sobrado" con 256 posiciones distintas, puedes configurar el ADC para que entregue la lectura alineada por la izquierda y rellenando los 6 bits restantes con ceros por la derecha.

De esta manera, si te quedas con el byte de la izquierda o byte alto, tendrás fácilmente el registro de la lectura con una precisión de 8 bits.

Si estás empezando con los PICs y necesitas tener la aplicación funcionando lo antes posible, sin importante demasiado exprimir al máximo las posibilidades del PIC ni dejar un código completamente optimizado, te recomendaría que hicieses tu proyecto en un lenguaje de alto nivel, como Basic o C. Tendrás resultados mucho antes y más fácilmente.

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #8 en: 15 de Noviembre de 2004, 08:44:00 »
muchas gracias!!!

ahora entendi un poco mejor

Estoy probando algunas cosas con el programa Niple, voy a ver que tal me sale y les cuento.

Gracias de nuevo!!!!Sonrisa

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Recepcion de señal analogia con PIC 16F870
« Respuesta #9 en: 16 de Noviembre de 2004, 11:51:00 »
Hola a todos otra vez, estuve intentando algunas cosas, y quisiera tener su opinion al respecto.

Primero, cambie de pic, ahora voy a usar el 16F876. Cree un programa en el niple, que mas o menos va asi:

1- Configuro los puertos
2- . El RA0 esta configurado como entrada analogica. El puerto B y demas los uso para enviar RS232 y el display. Realizo la conversion AD del pin RA0, con una precision de 10 bit, y guardo el resultado en los dos registros ADRESH y ADRESL.

3 -  Realizo la comparacion , con el comando de Niple "Evaluar registro a 16 bit" Ahi asigno los registros bajo (ADRESL) y alto ( ADRESH), y le pido que compare contra un valor literal, en decimal. Ahi cargo el valor que a mi me interesa como limite superior, que es 800 .

4- Luego de la comparacion, si el valor es menor, le pido que envie los datos del registros por RS232 al hiperterminal de windows, y si el valor esta mal, escribo un 1 en el pin RB7 que es adonde conecte mi alarma.

Basicamente, asi es mi programa, y queria preguntarles si esto es correcto o no, ya que el niple me genera bien el codigo asm, pero quiero saber si en la realidad, va a se hacer la comparacion como yo deseo, o el resultado de esa comparacion me va a dar cualquier cosa

Tambien quisiera que me digan si el valor que va a ir a la pc va a ser decimal, o si tengo que hacer una conversion antes de enviarlo.

desde ya mil gracias!!!!!!!

Y para los que saben del tema, los animo a ponerse en contacto con las industrias farmaceuticas. Porque este proyecto con un PLC cuesta no menos de $2000U, y con un pic no mas de 200U$!!!!