74hc595, mosfet n и плавное включение светодиодных лент

SiZE
Offline
Зарегистрирован: 26.11.2014

Добрый день. Выходы 74hc595 управляют мосфетами, которые в свою очередь питанием лент. Подскажите можно ли отдельно управлять плавным включением каждой ленты? Читал, что можно реализовать это программно, но примеров не нашел.

Тарас Петрович
Offline
Зарегистрирован: 21.11.2015

Успеет ли регистр шим выводить? А так-то можно. Надо как-то сколько времени уходит на отправку в регистр байта. И сколько раз это можно сделать в секунду.

А вообще, посмотрите в сторону микросхем MBI5026 и подобных (с др. цифрами) . В сущности, это тот же сдвиговый регистр, только какая-то из серии умеет регулировать яркость, получая ШИМ с контроллера на вход защёлки (LE).

Logik
Offline
Зарегистрирован: 05.08.2014

SiZE пишет:

Добрый день. Выходы 74hc595 управляют мосфетами, которые в свою очередь питанием лент. Подскажите можно ли отдельно управлять плавным включением каждой ленты? Читал, что можно реализовать это программно, но примеров не нашел.

Можна. Но сложно. Нужно:

1. переменная для хранения текущей фазы периода вывода ШИМ

2. массив для хранения ШИМ по каждому каналу. Считаем что при п.1 равной 0 все каналы устанавливаем в 1 а по достижению п.1 каждого значения из этого массива соответствующий канал сбрасывает в 0.

3. Функция которая по пп.1,2 возвращает время до ближайшего момента сброса канала в 0. Если уже все сброшены то время до завершения цикла ШИМ.

4. Прерывание аппаратного таймера, которое настраиваем на формирование интервала п.3

5. Обработчик прерывания, который на основе п.1,2 определяет данные для сдвигового регистра и задвигает их туда. Затем п.3 для следующего своего вызова.

6. Оптимизировать код по скорости максимально возможно. 

7. Регулировка шима тоже не проста. Если есть возможность ждать чтоб порегулировать канал в момент когда он в 0, то легко, иначе артефакты полезут, но только в период, когда делается регулировка.

Регистр успеет, можна писать ногодрыгом, можна аппаратно через SPI. Вобще я делал ногодрыгом, но сейчас глянул в код, там аппаратно через SPI. Когда менял - не помню )))  Надо помехозащищенность хорошую обеспечить, на высокой скорости регистр нахватать помех может.

 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Я пользуюсь этим. Оно реализует не ШИМ а БВМ, это для светодиодов одно и то же.

Не работает на Atmega8 и 128. На программном SPI (любые порты под MOSI/SCK вместо штатных D11/D13) работает в 2.5 раза медленнее, соответственно ограничения усиливаются в 2.5 раз. Ограничения - до 768 каналов вкл/выкл, до 384 с двухбитной модуляцией (0%, 33.333%, 66.666%, 100%), до 192 с четырёхбитной и т. д.

Не использовать для серво и двигателей, им такой сигнал не нравится.

Выглядит вот так:

Logik
Offline
Зарегистрирован: 05.08.2014

Voodoo Doll пишет:

Не использовать для серво и двигателей, им такой сигнал не нравится.

И мне этот сигнал не нравится, мосфеты слишком часто переключаются. Некошерная модуляция.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Logik пишет:
слишком часто

10 кГц это для любого IR со сверхнизким Rds(on) всё равно что зима, ему посрать. Был бы мегагерц, тогда понятно.

Зима на Уране, кстати, длится 42 года. Земных, ессно.

Logik
Offline
Зарегистрирован: 05.08.2014

Причем тут Уран, зима и  Rds? 

Проблема в динамической составляющей потерь, она от  Rds вобще никак не зависит (от Урана и зимы тоже). Зато зависит от числа переключений в единицу времени. И в этом  BAM она в разы выше, на рисунке в 3 раза. Может и больше быть. Просто так греть мосфет не надо. К чему это приведет  - зависит от конкретной задачи. Может и не к чему, может к необходимости радиатора или увеличения его площади, может потребует другой мосфет. Конкретно считать надо. Но можно избежать проблемы просто делая нормальный ШИМ.