Товары из Китая

Простейший измеритель пульсации света на датчике iArduino


Простейший измеритель пульсации света на датчике iArduino

Этот простой прибор поможет оценить пульсацию освещения и выбрать лампы без пульсации.

Собрать его можно буквально за пять минут.

На мой клич в блоге о создании «народного пульсметра» откликнулось много людей В комментариях на Дзене Вячеслав Т сообщил, что существует готовый датчик пульсации, который производит московская компания iArduino. Он называется "Датчик освещенности, люксметр, FLASH-I2C (Trema-модуль)" и стоит 320 рублей.

Этот датчик построен на сенсоре APDS-9930, который на самом деле является датчиком приближения, но заодно может измерять освещённость. Датчик содержит свой процессор и отдаёт по шине I2C освещённость в люксах, пульсацию в процентах и расстояние до объекта. На сайте iArduino написано, что пульсация вычисляется по 20 последним измерениям освещённости. С какой частотой делаются измерения и по какой формуле считается пульсация неизвестно. Я специально съездил в iArduino, чтобы узнать технические подробности, но там сказали, что датчик разрабатывался давно и они ничего не помнят.

Купил датчик, собрал прибор и изучил, как он работает.

Простейший измеритель пульсации света на датчике iArduino

Датчик не учитывает фоновую засветку, поэтому измерения желательно проводить в темноте, чтобы единственным источником света была исследуемая лампа.

Я взял светодиодные лампы разного качества с разным уровнем пульсации и сравнил показания самодельного пульсметра с показаниями спектрометра Uprtek MK350D и прибора Radex Lupin.

Простейший измеритель пульсации света на датчике iArduino

«Uprtek MK350D» и «Radex Люпин» рассчитывают коэффициент пульсации по разным формулам, поэтому их показания различаются. Показания самодельного прибора на датчике iArduino близки к показаниям MK350D, считающего пульсацию по упрощённой формуле. Отсутствие пульсации (0%) и небольшие уровни пульсации (1-50%) самодельный прибор показывает уверенно и достаточно точно. При пульсации 100% показания самодельного прибора начинают прыгать от 0 до 100%, но по этому «прыганью» можно понять, что лампа совсем плохая.

Простейший измеритель пульсации света на датчике iArduino

Во второй строке самодельный прибор показывает освещённость в люксах.

Я снял небольшое видео с экспериментом по сравнению показаний приборов.

Для того, чтобы сделать такой же прибор самостоятельно понадобится датчик «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(“ %rn»); //

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-экраном.

Простейший измеритель пульсации света на датчике iArduino

Николай Хозяинов сделал пульсметр с маленькой солнечной батареей в качестве датчика и OLED-экраном.

Простейший измеритель пульсации света на датчике iArduino

В ближайшее время мы доведём «народный пульсметр» до совершенства и я опубликую подробную инструкцию по его сборке.

© 2021, Алексей Надёжин


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *