Вопрос из песочницы по ШИМ

Tollmuch
Offline
Зарегистрирован: 20.02.2018

Буквально первый шаг в Ардуино. Начитавшись всякого, сваял маленький скетч для посмотреть, как работает ШИМ на светодиодах. Светодиоды - стандартные 5мм колпачки, подключены (изначально были) через резисторы 660 ом (2х330 ом - самое близкое, что было под руками, к найденному где-то уроку, в котором резистор был 680 ом):

 

int PWMPinYellow=10;
int PWMPinRed=11;
int PWMPinGreen=12;

void setup() {
pinMode(PWMPinYellow,OUTPUT);
pinMode(PWMPinRed,OUTPUT);
pinMode(PWMPinGreen,OUTPUT);
Serial.begin(9600);
}

void loop() {
for (int i=0; i<=255; i++)
{
  Serial.println(i);
  analogWrite(PWMPinYellow,i);
  analogWrite(PWMPinRed,i);
  analogWrite(PWMPinGreen,i);
  delay(50); 
}
for (int i=255; i>=0; i--)
{
  Serial.println(i);
  analogWrite(PWMPinYellow,i);
  analogWrite(PWMPinRed,i);
  analogWrite(PWMPinGreen,i);
  delay(50);
}
}

Скетч работает, но: на желтом и зеленом яркость меняется плавно в диапазоне от i=0 до примерно i=130, после 130 и до конца цикла никаких видимых изменений нету. Красный диод на тех же примерно 130 просто включается, а на обратном цикле - выключается. Пробовал подбирать резисторы, дошел на красном до 4,7к - ничего не меняется. Расскажите, пожалуйста, в чем тут дело. Заранее спасибо.

ven-til
Offline
Зарегистрирован: 13.02.2018

вероятно 12 пин без шима и красный именно на нем

 

 

Tollmuch
Offline
Зарегистрирован: 20.02.2018

ven-til пишет:

вероятно 12 пин без шима и красный именно на нем

М-да, матчасть еще учить и учить :) Спасибо большое, все именно так. 

А плавность (или глубину регулировки, что ли, - не знаю, как правильно сказать) как-то можно улучшить, или с этими диодами не выйдет?

ven-til
Offline
Зарегистрирован: 13.02.2018

типа чтобы регулировалось до 255 включительно?

Tollmuch
Offline
Зарегистрирован: 20.02.2018

Да.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Tollmuch пишет:
яркость меняется плавно в диапазоне от i=0 до примерно i=130, после 130 и до конца цикла никаких видимых изменений нету.

Так и должно быть. По двум причинам.

1. Яркость светодиода с ростом тока растёт не совсем линейно. Посмотрите на график из даташита светодиода 5050 RGB. Здесь логарифмическая шкала, но если снять числовые значени, что всё ранов видно, сначала яркость растёт быстрее, чем в районе максимального (20мА) тока. 

Но эта нелинейность невелика и большой проблемы не составляет. Гораздо хуже вторая причина.

2. Наше зрение тоже отнюдь не линейно. Есть такой закон Вебера – Фехнера, согласно которому интенсивность ощущения пропорциональна логарифму интенсивности раздражителя. Т.е. при линейно увеличении интенсивности разражителя, наш глаз сначала будет это чётко фиксировать, а дальше вё меньше и меньше (если интересно, могу найти ссылку на неплохую статью про закон  Вебера – Фехнера, там кстати, есть скетчи для логарифмического ШИМ, который поволяет делать линейную регулировку ярокости. Искать?).

ven-til
Offline
Зарегистрирован: 13.02.2018

ЕвгенийП пишет:

 Искать?

Я бы почитал.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
Tollmuch
Offline
Зарегистрирован: 20.02.2018

Спасибо большое за подробные объяснения. 

ЕвгенийП пишет:

[(если интересно, могу найти ссылку на неплохую статью про закон  Вебера – Фехнера, там кстати, есть скетчи для логарифмического ШИМ, который поволяет делать линейную регулировку ярокости. Искать?).

Фих знает, насколько я ее осилю, но все равно интересно. :) Спасибо! 

ven-til
Offline
Зарегистрирован: 13.02.2018

 

Спасибо.

Tollmuch
Offline
Зарегистрирован: 20.02.2018

ЕвгенийП, еще раз спасибо за статью. Почитал, с логарифмами, конечно, не справился - из школьной математики смутно помню, что обратная логарифму функция - это вроде бы экспонента, но она, к примеру, в Экселе и в ардуинском языке ведет себя как-то уж совсем по-разному. А вот степенная функция выдала результат, какой хотелось. Только (по крайней мере на вот этих СД, с которыми я пока скетч гоняю) все значения ШИМ меньше единицы можно отбрасывать - не горят, загораются как только значение ШИМ переваливает за 1. И пока ШИМ примерно меньше 10, яркость нарастает и гаснет дискретно, с заметными такими рывками.

vvadim
Offline
Зарегистрирован: 23.05.2012

спасибки, тоже почитал..