Отработка узлов: Часы-Будильник-Таймер-Секундомер на МК ATtiny85V (часть 3)

В Устройстве используется индикация: статическая, на сдвиговых регистрах. Опытные электронщики уже наверняка знают: зачем в той схеме нужен ключ VT1, управляемый сигналом «Ready»? Но я, по началу, не знал насколько он важен...

Содержание:



Это продолжение…
< — Возврат к предыдущей части статьи


Механизм Пригашения Индикаторов, при обновлении-загрузке содержимого в Сдвиговые регистры


Внимание: По результатам макетного моделирования, эксперимент показал, что при выводе информации на дисплей, при отработке процедуры DISPLAY_REFRESH, при проталкивании всей последовательности через сдвиговые регистры — на короткое время зажигаются все сегменты дисплея.

Сама процедура DISPLAY_REFRESH отрабатывает за 1/55 сек — что в два раза быстрее, чем заметное человеческому глазу 1/25 сек… И я думал, что столь быстрый рефреш никак не будет замечен пользователем… Но проблема возникает из-за
ПОСЛЕСВЕЧЕНИЯ LED-индикаторов: при обновлении изображения (каждые пол секунды), экран ярко вспыхивает! И это очень заметно, просто невозможно пользоваться таким устройством, раздражает!

Бузер, который тоже управляется от выводных сдвиговых регистров — также, попёрдывает при загрузке данных: квохчет, каждые пол секунды… Электронная квочка дома — это прикольно! Но уже через 15мин, от этого квохтанья, голова идёт кругом.

Это проблема, которую нужно решить!


Правильное решение: вместо сдвигового регистра 74HC164 (14pin, с непосредственным выводом), использовать сдвиговый регистр SN74HC595 (16pins, 3-STATE OUTPUT REGISTERS). Последний имеет отдельный выходной буфер (который фиксирует состояние выходных сигналов и поддерживает его пока идёт загрузка данных) и строб-вход (по которому данные из внутренних триггеров копируются в выходной буфер).

Подключение регистра к МК: «строб-вход» — это дополнительный функционал, им нужно управлять, и для этого задействовать ещё один вывод Микроконтроллера (а у меня их всего: только три, для всей периферии)… Но в данном случае, можно было бы легко использовать пин «Clock1»: он используется для сканирования клавиатуры, и разнесен по времени использования от вывода в регистры индикатора. Если даже, с каждым синхроимпульсом сканирования клавиатуры «Clock1», данные будут повторно копироваться на выход SN74HC595 — то это не проблема, ничего не изменится, т.к. в это время данные в выводных регистрах не меняются.

Загрузка данных в регистры: Во время отработки процедуры DISPLAY_REFRESH, когда идёт вывод данных на дисплей — то «Clock1» и сканирование клавиатуры не используется. (можно даже совсем не менять программу)

Но есть проблема: Плата уже распаяна, и она столь нетехнологична, что переделке не подлежит. Кроме того, сдвиговый регистр SN74HC595 имеет на два выхода больше — а корпус использован маленький, и размеры платы таковы, что и 14pin-регистры влазят едва-едва впритык! Таким образом, нужно поискать другое решение...

Извратное решение: состоит в том, чтобы на время загрузки данных в сдвиговые регистры 74HC164 — отключать питание у LED-индикаторов, с помощью ключа… (Тут парню пришла та же идея.)
А заодно, можно отключать и питание Бузера, который тоже попёрдывает при загрузке данных! Хотя последний баг прикольно звучит: как стрелочные часики тикают. Может и оставлю как есть?.. Та не, отключу нафиг! Когда усилил ему питание (транзистором Q1), то он стал звонко цокать — за час процокал мне все уши, звенят.

Но свободных выводов у Микроконтроллера уже нет! Чем управлять?
Будем управляет тем же «Clock2»: который будет, через усилительный каскад на транзисторе, включать (при длительном Clock2=«0») и отключать (при длительном Clock2=«1») питание для индикаторов. А синхроимпульсы Clock2 будут очень короткие — будут сглаживаться/экранироваться интегрирующей RC-цепочкой, перед базой транзистора Q2. DI HALT описал идею тут...

Расчёт RC-цепочки: при XTAL_CPU=32768Hz, длинна одного такта МК = 30,5мкс. Ширина синхроимпульса = времени выполнения макроса SETB/CLRB = 1-2такта (если доступны инструкции SBI/CBI, для вывода в этот порт) или 3 такта (если переключать бит через IN+OR/AND+OUT). Итак, три такта… Нет, в худшем случае, пусть: 4 такта!
  • Если взять R=1кОм и C=10nF (как в статье), то время полного заряда/разряда будет составлять 3*R*C=30мкс. (хм, как раз один такт — но маловато...)
  • Если взять R=4.7кОм и C=10nF (подходит), то время полного заряда/разряда будет составлять 3*R*C = 141мкс = 4.62 такта CPU. (что погасит любой синхро-строб Clock2!)
  • Если взять R=15кОм и C=4.7nF (надёжнее), то время полного заряда/разряда будет составлять 3*R*C = 211,5мкс = 7 тактов CPU. (что погасит любой синхро-строб Clock2!)


Симуляция показывает: что с другой стороны, для согласования с остальной схемой, резистор НУЖНО брать на порядок больше (а кондёр, наоборот, поменьше) — чтобы уменьшить ток во входной (управляющей) цепи, которая кстати цифровая! И завалы фронтов, от просадки через RC-цепочку, ой как не любит!

Кроме того, здесь, номиналы «постоянной времени» R*C — МОЖНО и ЛУЧШЕ брать на порядок больше (R=100кОм и C=4.7nF), чем при расчёте на единичный импульс. Тут же идёт посылка из серии импульсов (то было 0-0-0-0-0-… и вдруг 1-1-1-1-1-0-1-1-1-) и, вместе с приходом посылки, происходит «аддитивный заряд-разряд» конденсатора СРЕДНЕИНТЕГРАЛЬНЫМ УРОВНЕМ ПОСЫЛКИ, а не единичным импульсом (который оценивается через «постоянную времени» 3*R*C). Тут симуляция правильнее показывает!

РЕАЛИЗАЦИЮ МЕХАНИЗМА смотри на общей схеме — ключ Q2, цепочка C2 R46.
Замечу, что с введением в схему RC-цепочки — потребление устройства увеличилось незначительно: до +5мА (точнее не оценить).

