Двуцветный светодиод

Вспомнилось про такое чудо как двуцветный светодиод.

Классическое подключение на два порта, выдаем (HIGH, LOW) один цвет, выдаем (LOW, HIGH) второй цвет. В конфигурации (ШИМ, LOW) управляем яркостью первого цвета, в конфигурации (LOW, ШИМ) яркостью второго цвета. Очевидно, что управляя (ШИМ1, ШИМ2) светим двумя компонентами сразу, максимально в “полнакала” (можно смириться), но стоит задача генерировать неконфликтующие напряжения.

Ардуинка умеет генерировать инверсный сигнал ШИМ на свой порт, или без своего кода или инвертирующей обвязки не обойтись? По факту надо управлять не только длительностью импульса в один период модуляции, но и его сдвигом относительно начала.

Если бы мне захотелось шимить раздельно двумя светодиодами, я бы взял двухцветный трёхвыводный светодиод. Ардуиновских выводов всё равно два занято…

Здесь больше задача теоретическая, чтобы научиться управлять ШИМ по фазе. И второе - практическая. Это как пример двупроводная нитка гирлянды (т.е. не надо тянуть общий провод). Может быть актуально как для гирлянды, так и для какого-нибудь выносного индикатора, где есть ограничение по линии (например, уже дан разъем где мало пинов).

Да, умеет (если Вы про AVR, а то, как всегда, не уточнено). Вот здесь работающий пример

1 лайк

Это ответ.

1 лайк

Спасибо. Была интересна именно аппаратная возможность.

интересно, а разве инверсный ШИМ скважностью в Х%, это не то же самое как прямой ШИМ (100-Х)% ?

1 лайк

Это совсем про другое. Если на двух пинах строго инвертированный шим, то, подключив к ним двухцветный, двуногий светодиод, Вы можете плавно управлять его цветом от зелёного до красного через жёлтый. Чем выше коэффициент заполнения на “красном” пине, тем краснее, и чем ниже - тем зеленее.

1 лайк

да?
ну ладно… хотя мне так не кажется.

Ну да, а не при строгом инвертировании можно бегать по части спектра, не полный RGB, но все же. Рассчитывать яркость каждой компоненты исходя из того, что она определяется либо положительной либо отрицательной разницей сигналов. Когда сигналы равны, оба светодиода погашены.

А чему тут казаться? Вот выдаём мы такой шим на 9-ом и 10-ом пинах. Если допустим на 9-ом HIGH, а на 10-ом LOW, то светится зелёным. Тогда в те моменты времени, когда на 9-ом LOW, а на 10-ом HIGH – оно светится красным. Вот и получается, что меняя скважность, можно плавно менять цвет.

При инвертированном ШИМ сигналы никогда не будут равны. Там всегда на одном HIGH, а на другом LOW. Равными их можно сделать только если выключить ШИМ и привести оба пина в одинаковое состояние. Пока ШИМ работает - равными они быть не могут.

1 лайк

Сдвинув генератор второго ШИМ на величину f получаем управления яркостью светодиодов на отрезках A и B. Для равновесного управления обоими светодиодами сдвиг по фазе должен быть равен половине периода. Тогда задавая ширину W1 и W2 управляем яркостью каждой компоненты. По факту, когда сдвиг на полпериода и ширины равны половине периода оба диода светят вполнакала. Без сдвига фазы никак, чтобы получить не только положительную, но и отрицательную составляющую.

Хотя не, вру. Просто разные скважности без сдвига тоже дают оба знака разницы.

Требования к геренации такие чтобы сумма параметров всегда была меньше 255 и параметр первой функции (классического выхода) был меньше параметра второй функции (инвертированного выхода). Иначе в моменты перехлеста сигналов по одинаковому знаку будет нежелательное потухание обоих светодиодов.

Вы не можете ничего сдвинуть. Участки типа того, что слева от А (когда на обоих пинах HIGH) – невозможны!

Вы знаете, что означает слово “инвертированный”? Это когда на одном пине HIGH, а на другом LOW и никогда “на обоих одинаково”.

Если Вам нужно, чтобы иногда на обоих было одинаково, Вам нужен не инвертированный шим, а два независимых ШИМ (возможно, как-то синхронизированные), но это совсем другая задача.

1 лайк

Да, два независимых. Но если второй не будет инвертированным, то они оба начнутся с HIGH. Это не спор, я доуточнил терминологию. Второй выход инвертирован не относительно первого, а сам по себе, чтобы стартовал с LOW и скважность задавала длительность низкого уровня. Обвязкой это делается. Самописным кодом делается. Если делается просто настройкой, чтобы далее пином управлять через те же вызовы - шикарно. Я примеры порою дома, в периоды творчества.

вот именно к этому случаю и относился мой коммент про X и (100-X) процентов ШИМ.
Но это не есть “аппаратно инвертированный” ШИМ, как отметил Евгений

Вывод не может быть инвертирован “сам по себе”. Само слово “инвертирован” предполагает наличие двух объектов в противоположных состояниях. Посмотрите, наконец, в словарь и перестаньте использовать слова, смысла которых Вы не понимаете! Неправильным употреблением терминов Вы сожрали кучу своего и чужого времени!

Так что с

у Вас не получилось :frowning:

1 лайк

при Х = 50 - получаем два одинаковых ШИМа. И в случае их полной синхронизации получаем нулевую разность потенциалов между ними и отсутсвие света, вместо 50% зеленого и 50% красного.
Я так понимаю вопрос больше про синхронизацию двух ШИМов, чем про инверсию. Можно ли каким-то “простым” способом синхронизировать два ШИМа с одним периодом и разной скважностью? Хотя бы в одной фазе, лучше - со сдвигом в половину периода, в идеале - с произвольным сдвигом.
На мой взгляд слишком узкое применение для того, чтобы можно было обойтись без

Но может я и не прав.

https://avr.ru/beginer/bascom/article13

Следует отметить, что сигнал ШИМ можно инвертировать, т.е. при прямом счёте (вверх) и совпадении значения счёта со значением, записанным в Compare (TOP), на выводе ОС1х (ОС0х) будет низкий уровень, а при обнулении счётчика – высокий.

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

Но тем не менее, смысл моего вопросы вы поняли, я вас понял, примеры и документация найдена. Я не считаю свое время потраченным зря.

Датчик уровня синхронизации ШИМа. Во как! Или датчик обратного импульсного тока. В общем простор фантазии.