Большие часы на адресных светодиодах WS2812B

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

Как-то раз на просторах зарубежного интернета я нашел вот такой проект часов на базе светодиодной ленты WS2812B: Big, Auto Dim, Room Clock, и мне захотелось его повторить. Часы устроены как семи сегментный циферблат и работают на RTC модуле DS3231 . Часы умеют показывать температуру, имеют кнопки для настройки и перевода на зимнее время и обратно, позже я добавил датчик влажности DHT11. Температура уже вместе с влажностью считывалась с этого датчика и выводилась раз в минуту. Хоть и в модуле часов есть температурный датчик, но похоже он показывал температуру не корректно из-за самонагрева (ИМХО).




Untitled Sketch_МП.png
И главное нанести много горячих соплей

IMG_20180907_120755.jpg


Когда все было собрано, повозившись с библиотеками, все заработало. И тут возникло одно большое НО: положения яркости в только в двух позициях меня не устраивало. Тем более на границе значений происходило мерцание. Установка яркости на статичном значении меня тоже не очень устраивала ибо днем при установленном тусклом свете ничего не было видно, а ночью даже со значениями близким к минимуму можно было осветить всю Москву. Поинтересовавшись как в других проектах с этим справляется Alex было решено заменить такой код настройки яркости.

C:
void BrightnessCheck(){
  const byte sensorPin = BRI_PIN; // light sensor pin
  const byte brightnessLow = 1; // Low brightness value
  const byte brightnessHigh = 50; // High brightness value
  int sensorValue = analogRead(sensorPin); // Read sensor
  Serial.print("Sensor is: ");Serial.println(sensorValue);
  sensorValue = map(sensorValue, 0, 255, 1, 100);
  LEDS.setBrightness(sensorValue);
  };
вот такими строчками:
C:
void BrightnessCheck() {

  if (auto_bright) {                         // если включена адаптивная яркость
    if (millis() - bright_timer > 100) {     // каждые 100 мс
      bright_timer = millis();               // сброить таймер
      new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон
      new_bright = constrain(new_bright, min_bright, max_bright);
      new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
      LEDS.setBrightness(new_bright_f);      // установить новую яркость
    }
  }
};

Тут стоит упомянуть что программистом я не являюсь и большинство проблем я пытаюсь решить методом тыка и перебора.

И тут все заработало, моей радости не было придела, пока не наступила ночь. Появилась проблема с отключением ленты при полной темноте. Иногда это было только на минуту, а иногда на целую ночь. Еще есть проблема со слабим мерцанием светодиодов если освещения в комнате было мало (например когда работал телик), но это было редко и длилось это одну минуту.

Что касается кода вот сылка на GitHub. Кое-что я перевел для лучшего понимания.

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

Комментарии

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
тут упор на питание - провод и розетку так что часы я тоже не сразу нашёл
у меня сложнее - маршрут кабеля идет со 2 этажа на первый через бетонный потолок и стены
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@maksland,
Напряжению которое идет в кабеле параллельно через что этот кабель проходит(бетон, дерево и т.д.), это я к тому, что на расстояние 10 метров провод пойдет даже сечением 0,5 мм2 за глаза. У Вас нагрузка будет в пике 2,5А (при условии что все диоды будут светить белым)
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
3,046
909
на расстояние 10 метров провод пойдет даже сечением 0,5 мм2 за глаза. У Вас нагрузка будет в пике 2,5А (при условии что все диоды будут светить белым)
Вы какое напряжение в проводе имеете в виду?
Сечение 0.5мм2 для 2.5А - это подходит для 220в, где падение на пару вольт не имеет значения
Но если тащить по 10м кабелю 12в или того хуже, 5в - за 10м от этих вольт ничего не останется.
Возьмите да посчитайте
Сопротивление медного провода сечением 0.5мм2 - 0.035 Ом / метр
Если кабель длиной 10м - то это 10м туда и 10 обратно.
Сопротивление, значит, будет 0.035 Ом * 20м = 0.7 Ом
При токе 2.5А по закону Ома V = I * R падение напряжения в проводе составит
V = 2.5А * 0.7 Ом = 1.75в

