kl3m3n's blog

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 

Infra-red (IR) array sensor with custom board and Arduino Nano (C++ and LabView)

Klemen
Active Participant

Hello,

today's post will talk about real-time temperature measurements using the IR array sensor with 64 individual elements that measure temperature from Heimann Sensor's. The sensor has a horizontal resolution of 16 and vertical resolution 4 "pixels". The "pixels" are actually thermocouple elements that are spaced 220 microns apart. The sensor has different shutter times (e.g. refresh rates) from 0.5 Hz up to 512Hz - the higher the refresh rate, the higher the noise. The sensor is also pre-calibrated and the calibration data is stored on the internal EEPROM chip. This is then used for the calculation of actual temperature that each individual element "sees". The sensor also has another internal sensor to measure the temperature of the casing. Additional, the calculation equations also consider the temperature gradient across the casing, that has a direct impact on the accuracy of the measured temperature.

The communication protocol for the sensor is I2C, so I chose Arduino Nano, since its AVR supports the I2C feature and the board is relatively small (~43 mm x 18 mm). Additionally, I designed a simple custom board in Eagle that holds the sensor and other required electronic elements (resistors for I2C and a capacitor for power supply noise reduction) and can also be fitted and soldered on Arduino Nano (see Figure 1 below).

nano+htpa+board.jpg

Figure 1. Custom board with IR array sensor soldered to Arduino Nano (the holes at the corners will be used for securing both boards together, but for now the two boards are ony soldered together).

The code/algorithm on the AVR chip is written in C++ (using Visual Micro environment, with Arduino libraries) and the calculation of the temperature for all 64 "pixels". The algorithm also enables two way serial communication with the computer, sending the temperatures and receiving commands such as the refresh rate modification. All data sent over serial communication is subjected to DATA CHECK using the polynomial division algorithm. On the other side of the communication line, LabView program acquires (also data check) and interprets the data sent and then displays the temperatures (°C) in real time. Snapshot of the displayed temperature data is shown in Figure 2.

irArray.jpg

Figure 2. Intensity graph is used to display the temperatures of all 64 "pixels".

In the future I would like to insert both boards and the sensor in some kind of casing, so it would be more roboust and would also look a bit nicer . Also, eventhough the computers are really small nowadays (~10 inches) it would also be very cool to make the whole measuring system standalone (for example using SD card to save the temperature data or sending data over wireless). The negative side of this is that there is no immediate temperature display and it would be difficult to know if one is really measuring the desired area or something else altogether...

The microcontroller's and LabView's code is fairly optimized (as far as my programming knowledge is concerned), so I will be putting more effort in the physical design of the measuring system.

Be creative.

Best regards,

K


https://decibel.ni.com/content/blogs/kl3m3n



"Kudos: Users may give one another Kudos on the forums for posts that they found particularly helpful or insightful."