recently I purchased two MLX90614-AAA from Ebay. At first look they have different markings (printed instead of engrawed) and marking says "B89736X20E".
I connected them to my hardware and they don't work. Older sensors I have (with engraved marking MLX90614...) work ok. I tried several codes from internet.
Does anyone have a similar problem? I suspected they are fake and opened one can. There is a wafer chip and a sensor where it should be as in "genuine" MLX.
Knut, what marking do your sensors have? Is marking printed or engraved? Would you be willing to share simple code? I tried several codes and it works only on sensors with engraved marking.
Here are sample pictures of "original" sensors and the ones I have problems with. These are not actual sensors I have, just sample pictures from internet. On first picture is BAA - 3.3V version, mine is AAA- 5V version.
I also contacted Melexis to see if these sensors are fake or not.
engraved. I was the lucky one..
Contact seller about your "fake" sensors.
I run Adafruits example:
/***************************************************
This is a library example for the MLX90614 Temp Sensor
Designed specifically to work with the MLX90614 sensors in the
adafruit shop
----> https://www.adafruit.com/products/1748
----> https://www.adafruit.com/products/1749
These sensors use I2C to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
Serial.begin(9600);
Serial.println("Adafruit MLX90614 test");
mlx.begin();
}
void loop() {
Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC());
Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF());
Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");
Serial.println();
delay(500);
}
Hi Damo,
I'm in foreign territory here as I'm a PicAxe user myself but have a similar problem to yours.
I've just spent the best part of four hours trying to get a couple of sensors from Antech Electronics via AliXpress working with known good PicAxe code for the Melexis part, but no joy. I've just had a closer look at the devices and see they're the same ones you've got.
Tormentor - Did you have to make any changes to your standard AVR code to get these to work?
no, I use soft bit-banged I2C without any changes. Maybe startup delay too small (POR delay for MLX 150ms minimum) ? Or I2C speed too high ? Try to solder 0.1..1uF cap directly on VCC/GND pins.
I've received 4 of the sensors from another source. These are a different acceptance angle but correctly marked as the Melexis part. Both batches are 5V operation.
If I plug in the new parts to my breadboard I get correct Tamb and Tobj temperatures.
If I plug in the incorrectly marked parts I get full range reading with a bit of dither, but not related to what's in front of the window.
I'll be opening a complaint case with the supplier.
I also bought a MLX90614 with a different field of view from the same supplier and changed my supply voltage to test this one (I intentionally ordered the 3.3V version of this) and it worked.
On a whim, I plugged in one of the incorrectly marked 5V devices which I couldn't get to work and started getting sensible readings off it. More investigation required, but it looks like there will be some mileage in these dubious devices after all.
Tormentor, if you're still around, what value are you using for the I2c pullups?
Thanks for the code Tormentor, although it means little to me; with the Picaxe the I2C routines are all hidden by the interpreter so my setup code is Hi2cSetup I2CMaster, I2cAdr , I2Cslow_8, I2CByte and read command is Hi2cin RamLoc, (TgtLo, TgtHi, PEC). My routine works fine with 5V 10 degree and 3.3V 35 degree versions of the 90614.
However, if I run the 5V dodgy device at 3.3V or 4V and power-cycle the sensor after powering up the processor I can get sensible readings off it!!! This doesn't work at 5V though.
I've got a 0.1uF as close as poss to the device but breadboarded at the mo, so not ideal. I'll hard-wire it and see if things improve. (I'm not using these for any sort of serious project, otherwise I've have binned them long ago ;¬)
If your dodgy devices are anything like mine, I think the problem is not so much with the coding as the device fabrication itself. As Knut_NY had success with the Adafruit code I suggest you use that and try the things I listed above, i.e. drop the voltage and apply power to the device after the Arduino. I couldn't get mine to work any other way.
(Mine are going in the bin . . . Or I may use them for that reactor core temperature monitor I'm designing ;¬)
Dear Damo1023
My name is Phuoc.My sensor is also printed marking ( B89763X20E) MLX90614 ESF AAA use 5V,
I also get this problem,the serial monior just print "set up" and do nothing.
I don't know problem is my sensor or code?
Have solved this problem yet? can you share me your method?
Thanks
I ordered some of these parts from Amazon with printed code B90453X09E, billed as MLX90614BBA (dual zone), $6 each.
Hooking a scope up to the output, it appears they are set up in PWM mode. I get pulses of about 270 usec with the device pointing to the ceiling and about 320 usec with my hand up close. The pulses are 1 msec apart, set to repeat some number of times.
My guess is these rebranded devices are set up for an automotive application.
I'll try to figure out how to reset the mode back to I2C.