mlx90640.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cstdint>
4 #include <iostream>
5 #include <math.h>
6 
9 
10 #define MLX_I2C_ADDR 0x33
11 #define SENSOR_W 24
12 #define SENSOR_H 32
13 
14 class MLX90640 {
15 private:
17  uint32_t pixels[SENSOR_W * SENSOR_H];
18 
19  float minTemp = 100.0;
20  float maxTemp = 0.0;
21  int fps = 32;
22 
23  uint16_t eeMLX90640[832];
24  float emissivity = 1;
25  uint16_t frame[834];
26  float image[768];
27  float mlx90640To[768];
28  float eTa;
29  uint16_t data[768 * sizeof(float)];
30 
32 
33  int dumpEE(uint8_t slaveAddr, uint16_t *eeData);
34  int synchFrame(uint8_t slaveAddr);
35  int triggerMeasurement(uint8_t slaveAddr);
36  int getFrameData(uint8_t slaveAddr, uint16_t *frameData);
37  int extractParameters(uint16_t *eeData, thermalParams *mlx90640);
38  float getVdd(uint16_t *frameData, const thermalParams *params);
39  float getTa(uint16_t *frameData, const thermalParams *params);
40  void getImage(uint16_t *frameData, const thermalParams *params,
41  float *result);
42  void calculateTo(uint16_t *frameData, const thermalParams *params,
43  float emissivity, float tr, float *result);
44  int setResolution(uint8_t slaveAddr, uint8_t resolution);
45  int getCurResolution(uint8_t slaveAddr);
46  int setRefreshRate(uint8_t slaveAddr, uint8_t refreshRate);
47  int getRefreshRate(uint8_t slaveAddr);
48  int getSubPageNumber(uint16_t *frameData);
49  int getCurMode(uint8_t slaveAddr);
50  int setInterleavedMode(uint8_t slaveAddr);
51  int setChessMode(uint8_t slaveAddr);
52  void badPixelsCorrection(uint16_t *pixels, float *to, int mode,
53  thermalParams *params);
54 
55  void extractVDDParameters(uint16_t *eeData, thermalParams *mlx90640);
56  void extractPTATParameters(uint16_t *eeData, thermalParams *mlx90640);
57  void extractGainParameters(uint16_t *eeData, thermalParams *mlx90640);
58  void extractTgcParameters(uint16_t *eeData, thermalParams *mlx90640);
59  void extractResolutionParameters(uint16_t *eeData, thermalParams *mlx90640);
60  void extractKsTaParameters(uint16_t *eeData, thermalParams *mlx90640);
61  void extractKsToParameters(uint16_t *eeData, thermalParams *mlx90640);
62  void extractAlphaParameters(uint16_t *eeData, thermalParams *mlx90640);
63  void extractOffsetParameters(uint16_t *eeData, thermalParams *mlx90640);
64  void extractKtaPixelParameters(uint16_t *eeData, thermalParams *mlx90640);
65  void extractKvPixelParameters(uint16_t *eeData, thermalParams *mlx90640);
66  void extractCPParameters(uint16_t *eeData, thermalParams *mlx90640);
67  void extractCILCParameters(uint16_t *eeData, thermalParams *mlx90640);
68  int extractDeviatingPixels(uint16_t *eeData, thermalParams *mlx90640);
69  int checkAdjacentPixels(uint16_t pix1, uint16_t pix2);
70  float getMedian(float *values, int n);
71  int isPixelBad(uint16_t pixel, thermalParams *params);
72  int validateFrameData(uint16_t *frameData);
73  int validateAuxData(uint16_t *auxData);
74 
75 public:
76  MLX90640(int fps);
77 
78  void see();
79  void copyRawImage(float *pointer);
80 
81  float getMin();
82  float getMax();
83 };
MLX90640::extractAlphaParameters
void extractAlphaParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:773
MLX90640::eeMLX90640
uint16_t eeMLX90640[832]
Definition: mlx90640.h:23
MLX90640::getCurResolution
int getCurResolution(uint8_t slaveAddr)
Definition: mlx90640.cpp:497
MLX90640::extractParameters
int extractParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:178
MLX90640::validateAuxData
int validateAuxData(uint16_t *auxData)
Definition: mlx90640.cpp:1288
MLX90640::emissivity
float emissivity
Definition: mlx90640.h:24
MLX90640::eTa
float eTa
Definition: mlx90640.h:28
MLX90640::extractOffsetParameters
void extractOffsetParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:859
MLX90640::validateFrameData
int validateFrameData(uint16_t *frameData)
Definition: mlx90640.cpp:1276
MLX90640::getVdd
float getVdd(uint16_t *frameData, const thermalParams *params)
Definition: mlx90640.cpp:199
MLX90640::setChessMode
int setChessMode(uint8_t slaveAddr)
Definition: mlx90640.cpp:569
MLX90640::triggerMeasurement
int triggerMeasurement(uint8_t slaveAddr)
Definition: mlx90640.cpp:94
MLX90640::getFrameData
int getFrameData(uint8_t slaveAddr, uint16_t *frameData)
Definition: mlx90640.cpp:125
MLX90640::extractResolutionParameters
void extractResolutionParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:719
MLX90640::extractKvPixelParameters
void extractKvPixelParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:1001
MLX90640::getCurMode
int getCurMode(uint8_t slaveAddr)
Definition: mlx90640.cpp:541
MLX90640::extractGainParameters
void extractGainParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:696
MLX90640::setInterleavedMode
int setInterleavedMode(uint8_t slaveAddr)
Definition: mlx90640.cpp:555
MLX90640::calculateTo
void calculateTo(uint16_t *frameData, const thermalParams *params, float emissivity, float tr, float *result)
Definition: mlx90640.cpp:338
MLX90640::getTa
float getTa(uint16_t *frameData, const thermalParams *params)
Definition: mlx90640.cpp:217
MLX90640::image
float image[768]
Definition: mlx90640.h:26
MLX90640::copyRawImage
void copyRawImage(float *pointer)
Definition: mlx90640.cpp:59
MLX90640::setResolution
int setResolution(uint8_t slaveAddr, uint8_t resolution)
Definition: mlx90640.cpp:482
MLX90640::extractKsToParameters
void extractKsToParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:739
MLX90640::getMax
float getMax()
Definition: mlx90640.cpp:67
MLX90640::frame
uint16_t frame[834]
Definition: mlx90640.h:25
MLX90640::fps
int fps
Definition: mlx90640.h:21
MLX90640::extractCILCParameters
void extractCILCParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:1129
SENSOR_H
#define SENSOR_H
Definition: mlx90640.h:12
MLX90640::maxTemp
float maxTemp
Definition: mlx90640.h:20
MLX90640::pixels
uint32_t pixels[SENSOR_W *SENSOR_H]
Definition: mlx90640.h:17
MLX90640::MLX90640
MLX90640(int fps)
Definition: mlx90640.cpp:3
MLX90640::getRefreshRate
int getRefreshRate(uint8_t slaveAddr)
Definition: mlx90640.cpp:525
MLX90640::minTemp
float minTemp
Definition: mlx90640.h:19
MLX90640::getMin
float getMin()
Definition: mlx90640.cpp:65
MLX90640::extractVDDParameters
void extractVDDParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:649
MLX90640::getImage
void getImage(uint16_t *frameData, const thermalParams *params, float *result)
Definition: mlx90640.cpp:241
MLX90640::extractPTATParameters
void extractPTATParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:667
i2c_driver.h
SENSOR_W
#define SENSOR_W
Definition: mlx90640.h:11
MLX90640::extractCPParameters
void extractCPParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:1075
MLX90640::getMedian
float getMedian(float *values, int n)
Definition: mlx90640.cpp:1245
MLX90640::mlx90640To
float mlx90640To[768]
Definition: mlx90640.h:27
MLX90640::data
uint16_t data[768 *sizeof(float)]
Definition: mlx90640.h:29
thermalParams
Definition: params.h:7
params.h
MLX90640::see
void see()
Definition: mlx90640.cpp:37
MLX90640::synchFrame
int synchFrame(uint8_t slaveAddr)
Definition: mlx90640.cpp:73
MLX90640::isPixelBad
int isPixelBad(uint16_t pixel, thermalParams *params)
Definition: mlx90640.cpp:1266
MLX90640::extractKsTaParameters
void extractKsTaParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:727
MLX90640::sensorParams
thermalParams sensorParams
Definition: mlx90640.h:31
MLX90640::extractDeviatingPixels
int extractDeviatingPixels(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:1161
MLX90640::dumpEE
int dumpEE(uint8_t slaveAddr, uint16_t *eeData)
Definition: mlx90640.cpp:69
I2CDriver
Definition: i2c_driver.h:7
MLX90640::extractTgcParameters
void extractTgcParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:708
MLX90640::getSubPageNumber
int getSubPageNumber(uint16_t *frameData)
Definition: mlx90640.cpp:539
MLX90640::setRefreshRate
int setRefreshRate(uint8_t slaveAddr, uint8_t refreshRate)
Definition: mlx90640.cpp:511
MLX90640::checkAdjacentPixels
int checkAdjacentPixels(uint16_t pix1, uint16_t pix2)
Definition: mlx90640.cpp:1228
MLX90640::i2cDriver
I2CDriver i2cDriver
Definition: mlx90640.h:16
MLX90640
Definition: mlx90640.h:14
MLX90640::extractKtaPixelParameters
void extractKtaPixelParameters(uint16_t *eeData, thermalParams *mlx90640)
Definition: mlx90640.cpp:920
MLX90640::badPixelsCorrection
void badPixelsCorrection(uint16_t *pixels, float *to, int mode, thermalParams *params)
Definition: mlx90640.cpp:583


mlx90640_thermal_camera
Author(s):
autogenerated on Sat Sep 16 2023 02:13:29