Решение №1: RC-цепочка + биполярный ключ, в инверсном включении (ошибочное и нерабочее)

Макетирование:

Сразу, принялся проверять идею в железе, на макетке: RC-цепочка (R=100кОм С=4.7нФ) питает Биполярный ключ (BC557 PNP, включен инверсно — т.е. неправильно)
Решение 1 (RC-цепочка + биполярный ключ) - Потенциал шины Альтернативной Земли: Сначала, импульс загрузки данных. Затем, индикация включается (уровень понижается)

По результатам макетного моделирования, эксперимент показал: что сам принцип управления ключом через RC-цепочку (R=100кОм * C=4.7nF) — в общем, работает. Но как-то херовато. Решил, что параметры ещё надо подобрать…

Разбор ситуации:

Из осциллограммы, выше, кажется, что ёмкость конденсатора C2 слишком мала для сглаживания пульсаций синхроимпульсов «Clock2»: при загрузке данных (когда доминирует уровень Clock2=«1») — всё равно, идут иголки, где Clock2=«0». Причём, просадка иголок приличная (до половины Vcс) — таким образом, данная RC-цепочка неспособна управлять БИПОЛЯРНЫМ ключом! В чём причина?
  • Причина: При том, что «постоянная времени» RC хоть и выбрана правильно, но я перекосил соотношение: R (слишком велико, потому обеспечивает малый ток заряда) и С (слишком мало). Такая RC-цепочка, вероятно, хорошо управляла бы ключом на Полевом транзисторе. Но биполярный транзистор — не тянет.

Также замечу (из осциллограммы, выше), что при закрытом ключе, на Эмиттере Q2 (это потенциал «альтернативной земли») наблюдается напряжение Vce=2.4V, а не уровень «лог.1»=3V… В чём причина?
  • Дикое предположение: Возможно ли, транзистор Q2 не полностью закрывается? Если R*C всё же слишком велика, так что C2 недозаряжается? Или конденсатор C2 разряжается через Коллектор биполярного транзистора на «Землю», что мешает работе RC-цепи?
  • Объяснение: Нет, транзисторный ключ закрывается полностью, а величина Vce=2.4V правильная и ожидаемая.
    Реальное напряжение питания схемы Vcc=уровень «лог.1»=2.8V (батарейки 2xAA дают +3V, но минус -0.26V просадка на защитном диоде Шоттки). На p-n переходе LED-индикаторов «SM420361N», в прямом направлении, в полуоткрытом состоянии, падает ещё -0.6V. Итого, на Q2 остаётся: Vce=2.4V

Однако, обнаружена большая проблема: использованный в качестве ключа Q2, биполярный транзистор BC557 (PNP, 50V, 0.1A, 0.5W), при открытии — не входит в режим насыщения. При таком полуоткрытии ключа — просадка на нём получается Vce=1.2V (это потенциал «альтернативной земли»). Данный факт критичен — индикаторы горят недопустимо тускло!
  • Во-первых, я допустил здесь грубую схемотехническую Ошибку: ключевой биполярный транзистор включил не той стороной, нагрузку сунул ему в Эмиттерную цепь, а не в Коллекторную! Был движим желанием управлять ключом не инверсным, а прямым сигналом — чтобы подача «лог.1» закрывала транзистор, отключая/отсекая нагрузку от «Земли», а не наоборот (ну, мне сперва показалось, что здесь так удобнее управлять, и что это допустимо)… И в качестве ключа Q2, поставил транзистор PNP, эмиттер (управляющий электрод) которого не подключён к полюсу Земли/Питания непосредственно (как надо), а подключён к нагрузке (т.е. как бы, к средней точке «делителя напряжений») — и его потенциал болтается при открытии/закрытии транзистора, что очень усложняет управление ключом!
  • Во-вторых, внезапно: при открытии биполярного транзистора Q2, ток из его базы начинает подзаряжать C2 (номинал которого относительно мал, 4.7nF)! При этом НЕДОСТАТОЧНО ТОКА утекает через резисторы R46=100кОм + разделительный R43=15кОм, через порт МК в землю (единственный путь разряда C2). Итак, конденсатор C2 недоразряжается, напряжение на базе держится высокое, и PNP-транзистор не открывается до насыщения.

Выводы:
  1. Таким образом, закрывается транзистор ещё приемлемо: когда задираю уровень Базы до «лог.1» — База-Эмиттерный переход обедняется, транзистор начинает закрываться — его сопротивление растёт, потенциал Эмиттера также растёт, по мере закрытия, примерно до уровня «лог.1» (транзистор Q2 запирается надёжно).
  2. Но что происходит при открытии? Хочу опустить уровень Базы до нуля=«Земля»=«лог.0» (и ошибочно предполагал, что так будет, но упустил из виду C2)… Но на самом деле, уровень Базы опускается лишь до потенциала на C2. А по мере открытия Q2, ток из Базы также возрастает (через База-Эмиттерный переход) — и хоть какой он ни маленький, а начинает подзаряжать C2!
  3. С другой стороны, когда транзистор начинает открываться — его сопротивление Эмиттер-Коллектор уменьшается, и потенциал на Эмиттере также стремительно падает (вот что я совсем упустил из виду! и употребил транзистор неправильного типа). Таким образом, по мере открывания Q2, уровень Базы задирается вверх, а уровень Эмиттера опускается вниз — транзистор не сможет перейти в режим насыщения, а остановится на уровне, когда Vce > Vc2+0.6V ...


Симуляция:

Чтобы разобраться в подробностях процесса, была составлена схема в симуляторе:
Механизм Пригашения Индикаторов. Решение 1 (RC-цепочка + биполярный ключ)

Данная симуляция показывает интересный эффект: подзаряд конденсатора C2, через базу открытого транзистора Q2. Вследствие чего, напряжение на базе Q2 постоянно поддерживается повышенным — и транзистор никак не может полностью открыться, перейти в насыщение!

