Методами библиотеки Wire стандартного пакета IDE пытаюсь считать показания дистанционного датчика по I2c шине. Запрашиваю температуру объекта в соответствии с даташит из 0х07 регистра, ровно так как это успешно читалось с Мемс гироскопа на основе MPU6050. Примерно так.
Цитата:
#include <Wire.h> float Tem; voidsetup() { Serial.begin(9600); Wire.begin(); // Инициализировать ардуино как мастер
} voidloop() { 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
Проверяю Wire. available - 2 запрошенных байта и читаются со значением -1. Такое впечатление,что его как то инициировать нужно перед чтением, но в даташите об этом ни слова.
Для MLX9039x вроде своb библиотекb имеются... Там "все включено"... Может и на 90614 уже есть - стоит поискать... В том же менеджере библиотек...
Привет Донецку! Она и есть на 90614 от Адафрукт в нескольких релизах. И с ней что то непонятное показывает в районе 2700. 3970. 3622.3622 и т.д., но тут хоть значения не нулевые и разные. При попытке чтения чего нибудь из EEPROM 16 нулей.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Тогда только чтение даташита "в оригинале" и в версиях перевода плюс наличие "подопытного кролика" для проверок... Да смотрим на вероятность помех от давления, светового луча и ГАД ЖЕтовых излучений. Как вариант - не та библиотека I2C (программная реализация вообще может не работать).
Более детальный осмотре плат выявил, что на них запаяны вовсе не MLX90614, а некие деталюхи по виду и размеру похожие на него, но с непонятной маркировкой BAA5366914 и DAA5366913, хоть покупал пару одинаковых пиродатчика GY-906 на базе MLX90614 как указано в накладной. Уже написана претензия продавцу. Посмотрим, что ответит.
Уря. Датчики заработали. Как раз ту темперичу показывают что есть в комнате и на батарее 40 градусов. А дело оказалось в том, что необходимо запрашивать и читать 3 бит - контрольную сумму. Закрывать передачу с индексом (false). Ну и еще кое какие заморчки со сдвигом байтов в переменной. Осталось разобраться как адрес переписать одного из двух датчиков.
Так у всех "умных датчиков" или контрольная сумма или CRC байт в пакете данных присутствует.
А разве есть разница между этими понятиями? Для этого датчика на ютюбе этот бит контрольной суммой называется. В другой теме он же CRC назван. При получении данных он мне не нужен. Прочитал и забыл. А вот чтобы адрес поменять нужно его вычислить, так чтобы с результатом на стороне датчика совпало. Что такое полином Х8+Х2+Х+1 в дата шите не указано. При чтении старого адреса выдает его десятичное значение (90) т.е. 5А и РЕС (190). Как он это значение получил? Не сходиться, если подставить в полином рекомендованные числа. Мне надо адрес на 5В поменять (91). Может ему тогда (191) отправить?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения