Sensor de temperatura con lm35 y pic 16f877a

Hola
espero me puedan colaborar.
Tengo que implementar un sensor de temperatura con lm35, salida por visualizaciÓn dinÁmica (dos displays) su temperatura debe estar entre 0°y50°c, su entrada debe ser por el canal an2 del pic usar un voltaje de referencia(vref+) mayor a 3 voltios y menor a 4 voltios adjunto lo que tengo hasta el momento.
No se como incorporar el lm35 ael programa ni los voltajes.
Agradezco su colaboraciÓn.
 

Adjuntos

  • PROGRAMA.jpg
    PROGRAMA.jpg
    64.7 KB · Visitas: 1,405
Que bueno amigo que hayas echo caso aqui pues si te pueden ayudar dejame analizar bien tu caso y dependiendo te paso alguna informacion ya que solo vi que lo colocaste ahora bien aqui dame un momento.........:unsure::unsure::unsure:

Ayayayay,amigo te estas ganando la santa tabla de san cacho:

porque?bueno porque por lo visto no usaste el buscador lee este link que habla al respecto lm35 y el 16f877 que es lo que tenes alla arriba

https://www.forosdeelectronica.com/f24/programa-conversion-d-pic-16f877-6061/
 
Última edición por un moderador:
hola Erik te entrego algo de información espero que no este equivocado para que te guíes si no entiendes algo me avisas espero no se aburran ya que es un poquito extenso

sensor de temperatura lm35
Rango de temperatura de -55 ° a +150 ° C
Factor de escala lineal +10.0 mV/°C
Funciona a partir de 4 Hasta 30 volts

MODULO CONVERTIDOR ANALÓGICO/DIGITAL (A/D)

El módulo de conversión Analógico/Digital dispone de cinco entradas para los dispositivos de 28 pines y ocho para dispositivos de 40 pines.
A través de la entrada analógica se aplica la señal analógica a un condensador de captura y retención (sample and hold) que después se introduce en el convertidor. El convertidor de aproximaciones sucesivas da como resultado una palabra de 10 bits.
El convertidor A/D puede seleccionar como tensión de referencia la alimentación interna VDD y masa o bien una externa que se introduzca entre VREF+ y VREF. Cuando se selecciona la tensión de referencia externa, hay que tener en cuenta que existen algunas limitaciones; el máximo voltaje aplicado a la patilla VREF+ será VDD+0,3V y el mínimo VDD-2,5V. En cuanto a la tensión VREF- la mínima tensión será VSS-0,3V y la máxima VREF+ –2V, así por ejemplo, si la tensión de alimentación es de 5V, la tensión VREF+ no podrá exceder de 5V. Por lo que el máximo voltaje en VREF- será de 3V. Siempre se ha de cumplir que VREF+ – VREF– <= 2V.
En el caso de los micros de la serie 16 y 18 de microchip el modulo ADC de el Pic es de 10 bits de resolución el microcontrolado me aumentaría 1 bit cada (VRF+ - VRF-)/2^10 en el caso que tengamos un voltaje VREF– = Vss; y VREF+ =3V el voltaje por bit seria de 3V/1024 = 0,002929688V/bit = 2. 929688 mV/bit
Lo que quiere decir que el registro del ADC me aumentara en 1 por cada 2. 929688 mV/bit.
Acomodando las escalas si el sensor lm35 me entrega 10.0 mV/°C y el ADC me aumenta en 2. 932551mV por bit y necesito que me quede uno a uno la escala puedo buscar un factor que me haga esto y seria 10.0 mV/C° / 2. 929688 mV/bit = 3,41333 o sea que si divido el valor de la conversión A/D por este valor 3,41333 me dará el valor de la temperatura en grados centígrados

Para realizar una conversión A/D deben seguirse los siguientes pasos:
1. Configurar el módulo conversor A/D
• Configurar los pines que actúan como entradas analógicas, las señales que harán de tensión de referencia la que trabajarán como E/S digitales (ADDCON1).
• Seleccionar el canal de entrada. A/D (ADCON0).
• Seleccionar la fuente de la señal de reloj para la conversión A/D (ADON0).
• Hacer la selección del formato de justificación
• Activar el módulo de conversión A/D (ADCON0)

