TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: mariacontenis en 24 de Marzo de 2013, 13:51:57
-
Que tal amigos navegando por la red encontre este codigo, sensor de temperatura MLX90614 que es un sensor IR que tiene la caracteristica de proporcionar la temperatura objeto y temperatura ambiente.
este sensor de comunica con el pic por i2c, mas lo que yoquiero hacer es conectar 2 sensores de ente tipo en un solo pic. En la parte de abajo pongo el codigo como creo que es para conectar los 2 sensores, no se si me pueden ayudar.
Para 1 sensor
#include <18F4550.H>
//#device ADC=10
//#device ADC=8
#device HIGH_INTS=TRUE
//#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN // para el cristal de 20mhz
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN // para el cristal de 12mhz
#use delay (clock=48000000)
#use rs232(baud=115200, xmit=PIN_C6,rcv=PIN_C7)
#use I2C(master,sda=PIN_B0, scl=PIN_B1)
int8 resultado1=0;
int8 resultado2=0;
int8 CRC=0;
int16 tempk=0;
float tempc=0.0;
void main (void){
while (TRUE){
// lectura = read_adc();
output_toggle(pin_B4);
i2c_start();
//i2c_write(0×00); // pido datos del sensor
if (i2c_write(0xB4)==0){ // direccion del sensor melexis para mandar comando
i2c_write(0×07); // pido datos del sensor
i2c_start();
i2c_write(0xB5); // direccion del sensor melexis para leer
resultado1 = i2c_read(1);
resultado2 = i2c_read(1);
tempk= make16(resultado2,resultado1);
CRC = i2c_read(0);
}
i2c_stop();
tempc=(tempk*0.02)-273;
printf("temp:%3.2f\n\r",tempc);
delay_ms(500);
}
}
//////////////////////////////////////////////////////////////////////////////////////
Para 2 sensores
int8 resultado1,resultado_3=0;
int8 resultado2,resultado_4=0;
int8 CRC=0;
int16 tempk,tempk_1=0;
float tempc,tempc_1=0.0;
void main (void)
{
while (TRUE)
{
output_toggle(pin_B4);
i2c_start();
if (i2c_write(0xB4)==0) // direccion del sensor para mandar comando 1101011
{
i2c_write(0×07); // pido datos del sensor
i2c_start();
i2c_write(0xB5); // direccion del sensor para leer
resultado1 = i2c_read(1);
resultado2 = i2c_read(1);
tempk= make16(resultado2,resultado1);
CRC = i2c_read(0);
}
i2c_stop();
tempc=(tempk*0.02)-273;
printf(“temp:%3.2f\n\r”,tempc); delay_ms(500);
////////////////////////////////////////////////////////////////////////////////
if (i2c_write(0xB6)==0) // direccion del sensor para mandar comando 01011011
{
i2c_write(0×08); // pido datos del sensor
i2c_start();
i2c_write(0xB7); // direccion del sensor para leer
resultado_3 = i2c_read(1);
resultado_4 = i2c_read(1);
tempk_1= make16(resultado_4,resultado_3);
CRC = i2c_read(0);
}
i2c_stop();
tempc_1=(tempk_1*0.02)-273;
printf(“temp:%3.2f\n\r”,tempc_1); delay_ms(500);
}
////////////////////////////////////////////////////////////////////////////////
}
}
saludos!!! :-/
-
hola, necesito comunicar el sensor mlx90615 con el pic 18f4550, seria genial que me ayudaran, ya que no se mucho de PIC´s
Gracias!!