Pull to refresh

Comments 34

Из текста не сразу понял о каких светодиодах идет речь — только потом дошло, что индикатор светодиодный.
На выходе с регулятора стоит конденсатор 0,1 микрофарад

Не помешало бы поставить побольше, микрофарад 10. Были ли поставлены конденсаторы по 0.1 около выводов контроллера? Возможно, тогда баг бы себя и не проявил.
В общем, в любой непонятной ситуации смотри ВАХ!

А лучше иметь осциллограф и смотреть, что происходит на шине питания.
Категорически с вами согласен. Но осциллографа у меня к сожалению нет.
Боюсь осциллограф в том топике нельзя назвать таковым. Такой осциллограф я себе делал лет 8 назад и скажу что это не более чем игрушка. Заваливание фронтов, низкая частота дискретизации и откровенно слабый ацп приводит к тому что такое в руки не возьмет ни один человек хоть раз пользовался обычным, даже старым советским осциллографом.
Я не случайно поставил в конец своей реплики смайлик
Возможно также стоит под питание цифровой логики (МК, регистры) и под питание всего остального (в вашем случае, семисегментные индикаторы) выделять отдельные стабилизаторы напряжения.
Слишком жирно будет, вполне достаточно конденсаторов на различных цепях питания. Ловил похожий глюк, когда делал таймер для засветки фоторезиста UV светодиодами. Причем даже запланировал установку конденсатора, но поленился впаять, опрометчиво посчитав, что ток будет не достаточной силы, чтобы случилась просадка и микроконтроллер сбросился.
Ну и камень в огород автора:
1) мультиплексирование не дает мигания при частоте обновления больше 100 Гц (я обычно ставлю 1000)
2) что за чудо алгоритм у вас заложен в устройство, который не оставляет ресурсов для динамической индикации? там нужно всего лишь несколько байт памяти да прерывание от таймера, которое совместно может обслуживать динамический же опрос клавиатуры и толкание счетчика времени готовки.
1.а. при прямом взгляде не дает, но если вы попробуете взглянуть на индикатор вскользь то сможете увидеть мерцание на достаточно бальших частотах. Не берусь объяснить почему так происходит.
1.b на мультиплексирование требуется большее количество выводов чем на сдвиговую логику, где по сути можно обойтись тремя.
1.с мультиплексирование на большом количестве индикаторов неэффективно, так как чем больше индикаторов тем сильнее снижается сила свечения из за увеличения скважности.
2. Алгоритм я вкратце описал. Диспетчер времени отсчитывающий задержки времени, диспетчер задач передающий управление задачам из очереди и управляющий самой очередью. Восьмибитный таймер отдан под шим управление нагрузкой. 16 битный занят отсчетом времени задержек и частично обслуживает подпрограмму опроса датчика температуры. Все остальное — опрос кнопок, вывод на дисплей, ПИ-регулятор, управление звуковым буззером, менеджер экранов дисплея и перекодирование дисплея находятся в очереди задач вызываясь только в нужное им время. В основном цикле практически один loop и некритичные задачи.
1.а попробуйте провести слепой тест
1.b можно попробовать еще чарлиплексирование или гугаплексирование
1.c если поднять ток, то сила свечения не уменьшится. через светодиоды можно гонять кратковременные токи, превышающие номинальный максимальный ток во много раз, главное тут правильно подобрать частоту в соответствии с термическими параметрами светодиода, чтобы он успевал охлаждаться между циклами.
Боюсь мы подходим к вопросу вкусов. Я согласен что данную задачу можно решить кучей разных способов, в том числе мультиплексированием и уверен что недостатки того и другого способа могут быть нивелированы тем или иным схемным решением, просто в данном случае выбрал один из них как кажущийся наиболее простым и удобным.
На самом деле мерцание динамической индикации дейсвительно заметно когда вскользь смотришь. Делал себе ламповые часы с ее использованием, так вот, к155ид1 через которую катоды ламп подключались к земле, не могла переключаться чаще 400гц (цифры смазываться начинали), и видно было переключение, особенно в темноте.
При крутых фронтах переключения светодиодов разница видна не будет. Видимо, из-за инерции ламп ваш сигнал переключения проходит через неявный фильтр низких частот.
У меня был кейс когда нагрузка в примерно 150 мА вызывала достаточную просадку для ресета МК, по питанию стояли 100 мкф, 100 нф, 4700 мкф. Вопрос, жирно или нет — он такой себе… это ведь не серийное устройство, как мне кажется надежность работы гораздо важнее увеличения цены на 20-50 рублей.
Хорошо было бы поставить по 1 мкФ конденсатору на каждый сдвиговый регистр между питанием и землей. И еще было бы хорошо использовать более медленную логику, в вашем случае — HC, поскольку быстрая логика очень быстро переключает свои выводы, вызывая кратковременные большие токи даже при небольшой емкостной нагрузке.
У меня она и стоит. 74hc595.
А можно было бы просто с самого начала поставить нормальный конденсатор по питанию в схему, а не использовать ёмкость впритык. Всегда использую правило «чем больше конденсаторов на питании (в разумных пределах), тем лучше» и оно ни разу меня не подводило.
С другой стороны использование компонентов «впритык» позволяет обнаруживать многие проблемы уже на этапе разработки. Так как чтобы использовать компоненты около предела их возможностей необходим расчет, и если что то не работает как нужно значит ты облажался в расчетах. Это в свою очередь позволяет не только набраться опыта тем самым прокачав скилл «Сделать сразу хорошо» но и наметить для себя проблемные места в системе и сразу оптимизировать их. Это конечно мое личное мнение но метод «чем больше кондеров тем лучше» похож на покупку костылей новорожденному с мыслью «а вдруг ногу сломает».
И тем не менее в системах где надежность критична я бы скорее всего все делал с троекратным запасом.
Ну в образовательных целях — да, полезно. Однако в конечном устройстве лучше всё равно так не делать. Конденсатор 10 мкФ вместо 1 мкФ не увеличит заметно ни цену, ни размер, зато в каком-нибудь необычном случае может спасти схему от сброса. Грубо говоря, мы ничего не теряем, а надёжность растёт.