2. Activar si, se desea, la interrupción del módulo conversor A/D
3. Esperar el tiempo requerido para la adquisición
4. Inicio de la conversión
5. Tiempo de espera para terminar la conversión A/D que puede detectarse
6. Leer el par de registros ARDESH:ADRESL donde se encuentran los 10 bits que resultan de la conversión y poner a cero el flag ADIF.
7. Para una nueva conversión volver a los pasos 1 y 2, El tiempo de conversión por bit está definido por TAD, se exige un mínimo de 2*TAD para realizar una nueva conversión.

te anexo un ejemplo realizado en Pic c de CCS y la simulación en Proteus.

saludos
 

Adjuntos

  • termometro adc.rar
    35.4 KB · Visitas: 5,099
Última edición:
FRYCK muchísimas gracias por su información voy a revisarla bien,y trabajare en ello haber que obtengo, me es de gran utilidad su colaboración. gracias.
 
hola pues aprovecho este tema abierto para ver si me pudieran echar una ayudadita ^^, yo también ando con el Termómetro con el LM35 y el PIC16F877A, hice ya el código en CCS C y la simulación en Proteus, todo anda bien, el problema es que al ser mi primer proyecto con PIC no estoy muy seguro de como conectarlo, voy a utilizar un LCD de 16x2 (JHD-162ASTNGLED), les agradecería si me pudieran dar una ayudadita ^^

Adjunto el código y la simulación del termo, también un pequeño diagrama de el, si me pudieran decir que es lo que le falta para que este funcionando físicamente
 

Adjuntos

  • Termometro.PNG
    Termometro.PNG
    38.7 KB · Visitas: 1,271
  • termo CCS.rar
    18 KB · Visitas: 2,316
hola pues aprovecho este tema abierto para ver si me pudieran echar una ayudadita ^^, yo también ando con el Termómetro con el LM35 y el PIC16F877A, hice ya el código en CCS C y la simulación en Proteus, todo anda bien, el problema es que al ser mi primer proyecto con PIC no estoy muy seguro de como conectarlo, voy a utilizar un LCD de 16x2 (JHD-162ASTNGLED), les agradecería si me pudieran dar una ayudadita ^^

Adjunto el código y la simulación del termo, también un pequeño diagrama de el, si me pudieran decir que es lo que le falta para que este funcionando físicamente

hola ElTox a que te refieres con "pudieran decir que es lo que le falta para que este funcionando físicamente" si es como se conecta todo lcd sensor pic para conecta la lcd basese en los datasheet o en la simulacion te anexo un par de cositas en tu simulacion para que no se te olviden

saludos
 
Última edición:
en sí, me refiero al PIC el lcd el lm35 los conecte como viene en su datasheet y de ahí al PIC con los pines que se definieron para tal propósito, la cuestión es que había leído por ahí que los pines no utilizados deberían declararse como outputs para un 16F84, ¿es lo mismo para el 16F877A?
 
en sí, me refiero al PIC el lcd el lm35 los conecte como viene en su datasheet y de ahí al PIC con los pines que se definieron para tal propósito, la cuestión es que había leído por ahí que los pines no utilizados deberían declararse como outputs para un 16F84, ¿es lo mismo para el 16F877A?

Hola ElTox creo que eso es mas un modo de hacer las cosas que una necesidad a alguien le gusta hacerlo así ya tendrá sus motivos para ello. Pero si me vaso en los datashet de microchip tanto en el pic 16f84 como en el 16f877 los pines viene por defecto como entrada y en mi caso yo no los modifico cuando no los utilizo
saludos
 

Adjuntos

  • pantallazo3.jpg
    pantallazo3.jpg
    110.2 KB · Visitas: 451
