можно ли как-то менять яркость светодиодов через сдвиговый регистр 74HC595

Unikolai
Offline
Зарегистрирован: 21.09.2016

нужно менять яркость, если с им это невозможно, то посоветуйте еще чего

gena
Offline
Зарегистрирован: 04.11.2012

  Сформулируйте вопрос понятнее.

nik182
Offline
Зарегистрирован: 04.05.2015

Зависит от схемы включения. ШИМ ещё никто не отменял.

Unikolai
Offline
Зарегистрирован: 21.09.2016

мне нужно менять яркость светодиодов, количество выходов ограничего, поэтому делать нужно через сдвиговые регистры, в 

74HC595 вроде как можно на 13 пин ШИМ подать, но мне бы отдельно

Unikolai
Offline
Зарегистрирован: 21.09.2016

DM633, вот такая схемка вроде как есть..только прикрутьить ее как-ио надо

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

а такая не подойдет. goo.gl/8D2oeJ Вроде тоже ШИМ.

NfO
NfO аватар
Offline
Зарегистрирован: 20.09.2016

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

 

MagicianT
Offline
Зарегистрирован: 03.10.2015

Запросто, есть такая вещь как софтовый ШИМ. Вкратце, ганяете данные на регистры с частотой 10 кГц, и если рэфреш рэйт экрана/матрицы 40 Гц, то получим почти 8-бит яркости, 256 уровней светимости. Есть готовые библиотеки, тут:

http://www.elcojacobs.com/shiftpwm/          https://github.com/elcojacobs/ShiftPWM

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

тоже интересовал вопрос про софтовый шим на ардуино, на обычном си умею делать а вот на ардуино не соображу=))) есть еще штука такая http://arduino.ru/forum/proekty/pomigaem-svetodiodikami-moi-pervyi-zaver... здесь есть описание там spi  шилд многоканальный шим

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

Дак пишите на си. Оно поймет. Только вот ШИМ 40Гц - мало (может я неправильно понял "рэфреш рэйт экрана/матрицы 40 Гц"). Даже 50Гц, т.е. период 20мс маловато, на режимах частичной яркости мигания будут заметны (я их давил индуктивностю). И про лампочки в сети 50Гц не надо ля-ля, они мигают с удвоеной частотой сети, т.е. 100Гц, потому и не заметно мигание. Я делал на 74hc595 на 20мс т.к. надо было на часть  выводов светодиоды, а на часть сервомашинки, потому именно 20мс выбрал. Програмно можна делать одним из 2-х путей: 1. прерыватся по таймеру 256 раз за период ШИМ (период получается 20мс/256=78мксек), проверять надо ли чтото менять в состоянии регистра и если надо то записывать его 2. расчитывать время до момента, когда надо будет  чтото менять в состоянии регистра, настраивать таймер, по прерыванию записывать регистр и снова расчитывать время. Первый метод довольно сильно грузит процессор, второй грузит менше, но имеет "подводный камень" - когда в процессе работы ШИМ по нескольким каналам различается на 1 надо успеть прогнать все действия за 78мксек, что не так просто. Еще предполагается, что проц не сильно загружен другими прерываниями и нет существенных кусков кода с запретом прерываний, инче это все Вы будете видеть на светодиодах.

Unikolai
Offline
Зарегистрирован: 21.09.2016

такой штуки у нас нет)

Unikolai
Offline
Зарегистрирован: 21.09.2016

получается можно будет яркостью сразу нескольких светодиодов управлять ведь?

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

Да. у меня так 4 канала освещения, серва и две релюхи висят. И все управляется персонально с учетом личных предпочтений устройств.

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

NfO пишет:

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

А если ничего не загонять, то  шимится OE ( Output Enable) 13 нога.......

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

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

 

MagicianT
Offline
Зарегистрирован: 03.10.2015

50 Гц маловато, так для примера. 100 нормально. 

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

Согласен, маловато. Но сервомашинка другого не поймет. А делать еще и на разные частот 8/ Но мигание заметно только при малой яркости, ниже половины. А это токо в режиме плавного зажигания. В общем терпимо. 

NfO
NfO аватар
Offline
Зарегистрирован: 20.09.2016

trembo пишет:

NfO пишет:

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

А если ничего не загонять, то  шимится OE ( Output Enable) 13 нога.......

Автор написал, что ему выводов не хватает и нужен сдвиговый регистр.

По поводу частот - можно сделать "чересстрочную развёртку". Т.е. если при 256 градациях яркость надо уменьшить наполовину, то не обязательно сначала загонять 128 пакетов данных, а потом 128 пакетов нулей. Можно их загонять по очереди. Таким образом, мелькания будут чаще при тех же коэффициентах заполнения.

А если автору надо сдать курсач, то и 8-и градаций хватит )