Какой простой способ измерить окружающее освещение?

Я хочу установить светодиодные полосы на свой мотоцикл, например, в качестве стоп-сигнала и указателей поворота. Я использую светодиодные полосы WS2812, которые могут быть очень яркими, особенно при одновременном включении большого количества светодиодов.

Я хочу измерить окружающее освещение, чтобы на ярком солнце я мог зажечь светодиоды, скажем, на 100%. Но ночью, возможно, только на 30% интенсивности. Я хочу обнаружить окружающее освещение, чтобы изменить интенсивность.

Мне не нужно высокое разрешение и мне не нужна высокая скорость. Если окружающий свет измеряется, например, раз в секунду с разрешением 4 бита, этого уже будет достаточно.

Какой датчик освещенности (или фотодиод, или что-то еще) имеет смысл использовать для этого небольшого проекта и как его подключить? Имеет ли смысл использовать более одного датчика освещенности для лучшего определения среднего значения внешней освещенности (на случай, если один датчик находится в тени, а другой на солнце)?

Я нашел эти датчики у китайского поставщика:

https://www.banggood.com/CJMCU-9930-APDS-9930-Digital-Proximity-And-Ambient-Light-Sensor-For-Arduino-p-1103139.html

https://www.banggood.com/GY-49-MAX44009-Ambient-Light-Sensor-Module-For-Arduino-p-1196674.html

Но интерфейс I2C, похоже, излишен для моего простого проекта.

Есть предложения?

, 👍3


2 ответа


Лучший ответ:

4
подойдет LDR и резистор сопротивлением 10 кОм.

#define LDRpin A0
unsigned int LDRvalue = 0;

void setup(){
  Serial.begin(9600);
}

void loop(){
  LDRvalue = analogRead(LDRpin);
  Serial.println(LDRvalue);
  delay(1000);
}
,

Обратите внимание, что замена LDR и резистора может упростить подключение: вам просто нужно будет протянуть один провод от LDR к Arduino, поскольку заземление можно сделать через шасси. И даже если вы протянете два провода, у вас будет дополнительная безопасность: случайное замыкание от провода GDN к шасси ничего не сожжет, тогда как замыкание от +5 В может сжечь Arduino., @Edgar Bonet

Спасибо, выглядит хорошо. Я только что проверил, и, похоже, существует много типов этого датчика 5506 / 5516 / 5526 / 5528 / 5537 / 5539 / 5549. Основное отличие, похоже, в сопротивлении. Минимальное значение составляет 2~6 кОм для GL5506, максимальное значение составляет 45~140 кОм для GL5549. Я думаю, что все они будут работать с правильным фиксированным резистором. Есть какие-нибудь рекомендации?, @Edgar

Различные комбинации сопротивления и LDR будут работать — вопрос лишь в том, какую чувствительность они вам обеспечат при разных уровнях освещенности., @Majenko


2

Вы также можете использовать светодиод. Подключите светодиод и его резистор между двумя контактами порта. Затем, когда вы захотите измерить окружающий свет в своей программе, сделайте следующее:

  1. Убедитесь, что все подтягивания/тяги вниз отключены.
  2. Чтобы разрядить светодиод, начните с его включения на короткое время (достаточно тактового цикла), установив контакты в положение «выход» и установив анод на высокий уровень, а катод на низкий.
  3. Измените полярность, установив анодный вывод на низкое значение, а катодный — на высокое.
  4. Установите катодный вывод на вход.
  5. Используя таймер и прерывание по изменению состояния вывода, измерьте время, необходимое для того, чтобы катодный вывод стал низким.

Поскольку емкость светодиода меняется в зависимости от интенсивности света, время, необходимое светодиоду для разряда через резистор и сопротивление штыря, является показателем интенсивности света.

,

Спасибо, я видел этот пример. Но почему-то я думаю, что пусть светодиоды делают то, для чего они предназначены, а другие части (например, LDR из ответа выше) используют для того, для чего они предназначены..., @Edgar

Вы говорите, что функциональность светодиода меняется в зависимости от интенсивности внешнего света? Что? Как это вообще работает? Можете ли вы предоставить больше подробностей или цитату, потому что это действительно удивительно для меня., @Benubird

@Benubird Оказывается, об этом есть статья в Википедии: https://en.wikipedia.org/wiki/LED_circuit#LED_as_light_sensor, @AndreKR

@Benubird На самом деле *любой* полупроводниковый переход будет работать как (плохого качества) фотодиод. В светодиодах нет ничего особенного, за исключением того, что в несветоизлучающих диодах, которые не *разработаны* как фотодиоды, переход покрыт непрозрачным материалом, чтобы предотвратить возникновение фотоэлектрического эффекта. В некоторых полупроводниковых приборах непрозрачный материал — это просто черная краска, которую можно соскоблить, чтобы получился фотодиод!, @alephzero

@alephzero Ого, это очень круто! Так что OP не нужен отдельный датчик, они могут просто перепрофилировать свои светодиоды. Интересно, построил ли кто-нибудь какой-то готовый авторегулируемый светодиод, @Benubird