Sensor MLX90614 BAA version3V+ARduino mini pro version 5v

Saludos amigo les cuento que estoy montado en el proyecto de mi tesis la cual involucra un sensor infrarrojo sin contacto
Este sensor que ya tengo en mis manos es el MLX90614 de la version que funciona con 3v ya he intentado conectarlo de dos formas pero no logro conectarlo a la placa
mañana os comento que alternativas he encontrado de como hacer que funcione este sensor pero les dejo aqui estos dos tutoriales segundo con el del fabricante que no me funciono

Estoy intentando utilizar este sensor con una placa arduino mini pro de 5V y 16Mhz ya de entrada me di cuenta que tengo un problema y es que el sensor que tengo es el MLX9014BAA osea funciona con 3V
he intentado conectarlo de varias formas pero no logro que se comunique con el sensor la placa supongo que el i2C de la placa funciona a un nivel diferente sin embargo no logro conectarlo aun usando un convertidor de niveles
use estos dos tutoriales y nada aun no funciona

https://learn.sparkfun.com/tutorials/mlx90614-ir-thermometer-hookup-guide
si me puedes ayudar te lo agradeceria ingeniero_creativo@hotmail.com enviar cualquier ayuda que tengan a la mano .mañana agrego fotos de el montaje y demas cosas para ver quien me puede ayudar

Yo he usado esto

y he usado esto también

938630b4de95dc0d1e35cab19cbb7fb24bf82d1e.jpg

y si no pasa nada, uso el osciloscopio y veo que ocurre.

El MOSFET puede ser un 2n7000 en lugar de ese que te puse en el esquema que solo es para que veas la idea.
Aca lo tienes

Otra idea

A level shifter converts a 5V signal to a 3.3V signal. It’s a pretty simple IC to use.

Vcc connects to 3.3V and this IC is capable of level shifting 6 channels. The ‘A’ pin connects to the 5v MCU and the ‘Y’ pin connects to the GLCD.[/color]

Muchas gracias, hoy use un convertidor logico de niveles o level shifter y use una placa arduino uno y me alegre mucho al ver que funcionaba creo que tenia problemas con la librería y el programa por alguna razon la libreria que descargue de la pagina del fabricante no funcionaba ,utilice la version del ide de arduino 1.0.5-r2

Arduino 1.0.5-r2!! Estamos por la 1.6.9 cosas nuevas usan versiones nuevas.
Cosas y librerías viejas estoy de acuerdo.
Ahora vi que el sensor es de 2011 por lo que tal vez ese ide sea mas apropiado que uno actual.
Además, si el tutorial dice que versión usa, no lo dudes.

esta es la carpeta con las librerias que use
https://drive.google.com/open?id=0Bx2VeWa782DcalhSdURyYy1KdHM

y este es el progama que use puse varias veces "Alejandro tu puedes para ver que parte del progama se ejecutaba y poder hacer una verificacion
tambien creo que tenia problemas con la fuente de poder que estaba usando (una de pc) crei que estaba dando los 3v pero parece que no con las librerias defectuosas no salia nada y con una solo salia la palabra “setup”

Este fue el progama que funciono pero da la temperatura de forma lineal o eso creo

#include <i2cmaster.h>



void setup(){
Serial.begin(9600);
Serial.println("Alejandro Tu puedes2...");
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
}

void loop(){
digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);              // wait for a second
digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
delay(1000);
Serial.println("Alejandro Tu puedes4...");
  int dev = 0x5A<<1;
  int data_low = 0;
  int data_high = 0;
  int pec = 0;

  i2c_start_wait(dev+I2C_WRITE);
  i2c_write(0x07);

  // read
  i2c_rep_start(dev+I2C_READ);
  data_low = i2c_readAck(); //Read 1 byte and then send ack
  data_high = i2c_readAck(); //Read 1 byte and then send ack
  pec = i2c_readNak();
  i2c_stop();

  //This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
  double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
  double tempData = 0x0000; // zero out the data
  int frac; // data past the decimal point

  // This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
  tempData = (double)(((data_high & 0x007F) << 8) + data_low);
  tempData = (tempData * tempFactor)-0.01;

  float celcius = tempData - 273.15;
  float fahrenheit = (celcius*1.8) + 32;

  Serial.print("Celcius: ");
  Serial.println(celcius);

  Serial.print("Fahrenheit: ");
  Serial.println(fahrenheit);

  delay(1000); // wait a second before printing again
}

ahora voy a hacer el montaje con la arduino mini pro utilizando un cargador de celular para alimentar el sensor y toda la parte de bajo nivel (3v) del sensor .Por cierto el sensor identifique la version por que trae tallado muy suavemente en el encapsulado el codigo BAA1797A.

Lee las normas del foro y luego vuelve y edita ese post#5 donde posteaste un código sin usar tags.