Тест план:
  1. Отключить генератор управляющего (пульсирующего) сигнала «InputGenerator» соответствующей кнопкой, рядом с ним.
  2. Запустить симуляцию. (Т.е. на момент запуска симуляции — генератор должен быть отключён!) Сейчас, LED-индикатор включён.
  3. Нажать кнопку, подключив генератор «InputGenerator» к RC-цепочек. Конденсатор зарядится, напряжение на Базе PNP-транзистора возрастёт — он закроется. LED-индикатор выключился. Примечание: То, что сигнал генератора здесь «пульсирующий» — ничего особого не значит, RC-цепочка его всё равно проинтегрирует в некий уровень на Базе транзистора. Можно было бы взять и просто генератор DC-уровня «лог.1», но так интереснее — демонстрируется также интегрирующая способность RC-цепи.
  4. Отжать кнопку, отключив генератор «InputGenerator»… Должен пойти разряд конденсатора C2, через R46+R14, на землю… Разряд конечно идёт, но вместе с этим, идёт также подзарядка конденсатора через Эмиттер открытого Q2! Транзистор Q2 открывается не полностью (Vce велико) — и LED-индикатор НЕ включается (малое падение напряжения на нём).
    Выводы:
    • Поэтому, при больших сопротивлениях R46+R14, транзистор Q2 — может даже никогда не открыться полностью (как в данном случае)!
    • При малых сопротивлениях R46+R14 — транзистор-ключ, в конце концов, закроется. Но время его закрытия (спад) будет значительно больше, чем время открытия (фронт) — это надо также учитывать!

  5. Чтобы убедиться, что проблема именно из-за больших R46+R14 — зажмите кнопку, напрямую соединяющую Базу транзистора с «Землёй». Конденсатор тут же разрядится, ключ откроется
    (В данной симуляции: напряжение Vce, при этом падает на целый вольт, 2.8V до 1.8V; впрочем, всё равно оставаясь слишком большим — транзистор Q2 не в насыщении!)
    Примечание: данный эффект наблюдается также на моём реальном экспериментальный макете (смотри осциллограмму, выше). После пакета импульсов, при спадании уровня Clock2=«0» и открытии ключа — транзистор открывается не полностью: уровень напряжения Vce — всё ещё слишком высокий, более 1.2V.


Workarounds:

Попытка поиграться параметрами вышеуказанной схемы, чтобы хоть как-то приспособить её к жизни, решить задачу:

1)
Попробовал взять другое соотношение R (на порядок меньше) и C (на порядки больше), при том же биполярном Q2=BC557.
Экспериментально установлено, что оптимальные соотношения RC-цепи для управления биполярным Q2=BC557: (R46+R43)=2*15кОм, C2=47нФ. (здесь, для справки: 3*R*C=4230мкс, что на порядок больше теоретической!)
Хотя при этом, просадка на открытом (в насыщении) биполярном ключе: минимум, Vce=0.375V (как и ожидалось — ненулевая!)
Индикатор не блымает, хотя мерцает, притухает при обновлении — каскад помог!
Однако, индикатор едва светит: уже заметнее, чем при Vce=1.2V, но всё равно не годится. Надо перепаивать резисторы R1..R40 с номинала 100 Ом, на меньший… («Убиться веником! Да ипись оно всё конём!» — подумал я.)

В итоге, для этого «единичного экспериментального макета» (который допустимо сделать коряво и неконцептуально правильно), остановился на половинчатом решении: поднял напряжение питания на ещё одну пальчиковую батарейку: до 3xAAA = 4.5V.
При этом, яркость индикаторов возросла до практически нормального состояния.
Однако, таким образом, я похерил всю концепцию низковольтного питания: специально ж подбирал/искал микроконтроллер на 2..3V и схему подгонял…
Также, улетела в трубу рациональная компоновка корпуса: теперь батарейки не умещаются в корпус и будут болтаться снаружи, прилепленные какими-то соплями…
Да и соплей висящих на проводках (усилительных каскадов, собранных «объёмным монтажом») — прибавилось…
Э-эх! В общем, конструкция «удалась»! Граблей поимел немерено — как и задумывалось… ;)

2)
А Бузер мне так и не удалось заглушить на время обновления! Внутри него встроена хитрая схема генератора, рассчитанная на определённое фиксированное напряжение питания. И бузер начинал мутно глючить, при подключении последовательно к нему ещё одного транзисторного-ключа: получилась цепочка «Транзистор-Бузер-Транзистор» — падения напряжений на элементах распределялись непропорционально, и сильно нелинейно изменялись, при включении/выключении и генерации Пищалки… В итоге: Генератор затыкался, частота срывалась; или чаще всего — Пищалка просто не работала, не генерировала. Заметил: Не смотря на то, что цепь питалась от Vcc=4.5V — на Бузере выпадало напряжение только около 1V — это потому что транзисторы не полностью открывались. И ток через бузер был очень нелинейный.

Чисто экспериментально определил, что Бузер лучше всего работает (на повышенном Vcc=4.5V) — если доставить ему последовательно простой резистор 50-60V. Тогда, в диапазоне Vcc=3,5..4,5V — он, «скорее всего, не будет затыкаться». И кратковременные тиканья, при обновлении экрана, при этом резисторе — звучат как-то несколько приглушённее…
Эти тиканья никак не хотели пропадать! И стали, для схемы, более суровым звуковым испытательным критерием, чем визуальный: Даже когда Индикаторы, визуально, уже не мерцали (на самом деле: мерцали, но незаметно). Если тайминги схемы гашения всё ещё были кривыми — то Бузер честно, явно и заметно тенькал.

Кроме того, Бузер нельзя ложить на ту же шину «Альтернативной Земли», что предназначена для Индикаторов — для Бузера пришлось собрать отдельный ключевой-каскад и свою «Альтернативную Землю №2»! Иначе, при подключении на единую шину Индикаторов и Бузера, наблюдалась следующая пачка «эффектов»:
  • Суммарный ток потребления был выше — и напряжение на шине «Альтернативной Земли» значительно повышалось, вернее, скакало в гораздо больших пределах...
  • Наводки от Индикаторов сильно влияли на генератор Бузера (генератор срывался и затыкался).
  • И сильно пригасала яркость Индикаторов, при подключённом параллельно и звонящем Бузере.


Решение №1.5: RC-цепочка + биполярный ключ, в прямом включении (схемотехнически невозможное)

Первым делом, исправим тип использованного транзистора и способ его включения на правильные…

Правильное включение транзистора в схеме «цифрового ключа» (см. «Хоровиц П., Хилл У. — Искусство схемотехники» (изд.5) [1998] / глава «3.14. Логические и мощные ключи на МОП-транзисторах», стр.161):
  • между Нагрузкой и «Землёй» — можно использовать ТОЛЬКО транзистор NPN-биполярный или N-канальный МОП.
  • И уже от типа использованных ключевых транзисторов — и диктуется распределение уровней управления: «лог.1» будет открывать ключ, а «лог.0» — закрывать (и только так)...
Итак, ключевые транзисторные схемы каноничны — это т.н.
«Схемы включения с Общим Эмиттером» (или «с Общим Истоком», для МОП) — обеспечивающие максимальную передачу мощности в выходном каскаде. Не так ли?

Но замечу, что В ДАННОЙ СХЕМЕ: Q2 управляется через RC-цепочку… И это накладывает особенность, что здесь использовать биполярный NPN-транзистор также НЕЛЬЗЯ:
  • потому что C2 моментально разряжается через открывающийся База-Эмиттерный переход Q2 (ток поступающий через резистор R46 << тока уходящего в базу Q2) — такой ключ никогда не откроется, потому что напряжение базы не вырастет!
  • Расчёт: Пусть даже возьмём «маленький» (как для логических цепей) резистор R46=15кОм, а напряжение логической единицы 5V -> тогда Iвх.черезR46 = 1/3mA. А для открытого в насыщение биполярного NPN — ему нужно вкатывать в базу, порой, десятки mA! (например, у BC547, в насыщении, при Ic=100mA: в базу вкатывается Ib=5мА — см. datasheet)


Решение №2: RC-цепочка + МОП-ключ (рабочее)

Можно попробовать подобрать другой транзистор, в качестве ключа — ПОЛЕВОЙ! Полевой транзистор не будет вмешиваться в работу управляющей ключом RC-цепочки, что имело место с биполярным транзистором (не будет отбирать/вкатывать в конденсатор ток из Базы).

Может ли он обеспечить меньшую просадку напряжения, при открытии ключа?
Хоровиц и Хилл — «Искусство схемотехники» (5 изд.) [1998] / глава 3.11 «Аналоговые ключи на Полевых Транзисторах» / Пишут:
«Очень часто ПТ, в основном МОП, применяют в качестве ключей. В силу таких свойств, как малое сопротивление в проводящем состоянии (Rds_on), при любом напряжении сигнала, вплоть до 0V...»
Также DI HALT, в своей
«Pinboard II REV 2», заменил «диоды защиты от переполюсовки питания» (на котором падает ~0.26V) — на полевые транзисторы «IRLML5203» (с очень малым Rds_on), пояснив выгоду так:
«Это позволило повысить нагрузочную способность с 1А до 3А. Но смысл был не в этом, а в том, что у транзистора в разы меньше падение напряжения: Уже при ста миллиамперах падение составляет сотые доли вольта! А значит, при питании, например, от USB до проца в прямом включении дойдут все 5 вольт, что дает USB. Без падений...»


Но потерпит ли МОП-транзистор такие режимы работы, что имеются в схеме: низкие входные уровни управляющего напряжения (могу дать ему максимум 2V на затворе) и даст ли, при этом, низкое сопротивление/просадку на открытом ключе?
DI HALT предупреждал:
«Одной из проблем состыковки (мощного) MOSFET транзистора и микроконтроллера (или цифровой схемы) является то, что для полноценного открытия до полного насыщения этому транзистору надо вкатить на затвор довольно больше напряжение (Vgs). Обычно это около 10 вольт, а МК может выдать максимум 5V...»
Одно из решений:
«Применить транзистор с малым отпирающим напряжением (Vgs). Например из серии IRL630A или им подобные. У них открывающие напряжения привязаны к логическим уровням.» (например: 5V его открывают уже на полную катушку… но можно и меньше, если достаточно малые токи коммутировать)


Значит, это возможно: подобрать маломощный MOSFET, с малым «напряжением управления» (чтобы при Vgs=2V ещё позволял пропустить небольшой ток — как у меня здесь: всего 20-30мА, на всю схему), и с как можно меньшим сопротивлением Rds_on (замечу, что к сожалению, у маломощных MOSFETов, этот параметр обычно на порядки большим, чем удаётся достичь в мощных транзисторах — ведь габариты меньше, и проводящий канал тоньше). Впрочем, при малых токах потребления (как у меня здесь) — на открытом ключе, даже при значительном Rds_on, упадет малое напряжение…
  • Пусть, навскидку: Rds_on=10 Ом — тогда просадка напряжения: Uds=0.2-0.3V (херово, конечно)
  • Нашёл, выводной в TO92, 2N7000 (N-Channel, Vds=60V, Id=200mA, Rds=5 Ohms, Vgd=20V Vgs_th=0,8..3V): Rds_on=5.5 Ом. С ним просадка напряжения будет: Uds=0,11-0,165V (о, уже не хуже биполярного ключа). Но настораживает низкая отсечка напряжения управления Vgs_th=0,8..3V (данный транзистор может попросту не отрыться!)
  • Эх, если бы я мог, как и DI HALT, втулить SMD IRLML5203 (P-Channel, Vds=30V, Id=3A, Rds=0.165 Ohms, Vgs=20V Vgs_th=1..2,5V): Rds_on=0.165 Ом — тогда просадка напряжения: Uds < 0,005V… (идеально!)


Использовал МОП-ключ: выводной «2N7000»

В итоге, задействовал ключ: МОП «2N7000».
RC-цепочка: R46=100кОм C2=4.7нФ.
РЕАЛИЗАЦИЮ МЕХАНИЗМА — смотри ниже: ключ Q2_, цепочка C2_ R46_.

По результатам макетного моделирования: эксперимент также показал, что Тайминги, наконец-то, работают идеально. RC-цепочка управляет МОП-ключом правильно! Ключ открывается и закрывается, как надо. И даже малого Vgs — хватает, чтобы отпереть ключ. См. осциллограммы…

RC работает: Потенциал на C2. Импульс загрузки данных

RC работает: Потенциал на C2 (уровень лог.1 мал = 2V, батарейки сели VCC=2.4V). Импульс загрузки данных

Но вот просадка напряжения на открытом МОП-ключе «2N7000» — увы, очень значительная (до 0,5V) и гораздо больше, чем просадка на открытом биполярном транзисторе (0.1-0.2V)!

