Плевая тема с тремя вариантами в первом посту превратилась в научное исследование на тему ПОДКЛЮЧЕНИЯ ЛЕД ЛЕНТЫ ВАНДАЛАМИ ЛЕТ 12-14 для РАБОТЫ В ЖЕСТКИХ УСЛОВИЯХ КРАЙНЕГО КОСМОСА ПРИ ЯДЕРНОЙ БОМБАРДИРОВКЕ С БЮДЖЕТОМ до 300р.
Я когда свои ленты подключал через MOSFETы , выдранные со старой материнки не знал , что все так сложно.... И как эти ленты работают уже лет 5 ????
Ваша схема ptr нерабочая, скорей всего сгорит сразу. Проблема не в том, что она с двухтактным усилком, а в том что она медленная. Фронты будут затянуты. Вы неверно прикинули ток базы Т2 например, он скорей всего толком вобще не откроется. Потому и получатся те проблемы - сквозной ток, перегрев полевика и т.д. о которых вам пишут. Это реальным опытом делятся, т.к. любителей тулить оптопары куда не попаде ("для какбычегоневышловдруг") на форуме валом, потому и опыта много. Оптрон не просто лишние деньги, он еще и источник некоторых проблем, причем совершенно не нужных. И нахрена Вам гальваноразвязка между контроллером (гальваноразвязаным от внешнего мира) и питанием ленты (также гальваноразвязаным)? Хотите попрыгать по граблям - ваше право. Узнаете например что такое проходная емкость оптрона и как через неё переменка от импульсного БП шурует в базу фототранзистора. Если ищите приключения - паяйте как хотите, если нужно провереное рабочее решение - вам схему показали.
1. По поводу проходной емкости вообще непонятно для чего вы эту тему подняли - она даже при самых неудачных раскладах составляет всего 1.0 пФ. Вообще к чему эта постановка ненужной проблемы - "переменка от импульсного блока питания шурует на базу транзистора оптрона" - может человек вообще будет питать свой девайс от аккумуляторов.
Да хоть от Днепрогеса пусть питает. Но заявлено "А светодиодная ленты кормятся от своего мощного БП, скорее всего китайского и весьма паршиво стабилизированного." Из этого и расчет.
Расчет реактивного сопротивления проходной емкости 1пФ на 1Мгц X=1/2*Pi*f*C=167КОм. Ток в базу фототранзистора при напряжении помехи U=12В Ib=U/X=70мкА. Ток коллектора при усилении h=50 Ik=h*Ib=3,5мА. Итого при наличии между 2 развязываемыми цепями помехи описываемой как 1Мгц 12В помеховый ток на выходе оптрона пошти в 2 раза выше чем рабочий.
Alex_Ferrum пишет:
2. Да, оптрон действительно медленный, максимальное время нарастания или спада - 18 микросекунд, что в сумме за один такт даст 36 микросекунд, округлим в большую сторону, получается 40 микросекунд, при частоте, например, 250 герц, мы получаем общее время переходных процессов за секунду равное 0.01 секунде, мощность которая идет на схему равна при 3 амперах и 12 вольтах - 36 ваттам, даже если предположить что во время переходного процесса все 12 вольт падают на транзистор (а они на самом деле перераспределяются между транзистором и лентой) то получается что на транзисторе рассеивается за счет переходных процессов 0.36 ватта.
Плохо считаете. 40мксек - это при номинальных токах оптрона. При выбраных будет хуже. К 40мксек надо добавить время переключениея двухтактника (при указаных номиналах не быстро), время зарядки затвора через выбранный резистор и т.д. Кроме того в течении переходного процесса оба транза двухтактника будут открыты, они и сгорят первые.
Alex_Ferrum пишет:
3. С учетом того что оптрон отностительно дешевый и распространенный, то использовать его в данной схеме для согласования между 5 вольтовой ардуино и 12 вольтовой частью управляющей транзистором вполне оправдано.
Бред. Оптрон не применяют для согласования, он применяется для гальваноразвязки. Аргумент про "отностительно дешевый и распространенный" - чепуха. Щебень тоже дешев и распостранен - навалите его. Непонятно только зачем. Но оптрон там тоже непонятно зачем.
Alex_Ferrum пишет:
4. По поводу "двухтактного усилка" - я не знаю для кого как медленная или быстрая, если вы утверждаете что она медленная - хотя бы время нарастания и спада привели бы. Вот оптрон PC817 тоже медленный, а для управления светодиодной лентой он вполне подходит.
Нахрена оно мне? Я в своих схемах и решениях уверен, они проверены практикой, о чем я и пишу. Если чел обращается с вопросом как лучше - я всегда рад подсказать. Если чел публикует свою схему и просит поругать тоже не проблема - отписал: схема не рабочая, 80% процентов деталей на ней лишние, номиналы неверны, подход порочный, пользуйтесь провереными решениями. Лишние детали порождают лишние проблемы. А сидеть и считать его схему - оно мне надо? Хочет понабивать шишек - так пожалуста. Держать его заруки чтоб не спалил я не собираюсь. Дальнейшую дискусию вести не считаю нужным. Привет!
Бедные маленькие. Интересно даже протестировать, на какой частоте ток OUT превысит 40ма
Для особо наблюдательных, которые любят читать надписи мелким шрифтом, подал на затвор меандр 100кгц. Генератор изображает ШИМ-выход ардуины -- логические уровни -- 0.3в и 4.7в.
Прошу прощения, Вы явно пропустили, что не только данная тема, а весь форум посвящен Ардуино, у которой частота ШИМ 490Гц. Вы бы еще 2.4 гигагерца тут протестировали )))
Нахрена оно мне? Я в своих схемах и решениях уверен, они проверены практикой, о чем я и пишу. Если чел обращается с вопросом как лучше - я всегда рад подсказать. Если чел публикует свою схему и просит поругать тоже не проблема - отписал: схема не рабочая, 80% процентов деталей на ней лишние, номиналы неверны, подход порочный, пользуйтесь провереными решениями. Лишние детали порождают лишние проблемы. А сидеть и считать его схему - оно мне надо? Хочет понабивать шишек - так пожалуста. Держать его заруки чтоб не спалил я не собираюсь. Дальнейшую дискусию вести не считаю нужным. Привет!
Я с вами категорически не согласен, но поскольку не хотите вести дискуссию, то и не будем ее вести.
Утомили. Загнал свою схему в Multisim. PC817 я там не нашел, но CNY17F оказался весьма близок по параметрам. Извращаться не стал, поставил частоту ШИМ в 1КГц (двукратный запас). Больше не нужно, однозначно. Сразу выявилась проблема медленного закрытия MOSFET.
Исходя из этого, добавил резистор в 2К в затвор MOSFET
Сигнал сразу стал существенно симпатичней:
Очевидно, что на частоте выше 10КГц медленный оптрон просто не успеет включаться. У CNY17FTurn-off time 25 мкс при 5ма (у PC817 в даташите стоит 18 мкс при 2ма). Но на 10КГц (0.1мс на период) он еще работает, с явно видимым сдвигом фазы:
Замеры токов на двухтактнике показали, что больше 20ма там не возникает в принципе. И каким образом могут одновременно открыться два транзистора разной проводимости, когда у них базы и эммитеры соответственно соединены - не понимаю.
В дополнение, данные исследования показали, что применение PC817 лимитировано 10КГц. Причем этот лимит, само собой, может плавать в зависимости от партии или производителя. Посему настоятельно не рекомендую использовать PC817 или его аналоги на частотах выше 5Кгц. Применение же его на шататных 490Гц частоты ШИМ Ардуино никаких проблем вызывать не должно.
Прошу прощения, Вы явно пропустили, что не только данная тема, а весь форум посвящен Ардуино, у которой частота ШИМ 490Гц. Вы бы еще 2.4 гигагерца тут протестировали )))
Я что-то путаю или это именно вы изначально хотели посмотреть "на какой частоте ток OUT превысит 40ма" ? Странное дело, но в тот момент вас почему-то совершенно не беспокоило, что "весь форум посвящен ардуино". Зато какие страдания теперь на лице -- любо дорого посмотреть.
Попутно информирую, что 490 Гц -- это частота ШИМа, который генерируется функцией analogWrite(), из чего совершенно не следует, что только такую частоту и способен генерировать Ардуино. Код из нескольких строк в Arduino IDE элементарно организует ШИМ-сигнал частотой в 100кгц на соответствующих выводах ардуины и никакого канона это не нарушает, сколь бы вы ни тужились представить дело обратным образом.
Я что-то путаю или это именно вы изначально хотели посмотреть "на какой частоте ток OUT превысит 40ма" ?
На любой частоте, даже 1Гц Ваша схема может породить ток на выводе МК свыше 40ма, точнее даже 50ма, так как 5V/100= 50ma
Скорее всего, при управлении только одним выводом, это ни к чему страшному не приведет из-за непродолжительности данного тока. То есть, если продолжительность данного импульса 10мкс, то при частоте 500Гц за секунду наберется всего 5мс и при соотношении 1:200 AVR выживет. Если повезет.
При управлении же, как в моем случае, одновременно шестью выводами, это может породить пиковый ток по всему кристаллу до 300ма. И вероятность смерти МК в этом случае вполне реальна.
a5021 пишет:
Код из нескольких строк в Arduino IDE элементарно организует ШИМ-сигнал частотой в 100кгц на соответствующих выводах ардуины
Чтобы не оказаться лгуном, просьба привести данный элементарный пример. Очень хотелось бы узнать, как на шести выводах 16МГц AMR получить частоту ШИМ больше 32КГц. А на выводах 5 и 6 свыше 62.5КГц.
Математику ведь не обманете. 16,000,000/256=62500 - больше частота ШИМ, регулируемая от 0 до 255 быть физически не может.
На любой частоте, даже 1Гц Ваша схема может породить ток на выводе МК свыше 40ма, точнее даже 50ма, так как 5V/100= 50ma
Вы совсем ничего не читаете? Только пишете? Я вам "осциллограмму" с модели привел. Там иголка если и поднимается выше 40ма, то на 1-2ма и крайне скоротечно. Кто и что способен "породить" в ваших фантазиях, оставим на вашей же совести.
Цитата:
При управлении же, как в моем случае, одновременно шестью выводами, это может породить пиковый ток по всему кристаллу до 300ма. И вероятность смерти МК в этом случае вполне реальна.
В данном случае ничто так не реально, как сам факт существования ваших удивительных фантазий. Сжечь ардуину или хотя бы единственный пин не так просто, как вы тут пытаетесь изобразить. Даже на этом форуме полно схематических прорывов, когда для коммутации нагрузки прямо на пин вешают базу NPN-транзистора, включенного по схеме с общим эмиттером. При этом замечания вида "так не делается", изобретателями схем отметаются на том основании, что "оно и так великолепно работает".
Вы понимаете, о чем я говорю? Высокий уровень у такого изобретателя через эмиттерный переход шпарит прямо в землю и никто не убивается, что ток превышает рекомендованные 40ма. У меня вообще есть подозрение, что сопротивление верхнего мосфета выходного формирователя ардуины и составляет где-то эти самые 100ом, т.ч. пин физически не в состоянии отдавать ток больше 50ма. Если это так, то пин можно заземлять и подавать туда высокий уровень -- ардуине будет пофигу.
Цитата:
Чтобы не оказаться лгуном,
От того, чтобы не страдать мнительностью и не подозревать за другими то, что им не свойственно, очень помогает изучение матчасти.
Вот скетч, который выдает 100кгц ШИМ с 30% заполнением на 9 пине ардуины.
Для удобства наблюдений в loop() ШИМ включается/выключается каждую секунду.
Цитата:
Математику ведь не обманете. 16,000,000/256=62500 - больше частота ШИМ, регулируемая от 0 до 255 быть физически не может.
Я вон там, в примере выше, явил чудо -- ШИМ 100кгц. А за разрядность именно в 8-бит разговора не было. Разумется, на 100кгц доступно только 160 шагов изменения коэффициента заполнения.
Там иголка если и поднимается выше 40ма, то на 1-2ма и крайне скоротечно.
А значит ваша схема не соответствует требованиям AMTEL. Следовательно, вероятность выхода из строя МК в этой схеме явно не нулевая, про что явно сказано в даташит:
Stresses beyond those listed under “Absolute
Maximum Ratings” may cause permanent dam-
age to the device. This is a stress rating only and
functional operation of the device at these or
other conditions beyond
those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect
device reliability.
Если же говорить о шести каналах, чему посвящена вся ветка, то у вас "скоротечно" возникает ток до 300ма при 200ма заявленого максимума. Так, в полтора раза превышение, фигня какая )
А мне с детства вдолбили в голову, что без 20% запаса схема одобрена не будет. И более, чем на (200-12)*0.8=150ма мне ардуину и в голову не прийдет грузить. Итого в ДВА РАЗА!
a5021 пишет:
При этом замечания вида "так не делается", изобретателями схем отметаются на том основании, что "оно и так великолепно работает".
Самому не стыдно? Можно и на светодиод сразу 5 вольт подать без резистора. Я думаю, даже не сгорит сразу )))
a5021 пишет:
От того, чтобы не страдать мнительностью и не подозревать за другими то, что им не свойственно, очень помогает изучение матчасти.
Где вы мнительность нашли? Я просто никому, даже себе не верю на слово. Это критичность мышления называется. Пока нет подтверждение каких-то слов - они для меня ничего не значат. И человек, утверждающий что-либо и ни как не аргументирующий свое заявление уважения не вызывает.
Благодарю. До Fast PWM mode я в даташите не дошел еще. Для моих задач стандартных 490Гц вполне хватало. Ардуиной занимаюсь все же на досуге и всего три месяца.
А значит ваша схема не соответствует требованиям AMTEL.
Про свою схему я и не обещал, что она чему-то там будет соответствовать. Напомню, я намеренно взял более "тяжелый" мосфет с емкостью затвора в полтора раза большей, чем IRL540 из детской книжки. Но даже в этом случае "несоответствие требований" заключается в превышении на 2.6ма (в пике) в течение 40 наносекунд. И это на идеальной модели. В реальных условиях пики по 40 наносекунд тупо размажутся емкостью и индуктивностью монтажа + прочие несовершенства.
С другой стороны, если вы бескомпромиссный борец за соответствие требованиям АТМЕЛ, никто вам не мешает поставить в затворы резисторы по 220 ом и ограничить ток пина двадцатью миллиамперами. Да, фронты растянутся в три раза, но вам же шашечки, а не ехать, т.ч. для вас это должно стать отменным решением.
Цитата:
Следовательно, вероятность выхода из строя МК в этой схеме явно не нулевая
Я ранее предположил, что реальный ток пина ограничен значением где-то в 50ма. Немного ошибся. Многочисленные источники в интернете утверждают, что у них получалось снимать до 80ма долговременно без повреждения чипа. На этом фоне мои 42.6ма в течении 40 наносекунд смотрятся особенно мрачно, не правда ли?
Цитата:
Если же говорить о шести каналах, чему посвящена вся ветка, то у вас "скоротечно" возникает ток до 300ма при 200ма заявленого максимума. Так, в полтора раза превышение, фигня какая )
Вам в беспокойном сне привиделось, что пиковое потребление у вас случится по всем пинам ШИМ-каналов синхнонно? У амтеги таймеры не синхронизируются, т.ч. даже сильно захотев, вы не получите пикового потребления в соответствии с нарисованной вами аппокалиптической картиной. Максимум из возможного -- синхронное переключение двух каналов одного таймера. Итого, 80 миллиамер с хвостиком.
Цитата:
А мне с детства вдолбили в голову, что без 20% запаса схема одобрена не будет.
Жаль, что в том же возрасте вам не вдолбили в голову, что сначала матчасть, а потом споры, но не наоборот.
Цитата:
Самому не стыдно?
Мне-то чего стыдится? Это не я снимаю по два урожая с одного пина. Иллюстрация же была на тему "спалить пин перегрузкой сложно", но отнюдь не "вот, как нужно делать". В принципе, я все это сразу оговорил и отчего вы меня тут стыдить взялись, ума не приложу.
Цитата:
Это критичность мышления называется.
И где она была, когда вы рисовали вашу схему "драйвера светодиодных лент" ? А главное, где она теперь, когда вместо того, чтобы признать ее полную ущербность, вы начинаете выдвигать все новые и новые условия с таким расчетом, чтобы подогнать ТЗ под имеющийся результат. Вы мне чего хотите говорите, но это никакая не критичность мышления, а нечто совсем иное.
вместо того, чтобы признать ее полную ущербность, вы начинаете выдвигать все новые и новые условия с таким расчетом, чтобы подогнать ТЗ под имеющийся результат.
Схема полностью соответствуюет условиям изложенным в начале темы. Ничего разумного, кроме признания себя шизофреником в первом же своем посте, ты тут еще ни разу не написал. А вот новые условия (по частоте, по нагрузке МК и его выводов и т.п) навыдвигал пачками, хотя никто тебя об этом не просил. Не знаю, как у остальных, но у меня уже не осталость к такому демагогу, как ты, ни малейшей капли уважения. Все, игнор.
Ответте на вопрос - как быстро выгорит транзистор по этой схеме в режиме ШИМ? А потом про бредовый бред поговорим. Где он бредовее.
Отвечаю. Не выгорит никогда, если нагрузка и напряжение будет в рабочем диапазоне транзистора. Частота ШИМ на ардуино, всего 490Гц, такую чатоту даже учитывать не обязательно. Сам пользую эту схему и для светодиодов, и для паяльной станции, работает и ничего не греется уже не первый год.
Отвечаю. Не выгорит никогда, если нагрузка и напряжение будет в рабочем диапазоне транзистора. Частота ШИМ на ардуино, всего 490Гц, такую чатоту даже учитывать не обязательно. Сам пользую эту схему и для светодиодов, и для паяльной станции, работает и ничего не греется уже не первый год.
Проблема схемы, предложенной a5021, не в транзисторе. Проблема в вероятности возникновения высокой суммарной нагрузке по току на МК при управлении сразу 6 MOSFETами по данной схеме. Двухлучевика у меня сейчас нет, чтобы потестировать на МК вероятность совпадения фронтов ШИМ на разных выводах.
Только на одном выводе МК, управляющем одним MOSFET ток свыше 90ма прыгает в Multisim. Да, недолго, очень кратковременно. Так что один вывод должен выжить. Шесть - боюсь сгорит AVR. Увеличение же резистора в затворе MOSFET приведит у увеличению времени преключения полевика. То есть увеличим нагрузку на MOSFET. Может быть и можно подобрать так резисторы, чтобы и МК и транзисторы оказались с допустимой нагрузкой, но считать было в лом.
Это не моя схема. Я остановился на двухтактной раскачке MOSFET с полной гальванической развязкой от силовой цепи и нагрузкой на ардуиновские порты по 2ма
Граждане! Мощные мосфеты -- это от 100А. Не путайте человека, не нужны ему ни драйверы, ни расчеты по резистору в базе. Keefa правильно сказал, что для данной задачи подут любые N-канальные, в корпусах вплоть до SOT23 и меньше, лишь бы по току подходили. Конкретный пример: AO3400A -- SOT23, 5.8A, полностью открывается уже при 2.5в, сопротивление канала -- 32 миллиОма (при 4.5в на затворе). И нахрена, спрашивается, все это уродство с гайками в виде IRF530 + драйвера?
Вот-вот. Сколько ни смотрю параметры всяких разных транзисторов на aliexpress — каждый раз возникает один и тот же вопрос: ну и чем он (почти для всех моих задач) лучше всё тех же AO3400 и AO3401 (когда нужен p-канальный?). При этом эти AO340x стоят копейки!
Ещё, как вариант, почти по той же цене есть AO3402 (n) и AO3403 (p) — у них примерно вдвое больше сопротивление канала, но зато настолько же меньше и ёмкость затвора. Так что для быстрого ШИМа в пределах 1A лучше брать их.
Я только не разобрался пока, как вычислять оптимальный резистор от мк к затвору. В одной из application notes у Microchip (AN1047 Buck-Boost LED driver using the PIC16F785) рекомендуют всего 10Ω (при частоте 250 кГц, с транзистором NDC651N, у которого ёмкость затвора чуть больше чем у AO3402); по идее, на пике должен быть большой ток, выше допустимого для выходов мк предела (у PIC он ещё ниже, чем у ATMEGA). Правильно ли я понимаю, что выходы не сгорают из-за пологости фронтов переключения самих выходов?
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
Вы устраиваете тут кому-то экзамен? Или вы просто хотите кого-то обидеть? Или вы просто догматик, утверждающий что-то не приводя доказательств?
мда .... веселуха . аднако
а как вчера душевно о правилах хорошего тона писал .... прям слезу выбивало ...
Если я Вас чем то обидел - извиняюсь. Но фраза "однако это и не схема от a5021" без указания, какие именно отличия данной схемы важны для оценки суммарной загрузки шестью ШИМ каналами всего МК, выглядит самой настоящей догмой )
в схеме a5021 резистор с затвора на землю 100 кОм, а у тебя 100 Ом
Нужно объяснять, что при такой замене расчеты потерь на управление полевиком дадут существенно разные результаты?
Тут вы не совсем правы. От этого резистора зависит только пиковый ток разрядки затвора MOSFET. Пиковый ток зарядки же от этого резистора не зависит. Причем, что печально, чем больше этот резистор, тем выше пиковый ток разрядки. А значит и суммарный пиковый ток будет выше. Был 437ма, а стал 586ма.
Я только не разобрался пока, как вычислять оптимальный резистор от мк к затвору.
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
Затвор MOSFET - это емкость. Как и у любой емкости, во время зарядки и разрядки через нее течет ток. Пиковый ток зарядки I=U/R, где U - разность потенциалов на выводе кондесатора в заряженном и разряженном состоянии, а R сопротивление. Если без резистора, то значит выходное сопротивление порта МК. Само собой, порт МК не способен выдать чистый прямоугольник. Время нарастания фронта у ардуино не мгновенно, поэтому и пиковый ток зарядки будет ограничен.
Таким образом, ток затвора MOSFET зависит от:
1. Сопротивления цепи затвора
2. Емкости затвора
3. Скорости нарастания и спада управляющего напряжения
Чтобы не заморачиваться, упрощенный расчет можно вести по ограничению тока. То есть, если мы хотим ограничить ток заряда MOSFET 40ма (максимум для вывода ардуино) при напряжении питания 5 вольт, то значит управляем через резистор R=U/I=5/0.04=125Ом. Ближайший больший по E6 и E12 - 150 ом. Вот его и берем.
Далее, MOSFET управляется потенциалом. Следовательно, не всякий MOSFET может полностью открыться от 5 вольт и, тем более, от 3.3 вольта. Причем, чем больше потенциал затвора, тем больше допустимый ток между стоком и истоком. Управляя одним и тем же IRL530 5 вольтами максимальный коммутируемый ток может быть 2.5 ампера, а 12 вольтами - уже 15 ампер.
А без резистора к затвору ардуина непродолжительно время выживет. Просто потому, что ее выходы выдерживают значительные кратковременные перегрузки. Но делать так я не рекомендую )
Проблема схемы, предложенной a5021, не в транзисторе. Проблема в вероятности возникновения высокой суммарной нагрузке по току на МК при управлении сразу 6 MOSFETами по данной схеме. Двухлучевика у меня сейчас нет, чтобы потестировать на МК вероятность совпадения фронтов ШИМ на разных выводах.
Только на одном выводе МК, управляющем одним MOSFET ток свыше 90ма прыгает в Multisim. Да, недолго, очень кратковременно. Так что один вывод должен выжить. Шесть - боюсь сгорит AVR. Увеличение же резистора в затворе MOSFET приведит у увеличению времени преключения полевика. То есть увеличим нагрузку на MOSFET. Может быть и можно подобрать так резисторы, чтобы и МК и транзисторы оказались с допустимой нагрузкой, но считать было в лом.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате. Даже если брать в расчет эти 200мА, то установив сопротивление выход-затвор 150 Ом, мы не превысим этот ток.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате. Даже если брать в расчет эти 200мА, то установив сопротивление выход-затвор 150 Ом, мы не превысим этот ток.
Нет, это максимальный ток питания всего кристалла. Собственное потребление МК порядка 10ма. Рекомендую запас, хотя бы 20%. То есть ~150ма. И значит если берем 40ма с вывода МК, то так мы можем нагрузить не более трех выводов. При нагрузке в 40ма еще и четвертого МК может выйти из строя.
Повторяю еще раз, медленно и печально: у атмеги нет никакой возможности запустить разные таймеры на счет одновременно. Таймеры можно запускать только последовательно, один за другим, по мере выполнения некоего "запускающего" кода. Даже если бы это были полностью идентичные таймеры, проинициализированные одинаковым образом, то все события (переполнение, совпадение регистра сравнения и т.п.) генерируемые этими таймерами оказались бы смещены друг относительно друга на время равное разнице между моментами запуска. Таким образом, вышеприведенные расчеты, якобы учитывающие пиковое потребление, более всего соответствуют модели сферической сивой кобылы в вакууме. Очередной бред, одним словом.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате.
Это всё написано в даташите на микроконтроллер ATmega. Это ограничения именно микроконтроллера, а не платы ардуино и стабилизатора на ней.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате.
Это всё написано в даташите на микроконтроллер ATmega. Это ограничения именно микроконтроллера, а не платы ардуино и стабилизатора на ней.
a5021 опять демагогией занялся. Уже который раз оперирует догмами. Хоть бы раз ссылку на даташит привел. Жаль нет двухлучевика под рукой, так бы написал програмку синхронизации всех трех таймеров. Главное правильно такты просчитать, как быстро после прерывания от таймера 0 нужно запускать таймер 1 )
ME9926. цена за канал чуть дороже чем AO3400, но корпус более крупный, и паять проще и отвод тепла лучше. правда только до 20В
Ну это для больших любителей SDP и SOP. Я уже писал выше, что с такими корпусами связваться не намерен.
Поищи, например, стоимость макеток для SOP-8 и сравни со стоимостью обычных макеток. Которые еще и режутся как угодно. Это не считая того, что без SOP и SDP можно и на breadboard собрать схему.
a5021 опять демагогией занялся. Уже который раз оперирует догмами. Хоть бы раз ссылку на даташит привел.
Товарищ, до вас плохо доходит? Если таймеры запущены в разное время, то все события на них будут происходить так же в разное время. Здесь даже даташита не надо. Данный вывод можно сделать в рамках простейшей логики и на основе базовых знаний о функционировании цифровых устройств. Если вы не располагаете ни тем, ни другим, то кто ж вам тогда злобный буратино? Для вас все будет догмами, кроме, разве что, собственных утлых представлений о величии оптопары для управления мосфетом.
Теоретически, синхронизировать таймеры скорее всего возможно. Только это потребует дополнительных и значительных ухищрений. Абсолютно напрасный труд в рамках решаемой здесь задачи. Как раз таки "природный" рассинхрон таймеров естественным образом решает проблему пиковых нагрузок и благоприятно "размазывает" потребление по времени.
Теоретически, синхронизировать таймеры скорее всего возможно. Только это потребует дополнительных и значительных ухищрений. Абсолютно напрасный труд в рамках решаемой здесь задачи. Как раз таки "природный" рассинхрон таймеров естественным образом решает проблему пиковых нагрузок и благоприятно "размазывает" потребление по времени.
Нет там "природного" рассинхрона. Просто в wiring.c их инициализируют последовательно в функции init(). Но так как в начале функции уже вызывают sei(), то между двумя инициализациями может произойти прерывание. По миллиону причин. И возникнет ситуация, когда между запуском двух таймеров пройдет ровно цикл первого из них. Вот они и синхронизируются. А два синхронизированых случайно таймера - это уже синхронный передний фронт на четырех выходах при ШИМ. И Multisim мне показывает скачки до 391ма при четырех синхронных каналах. В два раза выше допустимого тока МК.
Малограмотный бред. В соответствии с ним, для само-синхронизации таймеров должно произойти такое высокоточное прерывание, полное время которого должно до такта точно соответствовать полному периоду счета таймера, плюс разница во времени запуска, минус время на вход/выход в/из обработчика. Больше на чудо похоже, чем на "вот они и синхронизируются".
Напомнило. Женщина, лет 50-ти на Тиане с третьей полосы поворачивает направо. Я по второй полосе ехал прямо. Направо разрешен поворот только с первой, правой полосы. И знаки и разметка есть. После того, как я не успел от нее увернуться, она выходит у удивленно заявляет "Я всегда так езжу и со второй полосы все едут направо! Почему Вы прямо поехали?!" )
Чтобы самому не быть малограмотным, учись, детка. То что может случиться, случиться обязательно. Рано или поздно, у тебя или нет, но случиться )
Больше на чудо похоже, чем на "вот они и синхронизируются".
Ты даже не представляшь, сколько я на таких чудес насмотрелся. Причем, вероятность их возникновения была на порядки меньше. Но когда они случались, клиенты выли, вопили и терпели убытки. И плевать им было на заявления Microsoft или Oracle, что вероятность такого события меньше одного на сотню миллиардов )
Почитай хотя бы, причины отзывов автопроизводителей. Когда из за вероятности один на миллион отзывают тысячи автомобилей.
Крайне интересной получается у нас беседа. Когда я конкретно и предметно говорю о том, что таймеры у меги не синхронизируются (факт хорошо известный тем, кто хоть немного знаком с этим МК), то это, по вашему мнению, догмы и демагогия. Зато когда вы начинаете плести про женщину 50-и лет за рулем, заявления Майкрософта и Оракла, отзывы автомобилей неназванными производителями, то это никакое не словоблудие, а железобетонные доказательства того, что таймеры у атмеги склонны к само-синхронизации? Вы в расчете на кого этот бред сюда выплескиваете?
Я только не разобрался пока, как вычислять оптимальный резистор от мк к затвору.
Чтобы не заморачиваться, упрощенный расчет можно вести по ограничению тока. То есть, если мы хотим ограничить ток заряда MOSFET 40ма (максимум для вывода ардуино) при напряжении питания 5 вольт, то значит управляем через резистор R=U/I=5/0.04=125Ом. Ближайший больший по E6 и E12 - 150 ом. Вот его и берем.
Ну вот и я раньше не заморачивался и тупо считал резистор исходя из разности потенциалов: скажем, при питании от литиевой батарейки ставил между выходом PIC12F683 и транзистором AO3400 резистор 150 или 180 Ω (4,2 В / 25 мA). Но там мне действительно было неважно, поскольку это переключатель токосъёмного резистора, а не ШИМ.
А потом я стал читать эти аппноуты. И увидел, что они рекомендуют значительно меньшие сопротивления (раз этак в 5).
Стал думать, почему. Залез в datasheet и посмотрел на длительность фронтов переключений. Думаю, что в них дело, но не уверен…
ME9926. цена за канал чуть дороже чем AO3400, но корпус более крупный, и паять проще и отвод тепла лучше. правда только до 20В
Ну это для больших любителей SDP и SOP. Я уже писал выше, что с такими корпусами связваться не намерен.
Поищи, например, стоимость макеток для SOP-8 и сравни со стоимостью обычных макеток. Которые еще и режутся как угодно. Это не считая того, что без SOP и SDP можно и на breadboard собрать схему.
А мне как раз SOP самый удобный из всех. Плату делать легко, паять легко, не надо никаких ухищрений. И места занимает относительно немного.
А с DIPами куча мучений. Если свою плату делать, то все эти дырки потом высверливать, потом выводы гнезда пропаивать, кучу места занимает, куча выводов торчит… А если на макетке, то ещё хуже. На сборку одной примитивной схемы таймера освещения (кроме самой Arduino mini — два длинных разъёма: один на выход, для подключения трёх светодиодных драйверов, и один на интерфейс: ИК-приёмник, пара кнопок и RGB-светодиод; разъём питания и семисегментный индикатор) у меня ушло часа 4. И это при том, что я тщательно продумал и нарисовал расположение деталей. Всё равно тянуть все эти проводочки между деталями — куча времени, к тому же неинтересно и некрасиво.
Ну её нафиг, в следующий раз даже на такие простые схемы буду рисовать разводку и травить плату. И каждая DIP деталь — это лишняя морока, лишний размер и лишнее уродство.
Вот когда мне действительно пока приходится покупать эти переходники — это когда на aliexpress нет нужных мне контроллеров в SOP, или они втрое дороже. Тогда приходится покупать SSOP. Припаять-то я её могу (хотя это, конечно, не так приятно), но плату пока делать не научился, нужно осваивать фоторезист.
На ME9926 я несколько раз заглядывался: часто бывает нужно именно два канала, очень удобно. Но каждый раз пересматривал ещё раз параметры, убеждался, что они хуже и дороже пары всё тех же AO3400, и останавливался.
Рекомендую запас, хотя бы 20%. То есть ~150ма. И значит если берем 40ма с вывода МК, то так мы можем нагрузить не более трех выводов. При нагрузке в 40ма еще и четвертого МК может выйти из строя.
Напрашивается простейшее решение.
Если не путаю, шесть выходов ШИМ поровну распределены по трём таймерам.
Возьми просто и измени период для двух из трёх таймеров (один, кажется, попутно считает millis(), так что его период менять нежелательно). Числа возьми не кратные друг другу. И всё! Даже если в какое-то одно мгновение два таймера сойдутся (а значит, ток через кристалл по условиям задачи пройдёт 10+4×40=170 мА), ничего страшного не произойдёт: такой ток даже постоянно идти должен без проблем (15% запаса остаётся), а тут всего лишь пик ничтожной длительности, после которого уже в следующем периоде они снова разойдутся. А уж чтобы все три таймера сошлись — такое совсем редко будет (например, 256×255×253=16515840, на частоте 500 Гц это раз в 9 суток). Пик 250 мА в течение нескольких наносекунд раз в 9 суток — могут убить мк?
Ещё вариант: период оставить совпадающим, но сразу после инициализации ШИМа (можно на это время отключить ключом общий провод гирлянды, а можно и просто выставить коэффициенты заполнения в ноль) обнулить счётчики таймеров один за другим. Поскольку частота ардуинного ШИМа очень мала, счётчики гарантированно не совпадут никогда: ведь частота совпадает, она задаётся периодом и предделителем, а начало отсчёта ты задаёшь сам, поверх неизвестной нам процедуры инициализации ардуино.
Я, правда, не знаю, как работает analogWrite — не перезаписывает ли она периоды и счётчики каждый раз. Если есть сомнения — не пользоваться ею, а задавать duty cycle тоже вручную.
Насколько я понимаю, общаться с периферией напрямую ты умеешь, так о чём ещё волноваться?
Тогда приходится покупать SSOP. Припаять-то я её могу (хотя это, конечно, не так приятно), но плату пока делать не научился, нужно осваивать фоторезист.
Совсем не обязательно осваивать резист. Платы под SSOP/TSSOP (расстояние между выводами 0.65мм) и под LQFP48/LQFP64 (0.5мм) прекрасно получаются и обычным ЛУТом (плюс лужение паяльником).
Площадку под TSSOP20 можно наблюдать в центре платы.
PS. Когда топикстартер спросил у меня, пробовал ли я сам паять SOT23, будто это какое-то особо-редкое умение, я чуть не подавился от неожиданности.
А вообще, насколько я понимаю, сама ардуина именно так и делает: инициализирует таймеры по очереди, либо когда ты вызываешь analogWrite, либо при старте. Я просто не представляю, как она может сделать иначе — она же не может выполнить одновременно три команды обнуления или запуска трёх разных таймеров! А поскольку частоты совпадают (ибо все таймеры опираются на тактовую частоту мк), практически нет шансов, что когда-либо переключения произойдут одновременно.
Если уж совсем строго — такое возможно только если выполнены все условия:
1. Расстояние по времени между запусками таймеров (всех трёх!!!) целое число раз укладывается в период ШИМа (это уже само по себе практически недостижимо).
2. Duty cycle у PWM0 и PWM1 (опирающихся на таймер 0) совпадают.
3. Duty cycle у PWM2 и PWM3 (опирающихся на таймер 1) совпадают.
4. Duty cycle у PWM4 и PWM5 (опирающихся на таймер 2) совпадают.
5. Duty cycle PWM2/PWM3 ровно на столько меньше duty cycle PWM0/PWM1, сколько раз отставание во включении таймера 1 от таймера 0 укладывается в период ШИМа.
6. Duty cycle PWM4/PWM5 ровно на столько меньше duty cycle PWM0/PWM1, сколько раз отставание во включении таймера 2 от таймера 0 укладывается в период ШИМа.
В таком и только таком случае мк получит очень короткие пики перегрузки 250 мА (с частотой ШИМа), разряжая на землю одовременно все шесть затворов. На плюс, однако, они никак не совпадут.
Можешь представить, какова вероятность исполнения всех условий одновременно?
Например: таймер 1 запустился ровно через 32768 тактов после таймера 0, ещё через столько же тактов запустился таймер 2. Именно 32768, ни единицей меньше или больше!
Дальше мы задаём digitalWrite на пины первой пары, скажем, 3, на пины второй пары 2, на пины третьей пары 1. Получаем синхронизацию перехода в «тёмную» фазу:
0███▄▄▄…▄▄▄255
0▄██▄▄▄…▄▄▄255
0▄▄█▄▄▄…▄▄▄255
Совсем не обязательно осваивать резист. Платы под SSOP/TSSOP (расстояние между выводами 0.65мм) и под LQFP48/LQFP64 (0.5мм) прекрасно получаются и обычным ЛУТом (плюс лужение паяльником).
Площадку под TSSOP20 можно наблюдать в центре платы.
Ух ты, здорово.
Я первые свои платы делал ЛУТом, но мне очень не понравились подтравы по толстым дорожкам. У меня новый принтер, там невозможно отключить экономию тонера на больших участках. На работе пробовал — не лучше. Замазывал фломастером — частично решает проблему, но как-то ненадёжно.
А потом я решил попробовать новый способ. Я на работе, кроме прочего, работаю с лазерным станком (на CO₂-лазере), в основном его у нас используют, чтобы наклейки резать, редко пластмассу. Я наклеил обычную тонкую плёнку на плату и прорезал лазером дорожки. Вытянул промежутки одним «кружевом». Затем зубной щёткой со спиртом убрал остатки спирта, и вытравил.
С тех пор только так и делаю платы. Получается довольно быстро и надёжно. Тем же лазером я сразу и кондуктор (трафарет) готовлю (из листа формайки) для высверливания отверстий; пока этот способ не придумал, кучу плат испортил съезжающим с места сверлом.
Одна загвоздка: слишком тонкие дорожки (меньше 0,5 мм) могут сползти, а слишком узкие промежутки (меньше 0,4 мм) не дают возможность вычистить как следует остатки клея. Хуже всего — длинные изогнутые тонкие дорожки с узкими промежутками, а именно такая картина выходит на SSOP. Начинаешь чистить — дорожки сдвигаются. SOP, SOT23 выходят отлично, но шага меньше 1 мм я вряд ли добьюсь.
В общем, надо или возвращаться на ЛУТ, но решать проблему подтрав (может, как у тебя — сеточкой их делать? Но не хотелось бы так делать силовые дорожки в цепях светодиодных драйверов), или осваивать фоторезист. У меня, в принципе, уже всё для этого есть (долгое время не мог достать transparencies… забыл, как это по-русски… но теперь и они уже есть).
Правильно ли я понимаю, что выходы не сгорают из-за пологости фронтов переключения самих выходов?
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
Я вот сейчас прикинул.
Возьмём, к примеру, тот же AO3400. Ёмкость затвора у него 630 пФ. При сопротивлении 10Ω (думаю, что у открытых каналов транзисторов выводов мк сопротивление не меньше) выходит RC=6,3 нс. За время 20 нс затвор заряжается / разряжается на 95%. А время фронтов выходного сигнала самих портов (у PIC, на мегу не проверял) — 15 нс. Так что, скорее всего, для таких транзисторов действительно нет нужды в большем сопротивлении между мк и затвором.
Но я не уверен, что правильно прикинул. Хотелось бы строго математически просчитать реакцию конденсатора известной ёмкости через известное сопротивление на меняющийся с известной скоростью сигнал, но я не соображу как.
Таймер 0 инициализируется в режиме FAST PWM и счетчик считает до FF, после чего генерируется прерывание. Это, кстати, единственное прерывание, которое прописано в таблице прерываний на момент выполнения init(). Никаких других прерываний во время выполнения init() возникнуть не может.
Теперь посчитаем, может ли прерывание от таймера 0 вознинуть раньше, чем стартует таймер 1. Топикстартер плел что-то про некие волшебные прерывания, которые навалившись кучей могут так нагрузить ядро, что очередь до старта таймера 1 дойдет только аккурат при переполнении таймера 0 и таким образом таймеры синхронизируются сами собой. Проверим, может ли такая ситуация возникнуть не в воспаленной фантазии топикстартера, а в реальном ардуине.
Так как на вход таймера 0 (равно, как и на остальные таймеры) подается тактовая частота поделенная прескалером на 64 (биты CS00 + CS01), то таймер тикает через каждые 64 такта главного генератора и сообразно может генерировать события с такой же дискретностью. Тупо посчитав команды в листинге, которые разделяют старт таймера 0 и таймера 1 можно прикинуть время, через которое таймер 1 стартует после таймера 0. В листинге между стартами таймеров 14 команд. Мне сейчас лень смотреть сколько тактов занимает выполнение той или иной команды, но приняв, что большинство команд атмеги выполняется за один такт, набросим чуть-чуть и посчитаем условно, что таймер 1 стартует где-то через 14-20 тактов после старта таймера 0. Таким образом, к моменту старта таймера 1, таймер 0 не успеет досчитать даже до единицы и никаких событий (прерываний) не в состоянии генерировать в принципе.
Еще через ~13-20 тактов стартует таймер 2. Выходит и он ухитряется запуститься раньше, чем таймер 0 досчитает хотя бы до 1.
И вот в этот момент для нашего большого специалиста по совпадениям вырисовывается совсему уже безрадостная картина: никакие события таймеров (прерывания, передние или задние фронты шим-сигналов и т.д) не могут случиться одновременно хотя бы у двух таймеров (не говоря уже про трех), т.к. вся троица стартовала с разницей по времени не кратной 64-м тактам.
На этом в истории с глупыми придумками насчет удивительных совпадений, можно поставить точку.
Плевая тема с тремя вариантами в первом посту превратилась в научное исследование на тему ПОДКЛЮЧЕНИЯ ЛЕД ЛЕНТЫ ВАНДАЛАМИ ЛЕТ 12-14 для РАБОТЫ В ЖЕСТКИХ УСЛОВИЯХ КРАЙНЕГО КОСМОСА ПРИ ЯДЕРНОЙ БОМБАРДИРОВКЕ С БЮДЖЕТОМ до 300р.
Я когда свои ленты подключал через MOSFETы , выдранные со старой материнки не знал , что все так сложно.... И как эти ленты работают уже лет 5 ????
аналогично)
Ваша схема ptr нерабочая, скорей всего сгорит сразу. Проблема не в том, что она с двухтактным усилком, а в том что она медленная. Фронты будут затянуты. Вы неверно прикинули ток базы Т2 например, он скорей всего толком вобще не откроется. Потому и получатся те проблемы - сквозной ток, перегрев полевика и т.д. о которых вам пишут. Это реальным опытом делятся, т.к. любителей тулить оптопары куда не попаде ("для какбычегоневышловдруг") на форуме валом, потому и опыта много. Оптрон не просто лишние деньги, он еще и источник некоторых проблем, причем совершенно не нужных. И нахрена Вам гальваноразвязка между контроллером (гальваноразвязаным от внешнего мира) и питанием ленты (также гальваноразвязаным)? Хотите попрыгать по граблям - ваше право. Узнаете например что такое проходная емкость оптрона и как через неё переменка от импульсного БП шурует в базу фототранзистора. Если ищите приключения - паяйте как хотите, если нужно провереное рабочее решение - вам схему показали.
Давайте посмотрим реальные характеристики PC817:
http://lib.chipdip.ru/048/DOC000048492.pdf
1. По поводу проходной емкости вообще непонятно для чего вы эту тему подняли - она даже при самых неудачных раскладах составляет всего 1.0 пФ. Вообще к чему эта постановка ненужной проблемы - "переменка от импульсного блока питания шурует на базу транзистора оптрона" - может человек вообще будет питать свой девайс от аккумуляторов.
Да хоть от Днепрогеса пусть питает. Но заявлено "А светодиодная ленты кормятся от своего мощного БП, скорее всего китайского и весьма паршиво стабилизированного." Из этого и расчет.
Расчет реактивного сопротивления проходной емкости 1пФ на 1Мгц X=1/2*Pi*f*C=167КОм. Ток в базу фототранзистора при напряжении помехи U=12В Ib=U/X=70мкА. Ток коллектора при усилении h=50 Ik=h*Ib=3,5мА. Итого при наличии между 2 развязываемыми цепями помехи описываемой как 1Мгц 12В помеховый ток на выходе оптрона пошти в 2 раза выше чем рабочий.
2. Да, оптрон действительно медленный, максимальное время нарастания или спада - 18 микросекунд, что в сумме за один такт даст 36 микросекунд, округлим в большую сторону, получается 40 микросекунд, при частоте, например, 250 герц, мы получаем общее время переходных процессов за секунду равное 0.01 секунде, мощность которая идет на схему равна при 3 амперах и 12 вольтах - 36 ваттам, даже если предположить что во время переходного процесса все 12 вольт падают на транзистор (а они на самом деле перераспределяются между транзистором и лентой) то получается что на транзисторе рассеивается за счет переходных процессов 0.36 ватта.
Плохо считаете. 40мксек - это при номинальных токах оптрона. При выбраных будет хуже. К 40мксек надо добавить время переключениея двухтактника (при указаных номиналах не быстро), время зарядки затвора через выбранный резистор и т.д. Кроме того в течении переходного процесса оба транза двухтактника будут открыты, они и сгорят первые.
3. С учетом того что оптрон отностительно дешевый и распространенный, то использовать его в данной схеме для согласования между 5 вольтовой ардуино и 12 вольтовой частью управляющей транзистором вполне оправдано.
Бред. Оптрон не применяют для согласования, он применяется для гальваноразвязки. Аргумент про "отностительно дешевый и распространенный" - чепуха. Щебень тоже дешев и распостранен - навалите его. Непонятно только зачем. Но оптрон там тоже непонятно зачем.
4. По поводу "двухтактного усилка" - я не знаю для кого как медленная или быстрая, если вы утверждаете что она медленная - хотя бы время нарастания и спада привели бы. Вот оптрон PC817 тоже медленный, а для управления светодиодной лентой он вполне подходит.
Нахрена оно мне? Я в своих схемах и решениях уверен, они проверены практикой, о чем я и пишу. Если чел обращается с вопросом как лучше - я всегда рад подсказать. Если чел публикует свою схему и просит поругать тоже не проблема - отписал: схема не рабочая, 80% процентов деталей на ней лишние, номиналы неверны, подход порочный, пользуйтесь провереными решениями. Лишние детали порождают лишние проблемы. А сидеть и считать его схему - оно мне надо? Хочет понабивать шишек - так пожалуста. Держать его заруки чтоб не спалил я не собираюсь. Дальнейшую дискусию вести не считаю нужным. Привет!
Для особо наблюдательных, которые любят читать надписи мелким шрифтом, подал на затвор меандр 100кгц. Генератор изображает ШИМ-выход ардуины -- логические уровни -- 0.3в и 4.7в.
Прошу прощения, Вы явно пропустили, что не только данная тема, а весь форум посвящен Ардуино, у которой частота ШИМ 490Гц. Вы бы еще 2.4 гигагерца тут протестировали )))
Нахрена оно мне? Я в своих схемах и решениях уверен, они проверены практикой, о чем я и пишу. Если чел обращается с вопросом как лучше - я всегда рад подсказать. Если чел публикует свою схему и просит поругать тоже не проблема - отписал: схема не рабочая, 80% процентов деталей на ней лишние, номиналы неверны, подход порочный, пользуйтесь провереными решениями. Лишние детали порождают лишние проблемы. А сидеть и считать его схему - оно мне надо? Хочет понабивать шишек - так пожалуста. Держать его заруки чтоб не спалил я не собираюсь. Дальнейшую дискусию вести не считаю нужным. Привет!
Я с вами категорически не согласен, но поскольку не хотите вести дискуссию, то и не будем ее вести.
Утомили. Загнал свою схему в Multisim. PC817 я там не нашел, но CNY17F оказался весьма близок по параметрам. Извращаться не стал, поставил частоту ШИМ в 1КГц (двукратный запас). Больше не нужно, однозначно. Сразу выявилась проблема медленного закрытия MOSFET.
Исходя из этого, добавил резистор в 2К в затвор MOSFET
Сигнал сразу стал существенно симпатичней:
Очевидно, что на частоте выше 10КГц медленный оптрон просто не успеет включаться. У CNY17FTurn-off time 25 мкс при 5ма (у PC817 в даташите стоит 18 мкс при 2ма). Но на 10КГц (0.1мс на период) он еще работает, с явно видимым сдвигом фазы:
Замеры токов на двухтактнике показали, что больше 20ма там не возникает в принципе. И каким образом могут одновременно открыться два транзистора разной проводимости, когда у них базы и эммитеры соответственно соединены - не понимаю.
В дополнение, данные исследования показали, что применение PC817 лимитировано 10КГц. Причем этот лимит, само собой, может плавать в зависимости от партии или производителя. Посему настоятельно не рекомендую использовать PC817 или его аналоги на частотах выше 5Кгц. Применение же его на шататных 490Гц частоты ШИМ Ардуино никаких проблем вызывать не должно.
Схема у вас неправильная. При закрытом оптроне полевик будет всегда открыт. Я бы поменял их местами- PNP наверх, NPN вниз. И заново смоделировать.
При закрытом оптроне полевик будет всегда открыт.
Именно этого я и хотел. Чтобы при выключенной Ардуино RGB лента светилась белым светом.
Ну тады ой)
Я что-то путаю или это именно вы изначально хотели посмотреть "на какой частоте ток OUT превысит 40ма" ? Странное дело, но в тот момент вас почему-то совершенно не беспокоило, что "весь форум посвящен ардуино". Зато какие страдания теперь на лице -- любо дорого посмотреть.
Попутно информирую, что 490 Гц -- это частота ШИМа, который генерируется функцией analogWrite(), из чего совершенно не следует, что только такую частоту и способен генерировать Ардуино. Код из нескольких строк в Arduino IDE элементарно организует ШИМ-сигнал частотой в 100кгц на соответствующих выводах ардуины и никакого канона это не нарушает, сколь бы вы ни тужились представить дело обратным образом.
Я что-то путаю или это именно вы изначально хотели посмотреть "на какой частоте ток OUT превысит 40ма" ?
На любой частоте, даже 1Гц Ваша схема может породить ток на выводе МК свыше 40ма, точнее даже 50ма, так как 5V/100= 50ma
Скорее всего, при управлении только одним выводом, это ни к чему страшному не приведет из-за непродолжительности данного тока. То есть, если продолжительность данного импульса 10мкс, то при частоте 500Гц за секунду наберется всего 5мс и при соотношении 1:200 AVR выживет. Если повезет.
При управлении же, как в моем случае, одновременно шестью выводами, это может породить пиковый ток по всему кристаллу до 300ма. И вероятность смерти МК в этом случае вполне реальна.
Код из нескольких строк в Arduino IDE элементарно организует ШИМ-сигнал частотой в 100кгц на соответствующих выводах ардуины
Чтобы не оказаться лгуном, просьба привести данный элементарный пример. Очень хотелось бы узнать, как на шести выводах 16МГц AMR получить частоту ШИМ больше 32КГц. А на выводах 5 и 6 свыше 62.5КГц.
Математику ведь не обманете. 16,000,000/256=62500 - больше частота ШИМ, регулируемая от 0 до 255 быть физически не может.
Вы совсем ничего не читаете? Только пишете? Я вам "осциллограмму" с модели привел. Там иголка если и поднимается выше 40ма, то на 1-2ма и крайне скоротечно. Кто и что способен "породить" в ваших фантазиях, оставим на вашей же совести.
В данном случае ничто так не реально, как сам факт существования ваших удивительных фантазий. Сжечь ардуину или хотя бы единственный пин не так просто, как вы тут пытаетесь изобразить. Даже на этом форуме полно схематических прорывов, когда для коммутации нагрузки прямо на пин вешают базу NPN-транзистора, включенного по схеме с общим эмиттером. При этом замечания вида "так не делается", изобретателями схем отметаются на том основании, что "оно и так великолепно работает".
Вы понимаете, о чем я говорю? Высокий уровень у такого изобретателя через эмиттерный переход шпарит прямо в землю и никто не убивается, что ток превышает рекомендованные 40ма. У меня вообще есть подозрение, что сопротивление верхнего мосфета выходного формирователя ардуины и составляет где-то эти самые 100ом, т.ч. пин физически не в состоянии отдавать ток больше 50ма. Если это так, то пин можно заземлять и подавать туда высокий уровень -- ардуине будет пофигу.
От того, чтобы не страдать мнительностью и не подозревать за другими то, что им не свойственно, очень помогает изучение матчасти.
Вот скетч, который выдает 100кгц ШИМ с 30% заполнением на 9 пине ардуины.
01
void
setup
() {
02
03
pinMode(9, OUTPUT);
04
05
// Timer/Counter 1 initialization
06
// Clock value: 16000,000 kHz
07
// Mode: Fast PWM top=ICR1
08
// OC1A output: Non-Inverted PWM
09
// OC1B output: Disconnected
10
// Timer Period: 0,01 ms
11
// Output Pulse(s):
12
// OC1A Period: 0,01 ms Width: 3,0189 us
13
// Timer1 Overflow Interrupt: Off
14
// Input Capture Interrupt: Off
15
// Compare A Match Interrupt: Off
16
// Compare B Match Interrupt: Off
17
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (0<<WGM10);
18
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
19
ICR1H=0x00;
20
ICR1L=0x9F;
21
OCR1AH=0x00;
22
OCR1AL=0x30;
23
}
24
25
void
loop
() {
26
// toggle pin9 PWM output
27
TCCR1A ^= (1<<COM1A1);
28
delay(1000);
29
}
Для удобства наблюдений в loop() ШИМ включается/выключается каждую секунду.
Я вон там, в примере выше, явил чудо -- ШИМ 100кгц. А за разрядность именно в 8-бит разговора не было. Разумется, на 100кгц доступно только 160 шагов изменения коэффициента заполнения.
Там иголка если и поднимается выше 40ма, то на 1-2ма и крайне скоротечно.
А значит ваша схема не соответствует требованиям AMTEL. Следовательно, вероятность выхода из строя МК в этой схеме явно не нулевая, про что явно сказано в даташит:
Если же говорить о шести каналах, чему посвящена вся ветка, то у вас "скоротечно" возникает ток до 300ма при 200ма заявленого максимума. Так, в полтора раза превышение, фигня какая )
А мне с детства вдолбили в голову, что без 20% запаса схема одобрена не будет. И более, чем на (200-12)*0.8=150ма мне ардуину и в голову не прийдет грузить. Итого в ДВА РАЗА!
При этом замечания вида "так не делается", изобретателями схем отметаются на том основании, что "оно и так великолепно работает".
Самому не стыдно? Можно и на светодиод сразу 5 вольт подать без резистора. Я думаю, даже не сгорит сразу )))
От того, чтобы не страдать мнительностью и не подозревать за другими то, что им не свойственно, очень помогает изучение матчасти.
Где вы мнительность нашли? Я просто никому, даже себе не верю на слово. Это критичность мышления называется. Пока нет подтверждение каких-то слов - они для меня ничего не значат. И человек, утверждающий что-либо и ни как не аргументирующий свое заявление уважения не вызывает.
Благодарю. До Fast PWM mode я в даташите не дошел еще. Для моих задач стандартных 490Гц вполне хватало. Ардуиной занимаюсь все же на досуге и всего три месяца.
Про свою схему я и не обещал, что она чему-то там будет соответствовать. Напомню, я намеренно взял более "тяжелый" мосфет с емкостью затвора в полтора раза большей, чем IRL540 из детской книжки. Но даже в этом случае "несоответствие требований" заключается в превышении на 2.6ма (в пике) в течение 40 наносекунд. И это на идеальной модели. В реальных условиях пики по 40 наносекунд тупо размажутся емкостью и индуктивностью монтажа + прочие несовершенства.
С другой стороны, если вы бескомпромиссный борец за соответствие требованиям АТМЕЛ, никто вам не мешает поставить в затворы резисторы по 220 ом и ограничить ток пина двадцатью миллиамперами. Да, фронты растянутся в три раза, но вам же шашечки, а не ехать, т.ч. для вас это должно стать отменным решением.
Я ранее предположил, что реальный ток пина ограничен значением где-то в 50ма. Немного ошибся. Многочисленные источники в интернете утверждают, что у них получалось снимать до 80ма долговременно без повреждения чипа. На этом фоне мои 42.6ма в течении 40 наносекунд смотрятся особенно мрачно, не правда ли?
Вам в беспокойном сне привиделось, что пиковое потребление у вас случится по всем пинам ШИМ-каналов синхнонно? У амтеги таймеры не синхронизируются, т.ч. даже сильно захотев, вы не получите пикового потребления в соответствии с нарисованной вами аппокалиптической картиной. Максимум из возможного -- синхронное переключение двух каналов одного таймера. Итого, 80 миллиамер с хвостиком.
Жаль, что в том же возрасте вам не вдолбили в голову, что сначала матчасть, а потом споры, но не наоборот.
Мне-то чего стыдится? Это не я снимаю по два урожая с одного пина. Иллюстрация же была на тему "спалить пин перегрузкой сложно", но отнюдь не "вот, как нужно делать". В принципе, я все это сразу оговорил и отчего вы меня тут стыдить взялись, ума не приложу.
И где она была, когда вы рисовали вашу схему "драйвера светодиодных лент" ? А главное, где она теперь, когда вместо того, чтобы признать ее полную ущербность, вы начинаете выдвигать все новые и новые условия с таким расчетом, чтобы подогнать ТЗ под имеющийся результат. Вы мне чего хотите говорите, но это никакая не критичность мышления, а нечто совсем иное.
вместо того, чтобы признать ее полную ущербность, вы начинаете выдвигать все новые и новые условия с таким расчетом, чтобы подогнать ТЗ под имеющийся результат.
Схема полностью соответствуюет условиям изложенным в начале темы. Ничего разумного, кроме признания себя шизофреником в первом же своем посте, ты тут еще ни разу не написал. А вот новые условия (по частоте, по нагрузке МК и его выводов и т.п) навыдвигал пачками, хотя никто тебя об этом не просил. Не знаю, как у остальных, но у меня уже не осталость к такому демагогу, как ты, ни малейшей капли уважения. Все, игнор.
Черт, везет мне на неадекватов. :(
Ответте на вопрос - как быстро выгорит транзистор по этой схеме в режиме ШИМ? А потом про бредовый бред поговорим. Где он бредовее.
Отвечаю. Не выгорит никогда, если нагрузка и напряжение будет в рабочем диапазоне транзистора. Частота ШИМ на ардуино, всего 490Гц, такую чатоту даже учитывать не обязательно. Сам пользую эту схему и для светодиодов, и для паяльной станции, работает и ничего не греется уже не первый год.
Отвечаю. Не выгорит никогда, если нагрузка и напряжение будет в рабочем диапазоне транзистора. Частота ШИМ на ардуино, всего 490Гц, такую чатоту даже учитывать не обязательно. Сам пользую эту схему и для светодиодов, и для паяльной станции, работает и ничего не греется уже не первый год.
Проблема схемы, предложенной a5021, не в транзисторе. Проблема в вероятности возникновения высокой суммарной нагрузке по току на МК при управлении сразу 6 MOSFETами по данной схеме. Двухлучевика у меня сейчас нет, чтобы потестировать на МК вероятность совпадения фронтов ШИМ на разных выводах.
Только на одном выводе МК, управляющем одним MOSFET ток свыше 90ма прыгает в Multisim. Да, недолго, очень кратковременно. Так что один вывод должен выжить. Шесть - боюсь сгорит AVR. Увеличение же резистора в затворе MOSFET приведит у увеличению времени преключения полевика. То есть увеличим нагрузку на MOSFET. Может быть и можно подобрать так резисторы, чтобы и МК и транзисторы оказались с допустимой нагрузкой, но считать было в лом.
не нужнотопить атмосферу, увеличьте резисторы подтяжки в 50-1000 раз. Глядишь, и ардуине тоже станет жить немного легче.
Это не моя схема. Я остановился на двухтактной раскачке MOSFET с полной гальванической развязкой от силовой цепи и нагрузкой на ардуиновские порты по 2ма
однако это и не схема от a5021
Надо быть внимательнее, коли критиковатьнадумали
однако это и не схема от a5021
Надо быть внимательнее, коли критиковатьнадумали
Вы устраиваете тут кому-то экзамен? Или вы просто хотите кого-то обидеть? Или вы просто догматик, утверждающий что-то не приводя доказательств?
мда .... веселуха . аднако
а как вчера душевно о правилах хорошего тона писал .... прям слезу выбивало ...
Ещё, как вариант, почти по той же цене есть AO3402 (n) и AO3403 (p) — у них примерно вдвое больше сопротивление канала, но зато настолько же меньше и ёмкость затвора. Так что для быстрого ШИМа в пределах 1A лучше брать их.
Я только не разобрался пока, как вычислять оптимальный резистор от мк к затвору. В одной из application notes у Microchip (AN1047 Buck-Boost LED driver using the PIC16F785) рекомендуют всего 10Ω (при частоте 250 кГц, с транзистором NDC651N, у которого ёмкость затвора чуть больше чем у AO3402); по идее, на пике должен быть большой ток, выше допустимого для выходов мк предела (у PIC он ещё ниже, чем у ATMEGA). Правильно ли я понимаю, что выходы не сгорают из-за пологости фронтов переключения самих выходов?
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
мда .... веселуха . аднако
а как вчера душевно о правилах хорошего тона писал .... прям слезу выбивало ...
Если я Вас чем то обидел - извиняюсь. Но фраза "однако это и не схема от a5021" без указания, какие именно отличия данной схемы важны для оценки суммарной загрузки шестью ШИМ каналами всего МК, выглядит самой настоящей догмой )
прямо перед тем постом и был пост, где указано отличие, и было написано, как его можно принципиально исправить.
в схеме a5021 резистор с затвора на землю 100 кОм, а у тебя 100 Ом
Нужно объяснять, что при такой замене расчеты потерь на управление полевиком дадут существенно разные результаты?
в схеме a5021 резистор с затвора на землю 100 кОм, а у тебя 100 Ом
Нужно объяснять, что при такой замене расчеты потерь на управление полевиком дадут существенно разные результаты?
Тут вы не совсем правы. От этого резистора зависит только пиковый ток разрядки затвора MOSFET. Пиковый ток зарядки же от этого резистора не зависит. Причем, что печально, чем больше этот резистор, тем выше пиковый ток разрядки. А значит и суммарный пиковый ток будет выше. Был 437ма, а стал 586ма.
В качестве доказательства:
Я только не разобрался пока, как вычислять оптимальный резистор от мк к затвору.
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
Затвор MOSFET - это емкость. Как и у любой емкости, во время зарядки и разрядки через нее течет ток. Пиковый ток зарядки I=U/R, где U - разность потенциалов на выводе кондесатора в заряженном и разряженном состоянии, а R сопротивление. Если без резистора, то значит выходное сопротивление порта МК. Само собой, порт МК не способен выдать чистый прямоугольник. Время нарастания фронта у ардуино не мгновенно, поэтому и пиковый ток зарядки будет ограничен.
Таким образом, ток затвора MOSFET зависит от:
1. Сопротивления цепи затвора
2. Емкости затвора
3. Скорости нарастания и спада управляющего напряжения
Чтобы не заморачиваться, упрощенный расчет можно вести по ограничению тока. То есть, если мы хотим ограничить ток заряда MOSFET 40ма (максимум для вывода ардуино) при напряжении питания 5 вольт, то значит управляем через резистор R=U/I=5/0.04=125Ом. Ближайший больший по E6 и E12 - 150 ом. Вот его и берем.
Далее, MOSFET управляется потенциалом. Следовательно, не всякий MOSFET может полностью открыться от 5 вольт и, тем более, от 3.3 вольта. Причем, чем больше потенциал затвора, тем больше допустимый ток между стоком и истоком. Управляя одним и тем же IRL530 5 вольтами максимальный коммутируемый ток может быть 2.5 ампера, а 12 вольтами - уже 15 ампер.
А без резистора к затвору ардуина непродолжительно время выживет. Просто потому, что ее выходы выдерживают значительные кратковременные перегрузки. Но делать так я не рекомендую )
Проблема схемы, предложенной a5021, не в транзисторе. Проблема в вероятности возникновения высокой суммарной нагрузке по току на МК при управлении сразу 6 MOSFETами по данной схеме. Двухлучевика у меня сейчас нет, чтобы потестировать на МК вероятность совпадения фронтов ШИМ на разных выводах.
Только на одном выводе МК, управляющем одним MOSFET ток свыше 90ма прыгает в Multisim. Да, недолго, очень кратковременно. Так что один вывод должен выжить. Шесть - боюсь сгорит AVR. Увеличение же резистора в затворе MOSFET приведит у увеличению времени преключения полевика. То есть увеличим нагрузку на MOSFET. Может быть и можно подобрать так резисторы, чтобы и МК и транзисторы оказались с допустимой нагрузкой, но считать было в лом.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате. Даже если брать в расчет эти 200мА, то установив сопротивление выход-затвор 150 Ом, мы не превысим этот ток.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате. Даже если брать в расчет эти 200мА, то установив сопротивление выход-затвор 150 Ом, мы не превысим этот ток.
Нет, это максимальный ток питания всего кристалла. Собственное потребление МК порядка 10ма. Рекомендую запас, хотя бы 20%. То есть ~150ма. И значит если берем 40ма с вывода МК, то так мы можем нагрузить не более трех выводов. При нагрузке в 40ма еще и четвертого МК может выйти из строя.
Повторяю еще раз, медленно и печально: у атмеги нет никакой возможности запустить разные таймеры на счет одновременно. Таймеры можно запускать только последовательно, один за другим, по мере выполнения некоего "запускающего" кода. Даже если бы это были полностью идентичные таймеры, проинициализированные одинаковым образом, то все события (переполнение, совпадение регистра сравнения и т.п.) генерируемые этими таймерами оказались бы смещены друг относительно друга на время равное разнице между моментами запуска. Таким образом, вышеприведенные расчеты, якобы учитывающие пиковое потребление, более всего соответствуют модели сферической сивой кобылы в вакууме. Очередной бред, одним словом.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате.
Это всё написано в даташите на микроконтроллер ATmega. Это ограничения именно микроконтроллера, а не платы ардуино и стабилизатора на ней.
Максимальная нагрузка на один выход не более 40мА, это я нашел где написано. Где то видел, что общая нагрузка не должна превышать 200мА, но это, как мне кажется, было написано для конкретной платы, типа arduino pro mini или еще какой то, этот ток ограничен максимальным током стабилизатора на плате.
Это всё написано в даташите на микроконтроллер ATmega. Это ограничения именно микроконтроллера, а не платы ардуино и стабилизатора на ней.
Спасибо, нашел http://www.e-lab.de/downloads/DOCs/mega328P.pdf страница 365
a5021 опять демагогией занялся. Уже который раз оперирует догмами. Хоть бы раз ссылку на даташит привел. Жаль нет двухлучевика под рукой, так бы написал програмку синхронизации всех трех таймеров. Главное правильно такты просчитать, как быстро после прерывания от таймера 0 нужно запускать таймер 1 )
ME9926. цена за канал чуть дороже чем AO3400, но корпус более крупный, и паять проще и отвод тепла лучше. правда только до 20В
ME9926. цена за канал чуть дороже чем AO3400, но корпус более крупный, и паять проще и отвод тепла лучше. правда только до 20В
Ну это для больших любителей SDP и SOP. Я уже писал выше, что с такими корпусами связваться не намерен.
Поищи, например, стоимость макеток для SOP-8 и сравни со стоимостью обычных макеток. Которые еще и режутся как угодно. Это не считая того, что без SOP и SDP можно и на breadboard собрать схему.
Товарищ, до вас плохо доходит? Если таймеры запущены в разное время, то все события на них будут происходить так же в разное время. Здесь даже даташита не надо. Данный вывод можно сделать в рамках простейшей логики и на основе базовых знаний о функционировании цифровых устройств. Если вы не располагаете ни тем, ни другим, то кто ж вам тогда злобный буратино? Для вас все будет догмами, кроме, разве что, собственных утлых представлений о величии оптопары для управления мосфетом.
Теоретически, синхронизировать таймеры скорее всего возможно. Только это потребует дополнительных и значительных ухищрений. Абсолютно напрасный труд в рамках решаемой здесь задачи. Как раз таки "природный" рассинхрон таймеров естественным образом решает проблему пиковых нагрузок и благоприятно "размазывает" потребление по времени.
Теоретически, синхронизировать таймеры скорее всего возможно. Только это потребует дополнительных и значительных ухищрений. Абсолютно напрасный труд в рамках решаемой здесь задачи. Как раз таки "природный" рассинхрон таймеров естественным образом решает проблему пиковых нагрузок и благоприятно "размазывает" потребление по времени.
Нет там "природного" рассинхрона. Просто в wiring.c их инициализируют последовательно в функции init(). Но так как в начале функции уже вызывают sei(), то между двумя инициализациями может произойти прерывание. По миллиону причин. И возникнет ситуация, когда между запуском двух таймеров пройдет ровно цикл первого из них. Вот они и синхронизируются. А два синхронизированых случайно таймера - это уже синхронный передний фронт на четырех выходах при ШИМ. И Multisim мне показывает скачки до 391ма при четырех синхронных каналах. В два раза выше допустимого тока МК.
Малограмотный бред. В соответствии с ним, для само-синхронизации таймеров должно произойти такое высокоточное прерывание, полное время которого должно до такта точно соответствовать полному периоду счета таймера, плюс разница во времени запуска, минус время на вход/выход в/из обработчика. Больше на чудо похоже, чем на "вот они и синхронизируются".
Малограмотный бред.
Напомнило. Женщина, лет 50-ти на Тиане с третьей полосы поворачивает направо. Я по второй полосе ехал прямо. Направо разрешен поворот только с первой, правой полосы. И знаки и разметка есть. После того, как я не успел от нее увернуться, она выходит у удивленно заявляет "Я всегда так езжу и со второй полосы все едут направо! Почему Вы прямо поехали?!" )
Чтобы самому не быть малограмотным, учись, детка. То что может случиться, случиться обязательно. Рано или поздно, у тебя или нет, но случиться )
Больше на чудо похоже, чем на "вот они и синхронизируются".
Ты даже не представляшь, сколько я на таких чудес насмотрелся. Причем, вероятность их возникновения была на порядки меньше. Но когда они случались, клиенты выли, вопили и терпели убытки. И плевать им было на заявления Microsoft или Oracle, что вероятность такого события меньше одного на сотню миллиардов )
Почитай хотя бы, причины отзывов автопроизводителей. Когда из за вероятности один на миллион отзывают тысячи автомобилей.
Крайне интересной получается у нас беседа. Когда я конкретно и предметно говорю о том, что таймеры у меги не синхронизируются (факт хорошо известный тем, кто хоть немного знаком с этим МК), то это, по вашему мнению, догмы и демагогия. Зато когда вы начинаете плести про женщину 50-и лет за рулем, заявления Майкрософта и Оракла, отзывы автомобилей неназванными производителями, то это никакое не словоблудие, а железобетонные доказательства того, что таймеры у атмеги склонны к само-синхронизации? Вы в расчете на кого этот бред сюда выплескиваете?
А потом я стал читать эти аппноуты. И увидел, что они рекомендуют значительно меньшие сопротивления (раз этак в 5).
Стал думать, почему. Залез в datasheet и посмотрел на длительность фронтов переключений. Думаю, что в них дело, но не уверен…
ME9926. цена за канал чуть дороже чем AO3400, но корпус более крупный, и паять проще и отвод тепла лучше. правда только до 20В
Ну это для больших любителей SDP и SOP. Я уже писал выше, что с такими корпусами связваться не намерен.
Поищи, например, стоимость макеток для SOP-8 и сравни со стоимостью обычных макеток. Которые еще и режутся как угодно. Это не считая того, что без SOP и SDP можно и на breadboard собрать схему.
А с DIPами куча мучений. Если свою плату делать, то все эти дырки потом высверливать, потом выводы гнезда пропаивать, кучу места занимает, куча выводов торчит… А если на макетке, то ещё хуже. На сборку одной примитивной схемы таймера освещения (кроме самой Arduino mini — два длинных разъёма: один на выход, для подключения трёх светодиодных драйверов, и один на интерфейс: ИК-приёмник, пара кнопок и RGB-светодиод; разъём питания и семисегментный индикатор) у меня ушло часа 4. И это при том, что я тщательно продумал и нарисовал расположение деталей. Всё равно тянуть все эти проводочки между деталями — куча времени, к тому же неинтересно и некрасиво.
Ну её нафиг, в следующий раз даже на такие простые схемы буду рисовать разводку и травить плату. И каждая DIP деталь — это лишняя морока, лишний размер и лишнее уродство.
Вот когда мне действительно пока приходится покупать эти переходники — это когда на aliexpress нет нужных мне контроллеров в SOP, или они втрое дороже. Тогда приходится покупать SSOP. Припаять-то я её могу (хотя это, конечно, не так приятно), но плату пока делать не научился, нужно осваивать фоторезист.
На ME9926 я несколько раз заглядывался: часто бывает нужно именно два канала, очень удобно. Но каждый раз пересматривал ещё раз параметры, убеждался, что они хуже и дороже пары всё тех же AO3400, и останавливался.
Если не путаю, шесть выходов ШИМ поровну распределены по трём таймерам.
Возьми просто и измени период для двух из трёх таймеров (один, кажется, попутно считает millis(), так что его период менять нежелательно). Числа возьми не кратные друг другу. И всё! Даже если в какое-то одно мгновение два таймера сойдутся (а значит, ток через кристалл по условиям задачи пройдёт 10+4×40=170 мА), ничего страшного не произойдёт: такой ток даже постоянно идти должен без проблем (15% запаса остаётся), а тут всего лишь пик ничтожной длительности, после которого уже в следующем периоде они снова разойдутся. А уж чтобы все три таймера сошлись — такое совсем редко будет (например, 256×255×253=16515840, на частоте 500 Гц это раз в 9 суток). Пик 250 мА в течение нескольких наносекунд раз в 9 суток — могут убить мк?
Ещё вариант: период оставить совпадающим, но сразу после инициализации ШИМа (можно на это время отключить ключом общий провод гирлянды, а можно и просто выставить коэффициенты заполнения в ноль) обнулить счётчики таймеров один за другим. Поскольку частота ардуинного ШИМа очень мала, счётчики гарантированно не совпадут никогда: ведь частота совпадает, она задаётся периодом и предделителем, а начало отсчёта ты задаёшь сам, поверх неизвестной нам процедуры инициализации ардуино.
Я, правда, не знаю, как работает analogWrite — не перезаписывает ли она периоды и счётчики каждый раз. Если есть сомнения — не пользоваться ею, а задавать duty cycle тоже вручную.
Насколько я понимаю, общаться с периферией напрямую ты умеешь, так о чём ещё волноваться?
Совсем не обязательно осваивать резист. Платы под SSOP/TSSOP (расстояние между выводами 0.65мм) и под LQFP48/LQFP64 (0.5мм) прекрасно получаются и обычным ЛУТом (плюс лужение паяльником).
Площадку под TSSOP20 можно наблюдать в центре платы.
PS. Когда топикстартер спросил у меня, пробовал ли я сам паять SOT23, будто это какое-то особо-редкое умение, я чуть не подавился от неожиданности.
А вообще, насколько я понимаю, сама ардуина именно так и делает: инициализирует таймеры по очереди, либо когда ты вызываешь analogWrite, либо при старте. Я просто не представляю, как она может сделать иначе — она же не может выполнить одновременно три команды обнуления или запуска трёх разных таймеров! А поскольку частоты совпадают (ибо все таймеры опираются на тактовую частоту мк), практически нет шансов, что когда-либо переключения произойдут одновременно.
Если уж совсем строго — такое возможно только если выполнены все условия:
1. Расстояние по времени между запусками таймеров (всех трёх!!!) целое число раз укладывается в период ШИМа (это уже само по себе практически недостижимо).
2. Duty cycle у PWM0 и PWM1 (опирающихся на таймер 0) совпадают.
3. Duty cycle у PWM2 и PWM3 (опирающихся на таймер 1) совпадают.
4. Duty cycle у PWM4 и PWM5 (опирающихся на таймер 2) совпадают.
5. Duty cycle PWM2/PWM3 ровно на столько меньше duty cycle PWM0/PWM1, сколько раз отставание во включении таймера 1 от таймера 0 укладывается в период ШИМа.
6. Duty cycle PWM4/PWM5 ровно на столько меньше duty cycle PWM0/PWM1, сколько раз отставание во включении таймера 2 от таймера 0 укладывается в период ШИМа.
В таком и только таком случае мк получит очень короткие пики перегрузки 250 мА (с частотой ШИМа), разряжая на землю одовременно все шесть затворов. На плюс, однако, они никак не совпадут.
Можешь представить, какова вероятность исполнения всех условий одновременно?
Например: таймер 1 запустился ровно через 32768 тактов после таймера 0, ещё через столько же тактов запустился таймер 2. Именно 32768, ни единицей меньше или больше!
Дальше мы задаём digitalWrite на пины первой пары, скажем, 3, на пины второй пары 2, на пины третьей пары 1. Получаем синхронизацию перехода в «тёмную» фазу:
0███▄▄▄…▄▄▄255
0▄██▄▄▄…▄▄▄255
0▄▄█▄▄▄…▄▄▄255
Площадку под TSSOP20 можно наблюдать в центре платы.
Я первые свои платы делал ЛУТом, но мне очень не понравились подтравы по толстым дорожкам. У меня новый принтер, там невозможно отключить экономию тонера на больших участках. На работе пробовал — не лучше. Замазывал фломастером — частично решает проблему, но как-то ненадёжно.
А потом я решил попробовать новый способ. Я на работе, кроме прочего, работаю с лазерным станком (на CO₂-лазере), в основном его у нас используют, чтобы наклейки резать, редко пластмассу. Я наклеил обычную тонкую плёнку на плату и прорезал лазером дорожки. Вытянул промежутки одним «кружевом». Затем зубной щёткой со спиртом убрал остатки спирта, и вытравил.
С тех пор только так и делаю платы. Получается довольно быстро и надёжно. Тем же лазером я сразу и кондуктор (трафарет) готовлю (из листа формайки) для высверливания отверстий; пока этот способ не придумал, кучу плат испортил съезжающим с места сверлом.
Одна загвоздка: слишком тонкие дорожки (меньше 0,5 мм) могут сползти, а слишком узкие промежутки (меньше 0,4 мм) не дают возможность вычистить как следует остатки клея. Хуже всего — длинные изогнутые тонкие дорожки с узкими промежутками, а именно такая картина выходит на SSOP. Начинаешь чистить — дорожки сдвигаются. SOP, SOT23 выходят отлично, но шага меньше 1 мм я вряд ли добьюсь.
В общем, надо или возвращаться на ЛУТ, но решать проблему подтрав (может, как у тебя — сеточкой их делать? Но не хотелось бы так делать силовые дорожки в цепях светодиодных драйверов), или осваивать фоторезист. У меня, в принципе, уже всё для этого есть (долгое время не мог достать transparencies… забыл, как это по-русски… но теперь и они уже есть).
В другом аппноуте вообще написано нулевое сопротивление резистора от мк к затвору…
Возьмём, к примеру, тот же AO3400. Ёмкость затвора у него 630 пФ. При сопротивлении 10Ω (думаю, что у открытых каналов транзисторов выводов мк сопротивление не меньше) выходит RC=6,3 нс. За время 20 нс затвор заряжается / разряжается на 95%. А время фронтов выходного сигнала самих портов (у PIC, на мегу не проверял) — 15 нс. Так что, скорее всего, для таких транзисторов действительно нет нужды в большем сопротивлении между мк и затвором.
Но я не уверен, что правильно прикинул. Хотелось бы строго математически просчитать реакцию конденсатора известной ёмкости через известное сопротивление на меняющийся с известной скоростью сигнал, но я не соображу как.
В подобных расчетах нужно использовать не емкость, а полный заряд затвора (Total Gate Charge).
Я тут посмотрел ассемблерный листинг функциии init() в той части, где происходит запуск таймеров. Выглядит оно так:
01
00000276 <init>:
02
03
void
init() {
04
05
276: 78 94 sei
06
07
;; sbi(TCCR0A, WGM01);
08
09
278: 84 b5
in
r24, 0x24 ; 36
10
27a: 82 60 ori r24, 0x02 ; 2
11
27c: 84 bd
out
0x24, r24 ; 36
12
13
;; sbi(TCCR0A, WGM00);
14
15
27e: 84 b5
in
r24, 0x24 ; 36
16
280: 81 60 ori r24, 0x01 ; 1
17
282: 84 bd
out
0x24, r24 ; 36
18
19
;; sbi(TCCR0B, CS01);
20
21
284: 85 b5
in
r24, 0x25 ; 37
22
286: 82 60 ori r24, 0x02 ; 2
23
288: 85 bd
out
0x25, r24 ; 37
24
25
;; в этот момент таймер 0 начинает тикать
26
27
;; sbi(TCCR0B, CS00);
28
29
28a: 85 b5
in
r24, 0x25 ; 37
30
28c: 81 60 ori r24, 0x01 ; 1
31
28e: 85 bd
out
0x25, r24 ; 37
32
33
;; sbi(TIMSK0, TOIE0);
34
35
290: ee e6 ldi r30, 0x6E ; 110
36
292: f0 e0 ldi r31, 0x00 ; 0
37
294: 80 81 ld r24, Z
38
296: 81 60 ori r24, 0x01 ; 1
39
298: 80 83 st Z, r24
40
41
;; TCCR1B = 0;
42
43
29a: e1 e8 ldi r30, 0x81 ; 129
44
29c: f0 e0 ldi r31, 0x00 ; 0
45
29e: 10 82 st Z, r1
46
47
;; sbi(TCCR1B, CS11);
48
49
2a0: 80 81 ld r24, Z
50
2a2: 82 60 ori r24, 0x02 ; 2
51
2a4: 80 83 st Z, r24
52
53
;; в этот момент таймер 1 начинает тикать
54
;; sbi(TCCR1B, CS10);
55
56
2a6: 80 81 ld r24, Z
57
2a8: 81 60 ori r24, 0x01 ; 1
58
2aa: 80 83 st Z, r24
59
60
;; sbi(TCCR1A, WGM10);
61
62
2ac: e0 e8 ldi r30, 0x80 ; 128
63
2ae: f0 e0 ldi r31, 0x00 ; 0
64
2b0: 80 81 ld r24, Z
65
2b2: 81 60 ori r24, 0x01 ; 1
66
2b4: 80 83 st Z, r24
67
68
;; sbi(TCCR2B, CS22);
69
70
2b6: e1 eb ldi r30, 0xB1 ; 177
71
2b8: f0 e0 ldi r31, 0x00 ; 0
72
2ba: 80 81 ld r24, Z
73
2bc: 84 60 ori r24, 0x04 ; 4
74
2be: 80 83 st Z, r24
75
76
;; в этот момент таймер 2 начинает тикать
77
;; sbi(TCCR2A, WGM20);
78
79
2c0: e0 eb ldi r30, 0xB0 ; 176
80
2c2: f0 e0 ldi r31, 0x00 ; 0
81
2c4: 80 81 ld r24, Z
82
2c6: 81 60 ori r24, 0x01 ; 1
83
2c8: 80 83 st Z, r24
84
85
;; на этом инициализация таймеров завершена
Таймер 0 инициализируется в режиме FAST PWM и счетчик считает до FF, после чего генерируется прерывание. Это, кстати, единственное прерывание, которое прописано в таблице прерываний на момент выполнения init(). Никаких других прерываний во время выполнения init() возникнуть не может.
Теперь посчитаем, может ли прерывание от таймера 0 вознинуть раньше, чем стартует таймер 1. Топикстартер плел что-то про некие волшебные прерывания, которые навалившись кучей могут так нагрузить ядро, что очередь до старта таймера 1 дойдет только аккурат при переполнении таймера 0 и таким образом таймеры синхронизируются сами собой. Проверим, может ли такая ситуация возникнуть не в воспаленной фантазии топикстартера, а в реальном ардуине.
Так как на вход таймера 0 (равно, как и на остальные таймеры) подается тактовая частота поделенная прескалером на 64 (биты CS00 + CS01), то таймер тикает через каждые 64 такта главного генератора и сообразно может генерировать события с такой же дискретностью. Тупо посчитав команды в листинге, которые разделяют старт таймера 0 и таймера 1 можно прикинуть время, через которое таймер 1 стартует после таймера 0. В листинге между стартами таймеров 14 команд. Мне сейчас лень смотреть сколько тактов занимает выполнение той или иной команды, но приняв, что большинство команд атмеги выполняется за один такт, набросим чуть-чуть и посчитаем условно, что таймер 1 стартует где-то через 14-20 тактов после старта таймера 0. Таким образом, к моменту старта таймера 1, таймер 0 не успеет досчитать даже до единицы и никаких событий (прерываний) не в состоянии генерировать в принципе.
Еще через ~13-20 тактов стартует таймер 2. Выходит и он ухитряется запуститься раньше, чем таймер 0 досчитает хотя бы до 1.
И вот в этот момент для нашего большого специалиста по совпадениям вырисовывается совсему уже безрадостная картина: никакие события таймеров (прерывания, передние или задние фронты шим-сигналов и т.д) не могут случиться одновременно хотя бы у двух таймеров (не говоря уже про трех), т.к. вся троица стартовала с разницей по времени не кратной 64-м тактам.
На этом в истории с глупыми придумками насчет удивительных совпадений, можно поставить точку.