то есть от 12в на вход часов придет всего чуть больше 10в, а от 5в - так вообще 3.25. Хватит этого ленте? Что-то сомневаюсь

@maksland выбрал кабель 1.5мм2 - и это более правильный выбор, не сбивайте его с толку.
Не переносите правила выбора сечения проводки 220в на низкие напряжения - эти правила тут не работают
 
Изменено:
  • Лойс +1
Реакции: maksland

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@bort707,
...то есть от 12в на вход часов придет всего чуть больше 10в, а от 5в ..... Ему 12 вольт нужно до преобразователя(который стоит на часах) , даже если на преобразователь придет 7 - 10 вольт то на выходе с него всё равно будет 5 вольт(так уж они устроены).
А вот это я не понял "Если кабель длиной 10м - то это 10м туда и 10 обратно " куда обратно?
Смысл ставить преобразователь в 10 м от часов.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
@bort707, А еще можно выбрать "многожильный" кабель с "волосатыми" проводами, к примеру 4 Х1,5мм2, /кабель/ и по две жилы запараллелить, таким образом внешний диаметр кабеля увеличится немножко, процентов на 30, а поперечное сечение почти вдвое.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@bort707,
Я ситуацию понимаю так:
У него есть БП на 12 вольт от которого нужно 10 метров(допустим ближе розетки нет) провести до часов на которых установлен преобразователь и ардуина?

@bort707, А еще можно выбрать "многожильный" кабель с "волосатыми" проводами, к примеру 4 Х1,5мм2, /кабель/ и по две жилы запараллелить, таким образом внешний диаметр кабеля увеличится немножко, процентов на 30, а поперечное сечение почти вдвое.
А можно конечно и сварочный кабель пустить

У меня часы запитаны вот таким кабелем длинной 5 метров и работают уже больше года (зарядка от старой сотки)
 

Вложения

  • 21.8 KB Просмотры: 3

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
@kym13, Тут все просто, низковольтную часть практически никогда никто не удлинняет, нужно изыскать возможности подвести к часам 220 вольт, пусть это хоть 30 метров, параметрические стабилизаторы источников питания сделают свою работу, и на выходе будут требуемые 12 и 5 вольт не зависимо от расстояния, тянуть к часам лучше 220 вольт, любым доступным проводом, хоть даже обычным ШВВП 2 Х 0,75, ведь у источника питания есть диапазон входных напряжений при которых обеспечивается заданное выходное напряжение, как правило в импульсниках Uвх = 180...250 вольт и этого достаточно для нормальной работы БП.
 
  • Лойс +1
Реакции: kym13

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@kym13, Тут все просто, низковольтную часть практически никогда никто не удлинняет, нужно изыскать возможности подвести к часам 220 вольт, пусть это хоть 30 метров, параметрические стабилизаторы источников питания сделают свою работу, и на выходе будут требуемые 12 и 5 вольт не зависимо от расстояния, тянуть к часам лучше 220 вольт, любым доступным проводом, хоть даже обычным ШВВП 2 Х 0,75, ведь у источника питания есть диапазон входных напряжений при которых обеспечивается заданное выходное напряжение, как правило в импульсниках Uвх = 180...250 вольт и этого достаточно для нормальной работы БП.
Вот это я хотел сказать, только вместо 220 12 вольт
 
  • Лойс +1
