«Телесистемы»: Ширяев Алексей Евгеньевич. Технический автоответчик
Технический автоответчик предназначен для проверки качества работы
АТС и абонентских линий. Принцип работы заключается в принятии двух
кратковременных или одной непрерывной посылок индукторного тока и
выдачу после этого на линию синусоидального сигнала ответа. Разрабатывался
на замену морально устаревшего автоответчика АО-91 .
К достоинствам нового прибора следует отнести малые габариты, питание от абонентской
линии (60В не требуется), технологичность изготовления.
I. Технические характеристики.
-
Напряжение индукторного вызова не менее - 25 В.
-
Частота индукторного вызова - (16 - 50) Гц.
-
Длительность непрерывной посылки вызова - больше 4 с.
-
Время ожидания второй посылки - 4,5 с.
-
Задержка ответа после замыкания шлейфа - 2 с.
-
Задержка размыкания шлейфа после ответа - 2 с.
-
Частота синусоидального сигнала ответа 700 Гц.
-
Длительность сигнала ответа - 4 с.
-
Уровень сигнала на нагрузке 600 Ом - 0,5 В.
Примечание:
Стабильность временных характеристик зависит от примененного кварцевого
резонатора. По нищинско-экономическим причинам коэффициент гармоник
синусоиды не замерялся.
II. Описание принципиальной схемы.
Принципиальная схема автоответчика приведена на рисунке 2.
На ней можно выделить пять основных блоков:
-
[1] Управляющий контроллер (PIC12C509)- производит временной анализ
поступающей на вход информации. При обнаружении сигнала вызова
формирует методом ШИМ синусоидальный сигнал ответа. В свободное
от работы время находится в спячке. Как Я ;)
-
[2] Схема питания. Собрана на транзисторах VT2, VT3, VT4. Обеспечивает
питание всех узлов стабилизированным напряжением 3,3 В.
-
[3] Приемник индукторного вызова. Элементы UF1, VT1. Преобразовывает
высоковольтный сигнал вызова в прямоугольные импульсы одинаковой
амплитуды.
-
[4] Выходной фильтр. Транзисторы VT5, VT7. Собран по схеме активного
фильтра низких частот, третьего порядка. Отфильтровывает высшие
гармоники сигнала, поступающего с контроллера. Дополнительно,
с помощью ООС по напряжению, стабилизирует выходной уровень
сигнала.
-
[5] Электронный ключ (VT6, VT8). Производит замыкание-размыкание
шлейфа. Обеспечивает прохождение сигнала ответа в абонентскую линию.
Подробного рассмотрения заслуживает лишь схема питания. Остальные
элементы схемы стандартны и в детальном пояснении не нуждаются.
Блок питания разработан специально для питания контроллеров от
телефонной линии и обеспечивает:
-
[1] Минимальное потребление тока в режиме холостого хода
(не более 20 мкА).
-
[2] Нагрузочная способность 10 и более мА.
-
[3] Эффективное отражение сигналов переменного тока (в том числе
высоковольтного сигнала вызова).
-
[4] Хорошую стабильность напряжения питания.
-
[5] Быструю зарядку накопительной емкости, которая может быть 1000 и
более мкФ.
-
[6] Хорошее подавление помех.
Подобные характеристики получаются из-за различной реакции на сигналы
постоянного и переменного тока. На постоянном токе схема работает
как стабилизатор напряжения компенсационного типа. Переменный ток
при этом значительно ослабляется, так как встречает на своем пути
'пробку', состоящую из VT4, R13, C6, R19. Частота среза выбрана на
уровне частоты вызывных токов . На медленные изменения сигналов,
емкость C6 влияния не оказывает. (Дополнительно, C6 корректирует АЧХ
стабилизатора по устойчивости). Для повышения стабильности выходного
напряжения применена ПОС по току. Фактически, стабилизатор собран по
схеме подчиненного регулирования с внутренним контуром тока (VT3),
и внешним контуром напряжения (VT2). При соответствующей настройке,
можно обеспечить идеально жесткую нагрузочную характеристику
регулятора. Данное свойство очень важно при малом числе усилительных
элементов, и работе их в микрорежиме. По сравнению с традиционной
схемой на КЖ101, данная выгодно отличается возможностью более высоких
тактовых частот и, как следствие, более высокой производительностью
контроллеров. К тому же, на холостом ходу потребление от линии в пять
раз меньше. Это обеспечивает более стабильную работу АТС.
Общий вид платы автоответчика.
III. Краткое описание алгоритма работы программы.
Получить программу можно здесь.
Алгоритм работы основной программы таков:
- В основном состоянии контроллер
спит. Вывести его из этого состояния могут либо сторожевой таймер,
либо изменение сигнала на GP3 (P_PR). Сторожевой таймер используется
в качестве сброса, так как, линия MCLR отдана под прием вызова.
При обнаружении сигнала на GP3, запускается программа распознавания
вызова (PRV)и ожидаются результаты ее работы. Если тревога ложная,
то обратно в сон. В случае вызова, закорачивается шлейф и две секунды
ожидания. После этого запускается программа ответа, длинной четыре
секунды. Дальше опять, две секунды ожидания, разрыв шлейфа и в сон.
Особо пояснять здесь нечего.
-
Наибольший интерес представляет программа
распознавания вызова, так как используется частотный анализ приходящих
сигналов. Обычно, вызов определяется по достижении напряжения сигнала
некоторого порога. Между уровнями вызывных и разговорных сигналов
большая разница, поэтому распознать вызов не составляет труда. Труднее
обстоит дело с помехами от набора номера. Уровни этих сигналов соизмеримы.
Из-за этого приходится сдвигать порог определения вызова в область
более шестидесяти вольт. Для телефона может и не страшно, а у автоответчика
стандарт - чувствительность не более 25 вольт. Частотный
метод анализа основан на том, что сигналы вызова лежат в области 16-50 Гц,
в то время как частота набора номера -10 Гц. Как видно, разница
не велика, тем более, что частота набора может 'гулять'. В АТС старых
выпусков (из за дребезга контактов и пр.) частота и скважность
сигнала может сильно меняется, даже в пределах одной посылки.
Учтя все выше сказанное, перейдем к рассмотрению алгоритма распознания
вызова.
- Начну с общего, постепенно обрисовывая детали. Вычисленный
период сигнала сравнивается с наибольшим, и наименьшим значениями.
Эти временные рамки несколько шире тех, что оговорены стандартом.
Тем самым учитывается возможность 'дрожания' сигнала. Если сигнал
прошел сквозь ворота, то значение периода помещается в специальный
регистр, r_per. Иначе, не записывается, но в любом случае, вычисленный
период добавляется к общему времени вызова. Каждое новое значение
периода складывается с предыдущим и делится на два. В результате, r_per
хранит среднее значение сигнала, воздействующего на вход. На последнем
этапе распознания, когда программа определит наличие паузы между
посылками, интегрированный сигнал пройдет через вторые рамки, более
узкие. Только в случае удачного попадания в 'створ', частота сигнала
считается вызывной. Попасть на этот заключительный этап можно только
в том случае, если время действия вызова превысило четыре секунды.
При получении междугороднего звонка, с его длинной посылкой, автоответчик
сработает сразу, не дожидаясь второй. Если же посылка короткая,
то программа переходит к режиму ожидания посылки. Если за время
четыре с половиной секунды ничего не придет, значит, была помеха.
Но может случится так, что за время ожидания придет одиночный всплеск
напряжения (помеха). Для более устойчивого определения начала второй
посылки применена схема защиты от помех, работающая следующим образом:
При обнаружении изменения сигнала программа 'замирает' на сорок миллисекунд,
а после повторно проверяет вход. Если сигнал все еще присутствует, значит
пришла посылка вызова. В противном случае время потраченное
на обработку помехи вычитается из общего времени ожидания и программа
возобновляет сканирование входа. Время, затраченное на ожидание посылки
суммируется с общим временем, отсчитывающимся от начала вызова. Если
это время больше четырех секунд, то выставляется флаг минимума.
Наличие этого флага, а также частоты соответствующей вызывной, является
необходимым условием, но не достаточным, для распознания вызова. Для
окончательного определения вызова необходимо, что бы количество
'хороших' периодов сигнала было не менее пяти. Только в этом случае
можно говорить о среднем периоде сигнала. О наличии достаточности
'хороших' периодов сигнализирует флаг достатка. Только при выполнении
этих трех условий, программа установит флаг вызова.
- Теперь о том, как
определяется период сигнала. Принцип основан на прохождением программой
некоторых участков за определенное время. Например, программа
сканирования, отлавливающая изменения сигнала, каждый свой цикл
выполняет ровно за одну миллисекунду. Перед началом выполнения, ей
передается максимальное время сканирования. При обнаружении изменений
на входе, сканирование прекращается, а остаток времени находящийся в
регистрах, используется при вычислении периода. Для расчетов необходима
информация о длительности импульса и паузы, поэтому вычисление периода
ведется через каждые два запуска подпрограммы сканирования. При
обработке посылки вызова, время ожидания изменения сигнала составляет
сто миллисекунд. Если за это время изменений сигнала не было, то программа
считает, что посылка кончилась. Далее проверяются флаги, о которых
сказано выше и принимается решение: либо на выход, либо ожидание
следующей посылки.
- И еще о программе сканирования. Для предотвращения
дребезга контактов, в программе реализованы два блока, которые можно
обозвать как, интегратор и компаратор. Работают они аналогично их
'железным собратьям'. Интегратор многократно сканирует вход и в
зависимости от текущего состояния входа, инкрементирует, или декрементирует
некоторое число (128). Компаратор, с зоной нечувствительности,
принимает решение исходя из переменной, переданной интегратором.
Этой информации, а также комментариев программы достаточно, для ее
понимания.
Автор проекта
Ширяев Алексей Евгеньевич
Более подробная информация об авторе.