MLX90614
[
Пред. ] [ Содержание ] [
След. ]
MLX90614
Created Понедельник 09 Январь 2017
MLX90614 – это инфракрасный термометр в корпусе TO-39 для бесконтактного измерения температуры.
Датчики измеряют две температуры: температуру объекта и температуру окружающей среды. Измерение температуры объекта происходит бесконтактным способом, а температура среды измеряется на кристалле датчика.
Температура объекта измеряется в диапазоне от -70 до 380 градусов с 17-битным разрешением посредством считывания инфракрасного излучения, исходящего от него. Такая точность позволяет датчику различать температуру между 25°С и 25.02°С.
В корпусе объединены ИК детектор (MLX81101) и микросхема обработки сигнала (MLX90302). Благодаря применению малошумящего усилителя, 17-битного АЦП и мощного DSP процессора датчики имеют высокую точность и разрешение. Результатом измерений является усредненная температура всех объектов, попадающих в рабочую область датчика. Точность стандартных моделей составляет -0.5°С, а точность моделей для медицинского применения (MLX90614ESF-DCI) доходит от 0.2°С. Следует учитывать, что данная точность может быть достигнута только в том случае, если датчик находится в состоянии термического равновесия. На его изменение могут влиять находящиеся рядом горячие или холодные объекты.

ИК датчики MLX90614 калиброваны на заводе-изготовителе с цифровым ШИМ и SMBus выходом в диапазоне от -40 до 125°С для температуры окружающей среды и в диапазоне -70…380°С для измеряемых объектов.
Датчики MLX90614 поддерживают два интерфейса, однако достаточно иметь один, чтобы получить доступ к другому. Первичное подключение к ИК датчику происходит по 2-проводному SMBus интерфейсу, очень простому и близкому к I2С. Если он уже настроен, то позже можно сконфигурировать датчик на ШИМ выход. Два выходных сигнала - SDA и SCL – передают данные и сигнал синхронизации.
Каждый датчик имеет I2C адрес по умолчанию 0x5A, но очень может быть изменен, это является одним из главных преимуществ датчика. Посредством конфигурации адреса можно добавлять до 127 датчиков к одной шине и получать широкую температурную карту.
ШИМ выход конфигурируется поверх SMBus, его тяжело использовать с микроконтроллером, но он очень удобен для использования датчика для прямого управления реле или другим устройством срабатывания. ШИМ сигнал может быть легко настроен на любой требуемый диапазон посредством изменения содержания двух EEPROM ячеек. Это не повлияет на заводскую калибровку датчика. ШИМ выход также может быть настроен как термореле в приложниях, где датчик используется как термостат или сигнализатор пороговой температуры. Пороги срабатывания настраиваются пользоватетелем программным методом.
Датчики выпускаются в нескольких модификациях, с индексом DCI или BCI. Оба датчика имеют входное напряжение 3В, совместимое с батарейным питанием. Индекс I обозначает тип модификацю корпуса, который имеет насадку для обеспечения узкого поля зрения в 5°.
Помимо датчика и микросхемы обработки сигнала в корпусе расположен оптический фильтр, который отрезает видимый и близкий к инфракрасному излучению поток. Такой фильтр обеспечивает нечувствительность датчика к солнечному свету и внешней засветке. Полоса пропускания фильтра составляет 5.5…14 мкм.
Датчики MLX90614 выпускаются в 4-выводном ТО-39 корпусе, два для питания и два для SMBus интерфейса.
Маленький «зубец» в нижней части корпуса позволяет быстро определить распиновку ног.

Особенности и премущества
—малые размеры, небольшая стоимость
—легкость интеграции
—заводская калибровка в широком температурном диапазоне: -40…125°С для датчика и -70…380°С для измеряемого объекта
—высокая точность 0.5°С в широком температурном диапазоне (0…50°С)
—высокоточная (медицинская) калибровка
—разрешение измерений 0.02°С
—SMBus совместимый интерфейс
—ШИМ выход для получения непрерывных результатов измерений
—модели с напряжением питания 3 и 5 В
—модели с одной и двумя зонами (датчиками)
—простая адаптация для приложений на 8-16В
—режим пониженного энергопотребления для экономии питания
—различные модификации корпуса для специализированного применения
Возможные сферы применения
—прецизионные бесконтактные измерения температуры
—датчик температурного комфорта для мобильных систем кондиционирования
—температурный датчик для бытовых и промышленных систем кондиционирования
—предотвращение запотевания лобового стекла
—детектирование угла мертвой волны
—промышленный температурный датчик движущихся объектов
—термоконтроль в принтерах и копировательных аппаратах
—бытовые приборы с температурным контролем
—мониторинг скота в животноводстве
—детектирование перемещений
—медицинское оборудование
—температурный контроль нескольких зон – возможен опрос до 127 датчиков через 2-проводной интерфейс
—термореле и сигнализации
—измерения температуры человеческого тела
Примеры подключения датчика



