Fork me on GitHub

NGSPICE.js - интегральные таймеры

Продолжаем осваивать NGSPICE.

Первые микросхемы интегральных таймеров появились в 1971 г. и были представлены фирмой Signetics Corporation (SE555 и NE555), позволяя формировать достаточно точные временные интервалы путём добавления времязадающих резисторов и конденсаторов. Интегральные таймеры сочетают в себе как элементы аналоговой схемотехники - компараторы, так и цифровой - триггеры. В настоящее время существует две разновидности 555-таймеров - классические, изготовленные на основе биполярных транзисторов, и их современные аналоги с меньшим энергопотреблением на полевых транзисторах. Несмотря на различия в принципиальных схемах и технологиях изготовления 555-таймеров от различных производителей все они полностью совместимы по номерам и назначению выводов и работают аналогично. На блок-схеме классического 555-таймера присутствует делитель напряжения из трёх последовательных резисторов 5 кОм - отсюда и название 555. В современных модификациях на полевых транзисторах номиналы сопротивлений могут отличаться.

screenshot

На блок-схеме инвертирующий вход первого компаратора с опорным напряжением 1/3 напряжения питания соединён с ногой Trigger. В свою очередь Threshold поступает на неинвертирующий вход второго компаратора с опорным напряжением 2/3 напряжения питания. С выходов обоих компараторов сигнал поступает на RS-триггер (flip-flop). Для разминки начнём с таблицы истинности триггера c учётом инверсии входа Trigger.

В следующих схемах использовались SPICE модель интегрального таймера TLC555 на полевых транзисторах:

~$ wget http://www.ti.com/sc/data/msp/models/tlc555.mod

таблица истинности | netlist | ngspice.js

screenshot

ngspice 1 -> source truth-table.net
ngspice 2 -> dc rr2 0 1g 1g rs2 0 1g 1g
ngspice 3 -> print s r q
ngspice 4 -> print ceil(max(1.5-s,0)/1.5) ceil(max(r-1.5,0)/1.5) ceil(max(q-1.5,0)/1.5)

Последняя строчка здесь помогает привести аналоговые величины напряжение к двоичному виду 0 или 1. Полученная таблицы истинности несколько упрощённая т.к. предыдущее состояние триггера всегда аппаратно сброшенное. Вцелом логика типичная если сравнивать с обычными RS-триггерами (R - reset, S - set) за исключением одной комбинации R=S=1, при которой на выходе имеем единицу - получается S как бы сильнее R:

-------------------------------------------------
Index       s               r               q               
-------------------------------------------------
0    1.000000e+00    0.000000e+00    1.000000e+00    
1    1.000000e+00    1.000000e+00    1.000000e+00    
2    0.000000e+00    0.000000e+00    0.000000e+00    
3    0.000000e+00    1.000000e+00    0.000000e+00

На практике 555-таймеры являются достаточно универсальными устройствами и могут выполнять различные функции, хотя наибольшее применение находят только первые две, которые являются классикой для микросхем данного семейства:

  • ждущий мультивибратор (иногда говорят одновибратор)

  • генератор прямоугольных импульсов (мультивибратор)

  • генератор, управляемый напряжением (ГУН)

  • триггер Шмитта, RS-триггер (бистабильный мультивибратор)

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

ждущий мультивибратор | netlist | ngspice.js

screenshot

ngspice 1 -> source monostable.net
ngspice 2 -> tran 2.5m 5
ngspice 3 -> plot (v(in)+3) v(out)

После подачи питания таймер аппаратно сбрасывается и выставляет напряжение на выходе 0. На вход TRIG у компаратора подаётся напряжение больше опорного и на выходе у него 0, который поступает на вход Set RS-триггера и соответственно на выходе RS-триггера по-прежнему 0. На инверсном выходе RS-триггера 1, транзистор открыт, на входе таймера THRES напряжение ниже опорного у соответствующего компаратора и тогда на вход Reset RS-триггера поступает 0.

В таком режиме схема будет находится бесконечно долго, ожидая изменения на входе TRIG. При напряжении достаточном для переключения компаратора на вход Set RS-триггера поступает 1, на выходе таймера установится 1, транзистор закрывается и начинает экспоненциально заряжаться конденсатор C1 через резистор R1 с постоянной времени R1C1. Пока заряжается конденсатор на выходе таймера сохраняется высокий уровень т.к. при R=S=0 RS-триггер хранит предыдущее состояние. Как только напряжение на конденсаторе достигнет 2/3 напряжения питания, переключается компаратор и на вход Reset RS-триггера попадает 1. Тут есть два варианта, которые отражены в таблице истинности R=1|S=0|Q=0 и R=1|S=1|Q=1. В любом случае при переключении выхода с высокого уровня на низкий схема снова переходит в режим ожидания входного импульса. Время задержки рассчитывается по формуле t = -ln(1 - (2/3))*C*R = l(3)*3*10^6*10^-6 ≈ 3.3 сек

screenshot

В режиме мультивибратора входы таймера TRIG и THRES соединены вместе. После подачи питания напряжение на них ниже опорных, на входе RS-триггера Set=1, на выходе 1, транзистор закрыт и конденсатор С1 заряжается через последовательно соединённые резисторы Ra и Rb. Когда напряжение на конденсаторе достигнет 1/3 питания Set переключится в 0, но при S=R=0 RS-триггер сохраняет предыдущее состояние. При напряжении 2/3 питания Reset переключится в 1, на выходе таймера 0, транзистор открывается и конденсатор разряжается через резистор Rb до 1/3 питания и процесс повторяется заново. Перед симуляцией мультивибратора в браузере рекомендуется сделать глубокий вдох и набраться терпения, т.к. процесс занимает порядка минуты !

мультивибратор | netlist | ngspice.js

screenshot

ngspice 1 -> source astable.net
ngspice 2 -> tran 0.1u 6.4m 5m
ngspice 3 -> plot v(out)

В отличие от мультивибратора на транзисторах на выходе имеем чёткие прямоугольные импульсы правильной формы. Частота колебаний f = 1/(ln(2)*C*(Ra+2*Rb)) = 1/(l(2)*0.15*10^-6*(5000+2*3000)) ≈ 874 Гц | HIGH = ln(2)*C*(Ra+Rb) = l(2)*0.15*10^-6*(5000+3000) ≈ 0.83 мс | LOW = ln(2)*C*Rb = l(2)*0.15*10^-6*3000 ≈ 0.31 мс

screenshot

P.S. в документации к TLC555 нагрузку R подключают к Vdd а не к земле.

Далее цифровая электроника.

Comments !

links

social