Реле Tianbo - ресурс 10 млн переключений

Автономная система записи телефонных разговоров на микроконтроллере AVR. Часть 1

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

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

Пленочные конденсаторы Hongfa для построения AC/DC- и DC/AC-преобразователей

Внешний вид; Система записи телефонных разговоров на AVR

В итоге - это автономная система способная работать с компьютером и без него, с записью информации на карту памяти SD/MMC и резервным источником питания. Кроме того, это самостоятельно разработанное устройство, а не голосовой модем на компьютере. C другой стороны преследовалась цель реализовать стандартные функции голосового модема с добавлением специфических: использование карты памяти для хранения аудио данных и система автономного питания. Поэтому в конечном итоге наше устройство на базе микроконтроллера AVR может использоваться как телефонная платформа, автоответчик, голосовая система оповещения, система домашней автоматизации с управлением по телефонной линии.

При разработке учитывалось, что устройство должно быть простым и повторяемым настолько, насколько это возможно, необходимо избегать применения специализированных, труднодоступных или дорогих компонентов. Исходя из этого, основой устройства стал микроконтроллер ATmega32 фирмы, а в системе резервного питания был использован микроконтроллер ATtiny45. Оба микроконтроллера производства Atmel.

Основные характеристики устройства:

  • возможность автономной работы или совместно с ПК;
  • при использовании SD карты памяти емкостью 512 МБ продолжительность записи составляет около 17 часов;
  • детектор DTMF для функции Caller ID (Европейский стандарт) и определения нажатых клавиш;
  • позволяет прослушивать телефонные разговоры в реальном времени или проигрывать их позже;
  • поддержка одновременной записи и воспроизведения;
  • передача аудиоданных по последовательному интерфейсу (RS232) как в режиме реального времени, так и при чтении с карты памяти;
  • LCD дисплей для отображения статуса линии, времени и служебной информации;
  • опциональная система резервного питания позволяет сохранять работоспособность системы при неполадках основного источника питания.

Аппаратная часть системы

Аппаратная часть может быть представлена как интеграция отдельных классических узлов, описания которых можно найти в литературе. Блок-схема отображает основные компоненты системы и их взаимосвязь.

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

Принципиальная сема устройства показана на рисунке ниже.

Схема: Система записи телефонных разговоров на AVR
Кликните для увеличения

Источник питания

Регулятор напряжения вырабатывает напряжение 5.0 В для питания многих узлов системы, а также напряжение 3.3 В для интерфейса MMC/SD карт памяти. Он непосредственно подключен к контроллеру батареи на микроконтроллере ATtiny45, который измеряет напряжение батареи и управляет источником постоянного тока на базе стабилизатора LM317, необходимого для заряда NiMH аккумуляторов. Переключение между источниками выполнено аппаратно на транзисторе совместно с диодами для предотвращения протекания обратного тока. Такой подход объясняется тем, что программная реализация переключения может быть не такой быстрой, что может вызвать сбои в работе системы и повреждение данных.

Конечно, Вы могли бы заметить, что возможно было бы переложить функции микроконтроллера ATtiny45 (заряд аккумуляторов) на основной контроллер системы, но в этом случае мы имеем один АЦП и нам необходимо будет прерывать выборки аудио сигнала для измерения напряжения на батарее. Конечно, это не сильно скажется на качестве звукового сигнала (мы теряем две выборки каждую секунду), но все же предпочтительнее модульный подход. Также это обусловлено тем, что можно применить этот резервный источник питания для других устройств и не всем пользователям резервный источник питания понадобиться.

Микроконтроллер ATtiny45 настроен на работу от внутреннего калиброванного RC-генератора 8 МГц, но программно установлен делитель тактовой частоты на 4, т.е. рабочая частота ядра – 2 МГц.

Два делителя напряжения на резисторах необходимы для АЦП микроконтроллера. Проводится измерение основного питающего напряжения и напряжения на батарее. Вывод микроконтроллера PB0 управляет транзистором, который подключен к выводу Adjust стабилизатора LM317. Таком образом, если PB0=”1” источник тока выключен, если PB0=”0” – источник тока включен. Ток заряда составляет около 500 мА и регулируется резистором R5 (3.3 Ом). Необходимо отметить, что стабилизатор LM317 и ограничительный резистор нагреваются в ходе зарядки, но при таких параметрах (ток заряда 500 мА) это считается нормальным и теплоотвод (радиатор) не нужен. Однако, если увеличить ток заряда (уменьшая значение сопротивления резистора) – необходимо установить стабилизатор на радиатор.

