PINGÜINO PIC sensor de temperatura e Iluminación – OPEN HARDWARE / SOFTWARE / MIND
Menú Close

PINGÜINO PIC sensor de temperatura e Iluminación

Bueno hoy estoy con un proyecto fácil, pero que al principio de mis tiempos con PICs, me costó su trabajo.

Básicamente el proyecto toma 10 lecturas de temperatura con el sensor LM35 y 10 lecturas del LDR, luego realizamos el promedio de estas y lo imprimimos por el puerto serie, para más tarde hacer lo que queramos con estos valores. Graficarlos en una página web o simplemente en PROCESSING

El código es simple.

[sourcecode language=»py»]
<blockquote>
/*
=============
Sensor de temperatura y luz
walii
Octubre 2010
*/
#define PIC18F4550
#define RUNLED PORTAbits.RA4
int samples[10];
int max=0;
int min=100;
int tempc=0;
int tempf=0;
int lux=0;
int i,x;
float val1;
float val2;

void setup() {
//Solo el serial es necesario para enviar los datos.
Serial.begin(9600);
}
void loop() {
//Realizamos un ARRAY para hacer un promedio de 10 mediciones
for (i=0;i<=9;i++){
val1=analogRead(13);
samples[i]=(4.65*val1*100)/1024.0;
tempc=tempc+samples[i];
delay(100);
}
//Dividimos por la misma cantidad de lecturas
tempc=tempc/10.0;
//Convertimos en Farhenheit
tempf=(tempc*9)/5+32;
//Capturamos los valores de minimos y maximos.
if(tempc>max){max=tempc;}
if(tempc<min){min=tempc;}

//Ahora le toca el turno a la luz, tomamos 10 lecturas
for (x=0;x<=9;x++){
val2=analogRead(16);
samples[x]=val2*100/1024.0;
lux=lux+samples[x];
delay(100);
}
//Dividimos el resultado por el mismo numero de lecturas
lux=100-(lux/10.0);
//Controlamos que las lecturas no sobrepasen los valores de 0-100.
if(lux>=100)lux=100;
if(lux<=0)lux=0;
//Imprimimos todo en el serial
Serial.print("Pinguino.walii.es");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Temperatura: ");
Serial.print(tempc,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Temp maxima: ");
Serial.print(max,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("Temp minima: ");
Serial.print(min,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("Temp fahrenheit: ");
Serial.print(tempf,DEC);
Serial.print(" F");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Nivel de Luz: ");
Serial.print(lux,DEC);
Serial.print("%");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
//indentificacion que todo funciona bien, el runled parpadea.
RUNLED=1;
delay(50);
RUNLED=0;
delay(50);
}
[/sourcecode]

El sensor LM35 lo conectaremos en la puerta AN0, patilla numero2 o puerta 13 de nuestro PINGUINO 18f4550 (recordemos que por algún motivo JeanPear a cambiado los números de las patillas, pero viendo el diagrama nos ubicamos bien.)

El LDR para medir la incidencia de luz lo conectaremos en la puerta AN3, patilla numero 5 o puerta 16 de nuestro PINGÜINO 18f4550

Related Posts

2 Comments

  1. Andalado

    Hola Walter, soy nuevo en esto de pinguino y realmente me ha fascinado, estuve observando este post y creo que me sirve para un proyecto, pero mi pinguino lo hice con el 18f2550, asi que no se si las conexiones que muestras son las que necesito, dentro del IDE de pinguino utilizas el pin 16 y 13 para los sensores, puedo usarlos en el mio sin ningun problema?

  2. walterleonardo

    Hola buenos días y bien venido…
    en todo lo que podamos ayudarte, estamos aquí.
    Mira, en principio solo tienes que respetar las puertas analógicas, en este caso son las AN0 y AN3, para el caso del 18f2550 estas son las patillas 2 y 5, pero si quieres asegurate por ti mismo, puedes ver el diagrama de la web de microchip. en este enlace. http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.