Полная версия этой страницы:
AVR и телефон..
defunct
Mar 24 2006, 16:10
Здравствуйте!
Задумал сделать простенькое устройство без реле, с питанием от телефонной линии, управляемое на tiny13. Функции устройства - по сигналу "вызов" снять трубку, подключить усилитель или динамик к телефонной линии, по сигналу "отбой" - положить трубку. Собственно снять и положить трубку и подключить усилитель к линии - не проблема, уже девайс это делает по нажатию на кнопку.. Но вот когда дело дошло до автоматики - появился вопрос, где мне явно не хватает знаний и опыта..
Вопрос этот больше к знатокам телефонии.
Как можно (имея в аресенале: аналоговый компаратор, АЦП, конденсаторы, резисторы, диоды) распознавать сигнал "вызов" и сигнал "отбой" приходящий с АТС?
Kovrov
Mar 24 2006, 16:31
ну вызов особой проблемы не должен доставлять...
ибо вызов (конечно зависит от атс) более 60вольт
основной гемор будет с четким определением сигнала отбой (короткие гудки)
первое что на мозг пришло прикрутить ацп или каким то образом определять наличии частоты с периодичностью со страховкой от всяких шумов тресков итд
ещё гемор в том что характер коротких гудков на разных атс включая оффисные (мини)
от погоды на марсе зависят
тут надо отслеживать периодичность за несколько секунд...
(помниться как на старых добрых аонах можно было голосом помычать в трубку и аон давал отбой)
;-)
defunct
Mar 24 2006, 17:00
Цитата(Kovrov @ Mar 24 2006, 18:31)

ну вызов особой проблемы не должен доставлять...
ибо вызов (конечно зависит от атс) более 60вольт
основной гемор будет с четким определением сигнала отбой (короткие гудки)
первое что на мозг пришло прикрутить ацп или каким то образом определять наличии частоты с периодичностью со страховкой от всяких шумов тресков итд
Спасибо, примерно так и предполагал делать. вызов - через кондер с линии, диод и делитель завести на АЦП и ловить по уровню.. А вот "отбой"... Может подскажете какой частоты там гудки и какая их приблизительная длительность или ссылочкой на описание сигналов АТС поделитесь, а то под рукой есть только древний справочник по ремонту телефонов, и в нем ничего нет по сигналам.
Kovrov
Mar 24 2006, 17:20
в том то и проблема что от погоды на марсе это зависит
если шаговая или координатка то тип монотонный хотя частота везде разная
если цифра то там гудок близкий к дтмф
тут скорее всего нужно отталкиваться от другово просто определять наличие частоты, а потом анализирвать будет ли похожая вещь(и) через какое то время! к примеру за 3-5 секунд.
можно поробовать усилить сигнал линии и завести на компаратор
а им просечь переодичность поступающих данных...
defunct
Mar 24 2006, 17:36
Цитата(Kovrov @ Mar 24 2006, 19:20)

к примеру за 3-5 секунд.
можно попробовать усилить сигнал линии и завести на компаратор
а им просечь переодичность поступающих данных...
Еще раз спасибо, на этот раз за идею! Буду пробовать, о результатах напишу!
Shamil
Mar 24 2006, 17:46
Цитата(defunct @ Mar 24 2006, 22:00)

А вот "отбой"... Может подскажете какой частоты там гудки и какая их приблизительная длительность или ссылочкой на описание сигналов АТС поделитесь, а то под рукой есть только древний справочник по ремонту телефонов, и в нем ничего нет по сигналам.
Посмотри довольно свежий
документ по системам сигнализации. Чтоб не обалдеть от обилия информации, смотри раздел 7.2.2, там как раз интересующие тебя параметры акустических сигналов. Только надо понимать что там даны требования к устройствам формирующим эти сигналы, а для устройства принимающего эти сигналы надо расчитывать на гораздо худшие параметры. К примеру, многие офисные АТС могут выдавать не синус, а меандр, да и частоту +/- лапоть. Длительности посылки и паузы то же не очень то соблюдаются, но тут можно зацепиться за то, что они обычно одинаковой длительности при сигнале "занято".
vesago
Mar 25 2006, 15:04
Хороший результат дает использование корреляционного алгоритма вроде как в аонах. Единственное фиксировать гармонический сигнал и смотреть его периодичность.
Kovrov
Mar 25 2006, 16:22
Можете расписать более подробно что куды чаво и как?
vesago
Mar 26 2006, 10:25
Есть исходничек, правда для пика - если надо - вышлю.
defunct
Mar 26 2006, 13:01
Цитата(Shamil @ Mar 24 2006, 19:46)

