RSS блога
Подписка
Простейший измеритель пульсации света на датчике iArduino
Этот простой прибор поможет оценить пульсацию освещения и выбрать лампы без пульсации.
Собрать его можно буквально за пять минут.
На мой клич в блоге о создании «народного пульсметра» откликнулось много людей В комментариях на Дзене Вячеслав Т сообщил, что существует готовый датчик пульсации, который производит московская компания iArduino. Он называется "Датчик освещенности, люксметр, FLASH-I2C (Trema-модуль)" и стоит 320 рублей.
Этот датчик построен на сенсоре APDS-9930, который на самом деле является датчиком приближения, но заодно может измерять освещённость. Датчик содержит свой процессор и отдаёт по шине I2C освещённость в люксах, пульсацию в процентах и расстояние до объекта. На сайте iArduino написано, что пульсация вычисляется по 20 последним измерениям освещённости. С какой частотой делаются измерения и по какой формуле считается пульсация неизвестно. Я специально съездил в iArduino, чтобы узнать технические подробности, но там сказали, что датчик разрабатывался давно и они ничего не помнят.
Купил датчик, собрал прибор и изучил, как он работает.
Датчик не учитывает фоновую засветку, поэтому измерения желательно проводить в темноте, чтобы единственным источником света была исследуемая лампа.
Я взял светодиодные лампы разного качества с разным уровнем пульсации и сравнил показания самодельного пульсметра с показаниями спектрометра Uprtek MK350D и прибора Radex Lupin.
«Uprtek MK350D» и «Radex Люпин» рассчитывают коэффициент пульсации по разным формулам, поэтому их показания различаются. Показания самодельного прибора на датчике iArduino близки к показаниям MK350D, считающего пульсацию по упрощённой формуле. Отсутствие пульсации (0%) и небольшие уровни пульсации (1-50%) самодельный прибор показывает уверенно и достаточно точно. При пульсации 100% показания самодельного прибора начинают прыгать от 0 до 100%, но по этому «прыганью» можно понять, что лампа совсем плохая.
Во второй строке самодельный прибор показывает освещённость в люксах.
Я снял небольшое видео с экспериментом по сравнению показаний приборов.
Для того, чтобы сделать такой же прибор самостоятельно понадобится датчик «iArduino Датчик освещенности, люксметр, FLASH-I2C (Trema-модуль)» (можно купить тут), OLED-экран 0.96" с 4 выводами (I2C), плата D1 mini или, если не хотите ничего паять, Arduino Nano или Arduino Uno.
Четыре контакта датчика освещённости и четыре контакта экрана подключаются к одним и тем же контактам микроконтроллера: VCC к 5V, GND к GND или G, SCL к D1 у платы «D1 mini» или к A5 у плат Arduino, SDA к D2 у платы «D1 mini» или к A4 у плат Arduino. У платы Arduino Uno все эти контакты дублируются, поэтому одну плату (например, экран) можно подключить к 5V, GND, A5, A4, а вторую (например датчик iArduino) к 5V, GND, SCL, SDA.
Прибор можно использовать и без экрана: вся информация одновременно выводится в последовательный порт и её можно смотреть в мониторе порта Arduino.
Для компиляции понадобятся библиотеки iarduino_I2C_DSL и GyverOLED.
Для удобства всё, что нужно (скетч, библиотеки, схему подключения) можно скачать в одном архиве тут.
Но не спешите бежать в iArduino за датчиком. Как я сказал в начале, не мой призыв откликнулось много людей и двое уже создали гораздо более совершенные пульсметры.
Станислав Грицинов разработал пульсметр с аналоговым датчиком TEMT6000 и TFT-экраном.
Николай Хозяинов сделал пульсметр с маленькой солнечной батареей в качестве датчика и OLED-экраном.
В ближайшее время мы доведём «народный пульсметр» до совершенства и я опубликую подробную инструкцию по его сборке.
© 2021, Алексей Надёжин
Собрать его можно буквально за пять минут.
На мой клич в блоге о создании «народного пульсметра» откликнулось много людей В комментариях на Дзене Вячеслав Т сообщил, что существует готовый датчик пульсации, который производит московская компания iArduino. Он называется "Датчик освещенности, люксметр, FLASH-I2C (Trema-модуль)" и стоит 320 рублей.
Этот датчик построен на сенсоре APDS-9930, который на самом деле является датчиком приближения, но заодно может измерять освещённость. Датчик содержит свой процессор и отдаёт по шине I2C освещённость в люксах, пульсацию в процентах и расстояние до объекта. На сайте iArduino написано, что пульсация вычисляется по 20 последним измерениям освещённости. С какой частотой делаются измерения и по какой формуле считается пульсация неизвестно. Я специально съездил в iArduino, чтобы узнать технические подробности, но там сказали, что датчик разрабатывался давно и они ничего не помнят.
Купил датчик, собрал прибор и изучил, как он работает.
Датчик не учитывает фоновую засветку, поэтому измерения желательно проводить в темноте, чтобы единственным источником света была исследуемая лампа.
Я взял светодиодные лампы разного качества с разным уровнем пульсации и сравнил показания самодельного пульсметра с показаниями спектрометра Uprtek MK350D и прибора Radex Lupin.
«Uprtek MK350D» и «Radex Люпин» рассчитывают коэффициент пульсации по разным формулам, поэтому их показания различаются. Показания самодельного прибора на датчике iArduino близки к показаниям MK350D, считающего пульсацию по упрощённой формуле. Отсутствие пульсации (0%) и небольшие уровни пульсации (1-50%) самодельный прибор показывает уверенно и достаточно точно. При пульсации 100% показания самодельного прибора начинают прыгать от 0 до 100%, но по этому «прыганью» можно понять, что лампа совсем плохая.
Во второй строке самодельный прибор показывает освещённость в люксах.
Я снял небольшое видео с экспериментом по сравнению показаний приборов.
Для того, чтобы сделать такой же прибор самостоятельно понадобится датчик «iArduino Датчик освещенности, люксметр, FLASH-I2C (Trema-модуль)» (можно купить тут), OLED-экран 0.96" с 4 выводами (I2C), плата D1 mini или, если не хотите ничего паять, Arduino Nano или Arduino Uno.
Четыре контакта датчика освещённости и четыре контакта экрана подключаются к одним и тем же контактам микроконтроллера: VCC к 5V, GND к GND или G, SCL к D1 у платы «D1 mini» или к A5 у плат Arduino, SDA к D2 у платы «D1 mini» или к A4 у плат Arduino. У платы Arduino Uno все эти контакты дублируются, поэтому одну плату (например, экран) можно подключить к 5V, GND, A5, A4, а вторую (например датчик iArduino) к 5V, GND, SCL, SDA.
Прибор можно использовать и без экрана: вся информация одновременно выводится в последовательный порт и её можно смотреть в мониторе порта Arduino.
Скетч
//При использовании платы «D1 Mini» уберите две наклонные линии перед тремя строками, отключающими Wi-Fi.
//#include <ESP8266WiFi.h> // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
#include <Wire.h> // * Подключаем библиотеку для работы с аппаратной шиной I2C.
#include <iarduino_I2C_DSL.h> // Подключаем библиотеку для работы с датчиком освещённости I2C-flash (Digital Sensor Light).
iarduino_I2C_DSL dsl; // Объявляем объект dsl для работы с функциями и методами библиотеки iarduino_I2C_DSL.
void setup() {
// WiFi.mode(WIFI_OFF); // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
// WiFi.forceSleepBegin(); // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(2); // масштаб текста (1..4)
oled.setCursorXY(0, 18);
oled.print(«Flicker»);
oled.setCursorXY(0, 36);
oled.print(" Test");
oled.setScale(4); // масштаб текста (1..4)
oled.home(); // курсор в 0,0
delay(500); // * Ждём завершение переходных процессов связанных с подачей питания.
Serial.begin(9600); //
while(!Serial){;} // * Ждём завершения инициализации шины UART.
dsl.begin(); // Инициируем работу с датчиком освещённости.
delay(2000); // Задержка после начальной заставки
}
void loop(){ //
Serial.print(«Light = „); //
Serial.print( dsl.getLux() ); // Выводим текущую освещённость, от 0 до 8191 лк.
Serial.print(“ lux. Flicker = „); //
Serial.print( dsl.getPulsation() ); // Выводим коэффициент пульсаций света, от 0 до 100%.
Serial.print(“ %\r\n»); //
oled.setCursorXY(0, 0);
oled.print( dsl.getPulsation() );
oled.print(" % ");
oled.setCursorXY(0, 32);
oled.print( dsl.getLux() );
oled.print(" ");
delay(500); // * Задержка между измерениями и отображением
}
//#include <ESP8266WiFi.h> // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
#include <Wire.h> // * Подключаем библиотеку для работы с аппаратной шиной I2C.
#include <iarduino_I2C_DSL.h> // Подключаем библиотеку для работы с датчиком освещённости I2C-flash (Digital Sensor Light).
iarduino_I2C_DSL dsl; // Объявляем объект dsl для работы с функциями и методами библиотеки iarduino_I2C_DSL.
void setup() {
// WiFi.mode(WIFI_OFF); // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
// WiFi.forceSleepBegin(); // Уберите символы // в начале строки, если используете плату D1 mini или NodeMCU
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(2); // масштаб текста (1..4)
oled.setCursorXY(0, 18);
oled.print(«Flicker»);
oled.setCursorXY(0, 36);
oled.print(" Test");
oled.setScale(4); // масштаб текста (1..4)
oled.home(); // курсор в 0,0
delay(500); // * Ждём завершение переходных процессов связанных с подачей питания.
Serial.begin(9600); //
while(!Serial){;} // * Ждём завершения инициализации шины UART.
dsl.begin(); // Инициируем работу с датчиком освещённости.
delay(2000); // Задержка после начальной заставки
}
void loop(){ //
Serial.print(«Light = „); //
Serial.print( dsl.getLux() ); // Выводим текущую освещённость, от 0 до 8191 лк.
Serial.print(“ lux. Flicker = „); //
Serial.print( dsl.getPulsation() ); // Выводим коэффициент пульсаций света, от 0 до 100%.
Serial.print(“ %\r\n»); //
oled.setCursorXY(0, 0);
oled.print( dsl.getPulsation() );
oled.print(" % ");
oled.setCursorXY(0, 32);
oled.print( dsl.getLux() );
oled.print(" ");
delay(500); // * Задержка между измерениями и отображением
}
Для компиляции понадобятся библиотеки iarduino_I2C_DSL и GyverOLED.
Для удобства всё, что нужно (скетч, библиотеки, схему подключения) можно скачать в одном архиве тут.
Но не спешите бежать в iArduino за датчиком. Как я сказал в начале, не мой призыв откликнулось много людей и двое уже создали гораздо более совершенные пульсметры.
Станислав Грицинов разработал пульсметр с аналоговым датчиком TEMT6000 и TFT-экраном.
Николай Хозяинов сделал пульсметр с маленькой солнечной батареей в качестве датчика и OLED-экраном.
В ближайшее время мы доведём «народный пульсметр» до совершенства и я опубликую подробную инструкцию по его сборке.
© 2021, Алексей Надёжин
Самые обсуждаемые обзоры
Из-за значительной инертности.
Я не знал, что они инертные, вот недавно пульсации фитолампы лечить пытался, 156кГц, когда для оценки пульсаций ламп люди 3кГц ограничиваются.
Но когда я подключился к проводам, идущим к светодиодам, при 80В DC амплитуда пульсаций оказалась 32В.
И чему верить?
тестер «Стетоскоп»
Любые пульсации в диапазоне 30 Гц… 16 кГц
частоту колебаний и форму вполне можно оценить
у фотоэлемента намного больше выдаваемый сигнал
была у меня LED-лампа E27, которая совершенно не мерцала ни в смартфоне, ни в каких-то других камерах, где можно было даже короткие выдержки ставить. а на самоделке сразу вылезно — 100 Гц! Просто очень низкий уровень пульсаций, на смартфоне его не видно.
то при изменении расстояния (в разумных пределах) значение Кп не изменяется
если же Кп «плывёт» из-за изменения расстояния, то прибор — шлак
если изменяется расстояние, то постоянка (ака опорное) и переменка (ака пульсации) меняются пропорционально
т.е. их соотношение (Кп) остаётся постоянным
По хорошему надо гистограмму строить, какое время какое напряжение было, и уже дальше её анализировать.
например, светит обычная ЛН 40 Вт
к примеру, у неё Кп=10%
это значение не зависит от расстояния, хоть 1м, хоть 10м
так что ничего осмысленного тут намерить не получится.
в ГОСТ 33393-2015 (калька с устаревших)
в формуле есть косЯк: двойка в знаменателе
получается, что при пульсациях с амплитудой, равной Eср., Кп=100 %
если убрать двойку из знаменателя, то получится 200 %
Прибор (прибор!) должен показывать эквивалентную-взвешенную величину пульсаций, а не то что написано на картинке. Если есть возражения, то перед выкладыванием этих возражений ответьте на два вопроса:
1. почему при измерении(!) уровня шума используется «кривая взвешивания», да еще и разных типов?
2. почему при измерении(!) уровня светового потока используется «кривая видимости»?
(имхо), норматика жутко устарела
ФД и резистор — это конечно жесть
10 лет назад,
КарлАлексей!При этом кто-то начал его разрабатывать, вероятно, в начале 2000-х очень неспешно.
В ИС Хоровица и Хилла (издание 1986 года, т.е. почти 30 лет назад) приводится классическая схема на ОУ:
Что, в 2012м году у разработчиков ГОСТа не было обычных операционных усилителей?!
Видимо, в моменты перехода через ноль, когда лампа не светит, Люпин сам начинает светить в сторону исследуемой лампы.
По методике из ГОСТ пульсации могут быть и 500%
ekosf.ru/stati/pulsacii/
Последние пару лет Ардуино дорожают, STM тоже дорожают, но не так сильно, а ESP вроде как дешевеют.
Так что для самодельщиков нынче мелкая ESP — самый доступный вариант.
Подход esp-шников «два клика и +10кб» дико бесит, постоянно навевает мысли о создании CMSIS' esp32. Останавливает их RM, он ужасен.
Свет настольной лампы:
Фонарик с ШИМ 50%:
Фонарик на полную яркость (без пульсаций):
Еще есть вот такой интересный метод.
Для измерений следует использовать режим КЗ.
Если нужно получить что-то полезное и работающее — обратитесь к разработчику аппаратуры со знаниями в области светотехники. Конечно, если есть задача сделать, а не пообщаться по теме сделать.
Такой измеритель реализовать не долго и не трудно. Нужно только четко понимать, что делаешь.
(Увы, в конференциях и по разным форумам специалисты не ходят, им и так есть что делать)
По сути случилось то, что «коллективный разум» подсказал готовый датчик, который на выходе сразу выдаёт коэффициент пульсаций. Вполне неплохо получилось.
Боготворимые Вами специалисты давно и успешно потрудились над созданием датчика, просто о нём мало кто знал.
Специалист по светотехнике здесь я. Разработчики подключены к процессу.
На 90% бытовых ламп не указан коэффициент пульсаций.
Отчитаюсь ближе к Новому году.
Поэтому специалисты и не любят бытовые лампы.
На платах с Али есть только голый датчик APDS-9930, никаких пульсаций с него получить нельзя.
В принципе возможно повторить работу микропроцессора платы, быстро читая освещенность и обрабатывая эти данные. Только оно небыстрое все равно. Ниже уважаемый ksiman оценил полосу пропускания в 200 Гц.
Хотя сам процессор содержит весьма быстродействующий АЦП, с частотой выборки до 1МГц, но опрос APDS-9930 ведётся через шину I2C.
Лично на мой взгляд поинтереснее было использоватьTSL257 + та же ардуина для оцифровки и расчета.
НУ и раз уж esp использована сделать вывод в режиме WEB сервера. МИнус дисплей — цена вопроса до 1000 р.
причина: ФД чует ИК и УФ
лично мне удалось полностью отсечь ИК часть спектра (не IR cut фильтром)
но схемотехника нестандартная
и конструкция фотоприёмника усложняется
Бывают другие TSL2** с другими пределами, но они там всё равно все меньше 1000 лм.
Оптимально конечно собрать датчик из фотодиода, операционника и пары резисторов, но в вашей парадигме «не паять» — не получится.
Не годится.
Какой нибудь набор «юный оптик»? :))
Называется ND2-400, VND.
Регулируемый фильтр из стекла обеспечивает контроль над освещённостью от 2 до 8 уровней за счет вращения двух поляризационных фильтров относительно друг друга.
Не благодарите!
Насколько точно он это делает скоро узнаем.
Проверено многократно.
Уже обсуждалось.
У импортных — такой «иконостас» возможен:
Сенсор APDS-9930 плохо приспособлен для измерения уровня пульсаций. У него регулируемая частота выборки, и в самом быстром варианта, который скорее всего и используется, составляет всего 434Гц. Такая частота выборки позволит более менее достоверно измерять ШИМ максимум до 1кГц.
Считается, что человеческий глаз абсолютно не воспринимает частоты выше 300 Гц. Во всех профессиональных пульсметрах делается фильтрация частот выше 300-400 Гц.
Вообще, давно ожидал от автора подобной темы. Спасибо.
Из солнечной панели отличный датчик получается, там только математику (не слишком сложную) в порядок привести надо.
Остальное найдёте без проблем, отсортировав по заказам.
Attiny справится тут вполне.
АЙардуино-датчик плохо подходит для измерения пульсаций, ибо по ДЩ там максимум 200гц может быть померяно (это ещё в самом лучшем случае).
Нужно фотодиод, оу и ацп.
Скорее всего итоговая версия измерителя будет на TEMT6000, там как раз фотодиод и ОУ.
Это фотодиод + трансимпедансный ОУ
Плюсы:
корпус ДИП — т.е. большой и с большими ногами
есть выводы для установки внешнего резистора обратной связи, т.е. можно нужное усиление обеспечить.
Ну и стоит на Али около 60 р.
• Bandwidth: 14 kHz at RF = 1 MΩ
При уменьшении усиления полоса вырастет.
Для измерения пульсаций в полосе до 300 Гц — за глаза.
Сделанный мной прибор умеет измерять пульсации где-то до 150 КГц.
Но я хотел смотреть пульсации от экранов мониторов, ноутов и телевизоров, фонарей и пр.
IMHO, измерять наличие ШИМа нужно во всем доступном диапазоне частот, а не только где глаз видит.
совершенно бестолковая вещь: чует ИК диапазон, как обычный ФД256
чтобы исправить ситуацию, были куплены светофильтры, отсекающие ИК диапазон (IR cut filter)
но и тут меня постигла неудача: всё зря
в конечном итоге поставил крест на ТЕМТ6000 и светофильтрах
и разработка пошла в другом направлении
Ammo1, как всегда, хотел сделать скрытую рекламу (product placement), а получилось наоборот — анитиреклама.
И ещё, рез вы и фирма не знает может ли данный сенсор (а согласно datasheet не может) измерять пульсации, то может не стоит вводить людей в заблуждение и писать непроверенную информацию в названии?
Это не лучшее решение, но этот самодельный прибор достаточно точно измеряет пульсацию на частоте 100 Гц, что и требуется для измерения пульсации у бытовых светодиодных ламп.
вот пример использования у того же автораhttps://youtu.be/OGiTwwa1u1s?t=362
Светодиоды вошли в нашу жиСТь широко и надолго, тогда как их качество(-увы и ах!)
пока находится на уровне первых свечей и «керосинок»… И, мы всё ближе к тому моменту,
когда даже Марь-Ванна Грицацуева будет выбирать светодиодную лампочку не только
по весу «за пучок», но и тряся этаким проверочным «самоваром» перед носом ошалевшего
от своего "-и так сойдёт!" мерчендайзера\производителя и т.д…
P.S.: И ей, кстати, вполне хватит даже «светофора» без цифирек! Горит «зелёный»-беру, «жёлтый»-
-требую скидку в 99%!!! Ну, а «красный», это будет полный *пи* продавцу...(-соблюдай ТБ, и носи на
работе каску, продавая лампочки....).
Выше вероятность, что LED лампочек не будет (коллапс мировой торговли), купленные сгорят, а отдельные металлические драйверы с ГОСТами, пульсациями 1-3% по паспорту, с возможностью донавески внешних конденсаторов — останутся.
:-))
Мою статью про такой самодельный светильник тут «зарубили» — м.б. ссылок на Али мало, «дойную корову» муськи.
samopal.pro/luxmeter2/
radiokot.ru/konkursCatDay2014/47/
но за 5 минут их явно не собрать…
хоть примерно?
Arduino Nano;
Маленькая солнечная панель (можно бесплатно выдрать из какого-нибудь повер-банка, фонарика и т.п.);
Экран для отображения параметров (сегментный, текстовый или OLED с приличным разрешением стоят примерно одинаково);
Еще резистор нужен (из набора пучок пучков за доллар).
Можно по вкусу добавить аккумулятор или батарейки с DC-DC-преобразователем, если повер-банк или комп использовать не получается по каким-либо причинам.
потребуется
— софт для «таблетки» внутри устройства
— софт для смартфона (для андроида)
даже для группы единомышленников это не на пять минут
А собрать «кенгуру» типа ноутбук+ усб осциллограф+ещё какая-то коробочка я тоже могу. Что, кстати, у же не раз делалось. Но это годится только для лабораторных\домашних условий использования.
если ничего не помешает ))