Решение 2 (плохой ключ 2N7000) - Шина Альтернативной Земли: в середине, Импульс загрузки данных; Бузер ПИЩИТ до импульса (см.гребёнка)

Эксперимент:
МОП-ключ 2N7000 открыт, при Vgs=2.3V (так получается при: Vcc=3V — что весьма много для данной схемы, и больше не будет)
Результат:
Падение напряжения на открытом ключе Vds=0,5V, при этом ток Id=23mA => текущий Rds=Vds/Id = 21.7 Ом (а не 5.5 Ом). Значит, МОП-транзистор 2N7000 открыт в линейном режиме! Что также подтверждается визуально: при зажигании ещё нескольких сегментов, ток чуть возрастает — и уровень просадки тут же повышается…
Сейчас, горит примерно половина сегментов, и не работает Пищалка — следовательно, один только полностью засвеченный индикатор (без пищалки) — вызовет просадку уже до Vds=1V. Полный отстой!
Выводы:
  • Таким образом, при Vcc=3V: индикаторы светят тускловато, но в принципе работают, и пищалка пищит...
  • А вот, при Vcc<2.5V: индикаторы вообще тухнут, а пищалка затыкается даже раньше — не годится!


Workarounds:
(извраты, от безысходности)

1) Придётся всё равно питание поднимать до 3xAAA (4.5V)…
Протестировал:
  • при Vcc=4.5V — всё вообще отлично светит и Пищит. Очень яркие индикаторы, даже слишком! Поэтому ток потребления устройством 200мА (гораздо больше, чем рассчитывал… но зато красиво светит)
  • подключил питание от трёх разряженных аккумуляторов Vcc= ~2.7V. Светит скромненько, но удовлетворительно, хотя Пищалка уже хрипит. Работает значит...
Но это решение же означает — похерить не только низковольтный дизайн, но и корпус (в который батарейки уже не влезут). Досадно…

А вообще, питание 4.5V — меня всё равно не спасёт! При этом, при разряде батареек, напряжение питания будет изменяться, в пределах: Vcc=3..4,5V. Но протестировано, что свечение Индикаторов и ток потребления всего устройства — очень сильно варьируются в этих пределах:
  • при Vcc=4.5V -> устройство потребляет 200мА, и это явный риск запалить устройство! Индикаторы светят очень ярко (повышенная деградация LED). Бузер KPX1201B (рассчитанный на рабочее напряжение = 1,6..3VDC) пищит отлично, но и потребляет в несколько раз больше — для него это явно многовато.
  • при Vcc=3.5V -> устройство потребляет 20мА, индикаторы тусклы, пищалка уже похрипывает...
  • при Vcc=3V -> вся периферия уже сдохла (толком не пищит, не отображает). А Микроконтроллер пашет, как дурак: ему питания до Vcc=1.8V хватает.
Короче, не катит!

2) Но мы же не ищём лёгких путей, не так ли?
Была у меня ещё одна идейка: составной ключ из транзисторов МОП+биполярный (аля, Дарлингтон)… Ну, не Дарлингтон, а «Усилительный каскад на биполярном транзисторе NPN, управляемый от МОП транзистора». Но «усилительный каскад» — будет «инвертирующим»! Т.е. я должен буду опять менять дизайн и (опа!) заменить полевой транзистор Q2 на P-канальный — потому что:

Кроме того: первый ключевой каскад, в этой схеме — это по сути «Логический Инвертор». Причём, схемотехнически, он реализован не Комплементарно (т.е. это не КМОП-инвертор, а потому не оптимален) — т.е он будет потреблять ток (драгоценной батареи) просто в Землю, при открытии МОП-ключа (через подтяжку Базы к Земле)… (Это характерная особенность — об этом, там же: «Хоровиц и Хилл — Искусство схемотехники» / стр.162.)
«Мда, куда ни глянь — со всех сторон ж@па!» (с)

На самом деле, все проблемы — из-за недостаточных характеристик МОП-ключа 2N7000. Я даже пытаюсь схемотехнически извращаться, и придумывать неправильные схемы подключения и согласования МОП и Биполярных ключей — но это, что характерно, грозит ещё большими трудностями… (Теория: Как, правильно и по умному, сделать сопряжение ТТЛ->КМОП ключей — также описана в «Хоровиц и Хилл — Искусство схемотехники» (5е изд) / Глава 9. / «Сопряжение логических КМОП и ТТЛ элементов» / стр.590)

Использовал МОП-ключ: SMD «IRLML6344»

Правильным путём здесь, наверняка, будет: оставить схему как есть, но взять другой МОП-транзистор, с на порядок меньшим Rds_on, чем у 2N7000 (например, SMD IRLML5203… упс, ну конечно, подобрать такой же, но N-канальный).

Но 2N7000 — это был ЕДИНСТВЕННЫЙ доступный мне полевой транзистор в корпусе с выводами (TO92), и не очень большой по размерам (не как TO220), да и logiclevel-управляемый. Потому-то я его и взял. Походу, кучу даташитов перекурил, и все доступные мне интернет-магазины перелазил: SMD — навалом, ибо тренд! А выводные полевики — только мощные. А если лепить сюда SMD (подпаивать проводки к выводам), то будет, м-ммм — несколько ненадёжно и неопрятно… Хотя, это наименьшее зло!

Перерыв
ассортимент ближайших Интернет-магазинов, я нашёл, что среди SMD MOSFET, мне доступны и наиболее интересны мне по характеристикам:
Также годные (пропускают мощный ток, и управляются низким уровнем напряжения):
  • irlml2502 (N-Channel, Vds=20V, Id=4.2A, Rds=0.045 Ohms, Vgs=12V Vgs_th=0,6..1,2V)
  • irlml6402 (P-Channel, Vds=20V, Id=3.7A, Rds=0.065 Ohms, Vgs=12V Vgs_th=0,4..1,2V)

Механизм Пригашения Индикаторов. Решение 2 (RC-цепочка + МОП-ключ)

Купил, принёс, распаковал… О, мои Боги! Я и не думал, что корпус SOT-23 — такой маленький (просто «микроба»!). Как же я буду его паять? Да ещё и статики очень боится. Ну, подумал… И запаял. Об этом написан мастеркласс...

