Вторая часть

С чего всё начиналось


Я работаю в небольшой фирме, которая разрабатывает и производит системы записи телефонных разговоров. Но в ряде случаев клиентам нужен аналоговый GSM шлюз как источник телефонной линии. Ранее его закупали и перепродавали. Но то что закупали было низкого качества и часто попадался брак — было принято решение самим разработать. Разработали мы вдвоём: схемотехник и я — программист, недавние выпускники без опыта разработок в аналоговой телефонии и без опыта внедрения в производства. Получилось, мягко говоря, не очень, хоть и была решена проблема брака и скорее «вопреки».

Но проблема в том, что для нас даже 1% брака недопустим: на каждый случай у тех поддержки и разработчиков уходило очень много времени на клиента. Да и для всех нас это недопустимо чисто из соображений профессиональной гордости. Мы хотели такой шлюз снять с производства, даже несмотря на то, что у нас была доля от каждого изделия. Это очень стыдно, когда дилеры про остальные изделия говорят: «у вас вообще брак бывает?», а про наши «мы боимся их продавать — у нас же потом ничего не купят».

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

Как мы от этого

Снизу платы только китайский GSM модуль

Пришли к этому
Верх:



Низ:



Расскажу как полностью изменилось изделие и появилась система тестирования и сопровождения производства. Расскажу как изменилась функциональная схема, объясню как работает электрическая схема доработанного варианта. А в следующих частях расскажу про логи и алгоритмы тестирования и чем тестируется плата. Приведу немного исходного кода. И расскажу об распределённой АРМ для прошивки, тестирования и анализа логов, что была развернута на производстве и у разработчиков.

Первый вариант шлюза: разбор ошибок


Позволил снизить количество брака раз в десять. И как просто шлюз он, в принципе, нормально работает.

Но по неопытности были допущены три существенных ошибки:

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

Вторая ошибка: были использованы готовые модули низкого качества, китайский GSM модуль глючил, а телефонный интерфейс оказался чувствительным к любому нестандартному использованию — он сгорал. Причём, нестандартное использование, это не подключение к 220В, а то, к которому привыкли пользователи и связисты и считают нормой. Например, подключение в порт АТС не предназначенный для этого: когда источник линии подключался к источнику на АТС.

Третья ошибка: слишком простая общая структура, всё сделано впритык: нет настроек даже громкости и нет запаса по прошивке — она занимает 99.9% свободного ОЗУ и флеша. Всё подключено напрямую, а не через микроконтроллер. По сути, нет возможности доработать как программно, так и схемотехнически. Возможности обновления прошивки также нет.

Не было предусмотрено какое либо производственное тестирование — только проверка того что он просто работает — позвонить и проверить, что дозвонился, идёт звук в обе стороны и номер выдаётся. Взаимодействия с производством практически не было, мы и они жили отдельно. Мы не пробовали собрать и разбраковать, то что разработали. И даже не думали как это будут делать.

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

Сейчас многие проблемы исправлены: и защиту поставили, и качество прошивок GSM модулей китайцы улучшили, но осадок остался. А настройки как отсутствовали так и отсутствуют, что многим очень неудобно: звук в шлюзе хоть и оказался громче и чётче чем у большинства китайцев, но для некоторых клиентов он слишком громкий. Да и что скрывать — я набыдлокодил — отсюда и занятость флеша на 99% и невозможно в этом макаронном убожестве что-либо так просто подправить или добавить.

Вариант второй: Работа над ошибками


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

Решили сделать программно на микроконтроллере всё что можно: МК должен работать в разрыв, обрабатывать и звук и управлять телефонной линией с GSM модулем. Полностью самим реализовать на МК обработку звука и телефонную линию, и сделать её такой чтоб её невозможно было сжечь даже подключив в 220 или электрошокером. Первый вариант был на AVR atmega8512, и его кое-как хватало на генерацию гудка и АОНа. Второй вариант решили делать на ARM-Cortex M3, а в последствии ARM-Cortex M4 — потребовалось самим реализовать и эхоподавление. А это очень сложная вычислительная задача поиска глобального минимума в 256-мерном пространстве в реалтайме. В МК должен быть запас по ОЗУ, флешу и загрузке проца, как минимум 50%. Обязательно должна быть возможность обновить прошивку у клиента.

В команде разработчиков стало три человека — был нанят новый сотрудник. Ему поручили делать основную прошивку, сразу договорившись, что всю работу с техподдержкой клиентов он берёт на себя — чтоб делал сразу всё идеально. Никаких «в начале выкатим ЭТО, а потом протестируем на пользователях» — уже протестировали, не понравилось. А раз у меня был опыт работы с браком и я лучше знал на тот момент схемотехнику, то я взял на себя разработку тестовой прошивки и системы качества. Это позволило сделать две независимых прошивки, боевую и тестовую и взглянуть на схемотехнику с двух независимых точек зрения, сверив то что хотели и что получили в схемотехнике. А также контролировать друг друга. Часть работы по основной прошивке делал я и проверял я, а также обучал новичка, т.к. он был без опыта работы ему многое пришлось изучить самостоятельно.

