Меню
  Список тем
  Поиск
Полезная информация
  Краткие содержания
  Словари и энциклопедии
  Классическая литература
Заказ книг и дисков по обучению
  Учебники, словари (labirint.ru)
  Учебная литература (Читай-город.ru)
  Учебная литература (book24.ru)
  Учебная литература (Буквоед.ru)
  Технические и естественные науки (labirint.ru)
  Технические и естественные науки (Читай-город.ru)
  Общественные и гуманитарные науки (labirint.ru)
  Общественные и гуманитарные науки (Читай-город.ru)
  Медицина (labirint.ru)
  Медицина (Читай-город.ru)
  Иностранные языки (labirint.ru)
  Иностранные языки (Читай-город.ru)
  Иностранные языки (Буквоед.ru)
  Искусство. Культура (labirint.ru)
  Искусство. Культура (Читай-город.ru)
  Экономика. Бизнес. Право (labirint.ru)
  Экономика. Бизнес. Право (Читай-город.ru)
  Экономика. Бизнес. Право (book24.ru)
  Экономика. Бизнес. Право (Буквоед.ru)
  Эзотерика и религия (labirint.ru)
  Эзотерика и религия (Читай-город.ru)
  Наука, увлечения, домоводство (book24.ru)
  Наука, увлечения, домоводство (Буквоед.ru)
  Для дома, увлечения (labirint.ru)
  Для дома, увлечения (Читай-город.ru)
  Для детей (labirint.ru)
  Для детей (Читай-город.ru)
  Для детей (book24.ru)
  Компакт-диски (labirint.ru)
  Художественная литература (labirint.ru)
  Художественная литература (Читай-город.ru)
  Художественная литература (Book24.ru)
  Художественная литература (Буквоед)
Реклама
Разное
  Отправить сообщение администрации сайта
  Соглашение на обработку персональных данных
Другие наши сайты
Приглашаем посетить
  Блок (blok.lit-info.ru)

   

Счетчик времени исходящих телефонных разговоров

МИНИСТЕРСТВО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Курганский государственный университет

Счетчик времени исходящих телефонных разговоров

КУРСОВОЙ ПРОЕКТ

Дисциплина: Электроника

Студент группы М-3130 Скидин А. С. подпись ___________

Направление:

Специальность: Автоматизация и управление__________________

Руководитель:

Доцент, к. т. н. _______________________________/ Кудряшов Б. П. /

Дата защиты: _________________

Оценка: ______________________

СОДЕРЖАНИЕ

1. Введение______________________________________________3

2. Теоретический раздел___________________________________4

3. Заключение____________________________________________19

4. Список литературы______________________________________20

1. Введение

рода устройства, и с разной эффективностью. Однако в общем случае применяются специальные устройства.

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

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

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

Питание устройства осуществляется от телефонной сети.

2. Теоретический раздел

2. 1. Постановка задачи

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

Принцип повременной оплаты внутригородских телефонных разговоров предполагает оплату времени только исходящих от абонента звонков. Естественно, что пользователям телефонной сети интересно и полезно знать свое «проговоренное» время, чтобы, например, вовремя перейти на режим «разговорной экономии» или оценить в конце месяца дополнительные затраты.

2. 2. Описание функциональной схемы устройства

в этом случае разрывает цепь прохождения импульсов счета. Индикатор времени (блок 9) отображает предыдущие показания без их изменения. При этом счет времени отсутствует независимо от того, поднял абонент трубку своего телефона или нет.

При поднятии трубки абонентом срабатывает устройство анализа наличия «своего» вызова (блок 2) и подготавливает цепь прохождения импульсов счета через узел разрешения счета времени (блок 3).

Необходимыми условиями прохождения импульсов счета с генератора (блок 8) через узел запрета (блок 7) являются отсутствие звонкового сигнала до поднятия трубки и окончание сигналов «не отвечает» после набора номера абонентом. Таким образом, счет происходит только при состоявшемся исходящем соединении. В случае появления сигнала «занято» счет также не начнется.

Текущее время разговора отображается на индикаторе времени (блок 9). Блок 4 работает в режиме накопления. Для его обнуления предусмотрена кнопка «Сброс». Питание всех элементов устройства осуществляется от источника питания, который, в свою очередь, питается от телефонной линии.

2. 3. Описание принципиальной схемы устройства

в типовой схеме включения. На выходе 9 микросхемы DD2 (вывод 1) присутствуют импульсы счета с частотой 1 Гц, а на выходе K – импульсы с частотой 512 Гц, которые используются для работы жидкокристаллического индикатора HG1.