И знаете, помогло! Все проблемы с «Альтернативной Землёй» — как рукой сняло! Теперь Индикатор удовлетворительно светит, и Бузер пищит, даже на ДВУХ, уже изрядно подсевших, батарейках (2xAAA = 2.6V, дают Vcc=2.4V):
  • При открытом ключе irlml6344, даже при активном бузере и ярких индикаторах, уровень «Альтернативной Земли» = 0 (при прокачивании до 260мА, что бывает при Vcc до 4.5V).
  • При закрытом ключе irlml6344, уровень земли = лог.1 (близок к Vcc=2V, на осциллограмме).

Решение 3 (отличный ключ IRLML6344TR) - Потенциал шины Альтернативной Земли: Сначала, импульс загрузки данных. Затем, индикация включается (нулевой уровень земли).

Примечание: странные импульсы на осциллограмме (в диапазоне 1,2..1,8V) — обусловлены тем, что у меня нет подтяжки «Альтернативной Земли» к Питанию.
Поэтому, там появляется уровень лог.1 — только через сегменты Индикатора или через Бузер, когда они питаются с выходов сдвигового регистра (а на последних, в это время, мешанина переключающихся сигналов)…

Приложения


К статье приложены рабочие
проекты Proteus, с упомянутыми в статье моделями. А также, осциллограммы, снятые при тестах физических макетов.
  • +1
  • 26 декабря 2013, 17:44
  • Celeron

Комментарии (62)

RSS свернуть / развернуть
Едрить вы бестолочь
+5
Сама процедура DISPLAY_REFRESH отрабатывает за 1/55 сек — что в два раза быстрее, чем заметное человеческому глазу 1/25 сек… И я думал, что столь быстрый рефреш никак не будет замечен пользователем…
Нет, ты путаешь. 25Гц — это частота, при которой глаз воспринимает последовательность кадров как движущуюся картинку. Вспышки глаз и куда более короткие воспринимает.
Но проблема возникает из-за ПОСЛЕСВЕЧЕНИЯ LED-индикаторов
Послесвечение? У безлюминофорных светодиодов? Жжошь!

А дальше читать мне просто лень.
+2
  • avatar
  • Vga
  • 27 декабря 2013, 02:40
Ладно, приму к сведению.
Напутал с терминологией, по неопытности…

Эта статья — действительно, скучная. Вот, вторая часть — интереснее, особенно вначале.

Я написал эту статью, привёл свои черновики в презентабельный вид, ради двух целей:
1) как памятку, себе на будущее
2) чтобы иметь возможность ссылаться на эти материалы, через Сеть (online)
Всё-таки, это важный фрагмент моего личного опыта, для меня...
0
Насчет презентабельного вида ты себе льстишь. Один из моих знакомых сравнил твои статьи с курсом avr123)
-1
Ну, по сравнению с черновиками…
0
Хочу себе привить такое же упорство, но в написании тех документации, и свободное время на это =)
+2
В своё время, проработал около десяти лет в НИИ — мне привили эту педантичность. :)
0
а я думал ты студент
образцовая курсовая работа на радость любому преподу — написано красиво много и никто не читает
+1
В электронике — я, считай и есть, студент!
А основная специальность — ITшник, программер…
0
facepalm…
+1
Кто дочитает до конца, отпишитесь в комментах. Я полтора монитора текста с трудом осилил.
+1
  • avatar
  • Ozze
  • 27 декабря 2013, 15:13
Я осилил до конца, но это, признаться, оказалось непросто.
0
Я осилил, но у меня это не полтора, а 21 монитор заняло =D
0
Героически, что :))

Какое же у тебя разрешение экрана, раз на 21 монитор растянулось?)
0
Так обычный старенький уже ноут =) 1366х768
0
Хм, начинаю чувствовать себя неловко. Вот так, внезапно, я стал «эталоном занудности»! ;-) Единицы измерения выражаются: в «количестве экранов текста, которые способен выдержать средний человек». Скоро, моими статьями начнуть пугать детей. О_о
0
Я и не думал, что кто-то сейчас в низковольтных малопотребляющих схемах использует биполярные транзисторы (которые кушают такой ценный ток).

А вообще есть ли преимущества какие-либо у биполярников, работающих в ключевом режиме, по сравнению с полевиками в оном же режиме? Есть ли смысл их хоть где-то в таком режиме использовать?
0
вроде, у них ток утечки меньше, нет? что делает их более предпочтительными, например, в схеме подачи питания от батареек на устройство:



ну и мелкие биполярники тупо дешевле:)
0
Ток утечки у запертого полевика точно меньше. У транзисторов с индуцированным каналом (каковые и составляют основную массу всех используемых полевиков), канал для носителей заряда появляется только под воздействием управляющего сигнала, до этого момента между стоком и истоком, по сути, диэлектрик. Затвор от них отделен оксидом кремния (который тоже диэлектрик). У биполяра есть только прямо и обратно смещенные P-N переходы, которые заметно «прозрачнее».
В приведенной выше схеме биполяр используется только как преобразователь уровня (или как инвертор с открытым коллектором, что, вобщем, тоже самое).
0
в приведенной схеме биполяр используется для того, чтобы управлять полевиком не непосредственно от МК, т.к. в нем токи утечки точно — мое почтение.
0
Да, но там токи утечки вызваны схемами защиты выходов и входов, а не тем, что там полевики. Ну и если по этой схеме, то ее утечки будут определяться утечками биполяра (резистор там существенной роли не играет, поскольку эквивалентное сопротивление биполяра намного больше). Если честно, то мне эта схема не очень нравится. У этих биполяров при нормальной температуре обратный ток коллектора достаточно мал (15нА), но с ростом температуры быстро растет и может доходить до единиц мкА.
0
токи утечки вызваны схемами защиты выходов и входов

дык естественно:) я ж не говорю, что мега-утечка из-за полевиков:)

с ростом температуры быстро растет и может доходить до единиц мкА.

это да, есть такое. однако, специально сейчас проверил еще раз — у полевиков точно такая же херня:

0
Прикол в том, что полевик в этой схеме непосредственно на землю не подключен, поэтому его токи утечки особой роли не играют.
0
Относительно принципа действия данной схемы… хочу уточнить:
При выключенном питании — все ли и всегда выходы микросхемы микроконтроллера, автоматически, переводятся в режим «Hi-Z»?

