• Domingo 22 de Diciembre de 2024, 08:05

Autor Tema:  Sobre El Adc Del 16f876  (Leído 2939 veces)

neo_zgz

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Sobre El Adc Del 16f876
« en: Domingo 27 de Febrero de 2005, 01:05 »
0
Wenas peña, haber si me podeis ayudar, resulta que quiero hacer un sensor de CO2, y necesito usar este convertidor, el programa es calcado a un termometro, pero en este caso un sensor de CO2 y no uno de temperatura.

Pues la cuestion es haber si me podeis poner un ejemplo de programa en C para visualizar en un LCD la temperatura recibida por un lm35(ya os digo k es calcado al k necesito).

Os puedo comentar que he hexo este programa

#include  <16F876.h>
#use delay(clock=4000000, RESTART_WDT)
#include  <lcd2.c>
int Medir_Temperatura(int porta);
void Visualizar_Temp(temp);

main()
{
int temp;
lcd_init();
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF); //configura RA0 RA1 como entrada
//analogicas y RA3 la Vref
//si utiliza 8 bits el ADC seria el calculo 256/vref*Valor del conversor
while(1){

temp=Medir_Temperatura(0);
Visualizar_Temp(temp);

/*temp=Medir_Temperatura(1);
Visualizar_Temp_xy(8,2,temp);*/

delay_ms(250);
}

}

int Medir_Temperatura(int)
{
int temp;
setup_adc(adc_clock_internal);
set_adc_channel(0); //configura el adc para que se centre en la patilla
//de A que le indiquemos (0=A0 1=A1...)
delay_us(20);
temp = read_adc();
setup_adc(adc_off);
return temp;
}
void Visualizar_temp(temp)
{
printf (lcd_putc,"%u", temp);
}

y otro que tengo orientado pero que era un voltimetro digital es este

#include <16F876.h>

#device adc=10      // Conversión con 10 bits
//#device adc=8      // Conversión con 8 bits      
               // Si no se pone ningún device toma 8 bits

#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT

#use delay (clock=4000000)  

#include <LCD2.c>



void main( void )
{
  float  valor;    
//  float const resoluc= 5.0/256.0;      // Conversión es con 8 bits
//  float const resoluc= 5.0/1024.0;      // Conversión es con 10 bits  
  float voltios;

  setup_adc_ports ( ALL_ANALOG );        // Entrada analógica por RA0
  setup_adc ( ADC_CLOCK_INTERNAL );    // Reloj interno para el ADC
  set_adc_channel ( 0 );             // Canal 0 para convertir

  lcd_init();
 
  while ( 1 )                    
  {
      valor = read_adc();              
     
      lcd_gotoxy(1,1);
          
      voltios= valor/* * resoluc*/;    
                              
      printf ( lcd_putc, "%1.2f voltios ", voltios );
     
      delay_ms(200);            // Convierte cada 200ms--*
  }
}

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Sobre El Adc Del 16f876
« Respuesta #1 en: Lunes 28 de Febrero de 2005, 12:23 »
0
Hola y Bienvenido  :smartass: , espero encuentres aqui la ayuda que te sea util para aprender y no solo para solucionar inconvenientes:). esos programas los creaste vos?.. funcionan?.. te puedo ayudar ;) , pero no tengo codigos para lo que necesitas escritos en C, solo ASM, pero puedo darte una mano en lo que necesites mientras programas un codigo en C, algo me defiendo con el lenguaje... no es dificil lo que necesitas, es cuestion de ponerse a pensar y escribir codigos.. Respondeme si los codigos anteriores funcionan, ahi tienes una buena Base :). Saludos! :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Naac

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Sobre El Adc Del 16f876
« Respuesta #2 en: Viernes 5 de Agosto de 2005, 02:14 »
0
Hola
Conseguiste lo que buscabas?
Si no es así, responde y te mandaré algo de código para mostrar lo que quieras por el LCD (en ensamblador).
Con qué sensor de co2 trabajas?
Características?
Ya convertiste la señal en digital o hay que convertirla?
Me interesa eso del sensor de co2, ya que quisiera montar un "co2stato" o como quiera que se llame con un 16f877, con salida a un LCD y con varios relés para controlar diversos aparatos (electroválvulas, extractores, etc...). Vamos, un sistema automático para el control del co2 de un cultivo de algunas plantas (jijiji).