Основной микроконтроллер

Основной микроконтроллер ATmega32 работает от внешнего кварцевого резонатора 11.059 МГц, что является важным моментом при организации программных часов реального времени (используются для проставления времени телефонных звонков) и при настройке UART, т.к. можно выбрать кратную скорость обмена 115200 бит/с.

При изготовлении опытного образца системы имелся лишь один микроконтроллер серии ATmega32 – это был ATmega32L, у которого максимальная рабочая частота 8 МГц. Было невозможно реализовать все задуманные функции при таких скоростях работы микроконтроллера и был выбран путь «разгона» контроллера. Чип с этим справился, и устройство успешно прошло испытания на протяжении 2 недель.

Если не требуется работа с картой памяти, то можно ее исключить и применить кварцевый резонатор 7.3728 МГц, а также применить микроконтроллер ATmega8 или ATmega16.

Использование кварцевого резонатора 8 МГц тоже допустимо, но количество ошибок при последовательной передаче данных составит 3.6%. Таким образом для уверенной и стабильной передачи данных по последовательному интерфейсу RS232 необходимо выбирать кварцевый резонатор кратный 1.8432 МГц.

Если же не требуется надежность интерфейса RS232, а также не заботит дрейф часов (напрмер, программа на ПК будет корректировать часы системы), то вполне возможно применение внутреннего RC-осциллятора микроконтроллера.

C другой стороны, если интерфейс MMC/SD карт будет использоваться, то необходим микроконтроллер с 2 КБайт памяти SRAM, следовательно в таком случае ATmega32 необходим.

Мы используем таймер/счетчик 0 в режиме CTC (Clear Timer on Compare) для деления тактовой частоты на 1382.4, чтобы получить частоту выборок 8 кГц для аудиосигнала.

Пользовательский интерфейс

HD47780-совместимый LCD дисплей подключен к порту С микроконтроллера по 4-битному интерфейсу.

Клавиатура – используется метод подсчета времени заряда конденсатора и благодаря этому для клавиатуры используется лишь один цифровой вывод микроконтроллера. Подпрограмма обслуживания клавиатуры сначала конфигурирует вывод МК как выход и устанавливает низкий уровень на нем (разряд конденсатора). Затем вывод конфигурируется как вход и измеряется время пока не изменится его состояние (заряд конденсатора).

Система имеет также выходной аудио порт, который организован на ШИМ Таймера 2 микроконтроллера. После прохождения через RC-фильтр НЧ сигнал попадает на усилитель звуковой частоты LM386.

Последовательный интерфейс

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

Интерфейс MMC/SD карт памяти

Учитывая, что карты памяти SD/MMC поддерживают работу по протоколу SPI, подключение их к шине SPI микроконтроллера – очевидный выбор.

Преобразователь уровней – это простой делитель напряжения на резисторах, подключенный к сигнальным линиям Chip Select, DataIn и SCK. DataOut сигнал подключен непосредственно к микроконтроллеру (вывод MISO).

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

Интерфейс телефонной линии

Развязывающий трансформатор (600 Ом) «извлекает» аудиосигнал из телефонной линии. Затем операционный усилитель LM358N разделяет входной и выходной сигналы, усиливает входной сигнал и обеспечивает смещение по постоянному току 1.28 В (т.к. микроконтроллер использует опорное напряжение 2.56 В).

Выявление статуса телефонной линии выполнено на оптопаре с резисторным делителем напряжения в тандеме с аналоговым компаратором микроконтроллера. При неподключенной линии напряжение равно 0 В. Если линия подключена, то мы имеем или около 0.45 В (линия занята, «поднята» трубка на телефонном аппарате), или около 5 В (линия свободна). Таким образом мы имеем лог. 1 при свободной линии, а для определения состояния линии используем аналоговый компаратор .

Выходной аудиосигнал генерируется посредством таймера 1 в режиме ШИМ. Проходя через RC-фильтр НЧ поступает на вход операционного усилителя (один из разделительных ОУ, указанных выше).

В следующей части мы рассмотрим основные моменты в программном обеспечении основного микроконтроллера: работу АЦП, как производятся выборки сигнала, организацию и работу интерфейса SD/MMC, организацию последовательного протокола обмена, механизм детектирования DTMF сигналов.

circuitcellar.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: AVR Phone Recorder & Telephony Platform. Part 1

Электронные компоненты. Скидки 15%, кэшбэк 15% и бесплатная доставка от ТМ Электроникс
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя