Autor Tema: 16F877A+LCD, bien en proteus mal en practica  (Leído 2816 veces)

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

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
16F877A+LCD, bien en proteus mal en practica
« en: 26 de Marzo de 2010, 12:37:13 »
Hola a todos he hecho un ejemplo con dos entradas analogicas que visualizo su valor en un LCD, pues bien la simulacion funciona correctamente, pero al implementarlo en la realidad, el valor que veo en el display oscila bastante, por ejemplo si se debe de visualizar 420, veo que oscila bastante entre 300 y 600 aproximadamente. Decir que el valor analogico es un valor constante (viene de un divisor de tension), por otro lado decir que la patilla 1 (reset), esta a 5V, y la tension de referencia es de 100 mV, ¿el oscilar externo tiene algo qie ver con esto?

Seguire probando para ver si encuentro el fallo, pero agradeceria toda clase de sigerencia.

Gracias.

El codigo es el siguiente:

Código: [Seleccionar]
#include "16f877a.h"                    // Pic a utilizar
#device adc=10                         // Usa resolución de 10 bits
#use delay(clock=4000000)       // Cristal a utilizar
#fuses xt,nowdt,nobrownout,nolvp,noprotect   // Fusibles
#include "lcd.c"

void main (void)
{
float radi1,value;
float radi2,valor;
lcd_init();                       
lcd_putc(" Detector\n");          // Saca texto   \n= cambio de linea
lcd_putc(" Radiacion");           
delay_ms(300);
lcd_putc("\f");                   // Limpia pantalla

while (1)
{
setup_adc (adc_clock_internal);                                     
setup_adc_ports(RA0_RA1_analog_RA3_REF);


set_adc_channel (0);                // Elige canal analogico a medir
delay_us (20);                      //espera 20 microseg
value=read_adc ();                  // Hace conversión A/D
radi1=value*(1.3227);               // Pasar a W/m2
lcd_gotoxy(1,1);      // Acomoda cursor LCD
printf(lcd_putc,"Radi1= %4.0f W/m2",radi1);

set_adc_channel (1);                // Elige canal analogico a medir
delay_us (20);                      //espera 20 microseg
valor=read_adc ();                  // Hace conversión A/D
radi2=valor*(1.3227);               // Pasar a W/m2
lcd_gotoxy(1,2);     
printf(lcd_putc,"Radi2= %4.0f W/m2",radi2);

delay_ms (300);
}
}


Gracias de nuevo por las respuestas

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: 16F877A+LCD, bien en proteus mal en practica
« Respuesta #1 en: 26 de Marzo de 2010, 17:35:00 »
El problema creo que está en que estás considerando que la tensión a medir es estable pero si observaras esa tensión con el osciloscopio, verías que no lo es.
como estás colocando el Vref+ en 100mv, para un valor de 100mv tienes 1024 en el conversor AD.
Si suponemos una variación de 300 en el conversor AD, la variación de entrada de la señal sería de alrededor de 30mv
Al ser valores tan bajos, esta variación se puede deber hasta por el riple de alimentación del pic, el ruido térmico de las resistencias,la variación de la tensión de referencia, el ruido que induce el oscilador, el ruido electromagnético que proviene de todos lados.
Te aconsejaría que amplifiques y filtres convenientemente, con un circuito externo al pic, esa señal de entrada y así poder utilizar tensiones más grandes para atacar el ADC del pic.
Al trabajar con tensiones tan bajas, la alimentación de todo el sistema debe ser lo más estable y con el menor riple posible.
 
 

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: 16F877A+LCD, bien en proteus mal en practica
« Respuesta #2 en: 27 de Marzo de 2010, 04:15:29 »
Gracias por la respuesta. Lo pruebo y os comento los resultados.

Denuevo gracias.


Desconectado Ave_Rapina

  • PIC10
  • *
  • Mensajes: 10
Re: 16F877A+LCD, bien en proteus mal en practica
« Respuesta #3 en: 28 de Marzo de 2010, 15:31:43 »
The problem  must be related to the instable voltage regarding reference for the A/D.
The problem can be caused by the comutation of the microcontroller.
You should not use an reference with resistor, but an active one.
Ate the sensor try to implement and withstone bridge to improve the CMRR

Regards