И откуда берутся «большие токи утечки» непосредственно в МК? Если «ток утечки у запертого полевика даже меньше, чем у биполярного»…

Чтобы открыть P-канальный МОП, нужно положить его Затвор на Землю («отрицательное смещение»: потенциал Затвора < Истока)… А закрывается: Затвор=Сток="+BAT".
Т.е. когда микроконтроллер «активирует функцию автовыключения» (гасит сам себя), то ему нужно закрыть VT2. Для этого, МК выводит в порт «уровень 0». Потом, питание схемы отрубается — и далее, на выходе будет уже «Hi-Z». Помехи, наводящиеся на Базе VT2, будут автоматически стекать через Эмиттер в Землю — и VT2 будет надёжно закрыт. Подтяжка R1 будет исправно «подтягивать» Затвор=Сток — и VT1 будет надёжно закрыт…
Но, в принципе, с таким же успехом, можно бы подключить Затвор VT1 сразу к МК, без R2 и VT1. Разве что, управление станет инверсным: VT1 будет закрывать «уровень 1»… Что я упустил?

Зато, в рабочем режиме устройства, чтобы поддерживать VT1 и VT2 открытыми — нужно постоянно вкатывать в базу VT2 какие-то неслабые миллиамперы (ведь, VT2 — это «некомплементарный инвертор»). Одна невыгода…
0
Что я упустил?

ну ты глянь «схему» одного из выводов МК:



полевики МК к утечкам по входу вообще практически никакого отношения не имеют. думаю, утечки обусловлены диодами на плюс и на массу.

поверь, сначала был испробован вариант без биполярника, т.е. когда затвор подключен напрямую к выводу МК:) потребление схемы после подачи питания (т.е. когда устройство должно быть выключено) составило аж 2-3мА. это из-за того, что за счет утечек по входу кирпича полевик приоткрывался и начинал пропускать ток. при этом данное значение (2-3мА) зависело от напряжения батарейки, что неудивительно.
0
за счет утечек по входу кирпича
Я вижу только один путь утечек, здесь — через верхний защитный диод:
+BAT
R1
ЗатворVT1
ВходМК
ВерхнийЗащитныйДиод
ВнутренняяШинаVCCустройства(НынеОтключённаяОтBAT)
ИЧерезНекийДругойКаскадУстройства
НаЗемлю

Замечу: ВнутренняяШинаVCCустройства(НынеОтключённаяОтBAT) — а потому её уровень колбасится как хочет… здесь, он опускается ниже +BAT-0.6V, тогда ВерхнийЗащитныйДиод откроется и протечёт… Так?

Но истинной причиной утечек является: НекийДругойКаскадУстройства. Причём, это может быть и сам микроконтроллер: поскольку его «RST» и «VCC» подтянуты к шине питания — микроконтроллер может даже пытаться запускаться от таких наводок!
(3.3V-0.6V)/10kOm=0.27mA — вполне достаточно для работы многих МК даже в «Active Mode»! Хотя, из-за подключенной периферии, уровень ВнутреннейШиныVCCустройства будет тут же просажен ниже 1.8-2.7V и МК отрубится… Возможен также, худший сценарий: когда МК станет колбаситься «вкл-выкл-вкл-вык» (интересно было бы глянуть уровень на ВнутреннейШиныVCCустройства осциллографом). Так?
0
камрад, очень сложно читать твои пергаменты. зачем в камментах-то столько форматирования?

Я вижу только один путь утечек, здесь — через верхний защитный диод:

а через нижний, то есть, утечки быть не может?

я не пойму — вопрос-то в чем? зачем биполярник? или еще в чем-то?
+1
Благодарю за пояснения, я понял затем в приведенной схеме транзистор VT2.
Схема меня заинтересовала. Но для меня ещё осталось несколько непрояснённых деталей — поэтому продолжаю задавать уточняющие вопросы, по режимам и принципу действия схемы, и по альтернативным решениям…

1) Правильно ли я понял причину учечки и её путь, через защитные диоды?

2) А, действительно, может ли произойти утечка через нижний диод? Как мне представляется — не может. Здесь, утечка: через верхний диод -> внутреннюю шину питания -> нагрузку. Но может я, по неопытности, недопонял?

3) А можно ли модифицировать данную схему, употребив для VT2 МОП-транзистор? (не ухуджая, но улучшая режимы работы)
Предлагаю Решение: n-канальный МОП-ключ, Истоком на Землю. Токоограничивающий R2 остаётся. Убрать резистор ограничивающий базовый ток биполярного VT2 (упомянутый ниже 10кОм), но добавить подтяжку Затвора VT2 к Земле (10кОм).
Правильно ли я понял, что данное решение также будет работать? Преимуществ у него не будет, в сравнении с решением на биполярном транзисторе (разве что: меньший ток утечки на закрытом VT2). Но это доказывает, что выбор: использование полевого или биполярного транзистора, в данной схеме — не принципиален?
0
добавлено:
3) Токоограничивающий R2 остаётся...
Хотя, для смягчения режимов заряда/разряда Затвора VT2, можно и ему токоограничивающий резистор вставить…
0
употребив для VT2 МОП-транзистор?

ну а почему нет? вопрос в том, сколько устройство будет спать, а сколько бодрствовать. если больше спит — имхо, лучше биполярник (из-за меньшего тока утечки). если больше бодрствует — лучше полевик, чтобы не кормить подолгу базу биполярника.
0
Угу, понял.
И всё же, полагаю, в данной схеме, в качестве VT2 — лучше взять биполярник. Но не потому что у него меньше токи утечки, а потому что так схема — проще (меньше деталей) и надёжнее работает (используя природные свойства биполярников).

Если взять полевой VT2, то ему обязательно нужно подтянуть Затвор к Земле (чтобы сам не открывался, от наводок). Но и в штатном режиме, при работе устройства, через эту подтяжку будет утекать заряд с Затвора — поэтому его прийдётся накачивать, практически, так же как и биполярник.
А биполярнику, за счёт существования ПРИРОДНОЙ гальванической связи База->Эмиттер->Земля, никакая дополнительная «подтяжка к Земле» не нужна — сам не откроется.

Разница появится, когда требуемый «ток Базы» биполярника превысит «ток утечки через подтяжку» полевика — тогда полевик станет выгоднее (в плане потребления) и надежнее/предсказуемее (в плане управления)…

