Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Convertidor A/D para termometro con PIC16f876a


       



#1  Convertidor A/D para termometro con PIC16f876a
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
Hola buenas
Queria comentaros sobre un conversor A/D que ya me funciona , obtiene la tension por la patilla RA0 que en este caso seria un lm335 el que la aumenta o disminuye la tension segun la temperatura y me saca por lcd ( XºC ), pues bien quiero ampliar esta trabajo introducciendo otro lm335 y el problema que tengo es que no consigo configurar para que la patilla RA1 como entrada analogica, me da erorres de compilacion al configurar asi :

setup_adc_ports(RA1_ANALOG);

con : setup_adc_ports(RA0_ANALOG); funciona bien

tambien puedo poner : setup_adc_ports(ALL_ANALOG); pero claro el resultado de la conversion lo obtengo de : resultado=read_adc();
¿ como podria obtener por separado la conversion de la entrada RA0 y RA1 ?

Gracias por adelantado
Saludos

#2  
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
Bueno pues ya he conseguido configurar los puetos de entrada analogicos con:

setup_adc_ports( RA0_RA1_RA3_ANALOG );

aun asi no consigo leer la conversion individual de cada una de las entradas

#3  
tiopepe123
Colaborador
Registrado: 14 May 2006
Mensajes: 2802
Ubicación: Barcelona (Espanya)
citar
Haces el ?
set_adc_channel(1);


Mira el ex_admm.c
C:\Archivos de programa\PICC\Examples

Y aqui todas combinaciones que puedes configurar tu ADC (puedes abrirlos con el bloc de notas)
C:\Archivos de programa\PICC\Devices



Si quieres mejorar un poco mas en precision, puedes utilizar las REF o sea poner en A2 tension minima y A3 tension maxima.

Con tres resistencias en serie calculas los margenes que te interesan, pero hay un limite
La tension diferencial entre A2 y A3 debe ser de unos 2.5V si no interprete mal el datasheet.

#4  
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
Muchas gracias por la informacion tiopepe

pues no utilizo set_adc_chanel(1); por que al compilar me da error:

undefined identifier set_adc_chanel

mi progrma es el siguiente:

#include<16f876.h>
#device adc=10
#fuses HS,NOPROTECT,NOWDT
#use delay(clock=4000000)
#include <string.h>
#include <lcd.c>
#byte por_b=6
#ORG 0X1F00,0X1FFF{}// reserva la memoria para el bootloader
int y;
unsigned long int resultado,x;
main()
{

lcd_init();
set_tris_b(0x00);
setup_adc_ports( RA0_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL);
//set_adc_chanel(); da error
resultado=read_adc();
while(1)
{

resultado=read_adc();
x=(resultado-559);
y=x/2;
delay_ms(10);
printf(LCD_PUTC,"\f %d%cC",y,223);
delay_ms(50);
}

}
y sobre la tension de referencia no lo utilizo ya que uso la de 5v a 0v y que la tiene por defecto aunque la tensiones con las que voy a jugar son de 2.73v que en el lm335 son 0ºC hasta 3.73v 102ºC

#5  
damianj84

Registrado: 10 Dic 2007
Mensajes: 12
citar
No se nada de PICs, pero fijate que tiopepe123 te escribió channel con doble N, y no con N simple como lo escribiste tu.

#6  
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
muy observador damian aveces los problemas son las cosas mas tontas

gracias^^

#7  
Paloky

Registrado: 21 Abr 2006
Mensajes: 145
Ubicación: Mataró, Barcelona
citar
A parte de la dos "n" del channel, tambien se tiene que poner el número entre parentesis correspondiente al número del convertidor que quieras leer.

#8  
tiopepe123
Colaborador
Registrado: 14 May 2006
Mensajes: 2802
Ubicación: Barcelona (Espanya)
citar
Pero que vista teneis...

Yo lo copie directamente del help.
Tambien seria interesante meterle un
set_tris_a(0xff); por si acaso

#9  
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
ya me funciona el programa prefectamente , gracias por vuestra ayuda

Saludos

#10  
kaldor

Registrado: 28 Ene 2008
Mensajes: 6
citar
Ya sabia yo que esto no iva a ser tan facil

Bueno pues el programa funciona correctamente en proteus y me saca las temperaturas por lcd, pero ahora estoy montando el circuito y no aparece nada en el lcd, se que este dispositivo necesita un tiempo entre instrucciones para que funcione bien y ya nose que hacer le he metido delays en casitodo el programa pero no consigo que se visualiza nada.

el codigo es el siguiente:

#include<16f876.h>
#device adc=10
#fuses HS,NOPROTECT,NOWDT
#use delay(clock=4000000)
#include <string.h>
#include <lcd.c>
#byte por_b=6

#ORG 0X1F00,0X1FFF{}// reserva la memoria para el bootloader
int y,w;
unsigned long int resultado,x,resultado2,z;
main()
{
set_tris_b(0x00);
delay_ms(40);
set_tris_a(0xff);
lcd_init();
delay_ms(40);
setup_adc_ports( RA0_RA1_RA3_ANALOG );
delay_ms(40);
setup_adc(ADC_CLOCK_INTERNAL);
delay_ms(40);

while(1)
{
set_adc_channel(0);
delay_ms(10);
resultado=read_adc();
delay_ms(10);
set_adc_channel(1);
delay_ms(10);
resultado2=read_adc();
delay_ms(10);
x=(resultado-559);
y=x/2;
z=(resultado2-559);
w=z/2;
delay_ms(10);
printf(LCD_PUTC,"\f %d%cC",y,223);
printf(LCD_PUTC,"\n %d%cC",w,223);
delay_ms(50);
}

}


Agraderia cualquier detalle que pueda ser de ayuda .
gracias

 Responder





 Temas de interés 
No hay mensajes nuevos Sensor de temperatura
No hay mensajes nuevos Necesito un sensor de temperatura que lo lea la computadora
No hay mensajes nuevos Sobre sensor de temperatura
No hay mensajes nuevos Control de temperatura y humedad
No hay mensajes nuevos Control de temperatura

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||