Мне кажется все имели дело с дешёвыми китайскими девайсами, где разработчики сэкономили каждый цент ставя компоненты впритык, а потом оно начинает глючить, если источник питания оказался менее идеальным или просто со временем (некоторые компоненты меняют номинал по мере износа, а также из-за температуры).
Не ознакомите вашими результатами расчета этого конденсатора «впритык» с учетом достаточно посредственных динамических характеристик выбранного вами регулятора (динамический импеданс около 1 Ом на частоте 10 MHz) и достаточно бодро меняющейся (десятки наносекунд) нагрузки?
Ну и на второй итерации с учетом импеданса дорожек на плате.
Не ознакомлю. Потому что конденсатор управляющей части по питанию не рассчитывался, а поставлен из даташита. Это сделано потому, что не предполагалось значительных просадок напряжения в управляющей части. Это как раз подтверждает мое мнение что использование впритык в любительских конструкциях помогает получать опыт. В следующий раз я либо сразу буду писать прошивку таким образом чтобы сегменты не включались одномоментно, либо изначально предусмотрю конденсаторы на питание индикаторов.
Нагрузка же питается отдельно и другим напряжением. Просадка напряжения от включения/выключения нагрузки такая, что оставляет регулятор в зоне комфорта. Кроме того для меня лучше, чтобы просадка напряжения на нагрузке была как можно больше (в разумных пределах), потому что снижает потери на регуляторе, а соответственно регулятор меньше греется.
Тогда вообще странно, что вы этот конденсатор поставили, так как в даташите сказано, что регулятор стабилен и без конденсатора ;-)
Что интересно, из приведенного в даташите графике следует, что ваша схема даже с таким конденсаторов должна жить нормально, при условии низкого последовательного импеданса между регулятором и микроконтроллером — краковременное падение напряжения около 0,5 В.
То что регулятор стабилен без конденсатора я видимо упустил, ибо во всех схемах даташита он так или иначе присутствует.
Приведенный в даташите график (если мы говорим об одном графике) показывает поведение при относительно низких частотах. Если глянуть на график чуть выше, то становится ясно что регулятор комфортно себя чуствует при частотах до 1КГц. Повышение частоты даже до 10КГц уже заставляет его сильно нервничать. Логика же работает на частоте 100МГц. Судя по упомянутому вами графику просадка напряжения на регуляторе величиной 0,5в происходит при приложении нагрузки за время около 2,5 микросекунды. 74hc595 же гарантированно завершает переключение за 13 наносекунд. Даже если увеличить его в два раза получится эквивалентная частота 38 МГц. Думаете регулятор успеет среагировать?
А что тут думать?! Тут считать надо. Я не знаю, какой конденсатор использовали вы, так что приведу оценку для весьма распространненого Murata GRM188R71H104KA93. И так, в даташите есть график динамического импеданса регулятора, который показывает около 1Ом на 10 МГц. Даташит конденсатора показывает менее 1 Ом от 1,5 МГц до 800 МГц. Сопротивление нагрузки более 10 Ом. Получаем просад однозначно менее 10%. Но это в случае если все стоит рядом и нет паразитной индуктивности.
В любой непонятной ситуации ставь конденсаторы на питание…
хорошо бы еще разводку ПП посмотреть — залепить каждый корпус по питанию парой конденсаторов (керамика + тантал) конечно можно, но это лишние элементы, а внятная разводка земель и питания ничего не стоит :)
И к слову, брать «медленные» ИС только потому, что быстрые звенят по питанию, когда драйвят мощную нагрузку — это не очень честное решение. Лучше ограничить скорость роста тока, включив в цепь питания светодиодов (надеюсь, индикаторы применены с общим анодом) RC или LC-фильтр — ну и подключить его прямо к выходу ИС стабилизатора напряжения.
Такая логика была взята по двум причинам. Первая — мне ее достаточно. И по току и по быстродействию. Вторая — эта логика была легко доступна для меня только и всего. Индикатор с общим анодом таки да.
Присоединяюсь к вопросу про разводку. Сдается мне, что в случае питания по USB дорожки работают как фильтр и не дают критически просесть напряжению на контроллере.
Вряд ли. Дорожки от разъема до контроллера короткие. Длина дорожек при питании от юсб и от блока питания практически не отличается.
image
Жалко, что не показана вторая сторона платы. Меня терзают смутные сомнения, что блокировочные конденсаторы отсутствуют напрочь, хотя тот же Texas Instruments в даташите на свои регистры явно пишет «вкорячте 0,1 мкф как можно ближе и разведите максимально короткими и широкими дорожками». Дополнительно ситуация усугубляется весьма запутанной разводке питания и земли с образованием контуров с большим сечением (фактически, виток катушки индуктивности), а следовательно и высоким импедансом на высоких частотах. Разводка кварцевого резонатора — вообще антипаттерн — получилась антенна на полплаты, если бы бритвы производства БЭМЗ были бы еще распространены, у вас бы срывало генерацию каждый раз, как сосед решит побрить на себе шерсть. В общем, чудо, что это хоть как-то работает.
Боюсь что вы от человека без образования радио инженера ожидаете слишком сильного колдунства. Профессиональный снобизм?
UFO just landed and posted this here
<режим зануды>Бактерии одного конкретного вида (а иногда и штамма) чувствуют себя максимально хорошо при определённой температуре. Отклонения температуры от этого значения меняет соотношение числа бактерий разных видов. Если учесть что бактерии разных видов продуцируют разные продукты своей жизнедеятельности то и вкус конечного продукта зависит от температуры. Причём он зависит и от времени так как после переработки одной составляющей продукта одним видом бактерий за обработку продукта берётся другой вид. <\режим зануды>
UFO just landed and posted this here
В аптеке конечно. Иногда можно воспользоваться свежим даноном :-)
Sign up to leave a comment.

Articles