Устройство анализа наличия звонка работает следующим образом: сигнал вызова (переменное напряжение с частотой 25 Гц и амплитудой до 110 В) из линии через конденсатор C3 поступает на диодный ограничитель VD7 – VD10. Примененное включение диодов позволяет преобразовать синусоидальное напряжение звонка в почти прямоугольные импульсы с амплитудой 2,1 В, которые переключают триггер DD1. 1 по входу C. Так как на входе D триггера DD1. 1 в этот момент присутствует высокий уровень с выхода элемента DD4. 1, на прямом выходе DD1. 1 также появится высокий уровень. Этот сигнал запрещает прохождение импульсов счета через элемент DD3. 1, которые поступают с микросхемы DD2. Если при этом абонент поднимет трубку телефона для разговора, счета времени не произойдет.

с некоторым запаздыванием, обусловленным наличием конденсатора C2. Конденсатор C2 необходим для отфильтровывания сигналов набора номера, звонка, а также помех, которые могли бы приводить к ложному срабатыванию триггера DD4. 1. Низкий уровень с выхода DD4. 1 поступает на вход D триггера DD1. 1 (который теперь не будет изменять исходного нулевого состояния, независимо от любых сигналов на входе C, если до этого не было звонка) и вход элемента DD3. 2, который разрешает счет времени.

С выхода DD3. 2 импульсы счета поступают на элемент DD3. 3, на второй вход которого (вывод 8) подается управляющий уровень с выхода устройства анализа наличия сигнала «не отвечает» (посылки синусоидальных импульсов с частотой заполнения 425 Гц, длительностью 1 с и паузой 4 с) или «занято» (аналогичные посылки с паузой 1 с). Импульсы выделяются на диодах VD7 – VD10, усиливаются транзисторами VT3, VT4 и заряжают конденсатор C5 почти до напряжения источника питания. Во время паузы конденсатор C5 разряжается через подстроечный резистор R9. Транзистор VT2 в это время закрыт. Резистором R9 устанавливают такую постоянную времени, чтобы в течение 4 с (паузы) не происходило переключение триггера Шмитта DD4. 3, преобразующего экспоненциальные фронты на своем входе в крутые на выходе.

Таким образом, пока на конденсаторе C5 выделяется сигнал «не отвечает», триггер DD4. 3 находится в единичном состоянии и своим выходным сигналом запрещает прохождение импульсов счета через элемент DD3. 3 на разъем X3. 1 и далее на вход счетчика времени «своих» разговоров. Одновременно эти импульсы поступают на вход C триггера DD1. 2 и вход формирователя импульсов индикации счета (элемент DD4. 2). Триггер DD1. 2 переключается и открывает транзистор VT2, который шунтирует вход устройства анализа сигналов. Это необходимо для исключения зарядки конденсатора С5 речевыми сигналами и сигналами помех в линии.

Обнуление триггеров DD1. 1 и DD1. 2 происходит подачей импульса, формируемого дифференцирующей цепью C4R13, возникающего при опускании телефонной трубки на аппарат и переходе, вследствие этого, триггера DD4. 1 в единичное состояние. В случае поступления вызывного сигнала в отсутствие абонента (трубка не будет поднята) триггеры DD1. 1, DD1. 2 переключаются так же, как в рабочем режиме, описанном выше, а их обнуление осуществляется импульсом с дифференцирующей цепи C9R13, возникающем в момент переключения триггера Шмитта DD4. 3 в нулевое состояние после окончания звонковых сигналов.

пополам на конденсаторах C4, C9 и его амплитуды становится недостаточно для переключения триггера DD1. 1. Низкий уровень на входе D триггера DD1. 1 (при поднятии трубки) позволяет триггеру оставаться в нулевом состоянии при воздействии по цепи C3R12 импульсов набора номера и импульсов помех в линии на его вход C.

Счет времени «своих» разговоров осуществляется с помощью PIC-контроллера (модель PIC16C55, 4 МГц). Максимальное время, которое может пройти до переполнения счетчика, составляет 99 часов 59 минут 59 секунд. Часы и минуты отображаются на жидкокристаллическом индикаторе HG1. Работа устройства в режиме счета определяется по мигающей с частотой 1 Гц средней децимальной точке (вывод 9 HG1). Обнуление таймера происходит при подаче импульса на вход RA2 микроконтроллера, формируемого дифференцирующей цепью C10R17 при нажатии кнопки SB1.

