Saludos! Siguiendo con los ejemplos básicos con el compilador PIC C, con los ejemplos que hemos usado antes, como lo es el uso del ADC y el control de una LCD16x2, podemos hacer este pequeño ejemplo y se trata de un sensor de temperatura usando el LM35.
Circuito:
El circuito usado es el siguiente:
El código usado es el siguiente (para saber de donde sale la igualdad de 1bit = 0.48828125°C recomiendo leer este post el cual te ayudara a calcular el valor):
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* CCS PIC_011: Sensor de temperatura con LM35 | |
* | |
******************************************************************************* | |
* FileName: main.c | |
* Processor: PIC16F887 | |
* Complier: PIC C v5.025 | |
* Author: Pedro Sánchez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: Con este ejemplo mostraremos en la LCD la termperatura | |
* presente en el LM35 | |
******************************************************************************* | |
* Rev. Date Comment | |
* v0.00 02/12/2017 Creación del firmware | |
******************************************************************************/ | |
//Direvtivas del microcontrolador | |
#include <16f887.h> //Libreria del PIC | |
#device adc=10 //Para usar el adc de 10bits | |
#fuses INTRC_IO , NOWDT, NOPROTECT,NOPUT //Fuses del PIC | |
#use delay(clock=4000000) //Especifica la velocidad de reloj | |
#include <lcd.c> | |
//Declaracion del microcontrolador | |
#use fast_io(A) //Prepara para el uso de puerto A | |
#use fast_io(D) //Prepara para el uso de puerto D | |
int16 nbitsADC; //aqui almacenamos el valor del puerto RA0 | |
float temperaturaLM35; | |
void main(){ | |
set_tris_a(0xFF);//Puerto A como entrada | |
SETUP_ADC_PORTS(sAN0); // determina que el puerto RA0/AN0 será analógico | |
SET_ADC_CHANNEL(0); | |
setup_adc(ADC_CLOCK_DIV_32); //desactivamos comparadores del puerto A | |
setup_comparator(NC_NC_NC_NC); | |
lcd_init(); | |
//Mensaje inicial | |
lcd_gotoxy(1,1);//Posiciona en LCD | |
lcd_putc ("Sensor de");//manda un mensaje al LCD | |
lcd_gotoxy(1,2); | |
lcd_putc ("temperatura LM35"); | |
delay_ms(1000); //espera 1 segundo | |
lcd_putc("\f"); //limpia el lcd | |
while(true){ | |
nbitsADC = read_adc(); //lee el dato de AN0 | |
// 1bit = 0.48828125°C, aplicamos regla de tres para temperatura final | |
temperaturaLM35 = nbitsADC * 0.48828125; | |
lcd_putc("\f"); //limpia el lcd | |
lcd_gotoxy(1,1); | |
lcd_putc (" Temperatura:"); | |
lcd_gotoxy(1,2); | |
printf(lcd_putc," %1.2f C",temperaturaLM35); | |
// %1.2f es para mostrar un entero y dos decimales de tipo floar | |
delay_ms(1000);//espera 1000 milisegundos | |
} | |
} |
Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
Bibliografía:
- Texas Instruments, "LM35 Precision Centigrade Temperature Sensors", http://www.ti.com/lit/ds/symlink/lm35.pdf
- Pedro Sánchez Ramírez, "Stellaris LaunchPad & Energia: Sensor de temperatura LM35 ", https://mrchunckuee.blogspot.com/2016/11/ek-lm4f120xl-e004.html
0 Comentarios