Было принято решение самим собирать и разбраковывать первые партии шлюзов, чтоб сами видели свои ошибки в технологии. Было опрошено производство и учтены их пожелания. В последствии собирал платы не только схемотехник, но и я небольшую партию, пока схемотехник был в отпуске. А также сами разбраковали несколько партий в 10… 40 штук, что позволило отладить тестовый софт и взаимодействие с производством.

Решили делать на четырёхслойной плате — этого требовали и МК и GSM модуль и меньше аналоговых шумов когда для «земли» и питания выделены отдельные слои — их сопротивления существенно меньше. А GSM модуль очень сильно шумит — он потребляет импульсами по 2 Ампера, частота импульсов будто назло ложится широкополосным спектром на весь слышимый диапазон.

GSM модуль взяли без китайского быдлокода внутри — итальянской разработки, но китайской сборки. Его внутренняя прошивка оказалась на порядок более продуманной и качественной. Выбрали модель такую, чтоб звук был сразу цифровой, чтобы не ловить аналоговые помехи на стыке между МК и модулем и уменьшить количество аналоговых цепей до минимума.

Шлюз должен уметь проверять себя сам, включая телефонный разъём и наличие телефона. Это позволит провести само-диагностику прямо у клиента сразу значительно упростив тех-поддержку. Для того чтоб он сам себя смог проверить пришлось внутрь шлюза добавить имитатор телефонного аппарата — чтоб он умел снимать трубку и отвечать на звонки. А также добавили измерительные цепи ключевых параметров, таких как: сила тока питания, напряжения, ёмкость по питанию — например, для проверки, что не вздулись кондёры.

Шлюз удобно было настраивать: сделали голосовое меню, которое проговаривает всё: настройки, их значения, допустимые значения, как можно изменить громкость, быстрый набор и тд. Для этого использовали звуковой декодек Speex.

Шлюз должен уметь записывать разговоры. Наконец-то, то, что от нас ждали все. Записывать на полноформатную SD карту — устройство большое и мельчить нету смысла. Тем более у microSD и потребление больше и не всегда SPI они поддерживают. Записи складываются на карту в 3 вариантах сжатия: pcm, a-law, adpcm. Лог записей также ведётся в html списке с возможностью сортировки (на javascript) по любому столбцу.

Было:



Стало:



Схемотехника


Заложили резисторы 0805 с точностью 1% вместо обычных 5% — это позволит точнее проводить тесты и больше получать информации. Это нужно например для того чтоб увидеть непропай небольшого танталового конденсатора в 330мкФ, на фоне параллельно подключенных очень крупных электролитов в 5000 — 10000 мкФ, а они фильтруют разные частотные диапазоны звука. Аналогично конденсаторы 0805 с точностью 10%. Более точные компоненты позволяют избежать подстройки параметров прошивки. При этом разница в стоимости при переходе на более точные компоненты на фоне общей стоимости мизерна.

Упрощенная электрическая схема

Извините за hand-made, но воевать с новым офисом сил нет


Система питания


Шлюз питается покупным 12 вольтовым 1А стабилизированным блоком питания от 220В.

Схема питания целиком




Сразу после разъёма питания стоит схема защиты питания, защита от обратной полярности — обычный шотки-диод. Предохранитель по току в 1А. И супрессор защиты от перенапряжения с порогом в 15В. Далее идёт цепь измерения напряжения питания с делителем 1:6 на резисторах. Им будем проверять блок питания, нагрузку давать включением и выключением всех потребителей (около 0.7А).

После схемы защиты и измерения, питание разделяется на три ветки: GSM, телефонная линия, цифро-аналоговое питание.
Для всех трёх используем микросхему импульсного стабилизатора MC34063A. Она умеет как повышать, так и понижать напряжение. Также имеет защиту по току и температуре. Напряжение и ток можно задавать резисторами. Её плюсы в цене и простоте использования, а ещё в КПД, она с большим КПД стабилизирует лучше чем линейные стабилизаторы — меньше греется. Но она шумит и после неё надо ставить фильтры.



Для удобства отладки питания по всем веткам установлены контрольные точки и перемычки припоем, которые подключают к питанию нагрузку. Сборка производится без перемычек. Монтажник сразу после сборки подключает питание и проверяет в контрольных точках все ветки питания. Только после того как будет проверено напряжения запаиваются перемычки. И далее уже прогоняется тестовая прошивка.

Ветка питания GSM