Питание устройства осуществляется от телефонной линии с использованием микромощного стабилитрона VD6, рабочий ток которого задает стабилизатор тока VT1. Диодный мост VD1 – VD4 обеспечивает независимость от полярности при подключении устройства к линии. Ток, потребляемый устройством в режиме ожидания, не превышает 100 мкА.

2. 4. Описание процесса обработки импульсов счета

обработка каждого импульса, но в то же время без его повторной обработки. Таким образом, для решения поставленной задачи нужно либо постоянно анализировать определенный вход PIC-контроллера с целью выявления прихода импульса счета, либо использовать внутренние возможности PIC. В первом случае возникает возможность двойной обработки одного и того же импульса, что требует дополнительной коррекции программы для микроконтроллера. В случае, когда используется внутренний таймер-счетчик PIC TMR0 (вывод T0CK1), нет нужды дополнительно вводить в программу проверку на то, был ли уже этот импульс обработан, или еще нет. Достаточно организовать главный цикл, который будет отслеживать состояние счетчика таймера и, как только дождется его изменения, можно будет однозначно сказать о приходе импульса счета. В этом случае нужно увеличить внутренние счетчики времени. В качестве счетчиков с программной точки зрения удобнее всего завести отдельно счетчики единиц минут, единиц часов, десятков минут, десятков часов. Альтернативой такому подходу может считаться счетчик большой разрядности, который будет считать не в формате часы:минуты:секунды, а просто количество импульсов, пришедших на PIC-контроллер с момента сброса. Недостаток такого подхода очевиден, ведь как бы ни велся счет времени внутри PIC-контроллера, устройство всегда обязано выводить результат на жидкокристаллический экран HG1. И в случае, когда часы, минуты и секунды «спрессованы» в одну единицу данных (как показывает расчет, для компактного представления данных о числе импульсов с тем же пределом необходимо 3 байта), необходимо провести обработку этого числа. Эта обработка сводится к делению по модулю 60 и к нахождению частного от этого деления. Как известно, PIC16C55 не содержит в своем наборе команд деления по модулю. поэтому программа должна была бы провести большую подготовительную работу перед такими операциями.

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

Кроме того, в целях наиболее эффективного использования возможностей PIC, стоит предусмотреть «спящий» режим для контроллера. Для обоснования использования этого режима приведу выдержку из описания контроллера PIC [2], кое-где снабжая ее своими комментариями.

Для входа в режим пониженного энергопотребления используется команда SLEEP. По этой команде сторожевой таймер WDT (о нем ниже), если он был разрешен при программировании контроллера, сбрасывается и начинает отсчет времени заново. При пониженном энергопотреблении не происходит сброс контроллера, однако ток в режиме SLEEP не превышает нескольких микроампер. Для снижения тока, потребляемого в этом режиме, все разряды внешних портов кристалла должны находится либо на уровне Vss, либо на уровне Vdd. Все разряды портов, находящиеся в высокоимпедансном состоянии, должны быть соединены внешними резисторами с Vss или Vdd, чтобы избежать токов переключения, вызываемых плавающим потенциалом на высокоомных входах. Вывод MCLR должен иметь высокий логический уровень. Выйти из режима пониженного энергопотребления микроконтроллеры могут по одному из следующих событий:

2) Сброс при срабатывании сторожевого таймера WDT.

При этом независимо от причины сброса обнуляется сторожевой таймер WDT.

В нашем случае необходимость использования функции SLEEP обусловлена тем, что в общем-то при отсутствии импульсов счета в течение длительного времени оптимальным решением для PIC является его перевод в «спящий» режим. Схема перевода контроллера в режим пониженного энергопотребления состоит в следующем: работа программы осуществляется, пока на вход внутреннего таймера поступают импульсы счета времени (то есть до тех пор, пока идет телефонный разговор, инициированный нашим телефоном). Как только обрабатывается очередной импульс, начинается отсчет времени до прихода следующего импульса. В это время контроллер ничем не занят, а его сторожевой таймер включен. Как только время ожидания становится равным 2 секундам (с большой долей вероятности можно сказать, что если за 2 секунды не придет ни одного импульса, то телефонного разговора нет), происходит переход PIC-контроллера в режим пониженного энергопотребления. Согласно документации, каждые 18 мс тот же сторожевой таймер будет сбрасывать контроллер, и в это время будет выполняться небольшой участок программы, ответственный за проверку пришествия импульса счета на вход микросхемы. Эта проверка занимает несколько микросекунд, что, очевидно, не нивелирует разницу между работой с режимом пониженного энергопотребления и работой без такового режима. Задача у этой проверки предельно проста: получить значение внутреннего таймера-счетчика TMR0, сравнить его с предыдущим значением. В случае, когда результатом сравнения станет равенство значений, можно смело «засыпать» снова, поскольку новых импульсов не появилось. Если же результат сравнения есть «не равно», то необходимо обнулить сторожевой таймер и начать счет импульсов. Таким образом, при такой схеме работы контроллер основное время находится в «спящем» режиме, выходя из него только в случае поступления нового импульса счета или в случае «дежурного обхода», то есть при проверке входа таймера TMR0 с целью обнаружить новый импульс.