p.s. Поздравляю всех с наступающим Новым годом!
0
А биполярнику, за счёт существования ПРИРОДНОЙ гальванической связи База->Эмиттер->Земля, никакая дополнительная «подтяжка к Земле» не нужна — сам не откроется.
На самом деле, подтяжку базы биполярника к земле ставят, если схема управления им может оказаться в Hi-Z состоянии (т.е. как раз в рассматриваемом случае). Наводку-то он на землю, конечно, зашунтирует, но и сам при этом откроется.
+1
не, ну это сегодня так шутят все? вы же сознательно создали путь «паразитного» питания, вот оно и начинало отжирать. где тут утечки-то? это не утечки, а ошибочно спроектировання схема.
0
О, да! Вот эта концепция: «паразитное питание»! Я забыл, как это называется, но чуял, что причина в этом. А транзистор VT2 — используется «для развязки»…
0
ну вот если нет VT2, то путь тока: батарейка, R1, R2, верхний диод, питание кирпича. камень — мега8. думаешь, она будет столько жрать при Vbat=+1,8В (да еще на диоде сколько-то упадет)? именно, что интересуюсь, т.к. сам я в данных вопросах не сильно специалист.
0
так самой меге не обязательно сколько жрать, там ведь на питании могут быть и другие устройства?
0
на питании могут быть и другие устройства?

да нет. прежде чем рисовать финальную схему и разводить плату все неясные моменты стараюсь макетировать. ну и в данном случае — на батарейке висел голый кирпич. подключены только плюс, масса, да один вывод напрямую на затвор полевика.

я, впрочем, понятия не имею, сколько будет жрать мега в таких условиях, поэтому и спросил
0
ну не знаю. я так глубоко не копал, просто сталкивался с такими-же проблемами, когда в подобных условиях у меня мега выжирала cr2032 за сутки.
0
и, кстати, не в курсе, какие диоды (какой тип) на плюс и на массу на выводах МК висят? шоттки, «обычные» и т.д.?
0
не шоттки точно, с падением 0,5-0,6 В… насчет того какие именно не знаю, мож какие импульсные.
0
[чешет репу] откуда ж тогда миллиамперы взялись? для таких диодов ток утечки — микроамперы. хотя, там еще и степ-ап есть, может он еще сколько-то жрал — полевик же приоткрывается.
0
да вот я и сам уже задумался откедава. даже шоттки такой говённый еще надо найти, чтобы при столь малом напряжении миллиамперы пропускал в обратном направлении.
0
блин, жаль фоток макета не сделал. я тут подумал — может, еще и светодиод на питании висел? и если он был красный (хотя, тут, наверное, цвет и не сильно повлияет) — тогда всё хотя бы примерно сходится. но опять же — может, и кирпич сам столько жрал, хрен его знает:)
0
да и фиг с ним в полночь о таком думать)
0
Лучше принимайте поздравления с наступающим, коллега)
0
и вас с наступающим! всех благ!
0
ну, короче, транзистор VT2 нужен — это факт:)
0
Дык, не только «мега8» жрёт! А и все другие цепи, подключённые к «шине питания» устройства. Вот и набегает «2-3мА»…
0
а ошибочно спроектировання схема.

ну а изначальная схема и правда была косячная, да. тут и ворпосов никаких нет, раз ее переделывать пришлось:)
0
нужно постоянно вкатывать в базу VT2 какие-то неслабые миллиамперы

это заблуждение. в реальной схеме стоИт 10кОм. это при +3,3В питания примерно (3,3-0,7)В/10кОм = 0,26мА. всё чудесно работает, т.к. у логических полевиков не сильно большой заряд затвора, а у ВС847 относительно неслабый к-т усиления. я бы еще больше номинал базового резистора сделал, но там ужЕ прАвило «чем меньше разнообразие номиналов, тем лучше».
0
Кстати, вместо отдельного транзистора и резистора туда удобно ставить «цифровые транзисторы» (конкретные модели можно глянуть тут). По цене практически 1:1 с теми что в схеме.
+1
хе, прикольные:) жаль только, в нашей глуши пока не распространены. но, думаю, это просто вопрос времени
0
Есть смысл, я использую транзисторы типа FMMT617 в повышающих преобразователях типа ZXSC300 работающих от одной батарейки. У этих транзисторов напряжение насыщения 200mv максимум, при токе 3A.
0
200mv максимум, при токе 3A

ну, не сильно мало на самом деле:)
0
вопрос только в том, сколько полевому транзистору надо подать на затвор, чтобы у него было такое напряжение насыщения.
0
так разве кто-то спорит?
0
Я спорю :) Вот, например.
0
а какой конкретно?:) че-та я три штуки наугад взял — ни один не подходит:)

у n-канальных полевиков (это которые из разряда говна и палок) и впрямь минимальное напряжение затвора составляет +1,4...+1,5В для нормальной работы. что не ахти для дывайсов на одной батарейке. но это ж из ширпотреба, думаю, есть и какие-нибудь специализированные.

к слову — для P-канальных ситуация получше. для не сильно экзотических IRLML6401, например, характеристики приводятся для напряжений затвора от +1,0В, что ужЕ близко к биполярнику
0
Si8424CDB при 0.8В на затворе имеет что-то около 50мОм сопротивление, судя по характеристике в даташите. При трех амперах это будет 150мВ, что лучше, чем у FMMT61x.
0
да, прикольный транзистор. жаль, что не ширпотреб:) да еще в дурацком корпусе:)

но в целом, думаю, тенденция к уменьшению порога открывания полевиков сохранится. особенно с учетом всё возрастающей доли батареечной техники.
0
Ну корпус там вполне адекватный, в печке или феном паяться должен на ура. Да и не ширпотреб он только у нас, судя по цене он, как раз, на самый массовый сегмент и ориентирован.

А порог да, будет понижаться. Транзисторы на арсениде галлия так вообще можно делать с практически любым порогом (сами по себе они вообще в режиме обеднения работают, что бы они были похожи по характеристикам на обычные полевики их как-то хитро модифицируют).
0
при 0.8В

ну и ведь не 0,8В обычно надо, а всё-таки побольше. так что сопротивление еще меньше будет
0
Автор топика запретил добавлять комментарии