Для надёжного сброса GSM модуля необходимо иметь возможность управлять питанием GSM — для этого в самом начале ветки стоит ключ на полевом транзисторе. Далее стабилизатор на 3.75 В и 0.5 А. GSM модуль во время работы потребляет импульсами 500 мк. сек х 2А, а это очень много и именно они обычно приводят к наводкам звука и поэтому их надо отфильтровать. Для этого поставлены электролитические конденсаторы с малым внутренним сопротивлением, 4 шт для ещё большего его уменьшения. А также стоит танталовый и керамические конденсаторы — все они фильтруют на всё более высоких частотах. Также свой вклад в фильтрацию вносит стабилизатор — он ограничивает импульсы потребления с 2 А до 0.5 А, не позволяет брать все 2А с блока питания, эти импульсы берутся с конденсаторов, чем уменьшается влияние на другие ветки питания.

Далее идёт цепь тестирования питания — датчик питания и тестовая нагрузка в 2.15 Ом, управляемая с МК через полевик, с помощью её можно замерить все основные параметры питания: напряжение, ток, сопротивление нагрузки.

Ветка цифрового и аналогового питания


Питание разделено на две под-ветки:
  • Аналоговое питание для ОУ выдачи и приёма звука с линии, и для ЦАП и АЦП в МК.
  • Цифровое питание для МК и SD карты они также потребляют импульсами, особенно при записи сектора на SD карту.

Если не отделить аналог от цифры, то клиент при разговоре услышит как работает SD карточка и просыпается/засыпает МК. Питание стабилизируется в два этапа, в начале опускается импульсником с хорошим КПД до 5В, но он шумный, поэтому далее стабилизируется до 3.3 двумя тихими линейными стабилизаторами. И если сразу поставить два линейных, то они будут сильно греться т.к. на них будет падать 9В. также у каждой под-ветки есть цепи измерителя напряжения на делителях 1:2.

Ветка питания источника телефонной линии

Телефонная линия, это источник напряжения в 48В / 60В с внутренним сопротивлением около 700 Ом.

Во время звонка напряжение должно быть 60 В и менять полярность 20-30 раз в сек, в остальное время 48 В с постоянной полярностью.
Подъём трубки детектируется тем что телефон нагружает источник и из-за внутреннего сопротивления в 700 Ом на разъёме напряжение падает примерно до 10 В, при токе около 30-40 мА.

Но мощность = сила_тока * напряжение, а при поднятой трубке на внутреннем сопротивлении падает 38В при 40мА. А это очень много тепла. Настолько много что шлюз пришлось бы делать размером с лист А4. Это дорого и неудобно для клиентов. Поэтому мы поступили хитро: сделали так что при поднятой трубке источник переставал стабилизировать напряжение, а начинал стабилизировать ток. Ток остаётся прежним, а падает уже в 2 раза меньше напряжения. Меньше и нагрев.

Но тут возникает проблема — стабилизатор при ограничении тока уже не стабилизирует напряжение, и все помехи по напряжению напрямую проходят через него. Но звук то в телефонной линии выдаётся модуляцией в 1В телефонного напряжения в 48В или 10В если трубка поднята, т.е. помехи усиливаются от 10 до 50 раз.



Для решения этой проблемы в самом начале мы поставили линейный стабилизатор LM1117 на 10В. А далее после него стоит импульсный стабилизатор MC34063A, который стабилизирует либо напряжение, либо ток если трубка поднята пользуясь уже стабильным питанием. Для того чтоб стабилизатор мог повышать как до 48в, так и до 60В, в цепь обратной связи сделали переменной: красной стрелкой обозначено подключение ножки МК, с помощью которой он шунтирует в обратной связи резисторы (подключая к земле), и стабилизируемое напряжение поднимается до звонкового, в остальное время там Z стояние. Но импульсник шумный, поэтому далее стоит П-фильтр первого порядка на RC цепочке 5мкф и 4х51 Ом. А также диод E1SD, цель которого — защитить от втекающих в схему токов (например при подключении 220В или прочих помех).

Схема источника телефонной линии


Схема целиком


Слева телефонный разъём, правее стоит защита в виде супрессора на 85В и пары самовосстанавливающихся предохранителей на 80мА, параллельно им подключен разрядник в виде двух оголенных падов.

Выглядит это так

Эта защита хорошо защищает источник питания от попадания 220В и от искровых наводок во время грозы. Но её скорость не достаточно высока и быстрые выплески могут пройти до звука, поэтому для защиты от них все входа ОУ выдачи и приёма защищены дополнительно парными диодами шоттки BAT54S которые защищают от напряжения выше питания и ниже земли.



Это цепь тестового подъёма трубки, при помощи её шлюз сам себя может проверить и сам себе трубку снять. Нагрузка выбрана в 1кОм потому что это удобно — 1В падения равен 1мА тока.

Цепь приёма звука с линии:



Сделана на ОУ в дифференциальном включении — в таком включении собственные шумы относительно телефонной линии вычитаются и не слышны. Слышна только разница между контактами в телефонном разъёме. Для приёма только звука на входе стоят конденсаторы, несколько штук т.к. они 50В, а звук может иметь размах больше (при звонке). На выходе ОУ стоит RC-фильтр низких голосовых частот.