Реакции: начинающий

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
А разместить БП в корпусе часов, вывести на боковую стенку разъем "сеть" AS216, а кабель с таким разъемом в розетку, ведь сетевой шнурок можно любой длинны.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
А разместить БП в корпусе часов, вывести на боковую стенку разъем "сеть" AS216, а кабель с таким разъемом в розетку, ведь сетевой шнурок можно любой длинны.
@maksland почему-то не хочет вести 220в, возможно у него есть причины (но не говорит)
а так да, конечно 220в было бы лучшим решением с точки зрения питания
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Для 220в это верно, а для 12в уже не очень.
Потери в 15% - это уже не айс. И провод будет греться заметно.
считайте сначала, прежде чем советовать
У меня же работает и ничего не греется (86 LED). У него нагрузка 48 LED (2.8 ампера если постоянно гореть белым, а это не реально) это практически ничего, в его случае средний ток будет районе 0,7 - 1 ампера. Я проверял LED матрицу 8*32 ws2812 при средней яркости белого потребляет 3,03 ампера, а это 256 LED. У него диодов в 5 раз меньше.
P.S. Никто и не спорит что будут потери.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
@kym13, я считал по озвученным вами данным - провод 2х0.5, длина 10м, ток 2.5А. И расчет показал, что это был неверный совет. К расчетам претензии есть?
А что до позиции "авось прокатит" :) - к себе можете это применять сколько угодно. но советовать такое другим не стоит.

Хотя если вы питаете часы с 86 ЛЕДами от телефонной зарядки по тоенькому кабелю - я бы на вашем месте посмотрел на расчеты и задумался.
 

poty

★★★★★★✩
19 Фев 2020
3,223
937
Справедливости ради нужно сказать, что 2,8A потребляются по шине 5В, насколько я понял. В 5В они превращаются с помощью DC/DC- преобразователя, скорее всего он имеет достаточно высокий КПД (думаю, для расчетов можно взять 0,9). На 12В шине, таким образом, будет (2,8*5/0,9)/12=1,3А. DC/DC также нивелирует потери на питающем проводе, так что потенциально никаких проблем не должно быть.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
народ,
! :)
вчера проверял - на всех цветах при максимальной яркости при питании 12в потребляет максимум 0.3а (0.2-0.3 а при минимальной яркости меньше 100ма)
лучше подумаем о методах защиты на случай непредвиденных ситуаций в отсутствие людей
использовать буду БП или 12*3a или 12*2а и что делать если вдруг зависнет программа в контроллере и даст белый (или говорят что заливает белым если отваливается провод данных, хотя не проверял)на максимальной яркости или DCDC прикажет долго жить
тут вариант плавкий предохранитель на ампера 2 у БП хватит ? Хотя ночью с работающим фото датчиком потребление еще меньше
кстати в 1.9 версии надо будет порог поднять немного а то в полной темноте еле видно сегменты
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@kym13, я считал по озвученным вами данным - провод 2х0.5, длина 10м, ток 2.5А. И расчет показал, что это был неверный совет. К расчетам претензии есть?
А что до позиции "авось прокатит" :) - к себе можете это применять сколько угодно. но советовать такое другим не стоит.

Хотя если вы питаете часы с 86 ЛЕДами от телефонной зарядки по тоенькому кабелю - я бы на вашем месте посмотрел на расчеты и задумался.
Одно дело теория и совсем другое практика
 
  • Лойс +1
Реакции: Вячеслав_45

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
PS дальше развивать проект не буду...
спасибо за скетч. жаль конечно что работу заканчиваете над проектом, хотя он сейчас близок как никогда к совершенству. по крайней мере для меня: ни добавить-ни убавить: все есть что надо.
 
Изменено:
  • Лойс +1
Реакции: maksland

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@Вячеслав_45, убрали незначащий ноль в часах... :)
зато на любой вкус ( и чтоб не клянчили "добавь/убери" :) ). все в настройках установлено. я уже прошился-все прекрасно работает. правда,о ночном режиме и нуле смогу сказать только завтра :)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Ну почему же, кто мешает закрыть фоторезистор пальцем, и перевести время на 23:59 и посмотреть что получицца?
а зачем? я не спешу :) .у меня с часами интересный эффект вырисовался: индикация моргает в такт звука в комнате. сначала думал-баг. потом дошло: все нормально. просто часы висят под экраном светомузыки 😂 😂 😂