Автор Тема: Управление уличным освещением.  (Прочитано 1790 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр

  • Модератор
  • *****
  • Сообщений: 256
  • Репутация: 1
  • Мощность альтернативной энергоустановки: 1100
Управление уличным освещением.
Пока не написал восстановление освещения, если напряжение на аккумуляторах пришло в норму.
Светильник куплен на Али и немного доработан - из него убран драйвер и светодиодная матрица немного изменена. Было 4 параллельных цепочки светодиодов с общим напряжением около 30В, переделал на 2 параллельно и 2 последовательно. Общее напряжение увеличилось почти до 60В, что позволило снизить потери на проводе в 4 раза или использовать более тонкий провод. Использую провод сечением 0,5 мм2
Драйвер вместе с платой управления стоит внизу. У драйвера 2 входа - включение питания и управления яркостью. Управление яркостью инверсное, при значении ШИМ 1024 яркость минимальна, а при значении 0 - максимальна, из за этого пришлось городить огород в правилах. В виртуальном устройстве Lamp1 яркость задается в % и прямо, а под особенности железа все пресчитывается в правилах.

Будут вопросы - задавайте.

Правила
on System#Boot do // При загрузке
   gpio,16,0
   pwm,0,1024
endon
on Lamp1#Switch do // Когда изменилось значение выключателя
  gpio,16,[Lamp1#Switch] // Установить выход в новое состояние
endon
on Lamp1#Bright do // Когда изменилось значение регулятора яркости
   Let,1,[Lamp1#Bright] // Используем промежуточную переменную, иначе, формула не работает
   Let,1,1024-%v1%*10 // Переводим удобоваримое значение яркости 0 - 100% в понятное драйверу 1024 - 0
   pwm,0,%v1%
endon

On Clock#Time=All,%sunset% do // Когда солнце село - включить свет ярко
  taskvalueset 2,1,1 // Включить светильник
  taskvalueset 2,2,100 // %
endon

on Clock#Time=All,00:00 do // Снизить яркость в полночь до дежурного уровня
  taskvalueset 2,2,10 // %
endon

On Clock#Time=All,%sunrise% do // Когда солнце встало - выключить свет
  taskvalueset 2,1,0
  taskvalueset 2,2,0 // %
endon

on BAT#U do // Когда напряжение батареи изменилось
  if [BAT#U]<27.5 // и стало меньше 27,5 В - снизить яркость
    taskvalueset 2,2,10
  endif
  if [BAT#U]<26 // если стало меньше 26 В - отключить освещение
    taskvalueset 2,1,0
  endif
endon
Чтобы в системных переменных %sunrise% и %sunset% были правильные значения, нужно задать координаты, где трудится устройство. Значения широты и долготы задаются в расширенных настройках, в градусах, с точностью 2 знака после запятой.

Устройства
« Последнее редактирование: 21 Март 2019, 16:44:08 от Александр »