Autor Tema: Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e  (Leído 7521 veces)

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

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
buenas amigos . traigo un nuevo tema el cual me esta generando algunas dudas con respecto a la adquisicion de datos que vengo haciendo . y resulta que estoy trabajando para obtener la lectura de tres señales analogicas las cuales ingresan al pic 16f877 y por medio del protocolo rs232 son enviadas a labview . pero esta señal es seleccionada previamente a traves de un caracter que es enviado desde labview. actualmente tengo 2 problemas .
 1: al seleccionar el canal a leer ( n,p o t (nivel, presion y temperatura respectivamente) es  me manda un pico que sobrepasa el rango de lectura y estabiliza a su valor normal, este pico me afecta la grafica y el control de proceso .
 2: como puedo hacer que la lectura sea constante, es decir en este momento tengo un pulsador para enviar el dato y si lo cambio a switch no me trabaja como pensaba . dejo adjunta los archivos con los que estoy trabajando. espero puedan ayudarme y gracias . saludos

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #1 en: 16 de Agosto de 2018, 21:24:49 »
Porque no compartes tu codigo para que sea mas claro.

Saludos

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #2 en: 17 de Agosto de 2018, 05:18:00 »
habia subido tres imagenes, proteus, ccs y labview . al parecer solo en vio la del labview . aqui dejo otras

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #3 en: 17 de Agosto de 2018, 05:29:59 »
he hecho unas modificaciones en el codigo. para darle mejor presentacionn y he habilitado 3 salidas digitales, una para cada proceso (puerto D) y ahora en vez de if, he colocado switch. y me funciona bien .. el detalle esta en los picos que me  muestra al enviar un dato desde labview (picos de valores fuera de rango, como por ejemplo 110 y 116 y luego pasado el segundo estabiliza ) .. ahora he notado algo curioso y es que estas variaciones solo son percibidas por labview ya que el microcontrolador no detecta estos, lo digo porque si detectara este pico, estaria complementando su salida en el puerto D por estar por encima del valor 80 y no lo hace. por la tanto pienso que el problema esta en el codigo de labview. asi tengo mi codigo actual:

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #4 en: 17 de Agosto de 2018, 05:32:46 »
estos picos son a los que me refiero

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #5 en: 17 de Agosto de 2018, 09:50:53 »
Esto parece mas una mala interpretacion del labview, es decir un error en el "codigo" de labview

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #6 en: 17 de Agosto de 2018, 14:29:05 »
asi es me parece que es un problema con el codigo de labview .. ya que  para leer datos sin el write no tenido problemas . pero ahora que inserto  el write en e codigo me genera este problema . noc que este haciendo mal en este codigo

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #7 en: 17 de Agosto de 2018, 20:05:49 »
Lamentablemente no te puedo ayudar, ojala que alguien que use Labview pueda, a mi realmente cuando lo tuve en la universidad que utilizar fue un CAOS, pienso que de "simple" no posee nada y me desespero. Por eso siempre lo odie y nunca le di importancia.

Asi que espero que alguien que posea mas experiencia pueda ayudarte.

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #8 en: 17 de Agosto de 2018, 21:13:07 »
Lamentablemente no te puedo ayudar, ojala que alguien que use Labview pueda, a mi realmente cuando lo tuve en la universidad que utilizar fue un CAOS, pienso que de "simple" no posee nada y me desespero. Por eso siempre lo odie y nunca le di importancia.

Asi que espero que alguien que posea mas experiencia pueda ayudarte.

Y QUE OPINAS DEL CODIGO para el pic ? se ve bien cierto ?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #9 en: 17 de Agosto de 2018, 23:30:47 »
Si, por ahi no usaria tanto delay... Y podrias por las dudas, tomar varias lecturas y promediarlas. Idealmente la cantidad que sean potencia de 2 (8,16 lecturas).

Es lo unico que cambiaria, eso si, me aseguraria de que nunca envies "peticiones" al PIC mas rapido que los delays que pusiste.

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #10 en: 17 de Agosto de 2018, 23:35:53 »
cuando dices tomar varias lecturas te refieres a usar un for ? y como asi de no hacer peticiones al pic mas rapido que los delays ?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #11 en: 18 de Agosto de 2018, 11:49:10 »
Hago un paso a paso de tu codigo.

Espero caracter de la PC.
LLego alguno que me interese?
SI -> Delay de 2s Tomo lectura del ADC y envio.


El problema esta si por ejemplo tu computadora envia 1 caracter cada 0.5s supongamos, exigiendo al PIC que le responda con lo que le pide.
Veamos que pasa.

El primer caracter llega, y entra al switch case que le corresponde, y luego entra al delay de 2s.
Y aca es donde ocurre el problema... la PC a los 0.5s va a enviar otro caracter, y ocupar el unico espacio libre que posee el PIC para recibir, al segundo va a enviar OTRO mas pero vos nunca sacaste ese caracter que llego (porque estas en el delay). Internamente el PIC cuando ocurre esto deja de recibir y marca un error avisando que se intento sobreescribir el dato que habia llegado. CCS tiene sus formas raras de manejarse y tal ves omita el error

Pero te comento lo que puede suceder.

---------------------------------------------

Respecto a tomar varias lecturas y promediarlas podes hacer:

Código: C
  1. int16 suma
  2.  
  3. for ( i = 0; i < 8; i++ )
  4. {
  5.    suma += read_adc();
  6. }
  7. suma /= 8;
  8. // Y enviar suma


Asi promedias tus valores. Y si hay alguna medida que posee algun "impulso" o valor grande no afecte en gran medida la lectura.
No creo que necesites GRAN velocidad si es que tenes un delay de 2s

-------------------------

Ahora que me fijo en el codigo ( que te recomiendo que lo copies y pegues, en ves de poner capturas de pantalla )
Deberias mover los setup_adc() afuera del while. Ya que estos deberias usarlos una sola ves nomas.

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #12 en: 18 de Agosto de 2018, 12:47:31 »
exelente muy buena tu observacion . voy a promediar esos valores a ver que tal me resulta  .. muchas gracias por la ayuda .. luego te digo como va

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #13 en: 30 de Agosto de 2018, 17:50:49 »
como estan por aqui . ps les cuento que efectivamente el problema de los picos era con respecto a la programacion . ordene un poco el codigo grafico y ahora si me trabaja bien tanto en simulacion como en fisico y asi viene quedando mi codigo, interfaz y simulacion muchachos.

Desconectado josemanuelosunarios

  • PIC10
  • *
  • Mensajes: 15
Re:Diseño e implementacion de una tarjeta de adquisicion de datos con pic 16f877a e
« Respuesta #14 en: 30 de Agosto de 2018, 18:17:53 »
como ingreso otras imagenes para subir lo que llevo de proyecto me faltan 4 mas pero dice que es muy pesado ... alguien me ayuda ?