Как яркость света остается постоянной, когда мы увеличиваем частоту стробоскопа

Ну, я пытаюсь сделать стробоскоп. Я нашел этот код в blow: и попробовал. Он работает нормально. Но если я увеличу обороты в минуту и уменьшу время "стробирования", яркость светодиодов погаснет. Даже если я попробую код Грейтскотта. Та же проблема сохраняется и при высоких оборотах. Я использую power LED.

С другой стороны, есть стробоскоп Fluke 820, он говорит:

Особенности высокоинтенсивный 7-светодиодный массив—4800 люкс при 6000 об/мин/30 см

Как они достигают такой постоянной яркости при высокой частоте?

    // Серый текст - это просто полезные комментарии, вам не нужно их вводить. :)

/******* -----=====!! EASY STUFF TO MESS WITH !!=====------ ******/

  // Какой аналоговый вывод мы должны использовать для считывания значения с потенциометра?
  int analogPin = 2; // Да, вы не ослышались: самый крутой из аналоговых контактов...

  // К какому контакту подключен светодиод?
  int ledPin = 13; // Содержит встроенный резистор!

  // Сколько времени должен гореть свет между задержками, в микросекундах (миллионных долях секунды)?
    /* Big number = more blur, more perceived brightness
     * Small number = less blur, less perceived brightness  */
  long onTime = 250;

  // Какова должна быть минимальная задержка в миллисекундах (тысячных долях секунды)?
  // Это устанавливает нижний диапазон задержки строба, так как задержка 0 на самом деле не мигает = P
  // Строб начинается с этого как "самый быстрый" режим и идет медленнее, добавляя к задержке
  int minDelay = 1; // 1 - это самый низкий уровень, который мы можем сделать без лучшей функции задержки   

  // Какова должна быть максимальная задержка в миллисекундах?
  // Это самое длинное время, в течение которого будет отображено самое большое значение потенциометра, и самое длинное
  // время между стробоскопическими вспышками.
  int maxDelay = 100;


/******* -----=====^^ EASY STUFF TO MESS WITH ^^=====------ ******/

// Инициализируйте число, чтобы удерживать нашу задержку строба. Не используется до тех пор, пока мы не доберемся до основного цикла
long strobeDelay = 0;

void setup() {
 pinMode(ledPin, OUTPUT); // Настройка ledPin в качестве выхода.
}

void loop() {
  // Чтобы упростить математику, мы используем map(value, fromMin, fromMax, toMin, toMax) для преобразования
  // диапазон от 0 до 1023 мы получаем из analogRead в наш диапазон задержки строба от 1 до 100:D
  strobeDelay = map(analogRead(analogPin), 0, 1023, minDelay, maxDelay);

  digitalWrite(ledPin, HIGH); // Переключите ledPin на HIGH, включите его!
  delayMicroseconds(onTime); // Задержка при включении, для данного OnTime.
  digitalWrite(ledPin, LOW); // Переключите ledPin на LOW, выключите, если выключено!
  delay(strobeDelay); // Задержка при выключенном режиме для данного strobeDelay.
}

Для тех, кому интересно, есть видео, но другого бренда тот же результат, яркость постоянная, даже если обороты меняются. Я попробовал 2 разных светодиода питания. на одном из них есть это, другой светодиод я нашел в сломанном проекторе, я использовал их 2 рабочие полосы. Без сомнения, эта светодиодная лента очень яркая на низкой частоте. Оба они приводят к одному и тому же результату:

, 👍1

Обсуждение

Как вы управляете светодиодами?, @Majenko

Я думаю, что ответ содержится в комментариях к опубликованному вами коду: "Большое число = большее размытие, большая воспринимаемая яркость * Малое число = меньшее размытие, меньшая воспринимаемая яркость" Короткая продолжительность приводит к более низкой ** воспринимаемой ** яркости. Фактическая яркость та же, но наши глаза видят ее как меньшую, когда продолжительность короче., @Duncan C

Я не думаю, что термин RPM здесь применим. Что вы имеете в виду под этим? Какой параметр вы изменяете и каков именно эффект, который вы видите при каких значениях? analogRead () в настоящее время изменяет только задержку между импульсами. Время включения остается постоянным. Каждый импульс будет таким же ярким, как и другой. Хотя вы можете заметить, что общая яркость увеличивается с меньшими задержками, поскольку ваши глаза начнут связывать импульсы вместе - чем больше импульсов в секунду, тем выше общая яркость., @chrisl

@Majenko спецификация npn-канала mosfet (IRFZ44N) находится здесь https://datasheet.octopart.com/IRFZ44N-Inchange-Semiconductor-datasheet-15981338.pdf, @mehmet

@chrisl На самом деле ваши слова выглядят абсолютно правильными, но в реальности не работают.Я еще никогда не слышал об этом, но есть ли время, необходимое для того, чтобы светодиоды вспыхнули? Я поменяю светодиоды и попробую еще раз., @mehmet

@chrisl тот же результат, ничего не изменилось. Я думаю, мне нужны очень блестящие светодиоды, @mehmet

Светодиоды можно модулировать очень быстро, намного быстрее, чем ваш 1 кГц. Вероятно, проблема не в светодиодном модуле., @Sim Son


1 ответ


3

Чтобы сохранить ту же яркость, вы должны сохранить тот же рабочий цикл (процент времени включения по сравнению со временем выключения). Таким образом, чтобы изменить скорость без изменения яркости, вы должны увеличить delayMicroseconds(OnTime) на тот же процент, что и delay (strobeDelay). Но обратите внимание, что по мере того, как вы идете медленнее, время включения будет слишком долгим, чтобы заморозить движение, которое вы пытаетесь изучить. (Если это просто для партийного эффекта, это может не иметь значения.)

,

Попробуйте delayMicroseconds(strobeDelay*250); (вместо delayMicroseconds(OnTime);). Это должно дать вам ту же воспринимаемую яркость, независимо от того, какая скорость / "RPM" выбрана., @Gerben

хорошая идея, я попробую завтра и напишу здесь результат, @mehmet

@Gerben тот же результат, ничего не изменилось. Я думаю, мне нужны очень блестящие светодиоды, @mehmet