Оглавление:
- Шаг 1. Основные расчеты | Люкс в EV
- Шаг 2: Представление ценностей на дисплее | Библиотека Adafruit GFX
- Шаг 3: Считывание и компенсация значений люкс | VEML7700
- Шаг 4: Arduino / C-код
- Шаг 5: Собираем все вместе
Видео: Фотографический люксметр своими руками: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
В этом руководстве представлены некоторые идеи по созданию простого, небольшого и дешевого измерителя падающего света.
Поскольку Instructables не позволяет мне вставлять собственные видео, попробуйте эту ссылку:
www.youtube.com/embed/avQD10fd52s
Для меня целью был люксметр, который сопровождал бы мою среднеформатную пленочную камеру Bronica ETRSi.
Вещи, которые я хотел, чтобы он показал:
- одиночный ASA (100), потому что я использую почти только пленку ASA 100
- как можно меньше
- дайте мне только комбинации, которые может воспроизвести моя Bronica, что означает f2.8-f22 и от 1 секунды до 1/500 секунды
- никаких лишних функций, кроме простых значений времени и значений диафрагмы
Вещи, которые я использовал:
- Цифровой люкс-метр Adafruit (Vishay) VEML 7700 (около 5 $)
- Микроконтроллер Adafruit Trinket M0 (около 9 $)
- OLED-дисплей 128x32 (около 10 долларов)
- кнопка для временного включения (несколько центов)
- крошечный кусок стрип-картона, потому что я стараюсь не использовать кабели, но вы, безусловно, можете использовать кабели
Шаг 1. Основные расчеты | Люкс в EV
Купленный мною датчик использует две функции, которые позволили мне выбрать его:
- выводит 16-битные значения люкс вместо «безразмерных» значений освещенности
- выводит значения через I2C
Фотографический экспонометр использует значения экспозиции (EV), купленный мной датчик использует значения люкс, которые представляют собой совершенно другую шкалу. Итак, первый шаг - получить EV из значений люкс, предоставленных датчиком.
Беглый взгляд на Википедию, и вы можете найти формулу для измерения инцидентов и преобразования EV в Lux:
E = 2,5 * 2 ^ EV
где E измеряется в люксах.
Поскольку мы уже получили значение люкс от датчика и хотим получить значение EV, мы должны переформулировать формулу, которая приведет нас к следующему:
EV = log2 (E / 2,5)
Итак, это первое вычисление, которое необходимо сделать, чтобы получить фотографические значения из экспонометра.
В прилагаемой справочной таблице вы можете увидеть все значения, которые будут использоваться в этом люксметре, вместе с соответствующими значениями люкс и EV.
Шаг 2: Представление ценностей на дисплее | Библиотека Adafruit GFX
Сначала я попытался представить значения целыми шагами, потому что это то, на что я могу настроить свою Bronica, но это привело меня к проблеме:
Предположим, что датчик Lux выдает значение ровно 20480, что будет означать, что это ровно EV 13, поэтому я мог бы, например, установить свою камеру на f4 и 1/500 секунды, и было бы хорошо
Затем предположим, что датчик Lux будет выдавать 20479 люкс, 1 люкс под EV13, что даст значение EV 12, но это всего в люксе от EV13
Поэтому я бы установил свою камеру на f2,8 и 1/500 секунды, что привело бы к передержке на 1 ступень, даже если я даже не знал, насколько я близок к EV13.
Вывод: нам нужно какое-то аналоговое отображение значений, чтобы хотя бы увидеть, насколько близко или далеко измеритель находится от следующего или предыдущего шага EV.
После попытки использовать встроенные буквы и шрифт библиотеки GFX я решил использовать две настраиваемые графики, которые будут перемещаться по экрану OLED.
Один для значений диафрагмы, один для времени.
Библиотека GFX использует 8-битные значения для представления графики, поэтому я сделал лист в формате xls (см. Изображение выше).
- каждое значение имеет одинаковое количество пикселей на значение
- время и апертуры имеют одинаковое количество значений в строке
- Я добавил обязательную букву «B» в начале каждого байта и «,» в конце.
- Затем я экспортировал его в обычный текст и вуаля: я прикрепил третий рисунок.
Значения времени начинаются с 1/8 секунды, а значения диафрагмы начинаются с f2.8
Используя справочную таблицу на предыдущем шаге, мы знаем, что это 160 люкс или EV6.
Тогда самые темные значения будут f22 и 1/500 секунды
Снова в справочной таблице мы видим, что это означает 655360 люкс или EV18.
Все идет нормально.
Таким образом, на EV6 график диафрагмы должен находиться в крайнем левом углу, время - в крайнем правом углу, и наоборот, на EV18.
Шаг 3: Считывание и компенсация значений люкс | VEML7700
Просматривая таблицу Vishay VEML7700, которую Adafruit использует для своей платы, я обнаружил довольно тревожное замечание:
Датчик работает линейно только в диапазоне от 0 до 1000 люкс (!)
см. снимок экрана с оранжевой (линейной) линией и синей (фактический выходной сигнал датчика) линией
Солнечный свет (EV15) составляет около 80 000 люкс, что означает, что без компенсации нелинейной части датчика он был бы совершенно бесполезен в качестве экспонометра.
Vishay это знает, поэтому они предоставили своим клиентам еще один PDF-файл под названием «Проектирование VEML7700 в приложении».
В этом PDF-файле вы можете найти формулу для компенсации нелинейности датчиков:
LUX_CORR = 6.0135e-13 * pow (LUX, 4) -9.3924e-9 * pow (LUX, 3) + 8.1488e-5 * pow (LUX, 2) + 1,0023 * LUX
Где LUX_CORR - это скорректированное значение люкс, а LUX - это значение, которое выводит датчик.
Это те переменные, которые я использовал, использованные разные в их листе.
Что меня немного беспокоит, так это то, что Adafruit не упоминает об этом ни одним словом на своей странице, в своей документации, в своей библиотеке или где-либо еще.
Итак, первые несколько дней я задавался вопросом, почему мой люксметр выдает максимум 20000 люкс даже при прямом солнечном свете.
Если вы посмотрите на график с красной и синей линиями, вы поймете, почему: потому что он не может идти выше без формулы компенсации.
Но есть еще одна подсказка, скрытая в документации датчика:
Эта формула компенсации работает, только если вы установите датчик на 25 мс и коэффициент усиления 1/8.
Это довольно легко сделать с библиотекой Adafruits, добавив:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
в вашей настройке void ()
Таким образом, после установки 1/8 и 25 мс и добавления формулы компенсации вы можете измерять до 120000 люкс, что достаточно, чтобы покрыть солнечный свет на уровне 80–100 люкс
Шаг 4: Arduino / C-код
Поскольку это зависит от используемого вами дисплея и предпочитаемого контроллера, я не буду вдаваться в подробности, просто добавлю несколько мыслей и советов, особенно при использовании библиотек Adafruit и OLED 128x32 пикселей:
в настройке void:
Я установил библиотечную часть VEML на:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (правда);
в пустом цикле:
обязательно добавьте компенсацию:
int LUX_CORR = 6.0135e-13 * pow (LUX, 4) -9.3924e-9 * pow (LUX, 3) + 8.1488e-5 * pow (LUX, 2) + 1.0023 * LUX;
чтобы получить электромобили от Lux, используйте эту строку:
с плавающей точкой EV = log2 ((LUX_CORR / 2.5));
перемещение растровых изображений
чтобы убедиться, что растровые изображения перемещаются только тогда, когда значения находятся в диапазоне от 160 до 655360 люкс, как указано на предыдущем шаге, заключите его в предложение if следующим образом:
если (LUX_CORR> 159 && LUX_CORR <655361)
Затем нам нужно сопоставить значения EV с координатами, так как диапазон EV является двузначным, и мы хотим переместить их за пределы дисплея на 128 пикселей по всему дисплею, нам нужны большие значения.
Поскольку у нас уже есть число с плавающей запятой, мы просто умножаем его на 100 и используем это целое число для сопоставления координат.
int EV_DSPL = EV * 100;
а также:
ВРЕМЯ = карта (EV_DSPL, 600, 1900, -260, 39); АПЕРТУРА = карта (EV_DSPL, 600, 1900, 39, -260);
Как вы можете видеть в моем случае, минимальная позиция растрового изображения будет -260 пикселей, а максимальная - 39 пикселей.
Здесь также можно увидеть, что я переключил координаты так, что два растровых изображения перемещаются в противоположном направлении.
Затем нам нужно переместить растровые изображения в соответствии с координатами следующим образом:
display.drawBitmap ((ВРЕМЯ), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
И это все, что нужно сделать
В качестве бонуса я показываю прямые значения EV и люкс, когда датчик выдает значения ниже 160 люкс, просто потому, что я хотел увидеть материал при его тестировании.
Шаг 5: Собираем все вместе
Поскольку и дисплей, и датчик используют I2C для связи, создание фактического оборудования настолько простое, насколько это возможно.
Просто подключите к Arduino линии данных, заземления часов и 3 В, и все готово.
Я добавил графическое изображение того, как я сделал это с помощью стрипборда, но, как было сказано ранее, вы можете использовать кабели или даже построить для него крыло, все зависит от того, какой контроллер и дисплей вы используете.
На моем рисунке белые точки должны быть подключены к дисплею и датчику, а желтые точки подключены к брелку.
Единственным исключением будет вывод данных линии I2C, который подключается к дисплею, этот вывод также подключается к выводу данных Trinkets.
Я решил не использовать переключатель включения / выключения, а вместо этого использовал кнопку и две кнопочные ячейки 3 В для временного включения, пока я нажимаю кнопку. Он включается менее чем за 1/10 секунды, так что мне достаточно быстро, чтобы сэкономить кнопку и сделать ее меньше.
Рекомендуемые:
Мини-цифровой люксметр: 4 шага (с изображениями)
Мини-цифровой люксметр: что такое люксметр? Цифровой люксметр - это устройство для измерения интенсивности источника света. В фотографии будет использоваться люксметр для оценки яркости вспышки и окружающего освещения. принцип работы люксметра:
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): 6 шагов (с изображениями)
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): Индуктивная зарядка (также известная как беспроводная зарядка или беспроводная зарядка) - это тип беспроводной передачи энергии. Он использует электромагнитную индукцию для обеспечения электропитания портативных устройств. Самым распространенным применением является беспроводная зарядка Qi st
Создайте мини-гидропонные системы своими руками и сад гидропонных трав своими руками с помощью предупреждений Wi-Fi: 18 шагов
Постройте мини-гидропонные системы своими руками и сад гидропонных трав своими руками с помощью предупреждений Wi-Fi: в этом уроке мы покажем вам, как построить систему #DIY #hydroponics. Эта гидропонная система, сделанная своими руками, будет поливать в соответствии с индивидуальным гидропонным циклом полива с 2 минутами включения и 4 минутами перерыва. Он также будет контролировать уровень воды в резервуаре. Эта система
Портативный люксметр: 7 шагов (с фотографиями)
Портативный люксметр: Этот проект посвящен созданию портативного люксметра. Его можно использовать в школах, где дети могут измерять различные источники света. Функции: 1. измерить интенсивность света в люксах 2. рассчитать солнечное излучение от люкс до ватт / м2 (коэффициент 112) 3
Люксметр с Arduino: 5 шагов
Люксметр с Arduino: люксметр (также известный как люксметр) - люксметр - это устройство, используемое для измерения количества света. Люкс - люкс (символ: лк) - производная единица измерения освещенности и световой эмиссии в системе СИ, измерение светового потока на единицу площади. В хромом мужском тер