hola Erik te entrego algo de información espero que no este equivocado para que te guíes si no entiendes algo me avisas espero no se aburran ya que es un poquito extenso

sensor de temperatura lm35
Rango de temperatura de -55 ° a +150 ° C
Factor de escala lineal +10.0 mV/°C
Funciona a partir de 4 Hasta 30 volts

MODULO CONVERTIDOR ANALÓGICO/DIGITAL (A/D)

El módulo de conversión Analógico/Digital dispone de cinco entradas para los dispositivos de 28 pines y ocho para dispositivos de 40 pines.
A través de la entrada analógica se aplica la señal analógica a un condensador de captura y retención (sample and hold) que después se introduce en el convertidor. El convertidor de aproximaciones sucesivas da como resultado una palabra de 10 bits.
El convertidor A/D puede seleccionar como tensión de referencia la alimentación interna VDD y masa o bien una externa que se introduzca entre VREF+ y VREF. Cuando se selecciona la tensión de referencia externa, hay que tener en cuenta que existen algunas limitaciones; el máximo voltaje aplicado a la patilla VREF+ será VDD+0,3V y el mínimo VDD-2,5V. En cuanto a la tensión VREF- la mínima tensión será VSS-0,3V y la máxima VREF+ –2V, así por ejemplo, si la tensión de alimentación es de 5V, la tensión VREF+ no podrá exceder de 5V. Por lo que el máximo voltaje en VREF- será de 3V. Siempre se ha de cumplir que VREF+ – VREF– <= 2V.
En el caso de los micros de la serie 16 y 18 de microchip el modulo ADC de el Pic es de 10 bits de resolución el microcontrolado me aumentaría 1 bit cada (VRF+ - VRF-)/2^10 en el caso que tengamos un voltaje VREF– = Vss; y VREF+ =3V el voltaje por bit seria de 3V/1024 = 0,002929688V/bit = 2. 929688 mV/bit
Lo que quiere decir que el registro del ADC me aumentara en 1 por cada 2. 929688 mV/bit.
Acomodando las escalas si el sensor lm35 me entrega 10.0 mV/°C y el ADC me aumenta en 2. 932551mV por bit y necesito que me quede uno a uno la escala puedo buscar un factor que me haga esto y seria 10.0 mV/C° / 2. 929688 mV/bit = 3,41333 o sea que si divido el valor de la conversión A/D por este valor 3,41333 me dará el valor de la temperatura en grados centígrados

Para realizar una conversión A/D deben seguirse los siguientes pasos:
1. Configurar el módulo conversor A/D
• Configurar los pines que actúan como entradas analógicas, las señales que harán de tensión de referencia la que trabajarán como E/S digitales (ADDCON1).
• Seleccionar el canal de entrada. A/D (ADCON0).
• Seleccionar la fuente de la señal de reloj para la conversión A/D (ADON0).
• Hacer la selección del formato de justificación
• Activar el módulo de conversión A/D (ADCON0)

2. Activar si, se desea, la interrupción del módulo conversor A/D
3. Esperar el tiempo requerido para la adquisición
4. Inicio de la conversión
5. Tiempo de espera para terminar la conversión A/D que puede detectarse
6. Leer el par de registros ARDESH:ADRESL donde se encuentran los 10 bits que resultan de la conversión y poner a cero el flag ADIF.
7. Para una nueva conversión volver a los pasos 1 y 2, El tiempo de conversión por bit está definido por TAD, se exige un mínimo de 2*TAD para realizar una nueva conversión.

te anexo un ejemplo realizado en Pic c de CCS y la simulación en Proteus.

saludos
gracias por el aporte
 
hola disculpa alguien me podria pasar el codigo en asm lo nesecito urgentemente , thx

compañero en todo caso mejor hubieras pedido el archivo o codigo en .hex que por cierto no se si ya estara entre los que publicaron seria de buscar no? y otra cosa ojo en la forma en que escribis NUNCA se agrega al princio ni al final ni en medio lo de urgente!

Aqui no se aplica La Ley del Minimo Esfuerzo salu2!
 
hola pues aprovecho este tema abierto para ver si me pudieran echar una ayudadita ^^, yo también ando con el Termómetro con el LM35 y el PIC16F877A, hice ya el código en CCS C y la simulación en Proteus, todo anda bien, el problema es que al ser mi primer proyecto con PIC no estoy muy seguro de como conectarlo, voy a utilizar un LCD de 16x2 (JHD-162ASTNGLED), les agradecería si me pudieran dar una ayudadita ^^

Adjunto el código y la simulación del termo, también un pequeño diagrama de el, si me pudieran decir que es lo que le falta para que este funcionando físicamente

hola a todos esta bueno este diseño estuve analizando como seria el cambio para medir 3 temperaturas simultaneamente. y si alguna supera un valor ejemplo 100 celsius avise en el display saludos espero me puedan apoyar compañeros

hola Erik te entrego algo de información espero que no este equivocado para que te guíes si no entiendes algo me avisas espero no se aburran ya que es un poquito extenso

sensor de temperatura lm35
Rango de temperatura de -55 ° a +150 ° C
Factor de escala lineal +10.0 mV/°C
Funciona a partir de 4 Hasta 30 volts

MODULO CONVERTIDOR ANALÓGICO/DIGITAL (A/D)

El módulo de conversión Analógico/Digital dispone de cinco entradas para los dispositivos de 28 pines y ocho para dispositivos de 40 pines.
A través de la entrada analógica se aplica la señal analógica a un condensador de captura y retención (sample and hold) que después se introduce en el convertidor. El convertidor de aproximaciones sucesivas da como resultado una palabra de 10 bits.
El convertidor A/D puede seleccionar como tensión de referencia la alimentación interna VDD y masa o bien una externa que se introduzca entre VREF+ y VREF. Cuando se selecciona la tensión de referencia externa, hay que tener en cuenta que existen algunas limitaciones; el máximo voltaje aplicado a la patilla VREF+ será VDD+0,3V y el mínimo VDD-2,5V. En cuanto a la tensión VREF- la mínima tensión será VSS-0,3V y la máxima VREF+ –2V, así por ejemplo, si la tensión de alimentación es de 5V, la tensión VREF+ no podrá exceder de 5V. Por lo que el máximo voltaje en VREF- será de 3V. Siempre se ha de cumplir que VREF+ – VREF– <= 2V.
En el caso de los micros de la serie 16 y 18 de microchip el modulo ADC de el Pic es de 10 bits de resolución el microcontrolado me aumentaría 1 bit cada (VRF+ - VRF-)/2^10 en el caso que tengamos un voltaje VREF– = Vss; y VREF+ =3V el voltaje por bit seria de 3V/1024 = 0,002929688V/bit = 2. 929688 mV/bit
Lo que quiere decir que el registro del ADC me aumentara en 1 por cada 2. 929688 mV/bit.
Acomodando las escalas si el sensor lm35 me entrega 10.0 mV/°C y el ADC me aumenta en 2. 932551mV por bit y necesito que me quede uno a uno la escala puedo buscar un factor que me haga esto y seria 10.0 mV/C° / 2. 929688 mV/bit = 3,41333 o sea que si divido el valor de la conversión A/D por este valor 3,41333 me dará el valor de la temperatura en grados centígrados

Para realizar una conversión A/D deben seguirse los siguientes pasos:
1. Configurar el módulo conversor A/D
• Configurar los pines que actúan como entradas analógicas, las señales que harán de tensión de referencia la que trabajarán como E/S digitales (ADDCON1).
• Seleccionar el canal de entrada. A/D (ADCON0).
• Seleccionar la fuente de la señal de reloj para la conversión A/D (ADON0).
• Hacer la selección del formato de justificación
• Activar el módulo de conversión A/D (ADCON0)

2. Activar si, se desea, la interrupción del módulo conversor A/D
3. Esperar el tiempo requerido para la adquisición
4. Inicio de la conversión
5. Tiempo de espera para terminar la conversión A/D que puede detectarse
6. Leer el par de registros ARDESH:ADRESL donde se encuentran los 10 bits que resultan de la conversión y poner a cero el flag ADIF.
7. Para una nueva conversión volver a los pasos 1 y 2, El tiempo de conversión por bit está definido por TAD, se exige un mínimo de 2*TAD para realizar una nueva conversión.

te anexo un ejemplo realizado en Pic c de CCS y la simulación en Proteus.

saludos

compañero saludos vi tu programa en c asi como esta puede leer 2 ? es que no pude ver el diagrama en proteus por la version ... Quiero leer 2 o 3 temperaturas pero la verdad no se como leer varias temperaturas e imprimirlas en el lcd... saludos.
 
Última edición:
Buenos dias...

Veo que estoy en el hilo indicado, ya que yo en estos momentos me encuentro trabajando en mi Proyecto de Tesis con un 16F876A que utiliza el mismo Datasheet que el 877A.

Al igual que el primer post, yo necesito coilocar varios sensores al PIC para poder controlar via Mensajeria de Texto o llamadas cada vez que se active una alarma.

Me uno al tema ya que no sé nada de programación y estoy incursionando de apoco en el tema...

Cualquier aporte que pueda hacer lo haré y aprovecho de consultar si este código está bien realizado, ya que lo he probado en Proteus y ningún problema, pero no hay caso que pueda programarlo en el PIC... Siempre me arroja errores, cualquier programa que utilice.

Lo otro, los ejemplos creados en Proteus no los puedo abrir, podrían decir que versión de Proteus utilizaron para crearlos...

Aquí el código... (valga decir que es un extracto de muchos códigos encontrados en la web)

Código:
#include <16F876A.h>
#device *=16
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //Crystal 20MHz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main(){
while(1){
   output_high(PIN_B1);
   output_low(PIN_B2);
   delay_ms (25);
   output_low(PIN_B1);
   output_high(PIN_B2);
   delay_ms (25);
}
}

Dejo algunos datos de lo que he utilizado para el proyecto:

Placa programadora: JDM, UTI (SMARTEC)
Programa para quemar el PIC: PICProg, WinPin800, PICProg4U
SImulador: Proteus v7.2
Programa para escribir el programa: PCWHD Compiler v4.023

Saludos y gracias por todo...
 
Compañeros expertos en la programada ayudenos a usar las diferentes entradas del 877a porque si al convertidor A-D solo es uno y hay que darle un tiempo de espera para andar midiendo las entradas ahi si no se que tiempo dar. Lo mio es medir 2 temperaturas al mismo tiempo. pero al parecer tambien se puede medir voltaje 14 vcd. es decir 3 medidas al mismo tiempo. Donde puedemos estudiar este tema
 
Muchachos... Sé que es esto se va a salir del tema pero necesito colocarlo por que sé que será de utilidad para todos.

Para todo aquel que tenga el problema de que al programar el PIC salga:

Verificación falló en la dirección de código 0000h !

Se resuelve colocando DIRECTAMENTE EL PROGRAMADOR AL PUERTO SERIAL.

Yo siempre colocaba el Programador - Cable - Puerto Serial y siempre me aparecía este error.

Desde que hago esto (hoy) no he vuelto a tener problemas con la programación, y créanme, estuve TODO EL FIN DE SEMANA tratando de programa y nada...

Saludos...
 
io solo quiero hacer un programa para un sensor de temperatura el LM35, con un convertidor analogico dital, tambien estoy usando el pic 16g877a, pero no tengo nada!!!! me podrian pasar porfis el archivo .ams se los agradeciria mil =)
 
Digamos, hay que pasarte todo? vos queres hacer un progrma o copiarlo? por alli cuando entraste habia un reglamenteo del foro que seguramente no leiste y dice en uno de sus puntos sobre la ley del minimo esfuerso recibirlo todo a cambio de nada.... tu post creo que tiene el boleto picado a moderación de una....
 
Atrás
Arriba