Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR и телефон..
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
defunct
Здравствуйте!
Задумал сделать простенькое устройство без реле, с питанием от телефонной линии, управляемое на tiny13. Функции устройства - по сигналу "вызов" снять трубку, подключить усилитель или динамик к телефонной линии, по сигналу "отбой" - положить трубку. Собственно снять и положить трубку и подключить усилитель к линии - не проблема, уже девайс это делает по нажатию на кнопку.. Но вот когда дело дошло до автоматики - появился вопрос, где мне явно не хватает знаний и опыта..

Вопрос этот больше к знатокам телефонии.

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


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

Еще раз спасибо, на этот раз за идею! Буду пробовать, о результатах напишу!
Shamil
Цитата(defunct @ Mar 24 2006, 22:00) *
А вот "отбой"... Может подскажете какой частоты там гудки и какая их приблизительная длительность или ссылочкой на описание сигналов АТС поделитесь, а то под рукой есть только древний справочник по ремонту телефонов, и в нем ничего нет по сигналам.


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

Очень благодарен за столь точную ссылку!

Цитата(vesago @ Mar 26 2006, 12:25) *
Есть исходничек, правда для пика - если надо - вышлю.

Буду премного благодарен за пример для пика, если Вам не жалко и не трудно выслать его на dsx(собака)ukr.net

С пиками знаком, код прочитать думаю смогу...
Kovrov
Когда разберешься, нас то не забудь!! :-)
будет интересноююю
Old1
Цитата
Есть исходничек, правда для пика - если надо - вышлю.

Я бы сказал:интересно прямо сейчас!:) Плиз, выложите для всеобщего обозрения!!!!
$ilent
только не переборщите с потреблением устройства, телефонисты очень не любят когда на ихней линии висят "нахлебники"...
vesago
Выкладывать на всеобщее обозрение не стану. Не хочу некорректно поступить по отношению к автору. Но приватно поделюсь. Пишите vesagoгавгавramblerru.
Rash
можно в разыв линии поставить оптрон с резюком, и считать иипульсы с необходимой частотой. А опторон включить в диодный мост, чтоб не зпависеть от полярности. Сигнал вызова помойму импульсы с частотой 25Гц.
АДИКМ
Вставлю пять копеек.
Выбор AVR здесь не совсем правильный. Если вы хотите все это питать от линии, лучше применить MSP430. Вот вам даже готовый аплекейшн
http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa178

Приавда цепочку вызова там лучше переделать. Как правильно сказали выше - ставите оптрон и смотрите частоту на его выходе при вызове. На разных АТС она сильно колеблется 13-95 Герц.
Амплитудный вызов не будет работать на всех АТС. Верный путь - частотный анализ. Тем более реализуется он элементарно.
SasaVitebsk
Цитата(АДИКМ @ Mar 27 2006, 12:37) *
Вставлю пять копеек.
Выбор AVR здесь не совсем правильный. Если вы хотите все это питать от линии, лучше применить MSP430. Вот вам даже готовый аплекейшн


Я реализовывал на AVR телефонные аппараты, т.н. адаптеры и прочее. В том числе с питанием от линии. При равных условиях сравнивал их с аналогичными изделиями на контролерах PIC. В сравниваемых образцах AVR потребляла меньше чем PIC. Хотя паспортные данные .... Бросал свой взор smile.gif на MSP. Если верить описанию MSP действительно лучше подходит. 16 бит, ПДП по АЦП, в какой-то есть умножение плюс сложение аппаратное, малое потребление. Всё это очень хорошо при реализации цифровых фильтров (например распознование DTMF). Но тема развития не получила и я переделывать не стал. sad.gif К тому же MSP стоит значительно дороже. Для серийного изделия это существенно.
АДИКМ
>К тому же MSP стоит значительно дороже
Скажите а Вы какие процессора сравниваете? AT90S2313 и MSP430F1612 ?
А насчет серийности. Если мне память не изменят - как учили в институте, серийное изделие, это тираж больше 20К.
Поверьте мне, на таких количествах цены совершенно другие.

