Чтение пиродатчика MLX90614

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Чтение пиродатчика MLX90614

Сообщение Влад56 »

Методами библиотеки Wire стандартного пакета IDE пытаюсь считать показания дистанционного датчика по I2c шине. Запрашиваю температуру объекта в соответствии с даташит из 0х07 регистра, ровно так как это успешно читалось с Мемс гироскопа на основе MPU6050. Примерно так.

#include <Wire.h>
float Tem;
void setup() {
Serial.begin(9600);
Wire.begin(); // Инициализировать ардуино как мастер
 
}
void loop() {
Wire.beginTransmission(0x5A); // Начать связь с MLX
  Wire.write(00000111); // ставим в очередь 007 регистр (T0)
  Wire.endTransmission(); //закончить передачу
 
   Wire.requestFrom(0x5A, 2);//запрашиваем Т0 так как этот регистр MLX поставлен в очередь на передачу
   Tem=(Wire.read()<< 8 | Wire.read());//получаем значение в переменную
   Tem=(Tem/50)-272;//и вычисляем ее значение в градусах цельсия
 delay(300);
 Serial.println(Tem);
  
}
Но в этом случае результата нет. На мониторе стабильно -272 К. В даташите есть информация, что он не поддерживает некоторых способов доступа по шине. Подозреваю, что это как раз тот случай. В интернете рекомендуется библиотека Adafruit для ратоты с этим датчиком. При ее использовании, что то вроде снимается, но она несколько урезана. Нужен второй датчик на шине, адрес которого надо изменить, чего Adafruit явно не предусматривает. Как правильно нужно прочесть регистры этого датчика?
Датчик в версии GY-906
Реклама
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Чтение пиродатчика MLX90614

Сообщение Влад56 »

Проверяю Wire. available - 2 запрошенных байта и читаются со значением -1. Такое впечатление,что его как то инициировать нужно перед чтением, но в даташите об этом ни слова.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Чтение пиродатчика MLX90614

Сообщение BOB51 »

Для MLX9039x вроде своb библиотекb имеются...
Там "все включено"...
Может и на 90614 уже есть - стоит поискать... В том же менеджере библиотек...
:roll:
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Чтение пиродатчика MLX90614

Сообщение Влад56 »

[uquote="BOB51",url="/forum/viewtopic.php?p=4664094#p4664094"]Для MLX9039x вроде своb библиотекb имеются...
Там "все включено"...
Может и на 90614 уже есть - стоит поискать... В том же менеджере библиотек...
:roll:[/uquote]
Привет Донецку!
Она и есть на 90614 от Адафрукт в нескольких релизах. И с ней что то непонятное показывает в районе 2700. 3970. 3622.3622 и т.д., но тут хоть значения не нулевые и разные. При попытке чтения чего нибудь из EEPROM 16 нулей.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Чтение пиродатчика MLX90614

Сообщение BOB51 »

Тогда только чтение даташита "в оригинале" и в версиях перевода плюс наличие "подопытного кролика" для проверок...
Да смотрим на вероятность помех от давления, светового луча и ГАД ЖЕтовых излучений.
Как вариант - не та библиотека I2C (программная реализация вообще может не работать).
:(
Реклама
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Чтение пиродатчика MLX90614

Сообщение Влад56 »

Более детальный осмотре плат выявил, что на них запаяны вовсе не MLX90614, а некие деталюхи по виду и размеру похожие на него, но с непонятной маркировкой BAA5366914 и DAA5366913, хоть покупал пару одинаковых пиродатчика GY-906 на базе MLX90614 как указано в накладной. Уже написана претензия продавцу. Посмотрим, что ответит.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Чтение пиродатчика MLX90614

Сообщение BOB51 »

Смотрим еще и на остатки флюса да шарики припоя - платки сейчас такими "подарками" сильно грешат...
:(
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Чтение пиродатчика MLX90614

Сообщение Влад56 »

Уря. :)))
Датчики заработали. Как раз ту темперичу показывают что есть в комнате и на батарее 40 градусов.
А дело оказалось в том, что необходимо запрашивать и читать 3 бит - контрольную сумму. Закрывать передачу с индексом (false). Ну и еще кое какие заморчки со сдвигом байтов в переменной.
Осталось разобраться как адрес переписать одного из двух датчиков.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Чтение пиродатчика MLX90614

Сообщение BOB51 »

Так у всех "умных датчиков" или контрольная сумма или CRC байт в пакете данных присутствует.
8)
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Чтение пиродатчика MLX90614

Сообщение Влад56 »

[uquote="BOB51",url="/forum/viewtopic.php?p=4664883#p4664883"]Так у всех "умных датчиков" или контрольная сумма или CRC байт в пакете данных присутствует.
8)[/uquote]
А разве есть разница между этими понятиями? Для этого датчика на ютюбе этот бит контрольной суммой называется. В другой теме он же CRC назван. При получении данных он мне не нужен. Прочитал и забыл. А вот чтобы адрес поменять нужно его вычислить, так чтобы с результатом на стороне датчика совпало. Что такое полином Х8+Х2+Х+1 в дата шите не указано. При чтении старого адреса выдает его десятичное значение (90) т.е. 5А и РЕС (190). Как он это значение получил? Не сходиться, если подставить в полином рекомендованные числа. Мне надо адрес на 5В поменять (91). Может ему тогда (191) отправить?
Ответить

Вернуться в «Arduino»