Этот простой прибор поможет оценить пульсацию освещения и выбрать лампы без пульсации. Собрать его можно буквально за пять минут.
На мой клич о создании «народного пульсметра» (https://ammo1.livejournal.com/1289621.html) откликнулось много людей В комментариях на Дзене Вячеслав Т сообщил, что существует готовый датчик пульсации, который производит московская компания 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%, но по этому «прыганью» можно понять, что лампа совсем плохая.
Во второй строке самодельный прибор показывает освещённость в люксах.
Я снял небольшое видео с экспериментом по сравнению показаний приборов.
https://www.youtube.com/watch?v=RmGDyjKBS-0
Для того, чтобы сделать такой же прибор самостоятельно понадобится датчик «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
GyverOLED
#include
#include
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-экраном.
Николай Хозяинов (директор R-LABS) сделал пульсметр с маленькой солнечной батареей в качестве датчика и OLED-экраном.
В ближайшее время мы доведём «народный пульсметр» до совершенства и я опубликую подробную инструкцию по его сборке, кроме того, возможно получится сделать так, что готовый пульсметр можно будет купить.
© 2021, Алексей Надёжин
Десять лет я каждый день пишу о технике, скидках, интересных местах и событиях. Читайте мой блог на сайте ammo1.ru, в ЖЖ, Дзен, МирТесен, Telegram.
Мои проекты:
Lamptest.ru. Тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Elerus.ru. Собираю информацию об отечественных электронных устройствах для личного использования и делюсь ей.
Вы можете связаться со мной в Телеграм @ammo1 и по почте ammo1@mail.ru.
Этот пост в моём блоге LiveJournal: Простейший измеритель пульсации света на датчике iArduino