В одном из телефонов Nokia стоит MSP430F133. И вы очень ошибаетесь, если думаете, что Нокиа покупает их по 3$.
defunct
Спасибо всем принимавшим участие в обсуждении. Устройство сделано на том чем и задумывалось - tiny13. Сразу отвечу тем, кто советовал использовать MSP - питать от линии "прозрачно для линии" получилось не только tiny13, но и яркий светодиод (2ма) в режиме ожидания.

Сигнал "вызов" обрабатывать получилось очень просто - через делитель 1k-100k завел плюс линии на АЦП контроллера и по уровню >60В просто снимаю трубку.

Сигнал "отбой" обрабатываю с помощью аналогового компаратора, к которому через фазосдвигающую цепочку подключил "плюс" линии. Частоту не определяю, т.к. в tiny13 отсутствует режим Timer Capture. Работаю с длительностями перида - запустил таймер в режиме ОС-CTC на подсчет 100 тактов. В прерывании таймера увеличиваю счетчик. Если по прерыванию от аналогового компаратора в счетчике находится число от 27 до 29 - то предположительно это период сигнала "отбой". Подсчитывается количество таких периодов и если оно больше чем (425Гц * 0.35с)*0.5, то делается вывод, что это сигнал отбой и устройство ложит трубку.
Пробовал дудеть в трубку, за "отбой" такие вопли не принимаются. smile.gif

Привожу кусок программы с используемыми обработчиками, может кому пригодится:

Код
; Чип настроен на работу от внутреннего 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, 12:15) *
>К тому же MSP стоит значительно дороже
Скажите а Вы какие процессора сравниваете? AT90S2313 и MSP430F1612 ?
А насчет серийности. Если мне память не изменят - как учили в институте, серийное изделие, это тираж больше 20К.
Поверьте мне, на таких количествах цены совершенно другие.

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

Смущает слово "потребление" angry.gif
Трубка лежит, аппарат отключен, кто потребляет ?
Телефонисты "греются" когда нагружают генератор вызова параллельными телефонами maniac.gif т.е. увеличенной емкостью (1 телефон = 1мкф), а при отключенном телефоне "потребление" - это утечки в линии, способные вызывать ложное срабатывание.
Включаете миллиамперметр с потенциометром на линию, крутите и замечаете ТОК срабатывания АТС.
Если таки потребляете заметно меньше - обломаются искать, спишут на утечку.
Кстати, на древних АТСках можно было не дать напряжению упасть ниже "нормы" (последовательно стабилитрон), и тогда связь УЖЕ включилась, а тарификатор ЕЩЕ НЕТ a14.gif Народ пользовался...
_artem_
На конечной стадии проект на tiny13 с потреблением около 15 микроампер заказчик хотел чтобы работало год от 200 миллиамперной батереи и ограничение на цену - один доллар. Пришлось удовлетвортить).
сам потребляет еше меньше, если клок брать от watchdog'a в power down mode. И даже можно сделать намного меньше с внешним генератором на 32 кГц. А можно и вообше вырубить клок (если не ошибаюсь).
В этом режиме используйте режим просыпания по внешнему прерыванию от цепи приема звонка . Будет полезно посмотреть section electrical characteristics в datasheet чтобы выбрать режим который вам наиболее подходит. Можно также ввести режим периодического просыпания по прерыванию от watchdoga . Работает OK.

Вообше то не ожидал но это устройство работает даже от 1.4 вольт . хотя не гарантировано в datasheet > 1.8 .

В тини 13 компаратор и ацп есть так что можно изврашаться по любому.)