| нажми сюда | нажми сюда |
|---|
| Подключение к SMBus шине
| Подключение SMBus + ШИМ
|
| | |
| Подключение к ШИМ контроллеру | |
|
| |
Система обозначений
MLX90614 E SF D C I
1 2 3 4 5 6
1. Серия
2. Температурный диапазон:
Е – -40…85°С
К – -40…125°С
3. Тип корпуса: SF – ТО-39
4. Напряжение питания:
А – 5 В
В – 3 В
D – 3 В с медиц. точностью
5. Количество зон:
А – одна
В – две
С – одна с градиентной компенсацией
6. Модификация корпуса:
A – стандартный корпус
I – с насадкой для обеспечения узкого поля зрения в 5°
IR Thermometer // Thanks to Lady Ada and Read for MLX90614 and Sevseg library !
#include "SevSeg.h"
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#define PIN_PWR_SENESOR 13
#define PIN_PWR_LASER A0
#define PIN_PRESS_SWITCH1 2
#define PIN_PRESS_SWITCH2 3
#define PIN_BUZZER_ALERM 4
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
SevSeg sevseg; //Instantiate a seven segment controller object
volatile int test =0;
volatile int test2 = 0;
float T_amb;
float T_obj;
void setup() {
pinMode(PIN_PRESS_SWITCH1, INPUT_PULLUP);
attachInterrupt(0, SW1, FALLING);// Interrupt for Swithc 1
pinMode(PIN_PRESS_SWITCH2, INPUT_PULLUP);
attachInterrupt(1, SW2, FALLING);// Interrupt for Swithc 2
pinMode(PIN_PWR_SENESOR, OUTPUT);
pinMode(PIN_PWR_LASER, OUTPUT);
pinMode(PIN_BUZZER_ALERM, OUTPUT);
digitalWrite(PIN_PWR_SENESOR,HIGH); // powers the regulator + IR sensor
digitalWrite(PIN_PWR_LASER,LOW);
digitalWrite(PIN_BUZZER_ALERM,LOW);
byte numDigits = 3;
byte digitPins[] = {A1, A2, A3};
byte segmentPins[] = {11, 9, 7, 6, 5, 10, 8, 12};
bool resistorsOnSegments = false; // Use 'true' if on digit pins
byte hardwareConfig = COMMON_ANODE; // See README.md for options
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(100);
mlx.begin();
}
void loop() {
static unsigned long timer = millis();
static int seconds = 0;
if (millis() >= timer) {
seconds++; // 100 milliSeconds is equal to 1 deciSecond
timer += 1000;
if (seconds == 100000) { // Reset to 0 after counting for 1000 seconds.
seconds=0;
}
sevseg.setNumber(T_obj, 1); }
if(test==0)
{
// T_amb = mlx.readAmbientTempC();
T_obj = mlx.readObjectTempC();
sevseg.setNumber(T_obj, 0);
sevseg.refreshDisplay();
sevseg.refreshDisplay();
sevseg.refreshDisplay();
sevseg.refreshDisplay(); // Must run repeatedly }
if (test==1)
{
T_amb = mlx.readAmbientTempC();
// T_amb=T_amb*10;
sevseg.setNumber(T_amb, 1);
sevseg.refreshDisplay();
sevseg.refreshDisplay();
sevseg.refreshDisplay();
sevseg.refreshDisplay(); // Must run repeatedly
}
}
void SW1()
{
test=1;
digitalWrite(PIN_PWR_Laser,HIGH);
}
void SW2()
{
test=0;
digitalWrite(PIN_PWR_Laser,HIGH);}
Содержание