Посмотри довольно свежий
документ по системам сигнализации. Чтоб не обалдеть от обилия информации, смотри раздел 7.2.2,
Очень благодарен за столь точную ссылку!
Цитата(vesago @ Mar 26 2006, 12:25)

Есть исходничек, правда для пика - если надо - вышлю.
Буду премного благодарен за пример для пика, если Вам не жалко и не трудно выслать его на dsx(собака)ukr.net
С пиками знаком, код прочитать думаю смогу...
Kovrov
Mar 26 2006, 16:08
Когда разберешься, нас то не забудь!! :-)
будет интересноююю
Цитата
Есть исходничек, правда для пика - если надо - вышлю.
Я бы сказал:интересно прямо сейчас!:) Плиз, выложите для всеобщего обозрения!!!!
$ilent
Mar 27 2006, 06:18
только не переборщите с потреблением устройства, телефонисты очень не любят когда на ихней линии висят "нахлебники"...
vesago
Mar 27 2006, 06:57
Выкладывать на всеобщее обозрение не стану. Не хочу некорректно поступить по отношению к автору. Но приватно поделюсь. Пишите vesagoгавгавramblerru.
можно в разыв линии поставить оптрон с резюком, и считать иипульсы с необходимой частотой. А опторон включить в диодный мост, чтоб не зпависеть от полярности. Сигнал вызова помойму импульсы с частотой 25Гц.
Вставлю пять копеек.
Выбор AVR здесь не совсем правильный. Если вы хотите все это питать от линии, лучше применить MSP430. Вот вам даже готовый аплекейшн
http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa178Приавда цепочку вызова там лучше переделать. Как правильно сказали выше - ставите оптрон и смотрите частоту на его выходе при вызове. На разных АТС она сильно колеблется 13-95 Герц.
Амплитудный вызов не будет работать на всех АТС. Верный путь - частотный анализ. Тем более реализуется он элементарно.
SasaVitebsk
Mar 27 2006, 09:47
Цитата(АДИКМ @ Mar 27 2006, 12:37)

Вставлю пять копеек.
Выбор AVR здесь не совсем правильный. Если вы хотите все это питать от линии, лучше применить MSP430. Вот вам даже готовый аплекейшн
Я реализовывал на AVR телефонные аппараты, т.н. адаптеры и прочее. В том числе с питанием от линии. При равных условиях сравнивал их с аналогичными изделиями на контролерах PIC. В сравниваемых образцах AVR потребляла меньше чем PIC. Хотя паспортные данные .... Бросал свой взор

на MSP. Если верить описанию MSP действительно лучше подходит. 16 бит, ПДП по АЦП, в какой-то есть умножение плюс сложение аппаратное, малое потребление. Всё это очень хорошо при реализации цифровых фильтров (например распознование DTMF). Но тема развития не получила и я переделывать не стал.

К тому же MSP стоит значительно дороже. Для серийного изделия это существенно.
>К тому же MSP стоит значительно дороже
Скажите а Вы какие процессора сравниваете? AT90S2313 и MSP430F1612 ?
А насчет серийности. Если мне память не изменят - как учили в институте, серийное изделие, это тираж больше 20К.
Поверьте мне, на таких количествах цены совершенно другие.
В одном из телефонов Nokia стоит MSP430F133. И вы очень ошибаетесь, если думаете, что Нокиа покупает их по 3$.
defunct
Mar 27 2006, 14:22
Спасибо всем принимавшим участие в обсуждении. Устройство сделано на том чем и задумывалось - 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
defunct
Mar 27 2006, 14:36
Цитата(АДИКМ @ Mar 27 2006, 12:15)

>К тому же MSP стоит значительно дороже
Скажите а Вы какие процессора сравниваете? AT90S2313 и MSP430F1612 ?
А насчет серийности. Если мне память не изменят - как учили в институте, серийное изделие, это тираж больше 20К.
Поверьте мне, на таких количествах цены совершенно другие.
Другие, но тем не менее tiny13 будет значительно дешевле любого чипа из семейства MSP (даже пресловутого MSP430F1101 в котором и АЦП нормального нет) и оптом и в розницу. И здесь еще есть один определяющий фактор - у tiny широкий диапазон рабочих напряжений, КПД простого источника питания на стабилитроне выше почти в два раза при питании ~5.1-5.5V, чем при питании 3.0-3.3V.
Сколько потребляет ваша схема от тел. линии в режиме ожидания?
defunct
Mar 27 2006, 15:22
50В/20k - 2.5 ma (-+ 0.5 ma)
александр_в
Mar 27 2006, 15:51
Для координатных АТС (АТСК, АТСКУ, АТС50\200, АТС100\2000) допускается потребление не более 0.2 мА
GeorgyBey
Mar 27 2006, 16:34
Цитата(александр_в @ Mar 27 2006, 18:51)

Для координатных АТС (АТСК, АТСКУ, АТС50\200, АТС100\2000) допускается потребление не более 0.2 мА
Смущает слово "потребление"
Трубка лежит, аппарат отключен, кто потребляет ?
Телефонисты "греются" когда нагружают генератор вызова параллельными телефонами

т.е. увеличенной емкостью (1 телефон = 1мкф), а при отключенном телефоне "потребление" - это утечки в линии, способные вызывать ложное срабатывание.
Включаете миллиамперметр с потенциометром на линию, крутите и замечаете ТОК срабатывания АТС.
Если таки потребляете заметно меньше - обломаются искать, спишут на утечку.
Кстати, на древних АТСках можно было не дать напряжению упасть ниже "нормы" (последовательно стабилитрон), и тогда связь УЖЕ включилась, а тарификатор ЕЩЕ НЕТ

Народ пользовался...
_artem_
Mar 27 2006, 17:48
На конечной стадии проект на tiny13 с потреблением около 15 микроампер заказчик хотел чтобы работало год от 200 миллиамперной батереи и ограничение на цену - один доллар. Пришлось удовлетвортить).
сам потребляет еше меньше, если клок брать от watchdog'a в power down mode. И даже можно сделать намного меньше с внешним генератором на 32 кГц. А можно и вообше вырубить клок (если не ошибаюсь).
В этом режиме используйте режим просыпания по внешнему прерыванию от цепи приема звонка . Будет полезно посмотреть section electrical characteristics в datasheet чтобы выбрать режим который вам наиболее подходит. Можно также ввести режим периодического просыпания по прерыванию от watchdoga . Работает OK.
Вообше то не ожидал но это устройство работает даже от 1.4 вольт . хотя не гарантировано в datasheet > 1.8 .
В тини 13 компаратор и ацп есть так что можно изврашаться по любому.)
Если линия шумная и ресурсов тини для цифровой обработки гудков не будет хватать поставь аналоговый полосовой фильтр для гудков с управлением по питанию от gpio чтобы в отключенном режиме энергию не потребляла а компаратором или ацп мерьте его выход и полученные данные проверьте на похожесть последовательности гудков отбоя от атс.
Laptop
Mar 27 2006, 18:57
Если хочется выделять сигнал занято с большей достоверностью, то необходимо поставить фильтр для ослабления гармоник. Встретилось несколько АТСок с 2 и 3 гармониками значительно превышавшими основной сигнал. А дальше либо честный способ с использованием микросхем детекторов, либо получестный с компаратором и Герцелем. Тут уж либо надежность, либо дешевизна. Кстати существенные проблемы может вызвать музыка или пение. И не надо забывать про параметры сигнала, длительность сигналов и пауз хоть и плавает но все же имеет свои границы.
Успехов
defunct
Mar 27 2006, 20:54
Цитата(_artem_ @ Mar 27 2006, 19:48)

На конечной стадии проект на tiny13 с потреблением около 15 микроампер заказчик хотел чтобы работало год от 200 миллиамперной батереи и ограничение на цену - один доллар. Пришлось удовлетвортить).
Гм.. эта.. а как Вы умудрились уложиться в доллар?!
Как не кручу у меня получается ~$2, если не учитывать стоимость тиньки, которая сама по себе ~$1. детали не smd..
_artem_
Mar 28 2006, 01:16
тини 100 штук по 80 центов покупал от arrow. Да еше к тому заказ , если будет, то несколько десятков К, a там уже и поторговаться можно.
Вы ничего не напутали?
я спросил - Сколько потребляет ваша схема от тел. линии в режиме ожидания.
Это подразумевает - ваш девайс просто спит и считает часы (если они есть у вас). Какой ток потребления?
После того как вы снимите трубку - там уже другой разговор.
defunct
Mar 28 2006, 10:11
Цитата(АДИКМ @ Mar 28 2006, 11:53)

Вы ничего не напутали?
я спросил - Сколько потребляет ваша схема от тел. линии в режиме ожидания.
Это подразумевает - ваш девайс просто спит и считает часы (если они есть у вас). Какой ток потребления?
После того как вы снимите трубку - там уже другой разговор.
Думаю что не напутал, 2ma в режиме ожидания т.к. горит светодиод.. Точнее подмаргивает. Да и источник питания резистор-стабилитрон-кондер потребляет стабильно. В режиме разговора устройство замыкает линию на резистор 1.6k итого потребление возрастает примерно до 10-20ma.
Make_Pic
Mar 29 2006, 10:00
Цитата(defunct @ Mar 28 2006, 13:11)

Думаю что не напутал, 2ma в режиме ожидания т.к. горит светодиод.. Точнее подмаргивает. Да и источник питания резистор-стабилитрон-кондер потребляет стабильно. В режиме разговора устройство замыкает линию на резистор 1.6k итого потребление возрастает примерно до 10-20ma.
Да уж! Для радиолюбительской поделки потянет, а если делать как изделие и сответственно сертифицировать, то от винта!
muravei
Mar 29 2006, 10:33
Для поднятой трубки 20 мА -нормально, в режиме ожидания очень много.Слышал, надо не более 1мА.
Но почему бы не сделать имп. источник?
В линии у Вас ~60 в , а надо 3в итого получите 20 мА потребляя 1мА
Сделай, как показано в приклеплённой схеме, и не парься. и трубку определиш, и вызов и даже набираемый номер, только это всё дело определяется по частоте.
Нажмите для просмотра прикрепленного файла
_artem_
Mar 29 2006, 11:00
Цитата(Rash @ Mar 29 2006, 13:37)

Сделай, как показано в приклеплённой схеме, и не парься. и трубку определиш, и вызов и даже набираемый номер, только это всё дело определяется по частоте.
Нажмите для просмотра прикрепленного файлаВход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.
Цитата
Вход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.
А расчёт этой емкости можно огласить? 100 В не на самом диодном мосте или оптроне на всей этой схемке упадёт ~3В, а оптроном в линии и резюками можно поиграться для достижения нужного эфекта. У меня сейчас такая схема и всё работает.
defunct
Mar 29 2006, 20:45
Цитата(Make_Pic @ Mar 29 2006, 12:00)

Да уж! Для радиолюбительской поделки потянет, а если делать как изделие и сответственно сертифицировать, то от винта!

В изделии просто не будет светодиода, итого 2ma-2ma = ~0ma

так что все ок. Tiny13 сама по себе очень мало потребляет.
Цитата(muravei @ Mar 29 2006, 12:33)

Для поднятой трубки 20 мА -нормально, в режиме ожидания очень много.Слышал, надо не более 1мА.
Но почему бы не сделать имп. источник?
В линии у Вас ~60 в , а надо 3в итого получите 20 мА потребляя 1мА
Спасибо! учту такую возможность если потребуется большой ток. Но пока вопрос о потреблении вообще не стоит, т.к. устройство предназначено для оповещения конкретного помещения, и будет работать с конкретной одной ATC..
Цитата(Rash @ Mar 29 2006, 12:37)

Сделай, как показано в приклеплённой схеме, и не парься. и трубку определиш, и вызов и даже набираемый номер, только это всё дело определяется по частоте.
Не у вас что-то сильно мудреное, у меня в схеме нет ни оптронов ни реле... Диодный мостик, ключ на КТ940А нагруженный на резистор 1.6к. Когда ключ открыт - трубка снята.
Цитата
Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше .
Вы правы, у меня в реальных условиях сигнал вызова ~120В (АТС Alcatel).
_artem_
Mar 30 2006, 00:04
Цитата(Rash @ Mar 29 2006, 14:57)

Цитата
Вход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.
А расчёт этой емкости можно огласить? 100 В не на самом диодном мосте или оптроне на всей этой схемке упадёт ~3В, а оптроном в линии и резюками можно поиграться для достижения нужного эфекта. У меня сейчас такая схема и всё работает.
в грубом виде возьмите реактивное сопротивление кондера на 25 герц (если не ошибаюсь такова частота вызова АТС) и по закону ома падение на ваших резисторах с учетом падения напряжения на светодиоде 2-3 вольта. А потом и ток через светодиод.
Но может статься так что АТС будет генерировать меандр , тогда пики на светодиоде могут быть большие, опят таки зависит от станции и вдобавок линии .
Вот здесь немного попроше сделано:
http://www.broadcastboxes.com/pdf/mpc2book.pdfНо я все таки разделил бы R2 на первой схеме из линка наверху на два сопротивления в середину подключил катод стабилитрона а его анод к аноду светодиода оптрона а шунтируюший диод по обратному напряжению убрал бы.
Хотя эти люди говорят что у них типа FCC апрувед.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.