Цепь выдачи звука в линию:



В телефонную линию звук необходимо выдавать током, поэтому в этой схеме на ОУ собран источник тока. На входе ОУ стоит RC фильтр низких голосовых частот. Сам ОУ на трёх резисторах 27ом поддерживает напряжение такое же, как на входе после RC фильтра, тем самым задаёт ток.
Обратная связь ОУ защищена.

При помощи выдачи звука в линию можно проверить и приём звука с линии, выдав и послушав результат, что и используется в тестовой прошивке. Также в ней проверяется АЧХ.

АЧХ реального шлюза и его описание

По Х — Герцы, по Y — децибелы.
На нижних частотах спад из-за входных кондёров которые отделяют звук от постоянной составляющей.
На средних и высоких спад из за RC-фильтров на выдаче и приёме звука с линии — по этому спаду измеряются RC-параметры фильтров.

Схема смены полярности:



Обычный H-мост позволяет менять полярность телефонной линии. Сделан из комплементарных пар транзисторов.

Схема внутреннего сопротивления телефонной линии:



Сделан на больших резисторах, их невозможно сжечь — быстрее дорожки сгорят, они имеют большие паразитные индуктивности и сопротивления — хорошо фильтруют помехи. Они также хорошо рассеивают тепло. И в паре с RC-фильтром на кондёрах 0.33 и резисторах в 51 ом они хорошо фильтруют звук от помех, включая помехи импульсного повышателя.

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

Схема USB моста




Использована микросхема CP2103. Она используется как для связи так и для прошивки или сброса.

Она удобна тем, что помимо линий квитирования RS232, есть ножки GPIO — ввода вывода. Проблема в том, что при подключении к ПК ОС начинает дёргать линиями квитирования, а GPIO не трогает и если к ним подключены ножки сброса МК, то шлюз будет сбрасываться, а разговор прерываться. Поэтому, к GPIO и подключен сброс и перевод в режим встроенного загрузчика. И при помощи только этого моста и прошивается шлюз как на производстве, так и у клиентов если необходимо обновить прошивку.

Схема GSM модуля


Схема


Использован 2.5G двухдиапазонный модуль Telit 868 dual. Т.е. он будет работать только в странах СНГ. Держатель симки обычный лоточный.

Звук по цифровому DVI (переименованный I2S).

Схема микроконтроллера


Схема


Использован мк STM32F405RG с
168к ОЗУ и 1024к Флеша, используется того и того 50%.
160MHz тактовая частота используется на 3/4, основные потребители — декодек speex и эхоподовление
В МК есть датчик температуры — удобно контролировать самонагрев устройства.
Также в МК есть внутреннее опорное напряжение, им можно замерить опорное напряжение АЦП и напряжение питания — таким образом мк может проверить сам себя и своё питание. И тем самым убедиться что он всё остальное меряет правильно.
Предусмотрено питание от литиевой батарейки — таблетки для хранения дат и времени. Умеет сам из GSM сети их запрашивать.
Индикация состояния на четырёх красно-зелёных светодиодах.

Схема SD карточки


Схема


Слева виден ключ включения и выключения, после него стоят конденсаторы включая танталовый на 330мкФ, без него SD карточка будет нестабильно работать, т.к. при записи и стирании больших блоков данных она может потреблять очень много тока в импульсе.

Далее ключ для тестирования питания путём подключения тестовой нагрузки, а также измеритель напряжения питания на делителе 1:2 на резисторах. Ключ для тестирования также важен и в основной прошивке — им можно разрядить до нуля вольт питание, если этого не сделать, то SD карточка начинает при последующем включении сильно глючить.

Снизу видны сдвоенные диоды защиты SD карточки во время горячего подключения.
Справа на схеме держатель карточек с механикой push-pull — вставил-защёлкнулось, надавил-отщёлкнулось-достал.

На этом с схемотехникой всё.
Плата обоих вариантов была разведена в программе TOPOR.

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

Огромное спасибо за потраченное время. Надеюсь, было не скучно.

