|
|
  |
AVR и телефон.., определения вызова и отбоя АТС |
|
|
|
Mar 27 2006, 08:37
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Вставлю пять копеек. Выбор AVR здесь не совсем правильный. Если вы хотите все это питать от линии, лучше применить MSP430. Вот вам даже готовый аплекейшн http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa178Приавда цепочку вызова там лучше переделать. Как правильно сказали выше - ставите оптрон и смотрите частоту на его выходе при вызове. На разных АТС она сильно колеблется 13-95 Герц. Амплитудный вызов не будет работать на всех АТС. Верный путь - частотный анализ. Тем более реализуется он элементарно.
--------------------
летаю на пепелаце...
|
|
|
|
|
Mar 27 2006, 14:22
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Спасибо всем принимавшим участие в обсуждении. Устройство сделано на том чем и задумывалось - tiny13. Сразу отвечу тем, кто советовал использовать MSP - питать от линии "прозрачно для линии" получилось не только tiny13, но и яркий светодиод (2ма) в режиме ожидания. Сигнал "вызов" обрабатывать получилось очень просто - через делитель 1k-100k завел плюс линии на АЦП контроллера и по уровню >60В просто снимаю трубку. Сигнал "отбой" обрабатываю с помощью аналогового компаратора, к которому через фазосдвигающую цепочку подключил "плюс" линии. Частоту не определяю, т.к. в tiny13 отсутствует режим Timer Capture. Работаю с длительностями перида - запустил таймер в режиме ОС-CTC на подсчет 100 тактов. В прерывании таймера увеличиваю счетчик. Если по прерыванию от аналогового компаратора в счетчике находится число от 27 до 29 - то предположительно это период сигнала "отбой". Подсчитывается количество таких периодов и если оно больше чем (425Гц * 0.35с)*0.5, то делается вывод, что это сигнал отбой и устройство ложит трубку. Пробовал дудеть в трубку, за "отбой" такие вопли не принимаются.  Привожу кусок программы с используемыми обработчиками, может кому пригодится: Код ; Чип настроен на работу от внутреннего RC с частотой 1.2Mhz
;**************************************************** ; Основной цикл программы ;**************************************************** MainCycle: ; <----------- ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ rcall ADC_Read cpi AL, CALLING_LEVEL brlo MainCycle ATA rjmp MainCycle
;**************************************************** ; Обработчик прерывания TMR1 (Timer 1 OC) ;**************************************************** TIM0_COMPA:; Timer1 Compare Handler in SREGM, SREG cpi Counter, MAX_TIMER ; Если значение счетчика не равно максимально допустимому brsh _skip_inc inc Counter ; тогда инкрементировать счетчик отсчетов _skip_inc: out SREG, SREGM reti
;**************************************************** ; Обработчик прерывания аналогового компаратора ;**************************************************** AC_Handler: in SREGM, SREG
cpi Counter, 27 ; частота больше 1 / ((27*100)/1.2Mhz) = 444.4 Гц brlo _skip_detect ; не наша частота - выход cpi Counter, 30 ; частота ниже 1 / ((30*100)/1.2Mhz) = 400 Гц brsh _skip_detect ; не наша частота - выход
cpi PeriodCounter, MAX_TIMER; проверить накопленное число периодов частоты сигнала "отбой" brsh _skip_inc_period ; если больше требуемого для распознавания - пропустить инкремент inc PeriodCounter ; увеличить число распознанных периодов
_skip_inc_period: ; <-- здесь можно например мигнуть светодиодом и т.п.
_skip_detect: cpi Counter, MAX_TIMER ; Если значение счетчика меньше максимального brlo _skip_period_correction ; обработку счетчика периодов пропустить
cpi PeriodCounter, PERIODS_AMOUNT; Сравнить значение счетчика периодов, с минимальным требуемым для brlo _just_drop_pcounter ; устойчивого распознавания сигнала "отбой"
DROP ; Если отбой распознан - положить трубку
_skip_drop_signal:
_just_drop_pcounter: clr PeriodCounter ; Сбросить счетчик числа периодов
_skip_period_correction:
clr Counter ; Сбросить счетчик out SREG, SREGM reti
|
|
|
|
|
Mar 27 2006, 15:51
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 7-01-06
Пользователь №: 12 918

|
Для координатных АТС (АТСК, АТСКУ, АТС50\200, АТС100\2000) допускается потребление не более 0.2 мА
|
|
|
|
|
Mar 27 2006, 16:34
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Цитата(александр_в @ Mar 27 2006, 18:51)  Для координатных АТС (АТСК, АТСКУ, АТС50\200, АТС100\2000) допускается потребление не более 0.2 мА Смущает слово "потребление" Трубка лежит, аппарат отключен, кто потребляет ? Телефонисты "греются" когда нагружают генератор вызова параллельными телефонами  т.е. увеличенной емкостью (1 телефон = 1мкф), а при отключенном телефоне "потребление" - это утечки в линии, способные вызывать ложное срабатывание. Включаете миллиамперметр с потенциометром на линию, крутите и замечаете ТОК срабатывания АТС. Если таки потребляете заметно меньше - обломаются искать, спишут на утечку. Кстати, на древних АТСках можно было не дать напряжению упасть ниже "нормы" (последовательно стабилитрон), и тогда связь УЖЕ включилась, а тарификатор ЕЩЕ НЕТ  Народ пользовался...
--------------------
На "нет" и "нах" :)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|