определению режима работы контроллера: если контроллер «просыпается», это отражено в бите 4 регистра STATUS. В этом случае программа разумно считает, что начальная инициализация не нужна, поскольку счет импульсов уже шел до этого, и проходит этот этап. Если же контроллер заработал по включению питания, то начинается настройка программы на ее дальнейшую работу. Поскольку в начальный момент времени состояние памяти изделия фирмы Microchip трудно прогнозируемо, первым делом в программе мы обнулим все регистры общего назначения, которые используются в работе (предварительно, следуя рекомендации разработчиков PIC, переключимся на нулевую страницу памяти). Следующим этапом инициализации является настройка счетчика WDT на 2 секунды. Для этого в программе для контроллера используется код, рекомендованный в литературе по PIC. Поскольку в PIC есть предварительный делитель для TMR0 и для WDT, то может возникнуть путаница при программировании делителя на заданное значение из-за неопределенности подсистемы (TMR0 или WDT), для которой программируется делитель. Фрагмент программы, ответственный за такую настройку, данную неопределенность устраняет: он сперва, выбрав внутренний сигнал для TMR0, назначает новое значение делителя TMR0 (выбор внутреннего сигнала необходим, поскольку в разрабатываемом устройстве используется внешний сигнал для тактирования TMR0). Затем код выбирает WDT и устанавливает нужное нам значение предварительного делителя.

После предварительной подготовки наступает выполнение основного цикла программы. Он заключается в непрерывном сканировании входа RB2, чтобы вовремя детектировать сигнал сброса счета, и в постоянной проверке содержимого TMR0. Для проверки последнего в программе заведено свое значение, соответствовавшее TMR0 на момент прихода последнего импульса. Для выяснения того, пришел новый импульс или нет, довольно выполнить исключающее ИЛИ с текущим значением TMR0 и значением программного счетчика. Если результат нулевой – импульса счета нет. Параллельно с этим циклом контроллер ведет свою канцелярию: изменяется счетчик сторожевого таймера WDT. Если данный цикл будет выполняться в течение двух и более секунд, это означает, что прохождение импульсов через цепь счета (блок 3 на структурной схеме) прервано по каким-либо причинам (скорее всего, просто-напросто нет исходящего от абонента разговора). В случае прерывания импульсов счета контроллер переходит в режим пониженного энергопотребления, периодически проверяя, не пришел ли еще какой-либо импульс (сброса или счета времени). Период такой проверки равен 2 секундам, отсюда видно, что максимальная погрешность подсчета телефонных разговоров также равна 2 секундам. Для ее уменьшения следует изменить значение предварительного делителя сторожевого таймера WDT, однако в данном случае несколько возрастет нагрузка на PIC, поскольку импульсы поступают не чаще, чем раз в секунду, а обнуление счетчика WDT происходит только по приходу импульса. Отсюда следует, что если установить малое значение делителя, то PIC будет часто попусту сбрасываться, что само по себе не очень хорошо. Если же установить время сброса на 2 секунды, то несложно увидеть, что в таких случаях пустых сбросов контроллера не будет совсем.

При подаче высокого уровня на вход RA2 должен по проекту последовать сброс счетчика на нуль. Реализация этого действия в программном варианте сводится к обнулению всех внутренних регистров и подача на жидкокристаллический экран соответствующих результатов.

Для самого счета импульсов в программе отдельно сделаны счетчики для каждой из цифр, которые будут отображаться на жидкокристаллическом экране. Это единицы и десятки часов, минут и секунд. В первоначальном варианте предполагалось выводить на жидкокристаллический экран лишь минуты и часы разговора, однако путем изменения модели индикатора и добавлением соответствующих строк в программу было сделано расширение отображаемого временного диапазона до секунд. Таким образом, при поступлении импульса счета происходит увеличение сперва единицы секунд (onesecond), затем, если необходимо, десятка секунд (decsecond), и так далее. Фраза «если необходимо» значит, что для каждой цифры времени есть свои пределы. Для единиц и десятков часов, а также для единиц минут и секунд цифры могут меняться от 0 до 9, для десятков минут и секунд от 0 до 5. Слежка за изменением состояния каждой цифры в программе реализована довольно традиционно, путем сравнения его с пределом диапазона.

символов (Enable). Передача данных происходит порциями по 8 бит, с небольшой временной задержкой. Поскольку выбранный мною индикатор позволяет выводить не только цифры, но и графику, то для более привычного представления будем выдавать на индикатор время в формате ЧЧ:ММ:СС, причем сперва выдаются часы, затем минуты, и уж наконец – секунды. После передачи идет возврат к главному циклу.

2. 5. Текст программы

STATUS equ 03h

onemin equ 08h

decmin equ 09h

onehour equ 0Ah

dechour equ 0Bh

curtime equ 0Ch

onesecond equ 0Dh

decsecond equ 0Eh

org 00h

; Начальная инициализация

movf STATUS

btfss STATUS, 4

goto resume ; Если возвращаемся от сброса

bsf status

bsf fsr ; Установка нулевой страницы памяти

movlf 0h ; Обнуление всех данных программы

movwf TMR0

movwf onemin

movwf decmin

movwf onehour

movwf dechour

movwf curtime

movwf second

resume:

movlw 010000b

clrf TMR0

movlw ‘xxxxx1xxx’b

clrwdt

movlw 1110b

option

maincycle:

movf TMR0, 0

xorwf curtime, 0

btfss STATUS, 2

; пойдем на getnewtime

btfss PORTA, 2 ; Есть запрос на сброс счета?

goto maincycle ; Если нет - на maincycle

; Обнуление всех счетчиков

movlf 0h

movwf onemin

movwf onehour

movwf second

goto dataout ; Выведем на индикатор нули

getnewtime:

; Обработка сигнала

; Установим делитель WDT на 1 секунду

movlw 010000b

option

clrf TMR0

movlw ‘xxxxx1xxx’b

clrwdt

movlw 1110b

option

movf TMR0, 0

movwf curtime ; Установим новое значение счетчика

incf onesecond, 1

movlf 10d

xorwf onesecond, 0

btfss STATUS, 2

goto dataout ; Если не натикало 10 секунд, к dataout

movlf 0h

incf decsecond, 1

movlf 06d

xorwf decsecond, 0

btfss STATUS, 2

goto dataout ; Если не натикало минуты, к dataout

; Считаем единицы минут

incf onemin, 1

movlf 10d

xorwf onemin, 0

btfss STATUS, 2

movlf 0h

movwf onemin

; Десятки минут

incf decmin, 1

movlf 06d

xorwf decmin, 0

btfss STATUS, 2 ; Есть ли потребность изменить час?

goto dataout ; Нет - к dataout

movlf 0h

incf onehour, 1

movlf 10d

xorwf onehour, 0

btfss STATUS, 2 ; Есть десять часов или нет?

goto dataout ; Нет - к dataout

movlf 0h

; Десятки часов

incf dechour, 1

movlf 10d

xorwf dechour, 0

btfss STATUS, 2 ; Исчерпан лимит времени?

movlf 0h

movwf dechour

dataout:

; Выдача данных на индикатор

tris PORTB

movf dechour, 0

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

; Временная задержка перед отправлением следующего пакета данных

movwf 20d

new1: nop

decfsz w, 1

movwf PORTB

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

addwf onemin, 0

movwf PORTB ; И о часах телефонного разговора

movlf 2Eh

new2: nop

decfsz w, 1

goto new2

movf decsecond, 0

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

addwf onesecond, 0

goto maincycle ; Вернемся к главному циклу

3. Заключение

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

4. Список литературы

1. КудряшовБ. П. и др. Электроника, Методические указания к выполнению курсового проекта.– Курган: КГУ, 1999.

2. Якубовский С. В., Барканов Н. А., Кудряшов Б. П. Аналоговые и цифровые интегральные схемы.– М.: Сов. радио, 1979.

3. Однокристалльные микроконтроллеры Microchip: PIC16C5X. /Пер. с англ.//Под ред. Владимирова А. Н.– Рига.: ORMIX, 1996.

4. Титце У., Шенк К. Полупроводниковая схемотехника, Справочное руководство.