Комментарии (50)


  1. iliasam
    14.07.2015 12:44
    +3

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


    1. Mirn Автор
      14.07.2015 13:41
      +1

      И Вам спасибо.
      мы можем так же описать работу основной прошивки,
      там есть: адаптивное эхоподавление на КИХ фильтре, кодеки и декодеки, меню, обработка звука, выдача и помехозащищённое детектирование FSK и DTMF на квадратурных детекторах, и прочие вещи.
      Если интересно, то можем опубликовать. А так же приложить часть исходников и разбор их работы (но не все), например FSK детектор.


      1. zhogar
        14.07.2015 15:49

        Для DTMF используем МТ8870, канал обычный звуковой (низкочастотный).


        1. Mirn Автор
          14.07.2015 16:15

          И как они?
          Мы использовали HT9170D — но DTMF коды нередко надо набирать во время разговора: когда донабор добавочных, активация винды и голосовое меню. Но у нашей микросхемы было много ложных срабатываний и иногда она срабатывала на широкополосный импульс, например при подъёме трубки паралельного телефона — у такого звука АЧХ идеально ровная порой и приводило с ложным срабатываниям.

          Поэтому решили сами сделать детектор DTMF, чтоб ложных срабатываний было минимум: на 27 гигах звука (десятки тыщь часов аудиокниг) не больше сотни.


          1. zhogar
            14.07.2015 16:20

            коды нередко надо набирать во время разговора

            у нас такой задачи не стояло, поэтому просто телеуправление.


      1. 10s
        14.07.2015 22:46
        +1

        Опубликуйте пожалуйста!


  1. radiolok
    14.07.2015 13:11

    За статью спасибо, жду продолжения. Взял себе пару моментов на заметку.

    Пара вопросов по вашей схеме:
    1. При использовании SMD компонентов у вас стоят обычные электролиты. Не думали поставить что-то с большим ресурсом? Хотя у вас керамика присутствует.
    2. Почему был выбран именно TOPOR для трассировки?

    И еще вопрос на правах оффтопа. Для GSM модулей SimCom (наверное и в Telit так тоже можно — не знаком с линейкой) можно создать свою собственную пользовательскую прошивку внутри самого модуля. Причем размер этой прошивки довольно приличный. В итоге можно управлять и звуком и сигналом и настройками модуля и дисплеями и прочим без внешнего МК.
    Но при этом сколько проектов на GSM-модулях видел и работал — всегда есть внешний МК и взаимодействие по UART. Так вообще кто-то кроме производителей телефонов делает?


    1. Mirn Автор
      14.07.2015 13:32
      +1

      1. При использовании SMD компонентов у вас стоят обычные электролиты. Не думали поставить что-то с большим ресурсом?

      Устройство работает при плюсовых температурах, и мы нашли выводные, качественные, дешевые электролиты с высоким ресурсом.

      Но при этом сколько проектов на GSM-модулях видел и работал — всегда есть внешний МК и взаимодействие по UART

      Нам нужно качество, поэтому:
      У нас своя обработка звука, включая эхо подавление, свои голосовые кодеки и декодек. Это около 150DMIPS. В модулях обычно существенно меньше быстродействие.
      Нужно обновление прошивки и такое чтоб не украли: там сделать это сложнее.
      Нужно тестирования и система контроля качества: модулем это вообще не сделать
      Если начинаешь писать на их SDK, то оказывается что многие вещи либо недоступны, либо неудобно сделаны.

      Про топор ответ ниже


  1. enclis
    14.07.2015 13:15
    +2

    У меня всегда только один вопрос к таким платам. Чем действительно топор лучше?


    1. Mirn Автор
      14.07.2015 13:34
      +1

      У нас он куплен и есть лицензия. Лицензия удобная — в виде флешь брелка. Он лучше разводит т.к. у него больше степеней свобод чем у тех что разводят под 90 и 45 градусов. Потому что он разводит под любым углом. Результат разводки лучше — т.к. меньше длинна дорожки, меньше паразитное сопротивление и меньше наводки — выше качество. Есть минусы — после Топора надо ручками исправлять мелкие огрехи. И в последних версиях изменили внешний вид — для нас стало жутко не удобно работать.


      1. enclis
        14.07.2015 13:56

        Вы так написали, как будто я не могу сам зайти на официальный сайт. В принципе, после «У нас он куплен и есть лицензия» можно уже дальше не читать. Если вы используете автоматическую трассировку, то тут конечно особо вариантов нет.


        1. Mirn Автор
          14.07.2015 14:01
          +1

          Добавлю: Топор у нас давно, и купили лицензию на него после того, как не смогли вообще в спектре развести, то с чем топор не только отлично справился, да ещё позволил чуток уменьшить плату.


          1. enclis
            14.07.2015 15:39

            Еще раз повторюсь, если вы автоматом разводите, то никакой трассировщик не справится с более-менее приличными платами. В профессиональной среде разводить автоматом считается моветоном.


            1. dimao79
              14.07.2015 15:57

              Там первый вариант платы как раз очень показателен — типичнейший пример автотрассировки, без какой либо ручной оптимизации.
              И про это не надо забывать, тем более при жрущем до 2 ампер GSM модуле. EMC Immunity


            1. Mirn Автор
              14.07.2015 15:59

              мы не столько категоричны и экстремальны.

              В реальности плата разводилась так:
              В начале вручную были разведены критичные цепи: питание и антенна у GSM модуля по просчёту импеданса и рекомендациям производителя.
              Эти цепи были «зафиксированы» — их авто разводчик не будет трогать и заплутать в них не сможет.

              Зафиксированые - тёмно зелёным


            1. tronix286
              14.07.2015 20:48
              +2

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


      1. enclis
        14.07.2015 22:40

        «Меньше паразитное сопротивление» говорите? У вас блокировочные конденсаторы по питанию соединяются длинным тонкими проводочками с соответствующими пинами микроконтроллера.


        1. dimao79
          14.07.2015 23:03

          Мне вот это место понравилось
          image

          Тут все прекрасно, и толстые вензеля слева, и тонкий проводник справа. Я конечно не умоляю достоинств Топора, но как по мне — разведенные им платы просто не красивы.


          1. Mirn Автор
            15.07.2015 08:37

            Эти два кондёра на схеме
            image


            1. dimao79
              15.07.2015 09:03

              А я не про кондеры. Я про 4 параллельных резистора, и про то как трассировщик на автомате их развел. Я не Топор, и не выписывал бы эти зигзаги, а сделал бы намного проще, тем более там цепь питания.
              image


              1. Mirn Автор
                15.07.2015 09:32

                извините, но кроме эстетического негодования, есть в этом какие либо тех проблемы?


                1. dimao79
                  15.07.2015 11:44

                  Именно в этом месте — нет. А вот что он там понаразводил в районе питания GSM модуля — надо смотреть. Про блокировочные емкости — уже сказали. Смотреть разделение аналоговой и цифровой земель. Еще меня смущает цепь кварца.


                  1. Mirn Автор
                    15.07.2015 11:56

                    c цепью кварца всё впорядке — соседние дорожки это дорожки датчика постоянки с очень хорошим фильтром, или очень тихого аналогово питания, переходных по сигнальным нет, земля подключена короче некуда — сразу в полигон цифровой земли ныряет


              1. enclis
                15.07.2015 11:02

                Конечно, такая лапша выглядит просто отвратительно. Может сложиться впечатление, что человек, который разводил эту плату, только-только начал заниматься этой тематикой.


                1. Mirn Автор
                  15.07.2015 12:04

                  есть такой антипаттерн проектирования: черезмерное стремление к идеалу.
                  Просьба не забывать что сделав такие мелочи, как максимально близко расположенные конденсаторы, мы резко ухудшаем технологичность сборки, или увеличиваем плату, или ещё чем либо жертвуем.
                  Просьба не забывать что это изделие собирает вручную в больших количествах один человек преклонного возраста. А всеми шлюзами занимается 5 человек включая разработчиков, администратора производства и упаковщика.
                  И цель статьи не «смотрите как я всё сделал идеально, спорим что ничего никогда не найдёте».


                  1. enclis
                    15.07.2015 12:34

                    Просто хочется подчеркнуть, что это не должно быть нормой.

                    У вас плата без шелкографии со стороны, где подавляющее количество компонентов, и её собирают вручную. А вы говорите о технологичности сборки.


                    1. Mirn Автор
                      15.07.2015 13:02

                      норма это когда невозможно всё сделать идеально за отведённые деньги и время.
                      Шелкографию сборщик просил убрать — мы сделали.


    1. zhogar
      14.07.2015 16:03

      Некоторые особенности TopoR:
      — Сокращение времени проектирования в несколько раз;
      — Высокая скорость и великолепное качество трассировки;
      — Наилучшие показатели электромагнитной совместимости;
      — Полная поддержка проектирования сложных и высокоскоростных плат;
      — Обмен данными с популярными САПР печатных плат;
      — Разработанные платы надежнее и лучше подготовлены к производству;
      — Оптимальное соотношение цена/качество.

      + Российский разработчик, да и сейчас вроде какой то редактор схем появился.


  1. serafims
    14.07.2015 14:40

    Получается, шлюз по сути работает как порт FXS, и может распознавать как набор номера — это сделано только для DTMF программно или ещё и импульсный на случай войны работает? Как можно тут почуять импульсный набор, по росту тока в линии?
    Вы так классно расписали работу, что аж захотелось купить шлюз! Сам для своей коллекции телефонных аппаратов старых хочу просто сделать автомат, который работал бы как АТС, и при наборе номера распознавал бы в линию какую-либо историческую справку по аппарату, либо аудиофрагменты какого-либо года…


    1. Mirn Автор
      14.07.2015 15:39
      +1

      Как можно тут почуять импульсный набор, по росту тока в линии?

      Да, цепочка такая: рост тока вызывает падение напряжения на больших резисторах 680 Ом, это напряжение есть на одном из них, потому что один подключен к питанию +48 а другой к земле. Поэтому напряжение берётся с обоих, диодной сборкой выбирается максимальное — цепь SLIC_LINEU (выделена жёлтым на схеме), и далее поступает на резистивный делитель 1:21 и он же фильтр RC чтоб звук не ловить. После него естественно защита, хоть и 100кОм, но на всякий случай. И на вход АЦП у МК.
      Схема детектора постоянки в телефонной линии


      1. serafims
        14.07.2015 16:41

        Спасибо за консультацию! А ещё какие функции у линий SLIC_LINE?

        Сформулирую подробнее описание функционала моего прибора, и напишу, обязательно.


        1. Mirn Автор
          14.07.2015 17:03

          SLIC_LINE это цепь детектора напряжения в линии, определяет импульсный набор, подъём трубки, очень плотно участвует в тестировании, но это уже материал второй статьи про тестовую прошивку.


  1. zhogar
    14.07.2015 15:52

    А библиотекой для P-CAD, нет желания поделиться? Не принципиально, но смотрю почти все компоненты пытались выполнить в стиле УГО ГОСТ.


    1. Mirn Автор
      14.07.2015 16:08

      А мы и не знали что это по ГОСТу — просто наращивали свою библиотеку по мере надобности. Давать её сомнительная затея — там бардак и есть свои ляпы и особенности — мы тоже ленимся иногда.


      1. zhogar
        14.07.2015 16:14

        Нет нет, прошу прощения. Я какраз таки и сказал, что: «пытались выполнить в стиле УГО ГОСТ». Я не сказал, что Вы все правильно сделали в плане соблюдения ЕСКД. Просто в основном у всех библиотек, самое ценное — это посадочные места: footprint, pattern — называйте как хотите. Я из-за этого поинтересовался, мне не принципиально.


  1. gleb_l
    14.07.2015 23:51

    Респект автору(ам) за хороший отчет по хорошо проделанной работе.

    Есть одно подозрение — согласно статье, в процессе разработки чуть ли не половина усилий было потрачено на борьбу с помехами — описанный их объем скорее соответствуют Hi-Fi или Hi-End аппаратуре с динамическим диапазоном 80+ dB и полосой частот 20-20000 Гц.

    Телефонный же канал имеет ЕМНИП 300-3300 и хорошо если 40 dB динамического диапазона. Понятно, что широкополосные помехи от импульсных источников пролезут и в этот спектр, но существует подозрение, что в конструкции есть либо проблемы с разводкой печати, либо с соблюдением эвристик проектирования смешанных аналого-цифровых схем — и соответственно, большинство этих мер — борьба с самим собой.

    Простите за негативно-подозрительный коммент, однако. Скорее всего, подозрения беспочвенны, и текущее решение — результат большой и тщательно проделанной работы


    1. gleb_l
      14.07.2015 23:59

      И вдогонку — очень зрело смотрятся аппаратно-программные средства самодиагностики — то, что об этом было подумано, и имплементировано не только с программной, но и с аппаратной избыточностью, вызывает уважение.


    1. Quasar_ru
      15.07.2015 00:57

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

      Автору спасибо, интересно про софт почитать, особенно про эхоподавление.


      1. Mirn Автор
        15.07.2015 10:27

        , так как словить помехи в таком узком спектре и малом дд достаточно сложно.

        да, так и есть, но если используешь уже готовые модули телефонной линии, в первом варианте шлюза у нас были только помехи по питанию, решились они грубой силой: поставили вот такой вот здоровый конденсатор по цифровому питанию и они почти полностью ушли. А были они только потому, что у китайского модуля не было раздельного питания аналога и цифры, а звук был аналоговый и поэтому зависел от помех по цифре.
        Совсем другое дело когда надо сделать телефонную линию самому. Когда на фоне 48 В, помеха всего в 1В (-33dB), даст на звуке 0 dB.


    1. Mirn Автор
      15.07.2015 10:44

      300-3300 недостаточно. Схема выдачи может, например, загенерить на 10кГц. И такое было и не раз, в других схемах из за ошибок сборки. И эти 10кГц во первых слышны и крайне назойливо, во вторых будут мешать работе АОНа. Поэтому выбран диапазон тестирования АЧХ в 16кГц: его достаточно чтоб покрыть все случаи что у нас были и учитывались при проектировании второго варианта.

      Такая маниакальная борьба с шумами из-за особенностей телефонной линии, звук надо выдавать в 1В на фоне 48В постоянки что уже -33dB, т.е. уже надо делать схему питания не на 40dB, а на 73dB.


      1. gleb_l
        15.07.2015 23:32

        А почему нельзя разделить AC и DC цепи, например кондером и дросселем? И никто тогда не обяжет использовать для ввода сигнала в линию генератор тока — можно будет вводить генератором напряжения через конденсатор


        1. Mirn Автор
          16.07.2015 09:47

          Вы предлагаете ставить кондер, но нужно два в + и в — т.к. земли схемы нет на телефонном разъеме, дроссель, мощный выходной каскад (2 транзистора) с защитой который не сгорит при подаче импульсов. Скорее всего еще мощные резисторы чтобы по переменке не замкнуть схему.
          Но зачем если все решается существенно проще: одним транзистором?


  1. Dark_Purple
    15.07.2015 11:18

    Плата — жуть. Автороутер — зло.


    1. Mirn Автор
      15.07.2015 12:10

      Спасибо, я безумно рад что все остальное, значительно более важное, получилось без претензий. Я очень рад что всё недовольство далеко от технической части. Это очень хорошо когда только эстетика не нравится и нарушены личные стереотипы о том как должна выглядеть плата. Но я не против чтоб кто нибудь поспорил с тысячами успешно работающих без нареканий экземпляров.


      1. dimao79
        15.07.2015 12:46

        Без претензий? Недовольство далеко от технической части?

        Далее стабилизатор на 3.75 В и 0.5 А. GSM модуль во время работы потребляет импульсами 500 мк. сек х 2А

        В следующей партии модулей вам поменяют ревизию и внутренности, и он будет потреблять 1сек х 1А — хватит вам емкости?

        Также свой вклад в фильтрацию вносит стабилизатор — он ограничивает импульсы потребления с 2 А до 0.5 А, не позволяет брать все 2А с блока питания, эти импульсы берутся с конденсаторов, чем уменьшается влияние на другие ветки питания.

        Как модуль отнесется к тому что его питают по сути нестабилизированным напряжением? Не хотите менять 34063 на более мощный стабилизатор — ставьте внешний ключ и не ограничивайте самый потребляющий элемент в вашем устройстве.

        Вы увлеклись всякими сервисными функциями — контролем напряжений во всех точках, но ключевые моменты у вас почему то сделаны довольно странно. И красивость или некрасивость разведенной автороутером платы — дело десятое.


        1. Mirn Автор
          15.07.2015 13:13

          В следующей партии модулей вам поменяют ревизию и внутренности, и он будет потреблять 1сек х 1А — хватит вам емкости?
          500 мк. сек х 2А — так работает 2G GSM, уже 20 лет он так работает и вряд ли его кто изменит. 100% требований даташита на модуль учтены и более того это проверяется в каждом изделии, включая в основную прошивку, там тоже есть тест при каждом включении.

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

          Вы увлеклись всякими сервисными функциями — контролем напряжений во всех точках
          всё остальное сделано штатными средствами и описано будет во второй части. Контролем напряжений — это очень важная штука. Это не что-то там вспомогательное. От него зависит всё остальное. Тем-более когда работаем с аналоговыми сигналами.
          И что сделано странно?


          1. dimao79
            15.07.2015 13:38

            500 мк. сек х 2А — так работает 2G GSM, уже 20 лет он так работает и вряд ли его кто изменит.

            GSM умеет менять выходную мощность в зависимости от дальности до соты. И если в черте города вам хватает того, что вы запасаете в емкостях после стабилизатора — то не факт что так будет всегда, и ваш контроль напряжения во всех точках тут не поможет.

            основной вход питания называется Vbat и предназначен под работу от нестабилизированных литиевых батарей.

            Литиевая батарея отдаст пару ампер и не чихнет, в отличие от 34063. И запас энергии у нее намного больше, чем в нескольких электролитах.

            И что сделано странно?

            Питание GSM модуля потребляющего в пике 2А от стабилизатора на 500mA, в надежде что пики вытянут электролиты на выходе стабилизатора. У вас в даташите приведена в качестве примера L5973D. Не доступно? Поставьте внешний ключ на 34063. Толку от ваших контролей напряжения, если из-за недостатка питания модуль не сможет проинициализироватся или зарегестрироваться в сети.


            1. Mirn Автор
              15.07.2015 14:07

              The GSM system is made in a way that the RF transmission is not continuous, but it is packed
              into bursts at a base frequency of approx. 217 Hz, and the relative current peaks can be as
              high as about 2A.
              6.2. Power Consumption
              см Рис.
              image


              1. dimao79
                15.07.2015 14:56

                Да ваше устройство, вам и флаг в руки. Только вы приведите весь абзац, в котором английским по белому написано, что (не дословно) «передача идет пакетами с частотой пакетов примерно 217 Гц. При этом пиковое потребление может доходить до 2А, и что и питание и разводка платы должны быть рассчитаны на это пиковое потребление.»
                И дальше идет пункт 6.3.1.2 в котором приведена схема стабилизатора на L5873D. У вас стоит 34063 который при КЗ на выходе максимум отдает 1,1А, рабочий ток — 500mA.
                Я спорю со стандартами? Ну ОК, спор окончил.

                В качестве PS: есть у меня мысль что и помехи с которыми вы боретесь двойными стабилизаторами линейный+импульсный и возбуд на 10 КГц, с которым вы по вашим словам уже сталкивались — это и есть результат ошибок в разводке платы и некоторых ошибках в схемотехнике. Но вы пошли по пути усложнения и контроля.


                1. Mirn Автор
                  15.07.2015 15:26

                  Только вы приведите весь абзац, в котором английским по белому написано

                  Привожу абзац
                  image