|
|
MLX90614
Digital, plug & play, infrared thermometer in a TO-can
Download MLX90614 Datasheet (PDF)
Subscribe To Updates
MLX90614 General Description
The MLX90614 is an Infra Red thermometer for non contact temperature measurements. Both the IR sensitive thermopile detector chip and the signal conditioning ASIC are integrated in the same TO-39 can. Integrated into the MLX90614 are a low noise amplifier, 17-bit ADC and powerful DSP unit thus achieving high accuracy and resolution of the thermometer.
The thermometer comes factory calibrated with a digital SMBus output giving full access to the measured temperature in the complete temperature range(s) with a resolution of 0.02°C.
The user can configure the digital output to be PWM. As a standard, the 10-bit PWM is configured to continuously transmit the measured temperature in range of -20 to 120 °C, with an output resolution of 0.14 °C.
MLX90614 Features and Benefits
- Small size, low cost
- Easy to integrate
- Factory calibrated in wide temperature range: -40 to 125 °C for sensor temperature and -70 to 380 °C for object temperature.
- High accuracy of 0.5°C over wide temperature range (0..+50 C for both Ta and To)
- Medical accuracy of 0.1°C in a limited temperature range available on request
- Measurement resolution of 0.01°C
- Single and dual zone versions
- SMBus compatible digital interface for fast temperature readings and building sensor networks
- Customizable PWM output for continuous reading
- Available in 3V and 5V versions
- Simple adaptation for 8 to 16V applications
- Power saving mode
- Different package options for applications and measurements versatility
- Automotive grade
MLX90614 Environmental Information
This text will be replaced
MLX90614 Frequently asked Questions
MLX90247 RoHS Status
Answer
Melexis confirms that the MLX90247thermopile devices, the MLX90614 and MLX90615 infrared thermometer sensor family and the EVB90614 and EVB90615 are RoHS compliant.
MLX 90247 readings
Answer
The MLX90247 is a thermopile sensor giving a voltage output depending on the temperature of the object it sees. However, this is a purely analog device without any internal calibration. If you are making a thermometer, you will have to calibrate the setup (MLX90247 + electronics) you made yourself.
Our new MLX90614 on the other hand is a smart sensor with integrated electronics and comes factory calibrated.
Emissivity of the object does influence the sensor reading, but in general this is only an issue for metals which have a low emissivity. Compensation for low emissivity can be done through calculation if you know the emissivity of the surface you are measuring.
Help about PIC MCU control MLX90614
Question
I have bought MLX90614, I want to use it to develop an smart equipment / used to heat the flowing liquid.
I use PIC16F877A to control it.
But I can not found any sample code about PIC connect MLX90614.
And I found EVB90614(Evaluation Board for the MLX90614). It use PIC18F4550. It is very well. but it not give the microcontroller firmware(ASM).
Could you give me the microcontroller firmware of PIC18F4550 in EVB90614. Or other sample code use 16F877A connect PIC with MLX90614.
Email:yacoyacoyaco@163.com
Question
We will release an Application Note, describing implementation of SMBus communication with MLX90614 on PIC18 MCUs soon. It will also provide free to use assembly language code.
Trouble with EVB 90614
Answer
we need you to give us more comprehensive information about the problem,....for example when you start software is there MLX90614 module on the board,and which version it is(3V or 5V),...and the exact order of your actions and error messages which appears.
Please would you tell us where you bought the EVB from?In case we can't help you,we will replace the EVB with another one.
Question
I try to explain my problem better.
I've bought an EVB90614 from DIMAC red S.r.l. BIASSONIO Milan ITALY.
I've bought three MLX90614 AAA 5V window inside non automotive too.
ORDER OF ACTION:
1 - I connect the EVB90614 with the MLX90614 plugged in to the USB socket on my pc (i've windows xp home). The led on the EVB90614 turn on blue.The evaluation board is correctly recognized fron the PC as a generic HID device and the standard windows driver is associated to the device.
2- I start your sw MLX90614 configurator version 1.05.01; the sw tries to find the evb90614. For a while the led on the pcb turn green then becomes red definitely.
3- a pop up window comes out with the message "Communication error - time out"
on the console board i find the following messages:
"
[17:44:50] PSF initialized
[17:44:50] Bootloader is not active
[17:44:58] Communication error - time out
"
OBSERVATION:
i try to change the sensor, the usb port, i try the version 1.00.1a of the sw, but nothing seems to make a change.
MLX90614 beam angle
Answer
Reducing the beam (FOV) with cheap external optics without losing the calibration is not possible. We are working on new versions of the MLX90614 with smaller FOV due to come out this year.
Question
you state that if I build an optic tunnel (in an anti-reflective metal material) with an infrared silicon lens on the top, and setup the MLX90614 to be in the focus of the lens,I lose the calibration? How can improve the FOV perfromance? can I tweak the eeprom to improve the calibration?
Question
MLX90614 calibration is valid for black body within the field of view. Providing the same energy (also assumes unaltered spectra in the range 5...15 um) to the sensor die is a must for the calibration to be valid. This is pretty hard to ensure. There are also parasitic effects in that case that are hard to compensate for at a glance. In two words, the useful input signal is reduced 4 times for every 2 times decrease of FOV (using simple solutions like tubes), and parasitic effects increase in magnitude. This yields in significant degradation of accuracy even if the loss of signal is compensated with gain (with SNR also affected).
Simple solution like tweaking the EEPROM is not an option. MLX90614 supports emissivity compensation that might be tested for applicability. However, I believe that getting it nice working would not be a very simple task.
Melexis develops calibrated MLX90614 with narrow FOV. We will certainly announce these versions whenever we have them.
MLX90614 availability
Answer
The MLX90614 is available from DigiKey
MLX90614 Slow to Reach Temperature
Question
We have an implementation of the MLX90614 device that reads the IR temperature via the SMBus. We have noticed that when pointed at a surface, the temperature is initially quick to react, but then takes several minutes to rise the last few degrees C.
For example, when pointed at a surface at 34 degrees C, the device immediately jumps from room temperature to approx 30 degrees, takes about another minute to reach 32 degrees, then takes a further 20 minutes to reach 34 degrees.
The same effect is seen on different surfaces at different temperatures (always takes a long time to reach the actual surface temperature). The surface temperature is also measured by an independant device for comparison.
Can you please let us know if this has been noticed before (it happens on all of our 90614 sensors). E.g. is it an effect of the internal DSP filtering, or perhaps some other internal calibration?
Can you please respond with any ideas as soon as you can as we require an urgent understanding of the effect we are seeing.
Question
I think You should shut down IIR and FIR filters...because, all of my MLX90614 sensors are work quickly and punctually.
Or, may be You use your own averaging filters that works with your previous measerments? so You should to minimize lenght of them...
Question
Indeed, there is no electronic on the MLX90614 that would take so long to react. On-chip digital filters settle within a second with their maximum settings (refer to Application Note "Understanding MLX90614 on-chip digital signal filters" for details). It is really possible, though, that external filtering (such as the moving average) might take much longer. Mister Watson, is there any filtering added to temperatures, read from MLX90614 in your application??
There are, however, thermal effects, that might also take that long. Please note that all accuracy specifications of MLX90614 are valid under isothermal conditions. I would need details about your application before I could try to tell if there is something resulting in thermal gradient over the MLX90614. I sent you a mail about that. I will also need to know the version of the device you have, and I would also appreciate if you could send me the device EEPROM. I would also like to know if you use the EVB90614 or you read the MLX90614 with another SMBus Master?
Question
We checked our internal filtering and found no issue there. We then checked the Application note "Understanding MLX90614 on-chip digital signal filters" and using this information, we decided to concentrated on the hardware around our sensor.
We now believe that the issue is related to the Field of View (FOV) angle. We have the MLX90614 housed in a plastic unit, but believe that the FOV is picking up an edge of the plastic unit and adding that temperature to the IR temperature of the surface we intended to measure. The plastic unit housing the MLX90614 is taking time to rise in temperature, not the surface we try to measure.
Thankyou for your invaluable help in this matter, it has allowed us to solve the problem quickly.
Question
I am really happy you found the problem!! Every unintended object that enters the Field Of View of IR thermometer will affect measurements' accuracy. We have this note in the MLX90614 data sheet, FAQ section, too.
MLX90614 PWM output
Question
I have been trying to use the MLX90614ESF-BAA to replace an analog temperature sensor and would like to use the pwm output. I have connected it per figure 25 in the data sheet. According to page 18, PWM should be the factory default but I don't get any pulses on pin2. I have tried a pullup with no help. What else do I need to do?
MLX90614 memory
Question
I have question about memory of the MLX90614...
In my project I need to storage some parameters of my device in power-off mode, so, can I use some slots of MLX's EEPROM memory, or they are unavalibe to write?
TO-39 magnetic
Question
The MLX90614 is EXCELLENT!
Our problem is that the TO-39 case is EXTREEMLY magnetic. Inside an MRI scanner it destroys the images. Is there any other casing planned in the future?
Emissivity adjustment for MLX90614
Question
I want to adjust the emissivity of the MLX90614 sensor via SMBus but in the datasheet I can't find how to do this. Can you advise me, please?
Question
Thank you for the advice! As a matter of fact we are just preparing a new release of the data sheet so we will have the chance to add that information soon. As the EVB90614 is provided as a standard tool that supports customization of the MLX90614 we have implemented emissivity compensation configuration in that tool. It is simple and straight-forward and the customer needs to go in no details about the device specifics.
MLX90614 project
Question
I want to use MLX90614DAA to measure the temperature of a human's forehead. The distance from the device to human's forehead is about 30cm. Is it possible to obtain an accurate reading without using additional optics? I also tried to use a lens in front of the device's window, however the temperature reading became very insensitive. Any suggestion on how to tackle this problem?
Calculation error in MLX90614??
Question
I have meet one more trouble with using MLX90614...
If I measuring temperature in range (20..90) the results are all right, but...if I trying to measure higher temperatures, MLX gives me strange results.
For example, on 150 degrees the output is about 140, and on 320 degrees output is 285.
What I should do to have accurate result?
Should I change Ke(RAM 0x04) and gain of amplifier(bits<11..13> of RAM 0x05) according to temperature level?
Distant temperature measurement
Question
we want to use MLX90614DAA to measure the body temperature of a baby. The distance from the device to baby's abdomen may be about 30cm to 50cm. Is it possible to obtain an accurate reading? Any suggestion?
Is it possible to get an evaluation board EVB90614 with medical high accuracy sensor MLX90614DAA on the board?
Answer
With a distance of 30-50cm, the area observed by the MLX90614DAA is also about 30-50cm in diameter. That is probably too big for babies.
Your first option is to reduce the distance.
The other option would be to use the MLX90614|BCC which has a smaller FOV (35 degrees). However, at this moment we do not yet provide this sensor with medical accuracy calibration. This is still under evaluation.
You can order the EVB90614 with our local representative. If you specify that you want some MLX90614DAA or MLX90614BAC with it, we'll include these at no extra cost.
MLX90614 Lenses
Question
Great product! My application involves looking at a concrete surface from 6-10 feet above. The FOV will make the viewed area much too large. Can you suggest any manufacturers for a lens system for the MLX90614? Is it realistic to believe that a properly focused system will be able to read a "patch" of the material from this kind of distance?
Answer
How big is the area you want to observe? We are just releasing a new version of the MLX90614 with a FOV of 35degrees. That would mean an object of 6.5 feet across can be measured from 10 feet.
If that is still too big, we are developing another version with an even smaller FOV, but that one is ont available yet.
Answer
the 35 degree version is available right now. Just ask future to order some samples of the MLX90614AAC or MLX90614BAC (depending on 5 or 3V).
The next version will have an FOV < 15degrees.
Luc Buydens
Question
This is very good news!!!
Is it possible to find some more information on this theme(maybe datasheet on MLX90614BAC or something else)?
Answer
It will be called the MLX90614BAD. It will have a FOV <10degrees. At the moment we are still testing lenses but I hope to have engineering samples Q1 2008.
Question
Just want to check how's the development of MLX90614BAD? Has the engineering sample available yet? I will need a FOV < 10degrees for my new product in coming month. Where can I have the most update info. about the eng. sample when they are available? Thanks,
Question
What options, or recommendations, for Melexis MLX90614 top lenses exist?
MLX90614 Issues
Question
I seem to be experiencing some issues interfacing the MLX90614-BAA with a dsPIC33F.
At first I didn't seem to be able to get the onboard I2C peripheral to work, so I 'bit-banged' an SMBUS/I2C interface over two I/O pins. There are two devices on the bus: an MLX90614-BAA, and an MCP9800 (Microchip ambient temperature sensor). The SDA and SCK lines are pulled up via two 4.7K resistors.
My bit-banged I2C routines appear to work for the MCP9800, but not the MLX90614. I've been monitoring the SDA/SCK lines on a dual-trace oscilloscope through development. The MLX90614 doesn't appear to be acknowledging the address byte, regardless of whether I use address 0x00 or 0x5A/0xB4 ('factory default programming' from the PIC example on the Melexis website -- I wasn't sure if the address it quotes was including the R/W bit or not, so I tried both the original and shifted versions). I tried using very slow and very fast time constants for the clock and data signals, both of which worked for the MCP9800, but unfortunately the MLX90614 didn't respond.
I then tried putting a spare MLX90614 on a breadboard and looking for the factory-default PWM on the SDA pin. I tried many different combinations of signals, and even (when getting despirate) voltages (5v) and swapping the pinouts to check and see if the 'front view' listed in the datasheet was really from behind. In all cases, the MLX90614 didn't respond with the PWM output.
Question
About the pinouts, the picture in the datasheet is view from the top(from the side of the glass filter).The first pin then is on the left of the marker.
1.SCL/Vz
2.SDA/PWM
3.VDD
4.VSS
Because i am not completely sure from your letter let try the next:
1. Put on the bus only a MLX90614,put away MCP9800 for now
2. Pull up SDA with 4.7k(need for PWM Open Drain mode ) and connect SCL to Vdd
3. Turn on Vdd
If the module is in PWM mode a PWM signal will appear on SDA.
Answer
The standard factory setting for the MLX90614 output is SMBus. It will only give a PWM signal when this is set in EEPROM using the SMBus.
Question
Thanks for your quick reply. Sorry if my initial post was confusing, I hope I can help clarify things. I would like to use the MLX90614 in SMBUS mode, and have been working to get this interface to work for about a week. In this respect I notice that the MLX90614 hasn't been sending ACK bits (pulling SDA low on the 9th clock cycle) when sending address 0x00 on the I2C bus. Similarly, I've tried addresses 0x5A and 0xB4 without luck.
I then used a fresh MLX90614 on a breadboard to see if I could find the PWM signal, just for testing purposes. I must have been using an older datasheet as it said the default was for both SMBUS and PWM mode to be enabled. I'm not interested in using the PWM mode, but only tried this as a test to ensure I was powering the MLX90614 correctly, and had the pinouts correct. When I didn't see the PWM output I tried alternate pinouts and voltages, just to see if I had accidentally been sent a 5v version instead of 3v, or if the datasheet pinouts were reversed for whatever reason.
I have the MLX90614 inserted on a custom PCB with the MCP9800 on the bus. Unfortunately it would be difficult to remove the MCP9800 (it's surface mount), but as there don't appear to be any bus-contention issues on the scope -- SDA and SCK are free and don't appear to be pulled low by the MCP9800 inappropriately -- it doesn't look like it's a conflict between the devices.
Question
I understand that you want to use SMBus,...i just wanted to check if the module is not in PWM mode.
You have checked this and probably the module is not in PWM mode.
Please check if all electrical specifications of MLX90614 are kept(see this AppNote http://www.melexis.com/Asset.aspx?nID=5207). For example Clock high period(thigh) must not be above 50us.
For simplicity just send on the bus START+SlaveAddress+STOP. All MLX90614 must acknowledge their slave address.
A slave address occupy the 7 MSbits. So if device has address 0x5A you should shift it one bit on the left which result in 0xB4. LSbit as you know is bit R\-W but this bit no meaning for MLX90614 you may keep it zero. As i understand from MCP9800 datasheet address 0x00 is not supported from MCP9800,...so for this experiment is the best to use 0x00 as slave address.All MLX90614 must respond to this address.
If you have opportunity send me some oscillograms on dpv@melexis.com. That can help us to resolve the problem .
Would you tell us where have you bought the modules from?
Question
We have been seeing a similar issue with the MLX90614ESF-DAA part. We interfaced the part to an 8051-based microcontroller with no problems, but have now interfaced it to an ARM-based micro and are seeing a lot of failures. When it fails, the device does not ACKnowledge any addressing bytes and does not appear to be in PWM mode.
We know the link over SMBus is secured with a CRC and so it should not be possible to 'accidentally' overwrite configuration/EEPROM data, but is there any way we could be corrupting the device to make it stop responding over SMBus?
For example, the POR time (0v to 2.1v) should take no longer than 1ms, otherwise this could result in “unspecified operation” due to the internal circuitry triggering on “inappropriate levels” (from datasheet). If we were outside of the 1ms POR time for some of our units, is it possible this could stop the MLX90614 from working/corrupt internal configuration?
Question
If a device is not in PWM mode it has to respond over SMBus. To change the EEPROM you must erase it before to write it. After this 5ms are need. So i don't think the EEPROM can be reconfigured accidentally. A device will not respond also if it is in sleep mode.
MLX90614ESF-DAA is 3V device. Minimum power supply is 2.4V. What power supply do you
apply?
Question
I am also noticing an SMBus comm problem. I am running a PIC16F88 directly into the MLX90614 with 4.7k pull-ups on SDA and SCL. The bus is running at 100kHz. Address for the part is confirmed via the eval board with SMBus set as default and PWM disabled. Looking at a first stab at object temperature transfer I noticed intermittent ACK's on the address write of 0x00. I might get an ACK every 2 to 16 address transmissions. I trimmed the procedure down to just Start, write address, write command 0x06, Stop. I noticed that every time the address was ACK'ed the command was also ACK'ed. However, every time the address was NACK'ed the command was also NACK'ed. I set up the code to specifically look for the ACK on address and, if it was not received, send a Stop, wait 100us, then resend a Start and send the address again. Once the address is ACK'ed I go ahead and send the command to see if it also ACK's. I see anywhere from 0 to 10 or so retries. As before, when the address is ACK'ed the command is also ACK'ed and vice versa. I have tried tossing in 100us of wait time after the Start bit to see if I need to slow things down for the part but see no difference. As with the rest of you, does anyone have any ideas?
Question
Ignore the last post. I found my problem. The SMBus/I2C procedure supplied with the CCS Microchip PIC compiler is very good at setting up the SCL for data transfer but not so good at clocking SCL for the ACK/NACK bit! While the SCL runs a true 100kHz when passing a byte the internal procedure (i.e., one embedded in CCS's library and not accessible) does not appear to take the system clock speed into consideration when outputting the last SCL for ACK/NACK and rushes it. I slowed the system clock speed down and, while the SCL still runs at the very same 100kHz, it provides the 90614 a little more reaction time before hitting it with the ACK/NACK SCL clock pulse. The MLX90614 is now running as stable as can be. And maybe this is why we should all use ANSI compilers and write our own procedures, eh?
Question
I had the same problems as Peter.
My part is MLX90614ESF-AAA.
Melexis sent 2 pcs as samples but I could never make it run.
Recently I purchase 10 pcs directly from Melexis and I have the same problem.
I feel the same with connections and pin out. Top view does not shows the window so I was confuse.
Now I am sending start, address, data_low, data_hi and checking each time the Ack bit.
All OK until here.
The problem is the PEC calculation. Soft in the web shows PEC for reading and not PEC for writing.
I think that I have to put :
SLAVE=> PEC4
COMMAND=>PEC3
DATAL=>PEC2
DATAH=>PEC1
With this information I have to call PEC_calculation but PEC0 ?
Finally I have to send PEC as the last byte. Then?
I am simply trying to use the sensor getting PWM. I think that PWM was standard from Melexis, but now I can see thar SMbus is standard.
0x5A slave does not work but with 0x00 is OK.
I an using a PIC16fF627A
Question
1. When you make a writing you must do next to calculate PEC:
0x00 => PEC4
SLAVE => PEC3
COMMAND => PEC2
DATAL => PEC1
DATAH => PEC0
0x00 => PEC (This register is always zero)
call PEC_calculation
2. When you use slave address 0x5a you must shift it one bit to the left because
the slave address occupy 7 MSbits of the address byte and must to add bit Rd\-Wr.
Bit Rd\-Wr have no meaning for MLX90614 so you can keep it zero. This results in
0xB4 for the address byte.
Question
Before writing an erasing operation must be done. An erasing operation is just a writing of zeros in an EEPROM cell. After a/an writing/erasing 5ms are need the new value to be written/erased.
After writing it is strongly recommended that the device is restarted by turning off/on the power supply.
===============================================================
PWMCTRL register configuration
===============================================================
Bit [0] - Select the type of PWM mode
1- Single PWM
Bit [1] - Enable/Disable PWM mode
1- Enable PWM
Bit [2]- Configuration of the pin PWM
0- Open Drain (external pull up is need)
Bit [3] Mode selection
0- PWM
Bits [8:4] PWM Period Repetition
000 - no repetition
Bits [15:9] PWM clock selection
0000001 Period 1.024ms
Pseudo code example:
An Erasing of the EEPROM address 0x02 (PWMCTRL)
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0010 -> 0b0010_0010)
4. Send Low data 0x00
5. Send High data 0x00
6. Send PEC 0x95
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be erased)
A writing of 0x0203 in EEPROM address 0x02 (PWMCTRL )
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0010 -> 0b0010_0010)
4. Send Low Byte 0x03
5. Send High Byte 0x02
6. Send PEC 0xA4
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be written)
9. Turn off/Turn on module power supply to reset MLX90614 ***
===============================================================
Tomax configuration ( 120 degrees Celsius)
===============================================================
An Erasing of the EEPROM address 0x00 (Tomax)
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0000 -> 0b0010_0000)
4. Send Low data 0x00
5. Send High data 0x00
6. Send PEC 0x43
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be erased)
A writing of 0x9993 in EEPROM address 0x00 (Tomax )
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0000 -> 0b0010_0000)
4. Send Low Byte 0x93
5. Send High Byte 0x99
6. Send PEC 0x5B
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be written)
9. Turn off/Turn on module power supply to reset MLX90614 ***
===============================================================
Tomin configuration ( -20 degrees Celsius)
===============================================================
An Erasing of the EEPROM address 0x01 (Tomin)
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0001 -> 0b0010_0001)
4. Send Low data 0x00
5. Send High data 0x00
6. Send PEC 0x28
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be erased)
A writing of 0x62E3 in EEPROM address 0x01 (Tomin )
1. Send START bit
2. Send Slave Address (0x00* for example) + Rd\-Wr bit**
3. Send Command (0b001x_xxxx + 0b0000_0001 -> 0b0010_0001)
4. Send Low Byte 0xE3
5. Send High Byte 0x62
6. Send PEC 0x7D
7. Send STOP bit
8. Wait 5ms (this time is need the cell to be written)
9. Turn off/Turn on module power supply to reset MLX90614 ***
Note* : Any MLX90614 will respond to address 0x00
Note**: Bit Rd\-Wr has no meaning for MLX90614
Note***: Put in/Put out a MLX90614 in/from Sleep Mode also resets MLX90614
After these settings the module should be configured as:
1. PWM single mode
2. Reading To ( object temperature)
3. PWM period 1.024ms
4. PWM pin is open drain, which demands external pull up connected to
Answer
Normally the SMBus or PWM should not make much difference for what you want to do. For the speed the settings of the internal digital filters wil have more effect.
However, even more an issue for your applicatio is the FOV of the sensor. You are now using a sensor with a wide FOV. I doubt that the senosr will pick up any temperature difference from 2 meters distance. I think you have a better change using as sensor with a smaller FOV like the MLX90614ESF-AAC.
Spectral sensitivity
Question
What is the spectral sensitivity / spectral range of the melexis MLX90614.
Question
MLX90614 uses 5.5 ... 15 um range.
MLX90614 SMBus Nack
Question
I try to communicate with MLX90614 via LPC2368 I2C bus. After sending Start condition with SA 00 I get a direct Nack (0x20)?
Enter MLX90614 in SLEEP mode
Question
I want to enter my MLX90614 in sleep mode, but I'm not sure about the SMBus sequence, is it a write word SA+COMMAND+PEC?.
Question
To put a MLX90614 in Sleep mode you must send Slave Address + Command + Pec. Please see application note SMBus communication with MLX90614 (page 13 - 16) http://www.melexis.com/Asset.aspx?nID=5207
90614 Emissivity
Answer
The numbers you give cammot completely be explained by emissivity. I get values between 0.8 and 0.7 for the emissivity at the different temperatures. That is a bit too much variation for that small temperature range. You could try programming an emissivity of 0.75 in the MLX90614 and check out the result.
MLX90614 Tobj Slow to Rise
Question
We have an application that records body temperature over time and have noted that Tobj takes a long time to reach its peak. Initially we thought that an object may have been in the FOV, but have discounted this by completely removing anything near the FOV window of the MLX90614.
The device is a constant distance away from the body (approx 1cm) and over a period of about 30mins, Tobj rises quickly to approx 32 Deg C, then takes at least 20mins to rise another degree. We have measured the ambient temperature at the same time to see if there is a connection.
Tamb rises very slowly due to thermal conductivity - could there be a connection between the slow rising Tamb and the rise in Tobj?
We do not change any EEPROM settings in the MLX90614 and therefore use the factory default settings (only reading Tobj and Tamb).
Can you think of any reason why this may happen? We have data here I can send you if it helps.
MLX90614 Object Temperature Data Issues
Question
I am using the MLX90614 as a slave device, my master is a PSoC. Everytime I power the sensor on I seem to get junk data for the object temperature for about 2-3mins. After that it seems to work when an object is in front of it, but when open space is in front of it I get a very high temperature reading. Any thoughts on why this occurs? Am I overlooking something obvious?
MLX90614 mounting
Question
I'm invesigating at the possibility to use MLX90614ESF-DAA in our product for skin temperature measurement.
I installed the sensor into our instruments plastic (ABS) enclosure and ported your C example interface code to our
processor (thaks for the easy approach!). The sensor works great.
The problem is that when the sensor is mounted into the enclosure (~2...3 mm deep, 6 mm hole) the FOV will be limited by the hole
edges. This in turn will of course affect the result.
So what im asking is that is it safe to mount the TO-can directly to the enclosure?
This would remove this whole FOV blocking problem but it also would expose the
sensor surface for a touch of dirty fingers, possible cleaning chemicals, static discharge and so on...
Can this sensor handle such things? Other options might be to drill a larger hole and use a protective glass/plastic lens but it's more expensive to do.
BTW. I'm aware that there is a sensor with a more narrow FOV coming up,
but it will simply be too large to fit this product.
Answer
Indeed, what is transparent for the eye is not transparent at the wavelengths where the sensor operates (5-14um).
There are transmissive materials like Si, Ge and ZnSe used in laboratory and very expensive equipment. But they will need adjustment of the emissivity setting in the MLX90614.
Windows made of (high density) polyethylene will transmit very efficiently at all temperatures if they are thin enough. "Thin" means generally less than about 0.005 in. (0.1 mm).
A more commonly usedmaterial is (high density) polyethylene. An example is Glad Cling Wrap , which can easily be wrapped around the IRt/c for cleanliness, or formed into a window. If the polyethylene is dirty or damaged, it can easily be replaced.
More specialised material can be found at www.kube.ch or www.fresneltech.com
The transmission coefficient of such thin polyethylene is in the neighborhood of 90%, and therefore a small adjustment of the emissivity compensation may be required depending on the required accuracy, the temperature difference of what you are measuring and the sensor temperature.
MLX90614 - wavelength
Question
I try to use the MLX90614 for the measurement of the downwelling longwave radiation of clouds to detect clear sky. Can you send me a graph of the wavelength sensitivity between 5.5 and 14µm?
Answer
the transmission passband of the filter used in the MLX90614 is 5.5 to 14 um.
MLX90614 analog usage
Question
I want to use the MLX90614 in the analog mode (with the PWM output) for our measuring device. The sensors are standard configured to SMBus. Is it possible to set the PWM output mode without using µC?
or may i get them in pwm mode??
I want to use this sensor, cause i believe we change the software i a few years to use digital sensors and so i don´t have to change the type of sensor.
Answer
the MLX90614 is configured by changing the content of the EEPROM. This is only possible with a uC (or our EVB).
For evaluation purposes we can provide you samples wiht PWM preprogrammed. Please contact our sales rep. to request such samples. You will have to indicate the temperature range and P/P or O/D configuration.
No Slave Address response from MLX90614
Question
I'm trying to get an MLX90614ESF-AAA working over SMBus. So far, I don't get any reply on address 0x00 or 0x5A.
At the moment, I am only sending a Start, send slave address and Stop. Is the clock timing critcal between the Start and sending of the address? At the moment, my Start and Stop conditions have a clock high pulse width greater than 50uS. However, the clock during the sending of the slave address is less than 50uS. Will this cause a problem?
Question
I am using a BASIC Stamp BS2px with the MLX90614 and using its I2C commands to try communicate with the MLX90614.
I have done this successfully with a Nat Semi LM92 Temperature Sensor IC that uses an I2C bus.
At the moment, I am sending a Slave Address (of 0x00) and command (of 0x07).
When I then attempt to read the 2-bytes of the RAM and then the PEC byte, I always get 0xFF for all bytes. However, the MLX90614 seems to ACK all bytes.
My clock high pulse width is approx. 2uS which I know is outside specification, but the device ACKs as expected. Why does it not output the data bytes?
Can I send you a scope trace to show you signal levels and timing.
Question
I've now used the MLX90614 with a Silicon Labs micro that has an on-chip SMBus controller and the MLX90614 appears to be working. I think my problem with the BASIC Stamp is that the clock cannot be controlled to stay within the min. 10kHz specification.
MLX90614, PIC MCU and software?
Question
Does the schematic from http://www.melexis.com/Asset.aspx?nID=5229 works with the following software http://www.melexis.com/Asset.aspx?nID=5155 ? Or is it only an Evaluation board for the MLX90614 that works with this software?
MLX90614 free EEPROM cells?
Question
we use the MLX90614 in SMBus mode and need to store/read back some user defined values in the sensor's EEPROM.
My question is how many/which bits could be used for this without influencing the sensor functionality.
Here is a list of my current understanding. Could you please comment on this?
TOmax --> Seems to have influence on PWM only--> 16 Bit
TOmin --> Seems to have influence on PWM only--> 16 Bit
TA range --> Seems to have influence on PWM only--> 16 Bit
PWMCTRL --> Bit 1 : Must be left to 0 (SMBus Mode)
--> Bit 2 : Electrical configuration of PWM/SDA Pin. Must be set to 0?
--> All other Bits: Don't care if Bit 1 = 0?!
--> 14 Bit?
000Fh: Melexis reserved, but accessible? Can this be used by customer?--> 16 Bit?
0019h: Melexis reserved, but accessible? Can this be used by customer?--> 16 Bit?
Atmega code examples for MLX90614
Question
Are there any code examples for communicating with the MLX90614 through an ATMega MCU, for example the ATMega168?
Answer
We refer to the following Application Notes to adapt the code. http://www.melexis.com/Assets/MLX90614_SMBus_implementation_in_PIC_MCU_5229.aspx
http://www.melexis.com/Assets/SMBus_communication_with_MLX90614_5207.aspx
MLX90614 weatherproof
Question
How weatherproof is the top face of the MLX90614? I want to make a permenant outside mounting but putting it through a drilled hole. Is it waterproof on the top face?
Answer
the MLX90614 is hermetic and closed to humidity. However, if there is water on the window it will only measure the temperature of the water.
MLX90614 Update rate
Question
I was wondering how often the MLX90614 writes new data the RAM registers for TA, TOBJ1 and TOBJ2? Is it based on the settling time for FIR and IIR filters? I want to make sure that our software doesn't sample too often in order to save processing time.
Question
Yes, the refresh rate depends on FIR and IIR settings.
See this AppNote http://www.melexis.com/Assets/Understanding_MLX90614_on-chip_digital_signal_filters_5272.aspx
MLX90614AAA
Question
I decided to make a chamber with a peltier cell in order to get low
temperatures and measure it by MLX90614ESF-AAA. Also for sensor soft development.
I can not read the real temperature from the object placed 7 cm far.
I can read my own body temperature and other objects temperature correctly but distance is a hard topic.
I am thinking about the object material. It is an aluminium heat sink.
Perhaps factory filters or material Emissivity must be considered.
Do you have experience with this? do you have an idea about?
How I can get better result with object place not too close from the sensor?
I check with fresnell lenses, 1 zone 2 cm diameter but I can not get better and real values.
I am using factory default single zone SMBus.
MLX90614xAC and MLX90614ESF-DAA
Question
Can you explain me the difference between the MLX90614xAC (FOV 35°, Vdd=3V) described in the datasheet on Page 29 and the MLX90614ESF-DAA Temperature sensor that I can buy on de Melexis homepage? Are this the same Products?
Answer
No, the MLX90614ESF-DAA is a thermometer with "medical accuracy" +/-0.1C accuracy, 3V, but an FOV of 90 degrees.
MLX90614 SMBus Address
Question
I have the problem that I can’t change the SMBus address from my MLX90614BAC. The other Communication with the Sensor work very well. I can reed the two temperatures, enter the sensor in sleep mode etc.
But when I try to change the default SMBus address, I receive after the pec always a NACK. I don’t understand why?
Example of data transfer (hexadecimal values):
b4 // address 0x5a, write
2E // EEPROM Adress 0Eh
2B // new SMBus Adress low byte
00 // new SMBus Adress high byte
96 // PEC (calculated with http://www.smbus.org/faq/crc8Applet.htm)
I have made some Oscillograms but I can’t insert these pictures in this forum…
Question
Thank you for replying. I have tried now to change the adress with a erasing operation before (how is it explained in the App. Note: " SMBus communication with MLX90614"). The Ack. of the write operation is now okey, but now I receive a Nack after the pec from the erase Transmission.
data transfer:
Start bit
0x00 // address
0x2E // EEpron Address
0x00 // erase
0x00 // erase
0x6F // pec
wait 5 ms
0x00 // address
0x2E // EEPROM Address 0Eh
0x2B // new SMBus Address low byte
0x00 // new SMBus Address high byte
0x56 // PEC (calculated with http://www.smbus.org/faq/crc8Applet.htm)
wait 5 ms
Stop bit
Enter Sleep Mode
I have upload some Oscillogram pictures here:
http://img503.imageshack.us/img503/7340/eraseoperationhu7.png
http://img503.imageshack.us/img503/2210/byte1and2tf9.png
http://img503.imageshack.us/img503/6379/byte3and4ph6.png
http://img503.imageshack.us/img503/1240/byte5tj9.png
Question
Probably, in this example you have forgot to transmit the adress of MLX90614?(as you did in your first post)?
Question
Great, it works now!
The Problem was that I enter the sensor after the erase and write operation in the sleep Mode to reset the mlx90614 (How it is explained in the App. Note: " SMBus communication with MLX90614" on page 19, Error in the App. Note ??). That way the sensor doesn't save the new address.
When I make after the erase and write operation a power supply turn off/on, it works perfect.
Comment: I receive after the pec of the erase transmission still a Nack. But it works even so ;-)
Thanks to Oleg and Dimo for yours great support!!
Best regards
Sven :-)
Question
MLx90614 resets itself when is put in Sleep and after that is put out from Sleep or by turn off/on the module power supply. The Nack after PEC byte is not normal behavior of the module.
Before erasing/writing operation do you make some other communication?
I'm trying to find what cause the module to send NACK after PEC byte.
MLX90614 read problems
Question
There are two Application Notes that cover MLX90614 SMBus communication in details,
http://www.melexis.com/prodfiles/0005207_390119061402P004.pdf
http://www.melexis.com/Assets/MLX90614_SMBus_implementation_in_PIC_MCU_5229.aspx
Have you already looked what's in them? Can you compare what you have on the SMBus with the page 14 of the first document ("SMBus communication with MLX90614")?
Question
How long is this parameter in your system Thd:sta?(See page 5 in AppNote" SMBus communication with MLX90614".
By specification it must be minimum 4us. If this parameter is more than 30us this can result in situation like yours. Try to use for example Thd:sta values between 5 and 20 us.
Question
I have checked my setup timings and they are currently set to a 30us delay. I will try changing this value. But also, does the MLX90614 A family come factory default to PWM or SMBus? The data sheet is a little confusing in this regard. And if it comes default to PWM I assume I must write to the EEPROM to change the control register value.
Thanks,
Tom
Question
MLX90614 comes with SMBus factory default.
condensate on silicon window of MLX90614
Question
Can somebody tell me what materials are used to avoid the problem of formation of condensate(tool is seen to work in temperatures about 0 degrees) on window of MLX90614?
And what obstacles I will meet in my investigation of this problem(maybe it will be necessary to write some module, which will change emissivity in relation of ambient temperature) if I will not use any coverage?
MLX90614 - Timing Help
Question
I have a MLX90614 which I have connected to an Arduino board for testing. I am getting strange results back after any commands sent. I have a timing image I've captured an annotated with a primitive logic analyser. The general flow of the data is this:
-start
-send slave+rw
-get ACK
-send command
-get ACK
-send stop bit
-send start bit
-send slave+rw
-get ACK
-get 3 bytes of 255,255,255.
-send stop
I am not sure if that stop bit should be in the middle. The programming library I'm using seems to send it and I am not sure what is happening. I can email someone the timing diagram if they are willing to help. I've tried 3 seperate sensors for this and its the same problem.
Question
Instead STOP-START bit after the command byte you must send REPEATED START which is different.MLX90614See fig.4/page 5 from http://www.melexis.com/Assets/SMBus_communication_with_MLX90614_5207.aspx
Answer
I've check the communication and I see that he is doing STOP the START again.
This is wrong - once you send STOP MLX90614 cancel the whole communication and release the lines, then you send again 0xB5 but for MLX90614 this is beginning of new communication.
The correct way is that at the place where STOP/START is to make just START condition.
Possible reasons for canceling the communication are:
1. Time out of SCL line - occur if you hold SCL line "high" for more than app 50us and "low" for more than 32ms.
2. A "STOP condition" occur - rise SDA line while SCL is high (doesn't matter that after that you send START condition again)
3. It is possible that you don't send "Repeated Start" (RS) after 0x07 at all.
Question
Thank you for help. After I take care the accident "STOP CONDITION" - rise SDA line while SCL is high, I only got slave ACK after send Slave 0xB4, but NACK after send command 0x07 and ACK after sending 0xB5 . Now the problem is the slave does not acknowledge the sending command 0x07 and not relate to repeated start.
My calculation of SCL frequency is arround 50 kHz. I will make sure this timing on oscilloscope or sound recorder in PC ( Hope it can record the FEQ arround 20kHz)
I am worry it was damaged because the PSoC port sourced power upto 50mA while the Melexis SDA is only sink 2 mA in one mistake configuration. Could this made something wrong with the MLX90614?
MLX90614BAA PULL-UP
Question
I interfaced MLX90614BAA with microcontroller and i received some data as 255186... I sure about my program, but the pull-up current is only 6 micro Amps. I used 1.1K as pull-up resistor. Kindly help me to increase the pull-up
Question
MLX90614 gives 16bits data,..how you get this value 255186 = 0x3E4B6.
Would give us more information for your system,...if is possible send oscillograms.
SMBus Communication with MLX90614
Question
I’m presently programming my circuit to use the MLX90614. The sensor responds to the address 0x00, but will not respond when interrogated with its default address.
With the 0x00 address the responses are ok. It gives the right object temperature, the address at which it is located and so on.
For now I will use only one sensor per unit and if I don’t find any solution, I will use address 0x00. But for the next project the same two lines will be used with up to 25 sensors on the same bus.
So being unable to communicate with the sensors at a specific address is very problematic.
Answer
Try to read EEPROM cell 0x0E. The LSByte of this cell contains the slave address of the module.
By default it should be 0x5A. Don't forget that when this address is send by SMBus it occupy the 7 MSbits of the byte.
So on the bus it should be send as 0xB4 ( 10110100) where the 7 MSbits are address and the LSbit is bit R/-W. For MLX90614 this bit has no meaning , i keep it zero usualy.
If you still have problems with the communication send me if is possible oscillograms.
Question
I have a problem writing to the allowed for writing EEPROM registers of the MLX90614. I have read the application data, I am reading all the EEPROM registers correctly, but I am not able to write. I use for writing 0xB4 as slave address.
Question
I can get three MLX90614 's acknowledge (low bit) with default slave address 0x5A by sending serial bytes: 0x84 , 0x07, 0x85 ( read RAM T object) but I only read three bytes 0xFF ( low Byte, Hi Byte, PEC) . The reading data bit code from slave is the same code with reading previous slave acknowledge, but I always read unchanged High bit. I changed timing from 10kHz to 100kHz, to add some more delay time between slave acknowdge bit and slave respond byte, but without success.
When I changed the slave address which is different with 0x5A, I will not get acknowledge from slave. It means MLX90614 does not damaged but I cannot get its proper respond. I want to get crazy with it. Please help!
PS: my code is based on C language for PSoC. Data sent to PC via RS232
Answer
If you manage to get three ACK and then suddenly the SDA line become FFFF this means that for some reason MLX90614 cancel the communication and release the line and since there are PU resistors you get "1".
Possible reasons for canceling the communications are:
1. Time out of SCL line - occur if you hold SCL line "high" for more than app 50us and "low" for more than 32ms.
2. A "STOP condition" occur - rise SDA line while SCL is high
3. It is possible that you don't send "Repeated Start" (RS) after 0x07
I guess you meant 0xB4 and 0XB5?
Please see picture with two communications (please note that the SA = 00h)
MLX90614 with PIC10F206
Question
I'm using MLX90614DAA with PIC10F206 to set up a simple SMbus application as you described in the "Simple IR temperature reader with MLX90614 and PIC10 MCU", "the typical Typical Circuit on page 2 of 390119061404P002.pdf".
I also compiled the asm file "main.asm" using your IDE, and input to the pic10f206.
however, i'v got no correct output. the output voltage to pin 2 of DB9 remains 0.86V.
are your Typical Circuit and HEX file right?
or do you have any suggetions for me to debug?
Question
The circuit is right. How do you check the output? With oscilloscope?
Do you use these settings in your Terminal Program?
"8 bit data, one stop bit, no parity bit, 57 600 baud".
If you see on the oscilloscope oscillograms as is shown on page 45 in AppNote "MLX90614 SMBus implementation in PIC MCU" and that through pin GP2 the data is sending but you don't get data in your terminal program the only reason should be that 3V levels are not recognized from your PC serial port. Then you have two options:
- Just replace MLX90614DAA with MLX90614Axx(5V module) and use power supply 5 Volts
- Use MLX90614DAA but the data must be send using MAX232 driver to meet the RS232 serial protocol specification which will make the circuit a little bit complicated
Question
I see that the MLX90614 can be set to different communication modes. If I order the parts will they be defaulted to the correct mode to work with the PIC10F206 example code? Or maybe that code includes the mode setting commands?
Answer
The MLX90614 is as a standard shipped with the SMBus communication mode active. This works with the mentioned code.
Answer
It will survive, if you're not too close to the sun. But the maximum temperature reading of the MlX90614 is 380C.
MLX90614DAA eeprom access
Question
I am trying to read the content of the eeprom of a MLX90614DAA. However, from the address of the 0x0E, i got 0x01BC which is supposed to be 0x005A (default slave address). Is it possible for such kind of device? The sensor is brand new and according to the datasheet, i think it is not possible for me to corrupt the default setting during operation.
For the test, i put 0x00, 0x01, 0x02 as slave address and got response correctly for the value of Tobj1. Remaining addresses (0x03...0x5a) have no luck.
BTW I have considered the bit left shiftting, for example, address 0x5a->0xb4.
Therefore, i think probably my device has 0x01 as the default slave address. But i can not ensure it.
Answer
Yes you're right that the default address should be 0X005A.
Yes it is possible for you to corrupt the data in that part of EEPROM as this area is fully accessible thus you can write in it what ever you want (although I don't think that this is the case).
I'm a bit confused that you're able to program 0x00, 0x01 and 0x02 as slave addresses but for the rest.
I see one potential problem namely you claim that you read 0x0E which actually correspond to reading RAM (you can easily can check this by reading this address several times in a row and if the returned value is changing most probably you read RAM instead of EEPROM). In order to read EEPROM you should send 0x2E.
MLX90614 has one default address that no matter what you program into EEPROM it will respond and this address is 0x00h. or whit ather word our defice will respond to 0x00h and the one programed into EEPROM address 0x2E. Please try to read 0X2E and then try to look for MLX90614 at this address.
Buy MLX90614
|
|