Если линия шумная и ресурсов тини для цифровой обработки гудков не будет хватать поставь аналоговый полосовой фильтр для гудков с управлением по питанию от gpio чтобы в отключенном режиме энергию не потребляла а компаратором или ацп мерьте его выход и полученные данные проверьте на похожесть последовательности гудков отбоя от атс.
Laptop
Если хочется выделять сигнал занято с большей достоверностью, то необходимо поставить фильтр для ослабления гармоник. Встретилось несколько АТСок с 2 и 3 гармониками значительно превышавшими основной сигнал. А дальше либо честный способ с использованием микросхем детекторов, либо получестный с компаратором и Герцелем. Тут уж либо надежность, либо дешевизна. Кстати существенные проблемы может вызвать музыка или пение. И не надо забывать про параметры сигнала, длительность сигналов и пауз хоть и плавает но все же имеет свои границы.
Успеховwink.gif
defunct
Цитата(_artem_ @ Mar 27 2006, 19:48) *
На конечной стадии проект на tiny13 с потреблением около 15 микроампер заказчик хотел чтобы работало год от 200 миллиамперной батереи и ограничение на цену - один доллар. Пришлось удовлетвортить).

Гм.. эта.. а как Вы умудрились уложиться в доллар?!
Как не кручу у меня получается ~$2, если не учитывать стоимость тиньки, которая сама по себе ~$1. детали не smd..
_artem_
тини 100 штук по 80 центов покупал от arrow. Да еше к тому заказ , если будет, то несколько десятков К, a там уже и поторговаться можно.
АДИКМ
Вы ничего не напутали?
я спросил - Сколько потребляет ваша схема от тел. линии в режиме ожидания.
Это подразумевает - ваш девайс просто спит и считает часы (если они есть у вас). Какой ток потребления?

После того как вы снимите трубку - там уже другой разговор.
defunct
Цитата(АДИКМ @ Mar 28 2006, 11:53) *
Вы ничего не напутали?
я спросил - Сколько потребляет ваша схема от тел. линии в режиме ожидания.
Это подразумевает - ваш девайс просто спит и считает часы (если они есть у вас). Какой ток потребления?

После того как вы снимите трубку - там уже другой разговор.


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


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


Вход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.
Rash
Цитата
Вход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.


А расчёт этой емкости можно огласить? 100 В не на самом диодном мосте или оптроне на всей этой схемке упадёт ~3В, а оптроном в линии и резюками можно поиграться для достижения нужного эфекта. У меня сейчас такая схема и всё работает.
defunct
Цитата(Make_Pic @ Mar 29 2006, 12:00) *
Да уж! Для радиолюбительской поделки потянет, а если делать как изделие и сответственно сертифицировать, то от винта! wink.gif

В изделии просто не будет светодиода, итого 2ma-2ma = ~0ma smile.gif
так что все ок. 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_
Цитата(Rash @ Mar 29 2006, 14:57) *
Цитата
Вход диодного моста должен быть соединен с линией через кондер с емкостю меньше чем нужно для сгорания светодиода оптрона от избыточного тока. 200 Ом включенных паралельно светодиоду может и не хватить. Если не ошибаюсь, ток в режиме вызова может достигать 100 мА а напряжение до 100 и больше . Но это было для старых АТС.


А расчёт этой емкости можно огласить? 100 В не на самом диодном мосте или оптроне на всей этой схемке упадёт ~3В, а оптроном в линии и резюками можно поиграться для достижения нужного эфекта. У меня сейчас такая схема и всё работает.


в грубом виде возьмите реактивное сопротивление кондера на 25 герц (если не ошибаюсь такова частота вызова АТС) и по закону ома падение на ваших резисторах с учетом падения напряжения на светодиоде 2-3 вольта. А потом и ток через светодиод.

Но может статься так что АТС будет генерировать меандр , тогда пики на светодиоде могут быть большие, опят таки зависит от станции и вдобавок линии .

Вот здесь немного попроше сделано:
http://www.broadcastboxes.com/pdf/mpc2book.pdf

Но я все таки разделил бы R2 на первой схеме из линка наверху на два сопротивления в середину подключил катод стабилитрона а его анод к аноду светодиода оптрона а шунтируюший диод по обратному напряжению убрал бы.
Хотя эти люди говорят что у них типа FCC апрувед.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.