atMega328P: управление LED "в противофазе"
- Войдите на сайт для отправки комментариев
Не знал, в какой разде сначала обратиться - в Программирование, или этот, и решил, что правильнее сначала в этот.
Задачка вроде бы проста - нужно управлять с помощью ШИМ 2-мя LED, которые работают в режиме одиночных вспышек.
LED мощные, каждый потребляет около 3А, а батарея не очень мощная (другую в корпус поместить не получится), поэтому нужно думать, как бы уменьшить этот ток.
Соображение такие: если диоды зажигать одновременно, то получится 6 А, что очень много.
Если зажигать LED поочередно, как бы "в противофазе", то он не превысит 3 А, что вполне годится.
Схемка получается простая - выходы двух ШИМ поступают на силовые ключи, которые управляют катодами LED, аноды которых соединены вместе и присоедины к одному общему резистору, верхний вывод которого соединен с плюсом батареи.
Упрощенно данная схема выглядит так:
Остается вопрос: позволяет ли atMega328P настроить выходы двух ШИМ так, что бы серии импульсов от них шли в противофазе?
Например, чтобы сначала один выход ШИМ выдал 100 импульсов на 1-й LED, потом замолчал, а в это время второй ШИМ выдал 100 импульсов на 2-й LED, затем общая длинная пауза, и далее по кругу.
Сорри, пропустил важное слово - гарантированной, т.е.
Иначе, если серии испульсов наложатся, то от батари захавается не 3, а 6 А, и наступит абзац котенку :)
Работать будет так, как Вы сами запрограммируете. Поскольку гасящий резистор у Вас один, сколько к нему светодиодов не подключай, ток от батареи больше 3-х ампер не будет. Даже и 3-х не будет, поскольку на самом светодиоде упадет несколько вольт. Т.е. по такой схеме ток через светодиод ожидается около 2-х Ампер.
Да, вы совешенно правы, я как-то не подумал :) Тем не менее, если светодиоды из-за неправильного алгоритма будут включаться одновременно, то возникнет другая неприятность - ток (и яркость) через каждый упадет в 2 раза, а с учетом технологического разброса ВАХ еще и не поровну поделится.
Это понятно, тем не менее вопрос тот же - позволит ли архитектура atMega328P запрограммировать ее так, чтобы серии ШИМ на разных каналах не пересекались во времени?
Потому что программа программой, но ведь еще на результаты существенно влияют аппаратные возможности контроллера, не так ли?
Остается вопрос: позволяет ли atMega328P настроить выходы двух ШИМ так, что бы серии импульсов от них шли в противофазе?
Да, конечно.
Например, чтобы сначала один выход ШИМ выдал 100 импульсов на 1-й LED, потом замолчал, а в это время второй ШИМ выдал 100 импульсов на 2-й LED, затем общая длинная пауза, и далее по кругу.
Наверное, мы по-разному понимаем выражение "в противофазе". Аппаратно на АТМеге328 Вы можете сделать так, что сигнлал на одном пине будет HIGH, а на другом LOW и с нужной частотй они будут инвертироваться - строго одновременно. Это и называется "сигналы в противофазе". Это делается аппаратно без малейшего вмешательства Вашей программы - процессор в это время полностью свободен для других дел.
Вы же хотите, чтобы сто периодов отработал один, а потом сто периодов - другой. Это по-моему не противофаза, а что-то другое. Программно Вы можете это сделать. Аппаратно - нет.
Если ест лимит по батарее, то следует подуать о том, как более рационально питать диоды, бо сейчас примерно 70% энергии идет на нагрев резистора,
т.е. или батарею брать на 3в, или понижающий преобразователь ставить, или источник тока.
Минимум 50% ресураса можно на этом выиграть.
да, и нужен ли тут ШИМ, как таковой, тоже еще вопрос, из описания хотелок это вовсе не очевидно.
Берётся 2 таймера (555), делается два генератора с диодами (гуглится по фразе 555 pwm). На одном настраивается точно 50% ШИМ чтобы светодиоды светили одинаково. Второй будет регулировать.
Второй таймер будет левым по схеме, у него из 3й ноги идёт в 4ю ногу первого (правого по схеме).
Надеюсь понятно.
ВН прав, питать лучше от LM2596 и т. п., или хотя-бы LM317.
Было бы полезно показать схему которую собираетель собрать реально.
Сейчас попробую выразить обуревающие меня чувства более понятно :)
Вначале попробую без рисования грфиков.
Вариант аппаратной противофазы на выводах обычных портах мне понятен, но есть ли она же в этом контроллере в виде ШИМ?
Потому что ШИМ мне нужен точно - для регулировки яркости вспышек LED в широких пределах.
Ну не то что бы очень этого хотелось. Желание получить серию неперекрывающихся импульсов ШИМ - вынужденный компромисс, если не удастся сделать настоящиую противофазу.
А если такое удастся, т.е. ШИМ и вместе с ним настоящая противофаза совместно, то это был бы лучший варант, поскольку позволил бы зажигать LED одновременно (а не почередно, как в компромиссном варинте).
Рискую показаться занудой, но на всякий случай попробую объяснить сие еще таким образом:
Предположим, что необходимо зажигать LED в количестве 2 штуки на пол-секунды (вспышка), а затем тушить их на 10 секунд (темнота).
Этот цикл нужно постоянно повторять. А еще нужно иногда корректировать яркость LED в широких пределах.
Если подсоединить каждый LED к своему выводу ШИМ, и с помощью ШИМ включать вспышки LED одновременно, то мне неизвестно, какие будут импульсы на выходе ШИМ - синфазные или противофазные.
Подозреваю, что без принятие специальных мер они будут синфазные, и это плохо, т.к. LED будут включатся одновременно и яркость каждого будет в 2 раза меньше.
Поэтому, как выход из этой проблемы я и предложил серии импульсов ШИМ, разнесенных во времени - сначала серия для LED-1, затем серия для LED-2.
Недостаток этого компромиссного варианта - виузально LED будут загораться поочередно (а желательно, чтобы одновременно).
Но если можно настроить программно ШИМ таким образом, чтобы серии для LED-1 и LED-2 шли одновременно, но сами импульсы в противофазе, то это будет идеальный вариант - LED будут зажигаться одновременно!
PS. Вопросы рационального питания да, актуальны, но чтобы не запутывать и без того запутанное описание главной проблемы, рассмотрим позже.
Также не хотелось бы усложнять схему всякими дискретными таймерами и пр. - зачем, если это можно реализовать программно на одной 328-й?
К тому же еще требуется управлять яркостью вспышек в широких пределах в зависимости от неких специфических внешних импульсов, которые 555 точно не поймет (либо это будет архисложно).
Shurik, если разрулить нормально питание, то твой источник выдаст при тех же энергозатратах 6А.
Так что тут вопрос, - во что тут стоит больше упираться.
хм.. ну вот не редактируется жирность шрифта после выделения ника ...
ВН, мне все же хотелось бы решить проблему в рамках условий, которые я так старался, описывая выше в посте #8.
Чтобы было понятней - у вас крутой смартфон от Apple, как вы в нем рузрулите питание - примотаете сзади синей изолентой более мощный аккумулятор? :)
Пожалуйста, давайте здесь не будем обсуждать источник, резисторы и т.п., тема - чисто о возможностях atMega328P
Но если можно настроить программно ШИМ таким образом, чтобы серии для LED-1 и LED-2 шли одновременно, но сами импульсы в противофазе, то это будет идеальный вариант - LED будут зажигаться одновременно!
Если так сделать то при увеличении яркости одного диода второй будет снижать яркость, ШИМ же в противофазе. Но если ШИМ будет с заполнением 50% то светиться будут оба диода одинаково.
В противофазе, да, но это всего лишь означает, что на одном выводе ШИМ нолик, а на другом в этот момент единица.
А вот скажность на обоих выводах всегда соверешенно одинакова. Поэтому тут вас не понял, почему будет разбаланс яркости?
Итак, имеем ШИМ с заполнением, допустим, 30% на одном выводе ардуины. Это значит что диод 30% времени (от периода ШИМа) светится, а 70% нет. На другом выводе сигнал в противофазе, значит диод 70% времени светиться, а 30 нет. Получается один светится на 30% а другой 70%.
Поставьте на один светодиод инвертор сигнала, заодно не нужно будет занимать два выхода.
А если вам надо одинаковую яркость, то больше 50% вы ее не поднимете и придется писать свой ШИМ с учетом данной задачи.
Вариант аппаратной противофазы на выводах обычных портах мне понятен, но есть ли она же в этом контроллере в виде ШИМ?
Я же вроде написал Вам там "да, конечно". Какое из этих двух слов Вам непонятно? :))))
Так собственноо том и речь...
вот тут описано как можно увеличить частоту ШИМ Ардуино
http://kazus.ru/forums/showthread.php?t=107888
а тут я набросал моделку как при этом можно эффективно питать светодиод (и упраялть, если подумать головой)
https://yadi.sk/i/CiPBr0pNpzENA
зы. если не ТС, то может кому-то другому пригодится
э..да.... еще один график .... среднее потребление тока от источника 9В при сем 0,65А. а не 3А, как планирует ТС
https://yadi.sk/i/Owkt1bgYpzFAp
зы2. ключевой транзистор в схеме специально не выбирал, воткнул первый попавшийся под руку.
Пока не взял карандаш и бумагу и не нарисовал графики, чтобы даказать свою правоту, долго бы еще блуждал среди трех сосен :)))
А получилось как раз наоборот - полностью правы оказались вы, при такой схеме будет дисбаланс токов диодов, не годится она.
Но если запитать каждый LED через свой отдельный резистор, то вроде получится? Взаимовлияние диодов друг на друга будет отсутствовать.
За схемку спасибо, но когда перейду к энергетике, наверное, воспользуюсь готовыми управляемыми импульсными драйверами, благо в продаже их полно.
Ок. Впоне вариант. покажите, если найдете что-то подходящее
В поле ответа, самая левая кнопка, отключает визуальный редактор, там уже можно как надо подправить.
Либо чтобы при вставке игнорить форматирование, клацать не Ctrl+V, а Ctrl+Shift+V.