Измерение продолжительности пикового уровня освещенности с помощью фоторезистора
Я пытаюсь измерить выдержку на старых камерах. По сути, это состоит из:
- Свет фонарика на одном конце камеры
- поместив фоторезистор на другом конце
- срабатывает затвор, который временно пропускает свет от фонарика (временно увеличивая значения фоторезистора)
- Регистрация продолжительности повышенного скачка уровня освещенности
То, что у меня есть в настоящее время, регистрирует уровни освещенности, но разброс огромен и, как правило, неверен, поскольку они меняются в зависимости от того, насколько близко находится фонарик к затвору, и обычно регистрирует значения между 400 и 900 мс, что слишком долго (должно быть около 50 мс).
Вот код ключа, который у меня есть на данный момент:
if (shutterbot.opened())
{
/* Measure length of time it is opened until closure */
unsigned long previousMillis = millis();
while(true)
{
unsigned long currentMillis = millis();
unsigned long time_elapsed = currentMillis - previousMillis;
if (shutterbot.closed())
{
finished = true;
/* Report back to user */
Serial.println("Shutter speed is: ");
Serial.println(time_elapsed);
break;
}
}
}
Методы открытия и закрытия в классе shutterbot:
/* If light is 10% higher, set it to start recording */
int Shutterbot::opened()
{
if (light_level() > 400)
{
return true;
}
else
{
return false;
}
}
/*
If light drops to below 10% higher, set it to stop
recording
*/
int Shutterbot::closed()
{
if (light_level() < 400)
{
return true;
}
else
{
return false;
}
}
Полный код проекта находится здесь, для тестирования нужны только модуль фоторезистора и arduino uno. Я не уверен, что предоставил достаточно информации, поэтому если есть какие-либо вопросы, пожалуйста, дайте мне знать. Любая помощь будет высоко оценена, и спасибо за чтение.
@sam.cooper645, 👍0
1 ответ
Лучший ответ:
Маловероятно, что фоторезистор можно использовать для измерения времени события с точностью до секунды. Это связано с тем, что электроны в таком устройстве имеют множество проводящих состояний, в которые они переходят при воздействии света и из которых выходят при нахождении в темноте. Электронам требуется время, чтобы войти в эти проводящие зоны и выйти из них. В некоторых случаях это может занять значительную часть секунды. Как описано во 2-м абзаце в разделе Соображения по проектированию на вышеуказанной странице Википедии:
Фоторезисторы также демонстрируют определенную степень задержки между воздействие света и последующее снижение сопротивления, как правило, около 10 миллисекунд. Время задержки при переходе от освещенного к темному среды еще больше, часто до одной секунды. Это свойство делает их непригодными для обнаружения быстро мигающих огней, но иногда используется для сглаживания отклика аудиосигнала сжатие.
- Использовать timer0, не влияя на millis() и micros().
- Как перезапустить счетчик в программе с помощью кнопки в настройке LDR Tripwire
- Arduino Мигает двумя светодиодами без задержки (количество повторений)
- Как рандомизировать задержку в коде шагового двигателя Arduino?
- Запуск двигателя постоянного тока в течение заданного промежутка времени
- Измерение скорости автомобиля между двумя точками: какой датчик использовать и как преодолевать расстояние?
- Как заставить ЖК-экран прокручивать текст , позволяя вводить кнопки?
- Как запустить 4 светодиода последовательно на основе кнопочного входа?