Понемножку ковыряюсь с MLX90640 (хочу ИК-allsky сделать). Сначала думал было к STM32F103 ее прицепить, но оказалось, что там для вычисления температур нужно уйму квадратных корней вычислять, а F103 даже флоаты аппаратно не умеет — куда уж ему!
Прицепил датчик к Orange Pi Zero2. Сначала попробовал "фирменную библиотеку" от melexis. Дрянь редкостная: мало того, что там есть кривые преобразования типов (которые неправильно работают на 64-битной архитектуре), так еще и даташит не читал тот, кто это писал (там иной раз пишут несуществующие флаги, а затем пытаются прочесть — записался ли флаг). Портировал свой код для F103,
вот, что получилось. Сделал полностью вычисления по даташиту, RMS выходит меньше 0.2-0.3%. Но все равно какую-то чушь показывает: вроде, меня "как бы видно" на кадре, но все равно температура фона значительно выше комнатной. На небо еще не выходил: жду погоду подходящую (чтобы с облаками было, а не полностью ясно или полностью затянуто, как сейчас).
Основная проблема, с которой столкнулся — неправильное отображение температур на низких скоростях обновления, хотя по даташиту как раз на них погрешности должны быть минимальными. Если на 16Гц и выше показывает более-менее похожее на правду, то на низких частотах показания завышаются. Как будто бы меняется не только частота считывания, но и экспозиция! Хотя в даташите об этом ни слова. Использую режим считывания "по требованию": снимаю флаг готовности, пишу номер очередной "страницы", жду, пока будет готово, считываю.
Странно как-то, что в интернете особо ничего по этим датчикам нет. Такое впечатление, что никто в них не заинтересован, хотя стоимость у них вполне приличная (даже у китайской отбраковки, что на али продается).
Может, кто с этими датчиками работал? Сталкивались с подобным?