Go Down

Topic: Arduino and MLX90620 16X4 pixel IR thermal array (Read 39916 times) previous topic - next topic

Hi guys!
In my case, it seems the program stops at i2c_start_wait()
Could you help me to solve this?

I am sure the connection is correct. I connect to arduino 3v3 and regulated to 2v6 by LM317 as suggested. I also connect 4k7 resistors to scl and sda.

Any help is really appreciated. Thanks.

void read_EEPROM_MLX90620()
//STOPS HERE...... :-(


Hey All,

  I'm using the code from reply #23 (Mr.Sparkfun himself) to read data from the MLX90620.  It works, but I'm getting data that "jumps" around - i.e. there's sometimes a variation of 5 degrees between datasets when the sensor is pointed at nothing but the ceiling.  Anyone else experience this?  This is what I mean(I changed the output to Celcius - I'm Canadian!):
Code: [Select]
27.71 27.08 26.47 27.09 27.65 27.11 27.63 24.56 26.50 26.52 24.80 26.47 24.25 27.60 25.45 25.92
25.46 27.59 26.03 26.50 26.06 26.03 27.07 27.07 27.07 27.54 26.58 24.87 24.60 25.14 24.62 25.99
26.55 26.58 28.01 26.55 26.08 25.15 27.53 27.07 25.10 27.06 26.12 25.48 26.07 27.06 26.09 25.46
27.07 26.07 28.05 27.58 27.07 25.53 26.55 27.61 25.95 24.41 25.51 27.04 24.19 26.53 25.45 26.49

23.88 24.60 23.33 24.31 24.15 23.05 22.52 21.98 23.01 26.52 23.64 24.60 25.39 24.38 24.90 25.33
22.72 24.44 24.46 22.41 22.96 23.48 22.43 23.15 23.04 26.10 23.59 27.61 23.59 25.14 23.63 24.93
23.63 23.16 23.66 23.40 24.60 25.15 25.15 23.93 23.59 25.63 27.06 25.48 23.55 25.10 23.63 24.38
23.44 24.55 22.53 21.45 24.35 23.44 22.33 23.24 23.68 26.01 24.99 23.06 23.60 22.68 22.68 22.9 [/size][/size][/size]

I'm using a buck converter to output the 2.6volts from 3.3v supplied by the an Arduino with 4.7ohm resistors on  SDL and SDA.  In the commented intro to his code, he states that the wiring should be :
A5 to 330 ohm to SCL
A4 to 330 ohm to SDA
3.3V to VDD

but I've read that the readings won't be too accurate using 3.3v.  Anyone have any ideas on where I'm going wrong?   




Yup, me again,

    Just wanted to see if anyone was willing to point this idiot in the right direction/give some clues as to how to log this data with a microSD card - I've been trying to use the SD library and going off their examples, but I've put over 20 hours into working on it, and I'm about to lose my mind. My card is good and the example SD codes work, it's just a matter of getting the two hashed together.... Please, someone have some pity on this poor soul!!  I can't take it anymore!!!



Oct 31, 2014, 04:57 am Last Edit: Oct 31, 2014, 04:59 am by atyndall Reason: Fix URLs
Hi all,

I'm not sure who still maintains interest in this, but for a research project I am using the MLX90260 in conjunction with an Arduino, and have rewritten the code herein to use the Wire library (as I couldn't find the right version of i2cmaster) as well as to be more readable.

My code computes all the necessary values, and outputs both the computed temperatures as well as the raw values over serial.

I'm using a Diecimila, which only has 1KB SRAM, meaning I don't actually have the space for a lot of the arrays, so there is a #define MORE_MEMORY present, which when disabled computes values on the fly to save memory (but slow down the refresh rate), but when enabled will use more arrays and thus more memory.

You can find the most up to date version of the code on Github.

I'll be continuously updating it, but as of writing the code looked like this.

Looking forward to hearing peoples thoughts.



Hey Guys,

i'm from germany an having some troubles to get my MLX90620 running. I apologize in advance for my english...

Ok, here is my problem: I've noticed that my temperature readings are not accurate. Also i'm having a lot of noise and i tried a lot to improve supply quality but it doesn't help.

So i took a look on every parameter and there is a problem with the parameters tgc, a_cp, b_cp and so on...

The values are:

tgc = 0
a_cp = something over 1000
b_cp = something over 1000

When tgc is zero a big part of the calculation in the formulas equals 0. Furthermore a_cp and b_cp cannot have values over 127 according to the datasheet (8bit 2's complement).

It seems that every reading out of ram of a parameter of type 2's complement ist wrong, unsigned parameters seem to be correct.

Does anybody have an idea what the problem could be?


Go Up