DIY-осциллограф из звуковой карты за $1 / Habr
Проектов по созданию осциллографов из разного рода аудиокарт немало. Выполнить модификацию карты с тем, чтобы превратить ее в полезный для электронщика инструмент, не так сложно, но зачастую встает вопрос цены. И здесь приходит на помощь интересный вариант с ценой вопроса около 1 доллара США.
Именно столько стоит внешняя звуковая карта, которая изображена на анонсной фотографии. Купить это чудо техники можно на электронной барахолке (во многих городах такие есть), или же на интернет-аукционе, где всегда есть, из чего выбрать. Маркировка текущего девайса — HX2010-0705, выпущен он в конце 2013 года.
Устройство является гибридным, это звуковая карта + HID input. Что касается последнего, то эта часть предназначена для регулировки громкости и выполнения некоторых других задач, включая работу с медиаклавиатурой.
Дамп USB дескриптора:
VID=0x0D8C PID=0x000C
Product string: C-Media USB Headphone Set
Audio Device Class + HID (composite device)
Судя по всему, чип внутри аналогичен чипу, установленному в недорогих звуковых картах «C-Media», без каких-либо кнопок.
Примечания:
- аудиовход — моно, и два контакта не должны вводить в заблуждение, они замкнуты друг на друга; DLL здесь общий, может работать как со стерео-картами, так и с моно. Второй канал можно отключить самостоятельно.
- Частота дискретизации — 44100 и 48000 Гц;
- 2,23 В на С6; ток короткого замыкания 20 мА, при добавлении резистора на 120к этот показатель можно снизить до 8 мА;
- Резистор на 120к является наиболее недорогим методом увеличения диапазона измерения до 0-6В;
- AGC нужно убрать, настройки должны быть следующими:
Конденсатор C6 нужно отпаять, его емкость составляет 80 нФ, и он может серьезно ограничить возможности нашего осциллографа.
Настройки:
Калибровку лучше всего проводить при помощи соответствующей функциии в GUI. Вот пример работы того, что получилось в результате:
ПО для работы:
Как получить правильную осциллограмму / Habr
Наверно, все умеют пользоваться осциллографом. Это очень легко – цепляешь «крокодил» к земле, остриё щупа – в необходимую точку измерения, регулируешь масштаб по вертикальной и горизонтальной осям и получаешь временную развёртку напряжения в этой точке. Да, так можно делать, но только если учитывать ряд факторов, о которых пойдёт речь в этой статье. А если не учитывать, то есть вероятность, что полученное на экране осциллографа изображение – бесполезная картинка. И чем меньше его стоимость, тем это более вероятно.Я думаю, распространённый сценарий использования осциллографа в цикле разработки печатной платы следующий: если плата не заработала (КЗ, микросхема перегревается, микроконтроллер не прошивается, команды управления не проходят и т.п.), начинаем искать проблему, взяв щуп осциллографа в руки, а если заработала – то и хорошо (рис. 1).
При этом, если разработчик изделия это не радиолюбитель, который все указанные функции выполняет сам, то количество итераций даже до условного «успеха», который заключается в функционировании изделия может возрасти. Поэтому в случае разделения функций, как в случае разработки в рамках организации, разработчику желательно если не самому собирать и отлаживать первые образцы изделий, то, по крайней мере, присутствовать на производстве с целью анализа технологичности разработки.
При таком подходе сужается область поиска неисправности, так как она может возникать только во вновь собранном блоке или при взаимодействии этого блока с уже проверенными. Контроль электрических параметров гарантирует то, что изделие не просто корректно функционирует, а что все или основные электрические сигналы соответствуют ожидаемому поведению. В таком случае «успех» уже более основательный, и можно переходить к полному циклу испытаний при требуемых внешних воздействиях.
Вернёмся к использованию осциллографов. При описании их места в разработке печатных плат был неявно сформулирован важный принцип измерений (и измерений с помощью осциллографа в частности), о котором часто в своих лекциях говорит Эрик Богатин.
До момента измерения необходимо иметь представление о его ожидаемом результате. В случае совпадения ожиданий и реальности можно говорить о правильной модели процесса, в случае значительного несовпадения – либо о необходимости перепроверки ожидаемых параметров (получаемых с помощью прямых аналитических расчётов, результатов моделирования или на основании опыта), либо о некорректном измерении, либо о некорректном функционировании изделия.
В контексте темы публикации стоит обратить внимание на вариант некорректного измерения. При измерениях с помощью осциллографа как нигде ещё применим «эффект наблюдателя» из квантовой физики, когда наличие наблюдателя влияет на наблюдаемый процесс. На экране осциллографе можно такое пронаблюдать, что к реальности не будет иметь никакого отношения. Разбираемся, как это не допустить.
- Обеспечивается стабильный механический контакт с нулевым контактным сопротивлением в точках контакта. Их две, обе равнозначные: одна обеспечивает путь для прямого тока, другая – для возвратного.
- Сформированная сигнальная линия не должна нагружать измеряемую сигнальную цепь, то есть должна иметь бесконечный импеданс.
- Сформированная сигнальная линия не должна вносить искажений в измеряемый сигнал, то есть должна иметь плоскую передаточную функцию в бесконечной полосе частот и линейную фазовую характеристику.
- Сформированная сигнальная линия не должна вносить собственных помех в измеряемый сигнал, а также должна быть идеально защищена от внешних помех.
Конечно, в общем случаев эти условия не реализуемы, однако формулировка идеального конечного результата полезна при анализе задачи. Она, в частности, даёт понимание того, что реальная измерительная система имеет ограничения, сужающие область достоверных измерений.
На рис. 3 изображена эквивалентная схема измерительной цепи с использованием наиболее распространённого типа щупа «1X/10X», который в большинстве случаев входит с стандартный комплект осциллографа.
С учётом сказанного выше можно получить рабочую модель измерительной цепи осциллографа для положений переключателя «10X» и «1X». Численные значения параметров должны браться из документации на соответствующие щупы и осциллографы. При этом, скорее всего, параметры различных производителей не должны значительно отличаться для заданной полосы пропускания. В представленных на рис. 6 и 7 моделях LTSpice использовались данные на осциллограф TDS2024B и щуп P2200.
Важно понимать, что эти модели являются упрощёнными и не учитывают всех паразитных параметров, поэтому точных значений полосы пропускания они не дают. Однако они дают качественное представление о влиянии тех или иных параметров при измерении. Например, первые результаты, на которые стоит обратить внимание это то, что:
2. Увеличение индуктивности петли возвратного тока снижает полосу пропускания. Именно поэтому при измерении высокочастотных сигналов для обеспечения возвратного тока рекомендуется использовать не «крокодил» с индуктивностью ~200 нГн, а специальную насадку на щуп, на порядок снижающую значение индуктивности (рис. 8).
3. Влияние подстроечного конденсатора в режиме «10X» на передаточную функцию нарастает, начиная с частот 200…300 Гц, до максимума на частотах в 2…3 кГц. Именно поэтому в качестве калибровочного сигнала на осциллографах обычно используется сигнал с тактовой частотой 1 кГц, фронты которого искажаются при подстройке (рис. 9). Полезная привычка – выполнять подстройку как при смене щупа или канала осциллографа, так и периодически перед проведением измерений.
Помимо электрических характеристик щупа и входной цепи осциллографа в модель на рис. 3 как параметры входят следующие величины: напряжение источника сигнала – его спектр, выходное сопротивление источника RS, импеданс сигнальной линии Z0, импеданс нагрузки ZLOAD – именно импеданс, с учётом емкостной составляющей. Эти и другие параметры представлены в таблице 1, именно они определяют достоверность результатов измерения. Основной критерий заключается в том, чтобы исследуемая часть спектральной полосы сигнала входила в полосу пропускания системы «щуп + осциллограф», при этом амплитуда сигнала не превышала допустимых значений (это особенно важно в случае, когда входное сопротивление осциллографа составляет 50 Ом). Остальное: захват сигнала и измерение его параметров – дело техники.
Последний момент, на котором хочется остановиться – это полоса пропускания системы «щуп + осциллограф». Тут стоит избегать заблуждения, заключающегося в том, что если взять осциллограф и щуп с полосой пропускания 150 МГц, то полоса пропускания измерительной системы будет 150 МГц (это так только при наличии программной компенсации). Кроме того, тот факт, что на щупе «написано» 150 МГц, не всегда означает, что это реальные 150 МГц. Поэтому рекомендую с помощью генератора синусоидального сигнала экспериментально исследовать полосу пропускания. Частота, на которой амплитуда сигнала уменьшиться до 0,707 от значения на низких частотах, это и будет нужное значение. При этом стоит обратить внимание на то, есть ли локальные максимумы в передаточной функции. Я это проделал с помощью генератора Г4-107 для нескольких измерительных систем, при этом использовалось соединение с помощью «пружинки» (рис. 10). Перед каждым измерением выполнялась компенсация, при этом всегда приходилось делать подстройку, хоть и небольшую. Также проводились измерения без щупа с помощью короткого 50-омного коаксиального BNC-кабеля. Результаты представлены в таблице 2. Удивил щуп PP510 с заявленной полосой в 100 МГц.
В общем, если подводить итог, то хочется сказать, что следует внимательно относиться к измерениям с помощью осциллографа, и в качестве опоры использовать корреляцию между ожидаемыми и полученными результатами. Что касается области более высоких частот, то для измерения сигналов, полоса пропускания которых превышает 500 МГц, пассивные щупы типа «1X/10X» не применимы. Для этого используют прямое коаксиальное соединение при 50-омном входе осциллографа или активные щупы, ещё больше минимизируют индуктивность соединения (в т. ч. за счёт использование паяных соединений, размещения на плате миниатюрных коаксиальных разъёмов и т.п.). Тема очень широкая – есть изолированные осциллографы, изолированные щупы, дифференциальные и специализированные щупы, но всё это уже отдельный разговор, выходящий за рамки данной статьи.
Этот материал прежде нигде не публиковался, жду обратной связи. После этого статья, возможно, в чуть более подробном виде, вместе с материалом по высоковольтной изоляции войдёт в качестве приложения в полную версию книги в обновлённом релизе. Точных измерений, народ!
ВХОДНЫЕ УЗЛЫ ОСЦИЛЛОГРАФОВ — 4
Это окончание темы по входным цепям осциллограффов, предыдущую часть читайте тут. Некоторые вещи относительно цифровых осциллографов стоит пояснить отдельно. При наблюдении осциллограмм можно наблюдать такой эффект. Я его называю ошибкой округления АЦП. За точность термина не поручусь.
Например в Импульсе-5110 при закороченном входе центральная линия вполне чистая, без всякого видимого шума. Сразу приношу свои извинения за качество фото.
Аналогично выглядит и линия развертки Импульса-7735
Это, кстати, говорит о неплохой разводке платы и достаточной фильтрации цепей питания после преобразователей.
Но если мы немного покрутим ручку переменного резистора смещения линии развертки по вертикали, то можем наблюдать, как линия развертки приобретает некую «лохматость». Если прокрутить немного дальше, линия снова становится гладкой. И так несколько раз по высоте дисплея.
Почему так происходит? Дело в том, что аналого-цифровой преобразователь (АЦП), который собственно и преобразует входной сигнал в цифровую форму для дальнейшей обработки микроконтроллером, мыслит только целыми числами.
Например 8 битный АЦП AD9280 в зависимости от уровня сигнала на входе (допустим при включении на чувствительность от 0 до 5 вольт) разбивает этот диапазон на 256 значений (8 бит).
Т.е. каждая ступенька имеет «вес» примерно 19,5 милливольт, или 0,01953125 вольта.
Линия в центре дисплея имеет значение 2,5 вольта на входе АЦП и он выдает на микроконтроллер значение 128.
Он не может выдать скажем 128,3 или 128,495. Только целые числа от 0 до 255. И когда значение приближается к переходному уровню, скажем 2,495 вольта, начинают сказываться мелкие помехи, тепловой шум внутри микросхем, наводки и т.п. Которые есть ВСЕГДА. И значение на выходе начинает гулять 128, 129, 128, 129… и так далее. Т.е реальное значение напряжения сигнала гуляет совсем незначительно, но АЦП округляет то вверх (чуть больше половины) или вниз (чуть меньше половины).
Дисплей штука тоже сугубо цифровая. Он не может отобразить только часть пиксела.
Как следствие мы видим вполне себе «лохматую» линию.
Эта лохматость будет у любого цифрового осциллографа. Она неустранима в принципе. Ее можно замаскировать разными методами обработки сигнала. Например выводя на дисплей усредненный сигнал скажем за 10 периодов входного сигнала. В некоторых моделях серьезных цифровых осциллографов эта функция реализована.
Но так можно не всегда. Например если мы исследуем одиночные импульсы, то усредняя сигнал мы его просто не увидим.
Таким образом это явление неустранимо в принципе и считать его недостатком не стоит.
То же самое происходит когда мы рассматриваем сигнал с плоскими вершинами, меандр, например. Верх меандра может быть чистым и ровным, а низ лохматым. Или наоборот. Это зависит лишь от того, попадает ли уровень сигнала в данной точке в зону округления.
Заметность «лохматости» зависит и от размера пиксела. От разрешения дисплея. От разрядности АЦП. Скажем на 12 битном АЦП и дисплеях с большим разрешением, например 320х240 пикселей заметность будет гораздо меньше, чем на Нокиевском дисплее 5110 с его 48 пикселами по вертикали.
Построение входного аттенюатора
Второе, и пожалуй главное, что хотелось бы пояснить, построение входного аттенюатора (делителя). Не все понимают (наблюдение из практики), что входной аттенюатор не создает предыскажения для последующего усилителя, ОН САМ ЯВЛЯЕТСЯ ИСТОЧНИКОМ ИСКАЖЕНИЙ.
Завал, всплеск — во многом его «заслуга». Если посмотреть внешним прибором, что происходит во входных цепях осциллографа, то выяснится, что большая часть искажений появляется именно благодаря входному делителю. А вот конденсаторы в нем как раз и служат для настройки. Убрать все эти скругления и всплески.
Усилители тоже имеют собственные искажения, которые могут быть заметны на осциллограмме, но их гораздо меньше, при правильно построенном усилителе.
Отсюда вывод – входной аттенюатор не может быть полноценным если КАЖДАЯ ЕГО СТУПЕНЬ не имеет собственных цепей частотной коррекции.
Т.е. входной аттенюатор, построенный по схеме
(Я приводил ее ранее) Может быть нормально отстроен (пример на картинке)
(углы прямоугольных импульсов достаточно ровные) только на одном из диапазонов (положений переключателя S1)
На двух других при этом мы будем наблюдать это
Или это
Проблема этой схемы в том, что конденсатор С1, установленный параллельно резистору R1, будет настроен на одно конкретное положение переключателя.
Отстраивать его заново каждый раз когда мы переключаем диапазоны никто не станет да и неудобно это. Не говоря уж о том, что его величина может изменяться на два порядка, т.е. без перепайки не обойтись.
Не готов полностью исключить, что в каких то случаях нормальная настройка возможна, но мне это не удавалось. Ни теоретически (на симуляторах), ни практически. Кроме того из опыта, входные аттенюаторы построенные по одной схеме, с использованием деталей из одной партии, работающие на ОУ одного типа, вовсе не обязательно будут иметь одинаковую емкость конденсаторов частотной коррекции. Т.е. рассчитывать, что именно вам вот сейчас повезет не стоит.
Разная емкость монтажа, немного разные параметры ОУ (технологический разброс есть всегда), разные щупы для осциллографа (Это тоже важно упомянуть. Осциллограф надо настраивать с «родными» щупами).
Поэтому единственно нормальный путь для построения входных цепей это следовать принципам, заложенным в схему 2
Важное отличие состоит в том, что переключается не только нижний резистор делителя, нижнее плечо, как я обычно говорю, но и верхнее.
Т.е. требуется переключатель с ДВУМЯ ГРУППАМИ КОНТАКТОВ. И по сути это несколько разных и независимых друг от друга делителей. И мы переключаем их полностью, исключая таким образом влияние друг на друга.
И только этот способ способен гарантированно обеспечить возможность настройки в любом положении переключателя.
Те, кто читал предыдущие части моих обзоров наверное удивлены, для чего я повторяю часть картинок и часть информации.
А дело в том, что уже столкнулся с использованием ущербных схем входного делителя в самоделках людьми, точно прочитавшими предыдущие части, специально этому посвященные.
Ущербный входной аттенюатор уже погубил несколько серьезных и интересных разработок, которые мне попадались. Он погубил и некоторые из выпускаемых промышленностью осциллографов начального уровня для радиолюбителей. Так быть не должно.
Важно уяснить, нормальный входной аттенюатор ОБЯЗАТЕЛЬНО имеет переключение с двумя группами контактов.
Автоматический расчет напряжений входных сигналов
У меня на схемах изображены механические переключатели. А как же быть, если при построении собственной схемы хочется обеспечить автоматический расчет напряжений входных сигналов? Можно реализовать и такое.
Возможные пути:
- Реле с двумя группами контактов во входном делителе. Естественно со своими цепями коммутации (транзисторы, резисторы, диоды). Управление от микроконтроллера. На три диапазона требуется три реле, работающих по очереди. Соответственно еще минимум пара реле на переключение промежуточного делителя. Эти два реле уже могут иметь одну группу контактов.
- Реле с одной группой контактов на верхнее плечо делителей. Нижнее плечо можно переключать мультиплексором. Промежуточный делитель тоже.
Итого требуется три порта МК на управление реле. Еще два порта на управление реле промежуточного делителя.
Мультиплексор как правило управляется тремя портами (выходами) микроконтроллера.
Одна из проблем такого решения состоит в том, что электромагнитные реле имеют некоторые габариты, да еще и кушают немалый ток, что делает такую схему малопригодной под батарейное питание.
Да и сильно простой ее уже не назовешь. И микроконтроллеры уже требуются с большим количеством портов ввода-вывода.
Это все неплохо вписывается в настольные варианты осциллографов с питанием от сети, но гораздо сложнее использовать в малогабаритных вариантах с батарейным питанием.
Именно из таких соображений я и считаю целесообразным для радиолюбительских конструкций осциллографов начального уровня применять механические переключатели и производить пересчет напряжения сигнала ориентируясь по положению переключателей в уме.
Да, это менее удобно. Но это единственный путь сохранить возможность нормальной настройки и работы осциллографа во всем диапазоне доступных ему сигналов при сохранении относительной простоты схемы.
Мне понятно стремление осциллографостроителей к автоматизации. И на первом этапе обычно кажется, что «Как нибудь прорвусь. Как то настрою. Ну пусть и с искажениями…» Сам был такой когда-то.
Поверьте, входная часть осциллографа в значительной мере определяет его рабочие качества.
И если строите прибор не только на «поиграться/похвалиться», а хотите иметь верного помощника – не упрощайте входной аттенюатор. Именно ДВЕ группы контактов.
Все сказанное в полной мере справедливо и при выборе готовых схем, кит-наборов и готовых конструкций. Осциллограф не столь простой и дешевый прибор, чтобы стоило заведомо снижать его рабочие качества, лишь немного упростив схему входных делителей.
Еще один вопрос, которому стоит уделить внимание
Далеко не все операционные усилители, которые можно использовать в схемах осциллографов имеют чистый ноль на входе.
У некоторых присутствует некий постоянный потенциал. Он как правило невелик по величине, но сам факт его наличия вызывает очень неприятное явление – при переключении входного аттенюатора линия развертки смещается. И как правило весьма сильно, вплоть до того, что уходит в зашкаливание.
ОУ с чистым нулем на входах отыскать не всегда просто. Как же быть?
Один из возможных путей отсечь постоянную составляющую на входе, используя разделительные конденсаторы. Для осциллографа не самый лучший выход.
Другой выход был озвучен пользователем по ником «apeks» и предложена схема в теме на форуме. Фрагмент схемы:
Обратите внимание на резисторы R10 и R18. Их назначение – скорректировать потенциал на входе ОУ, тем самым устранив скачки линии развертки при переключении входного делителя.
Этот способ сильно расширяет номенклатуру ОУ пригодных для использования в схемах осциллографов. Первое время я сомневался, будет ли результат стабильным во времени, при изменении температуры, влажности и т.п.
Но реализовав два экземпляра таких усилителей в Импульсе-5110 и Импульсе-7735, я успокоился. Отрегулировав схему один раз, больше к регулировке возвращаться не приходилось.
Справедливости ради должен заметить, что идеальную компенсацию получить достаточно сложно, и при изменении условий среды (прогреве цепей питания осциллографа) незначительное смещение линии развертки все же наблюдается, но оно совсем невелико и проблем не возникает.
Но при включении осциллографов появился некий эффект (почти как в ламповых) – требуется некоторое время на прогрев, в течение которого линия немного уплывает.
Время не велико. В пределах двух минут. Да и само смещение тоже не так значительно, около половины деления (дисплей разбит на 5 делений по высоте). Каких либо сложностей из-за этого эффекта не ощутил. Реально может мешать только при исследованиях с постоянной составляющей. Но тогда проще подождать прогрева и продолжать исследования спокойно.
Связываю дрейф линии с неидеальной температурной стабильностью примененных стабилизаторов постоянного напряжения (у меня AMS1117-5 и инвертор напряжения на MC34063). Видимо какой то из них, или оба, незначительно меняют напряжение при прогреве рабочим током. И возникает некий разбаланс питающих ОУ напряжений. Считаю этот недостаток приемлемой платой за возможность использовать «левые» операционные усилители.
Естественно, данную схему входного усилителя можно использовать и для ОУ с чистым нулем на входе. Если вам повезло отыскать такой, то эти два резистора можно просто не устанавливать. Схема будет работать и без них.
Обратное тоже возможно, эти резисторы можно добавить в схемы, изначально не предназначенные для использования ОУ с паразитным потенциалом на входе.
Вопросы по тематике статьи можно обсудить в специальной теме конференции. Всем успеха! Тришин А.О. Г. Комсомольск-на Амуре. 2018 г.
Форум
Обсудить статью ВХОДНЫЕ УЗЛЫ ОСЦИЛЛОГРАФОВ — 4
Neil Scope 3. Глубокая модернизация
РадиоКот >Схемы >Цифровые устройства >Измерительная техника >Neil Scope 3. Глубокая модернизация
На мой взгляд, конструкция радиолюбительского цифрового осциллографа Neil Scope-3 является лучшей по соотношению цена/качество среди конструкций радиолюбительских цифровых осциллографов. Но и она не лишена некоторых недостатков. Таковыми, с моей точки зрения, являются:
1) управление кнопками, которые опрашиваются только в циклах чтения и которые не позволяют оперативно изменять наиболее часто используемые режимы работы
2) линейные стабилизаторы напряжений питания, из-за которых минимальное рабочее напряжение аккумулятора в базовой схеме ограничено 3.45В, что приводит к потере примерно 1/3 ёмкости батареи
3) применение микросхемы заряда аккумулятора в корпусе SOT-23, что не даёт возможности поднять ток заряда из-за перегрева микросхемы в связи с плохим отводом тепла
4) управление аналоговым трактом посредством регистров в ПЛИС, что при самостоятельном изготовлении платы приводит к большому числу перемычек
5) применение миниатюрных реле на 3.3В, которые являются относительно дефицитными и которые стоят дороже 5-вольтовых выводных.
Применённый в изначальной конструкции дисплей сейчас является дефицитным и для многих это стало проблемой. Но на самом деле это не недостаток конструкции, это проблема людей, не желающих самостоятельно даже сделать попытку разобраться в исходных текстах прошивки и внести небольшие изменения под какой-нибудь другой, доступный им дисплей. А ведь исходники были изначально выложены в свободный доступ. Ни один автор не может перекрыть всё разнообразие производимой сейчас и в будущем продукции, тем более покупать все возможные образцы. Но в данном случае инструмент для решения проблемы был предоставлен. Кто хотел – тот свою проблему решил. Так что дисплей я недостатком не считаю. В моём приборе используется дисплей на чипе ST7793 с диагональю 4”, снятый с очень китайской «копии» одной из модификаций Samsung Galaxy. Такая диагональ является оптимальной для данной конструкции. Телефон приобретался на местном интернет аукционе как нерабочий ( с битым тачскрином, но рабочим дисплеем ) по цене меньше, чем отдельный дисплей на Алиэкспрессе, при этом его доставка произошла всего за пару дней. Так что я рекомендую приобретать дисплеи для своих поделок таким способом.
Итак, всего 5 недостатков. В своей конструкции я их убрал. Метрологические параметры прибора остались без изменения. В результате получился вот такой прибор.
Начну двигаться по списку.
Как я понимаю, управление кнопками, которые опрашиваются через регистры ПЛИС, было реализовано из-за нехватки свободных ножек у применённого контроллера. В качестве новых органов управления я решил применить механические энкодеры, подключённые непосредственно к портам контроллера и опрашиваемые только при их использовании. В качестве контроллера я выбрал имеющийся в наличии LPC1758 от NXP. Это потребовало большего объёма работы по портированию прошивки под другой контроллер, но я никуда не спешил. В начале работы я рассчитывал, что смещение лучей обоих каналов и регулировка уровня синхронизации будут осуществляться посредством переменных резисторов, но в процессе работы понял, что можно всё реализовать только на энкодерах. Но в этом случае в применённом контроллере ножек для независимого подключения пяти энкодеров не хватило, поэтому сигналы двух энкодеров подключены через диоды. Кстати, диоды в энкодерной части должны быть типа Шотки для минимизации падения напряжения на них. Из-за отличий в системе внешних прерываний у контроллеров от STM и NXP для сигнала прерывания от энкодеров пришлось выделить отдельный вход контроллела и подать на него сигналы с энкодеров, объединив их через диоды. Почему я применил для управления энкодеры, а не, например, тачскрин? Потому, что для меня это удобнее и привычнее. Энкодеры используются механические, типа ЕС11 или аналогичные, приобретались на Aliexpress в партии сразу на пять штук. Если применённые энкодеры выдают сигналы в противоположном направлении, то направление можно изменить в прошивке при помощи параметра LEFT_ENCODER в файле defines.h. Далее в тексте все параметры в прошивке выбираются в файле defines.h, в котором так же присутствуют комментарии для каждого параметра. При применении энкодеров существенно упростились меню прибора – многие пункты стали не нужными и были убраны. Но были добавлены новые пункты, которые отсутствовали в базовой версии. Эти пункты относятся к меню аналоговых каналов и добавляют возможность выбора используемого делителя щупа осциллографа между значениями 1:1 и 1:10, изменяя значение чувствительности канала в 10 раз. При этом минимальная чувствительность с делителем щупа 1:10 ограничена адекватным значением 100В/деление.
Для того, чтобы использовать всю доступную ёмкость аккумулятора, я применил импульсные преобразователи напряжения для питания как цифровой, так и аналоговой части прибора. При этом напряжение питания цифровой части снижено до 2.7В. Это минимальное рабочее напряжение питания для AD9288, а также практически минимум для подсветки дисплея. Снижение напряжения до такого уровня позволило существенно снизить ток потребления. Изначально, в моём первом варианте схемы, при напряжении питания цифровой части 3.3В, прибор потреблял около 360мА, а сейчас 200мА при напряжении аккумулятора 4В. Снижение напряжения питания до уровня ниже минимального напряжения аккумулятора позволило применить более простую схему преобразователя питания для цифровой части – обычный понижающий преобразователь вместо SEPIC-преобразователя в моём первом варианте схемы. Это повысило КПД преобразователя и уменьшило пульсации. Данный преобразователь включен по типовой схеме. В применённой микросхеме используется синхронный выпрямитель, что повышает КПД преобразователя. Преобразователь напряжения питания для аналоговой части повышает цифровые 2.7В до ±3.3В. Микросхема преобразователя включена по не совсем стандартной для неё схеме – на выходе стоят два выпрямителя с удвоением напряжения, включённые через разделительные конденсаторы. В такой схеме для стабильного запуска микросхемы преобразователя добавлен диод D22. Так как токи потребления по положительному и отрицательному напряжениям практически одинаковые, то положительное и отрицательное напряжения тоже практически одинаковые. У меня они отличаются всего на 0.1В. Уровень пульсации напряжений ±3.3В, который я смог наблюдать при помощи осциллографа на пределе 20мВ/деление, не превышал 10мВ. Сигналы на выходах обеих микросхем преобразователей при нормальной работе должны быть прямоугольные, без колебательных процессов.
По микросхеме контроллера заряда аккумулятора. Тут всё просто – нашёл самую дешёвую из доступных мне в корпусе, имеющем на брюхе металл для улучшения теплоотвода. У меняя аккумулятор на 2.4А/ч. При выставленном токе заряда 500мА имеющегося теплоотвода через полигоны платы абсолютно достаточно, во время заряда полностью разряженного аккумулятора микросхема просто тёплая, а микросхема в корпусе SOT-23 при токе заряда немногим более 300мА грелась так, что палец нельзя было держать. Хоть и допускается её работа при температуре более 100 градусов, но если есть возможность — лучше такого избегать. Печатная плата разрабатывалась из расчёта самостоятельного изготовления, поэтому переходные отверстия возле микросхемы контроллера заряда расположены сбоку от неё. При заказе платы на производстве эти отверстия лучше перенести под микросхему и дополнительно пропаять их перед установкой самой микросхемы для улучшения отвода тепла.
При переходе на напряжение питания цифровой части, равное 2.7В, необходимо обратить внимание на выбор некоторых компонентов. А именно — микросхему ОЗУ, микросхему генератора и микросхему FRAM. Все они должны работать при таком напряжении. Генератор и ОЗУ у меня остались от изначального варианта осциллографа – на 3.3В. Хотя по паспортным данным они не обязаны работать при напряжении 2.7В, они работают. Кстати, память типа FRAM надёжнее EEPROM и не требует задержек в циклах записи, что делает процесс сохранения настроек практически мгновенным. Но использовать память типа EEPROM можно, включив в исходниках прошивки параметр EEPROM_NO_FRAM. Применённый мной миниатюрный кварцевый резонатор для контроллера имеет встроенные конденсаторы. В таком варианте устанавливать внешние конденсаторы С7 и С8 не нужно. Если будет применён обычный резонатор, то эти конденсаторы ставить нужно. Возможно использование кварца на другую частоту с внесением соответствующей коррекции в прошивку или вообще работать без кварца от встроенного в контроллер RC генератора. Для этого нужно применить параметр WITHOUT_QUARZ, хотя при использовании внутреннего генератора контроллера стабильность и точность частоты будут хуже, что может повлиять на работу с ПК, при этом в автономном режиме всё будет нормально. Резистор R3 задаёт максимальную яркость подсветки дисплея, а соотношением резисторов R6 и R7 устанавливается минимальная яркость для режима энергосбережения и при индикации аварийных ситуаций.
Микросхема ПЛИС U5 программируется через разъём JTAG. Сам разъём на плате отсутствует. Так как микросхема программируется всего один раз, то используются только контактные площадки, к которым подпаиваются провода от программатора на время программирования.
Для управления аналоговым трактом, чтобы убрать пучок перемычек, я использовал два сдвиговых регистра, размещённых между аналоговыми каналами. Информация в них записывается по шине SPI посредством всего трёх сигналов. При этом получаемые линии сигналов управления стали очень короткими и внешний вид платы изменился в лучшую сторону. Теперь на обычной двухсторонней плате нет ни одной перемычки, что дополнительно упрощает монтаж. Кроме того, ранее запись в регистры управления аналоговым трактом производилась только в определённые моменты времени в рамках циклов чтение/запись. Сейчас можно менять параметры каналов в любой момент. Для упрощения платы шина SPI и сигналы ШИМ от контроллера проходят через ПЛИС транзитом.
Для использования на входе аналогового тракта реле, рассчитанных на 5В, пришлось немного изменить схему для их управления. Теперь реле переключаются между напряжениями +2.7В и -3.3В. Обратите внимание, что в схеме применяются поляризованные реле ( в названии присутствует буква L — Latching type ). Для переключения таких реле на них достаточно подать короткий импульс напряжения. Подбирая ёмкости разделительных конденсаторов, включённых последовательно с обмотками реле, можно подобрать минимальную длительность этого импульса. Это позволит уменьшить броски тока по цепям питания. Если у кого-то уже имеются реле на 3В, то их тоже можно применить. Для устранения сквозных токов через выходные транзисторы управления реле в момент включения прибора, на регистр U22 добавлена цепь сброса.
Вид на плату сзади.
Вид спереди.
Так как преобразователи напряжений питания расположены достаточно далеко от входных цепей аналогового тракта и с противоположной стороны платы, то дополнительное экранирование аналогового тракта не требуется. Дополнительная защита от возможных помех со стоны дисплея обеспечивается размещением аккумулятора между дисплеем и платой. Так как корпус аккумулятора по переменному напряжению соединён с общим проводом, то он фактически является защитным экраном. Алюминиевый корпус специально не соединён с общим проводом, но имеет с ним контакт через корпус USB разъёма. Этого достаточно для экранирования аналогового тракта от внешних помех.
Мой дисплей имеет короткий шлейф, который с имеющейся высоты установки не позволяет припаять его к основной плате. Поэтому для подключения дисплея на основной плате я применил разъём, к которому подключил переходную мини плату с распайкой под шлейф своего дисплея. Такое решение позволило поднять место подпайки шлейфа и сделало возможным лёгкое отсоединение дисплея. При использовании дисплеев с другими шлейфами будет нужно переделывать только маленькую переходную плату.
На этой фотографии не очень хорошо, но можно разглядеть положение по высоте аккумулятора и переходной платы подключения дисплея.
Всё в сборе.
Ручки управления, распечатанные на 3D принтере, получились с большей точностью, чем я рассчитывал, закладывая отверстие под энкодеры на 0.4мм больше реального. В результате отверстия распечатались с диаметром на 0.2мм больше, чем диаметры штоков. Чёрного пластика у меня уже не осталось на перепечатывание. Чтобы решить данную проблему я просто обтянул штоки энкодеров термоусадкой. Когда появится чёрный пластик, то переделаю.
Энкодеры я выбирал по виду штока (без фаски и с насечками) и по общей высоте, так как имелось ограничение по высоте применённого корпуса из профиля Bopla. С этими энкодерами в момент установки в корпус плата входит практически впритык, как показано на фотке ниже. По этой же причине с обратной стороны платы в области расположения энкодеров нет компонентов, толще 1мм. Чтобы не произошло замыкания через металлический корпус в момент установки платы, на заднюю стенку внутри корпуса наклеен скотч.
В рабочем положении плата в корпусе удерживается на входных разъёмах и на разъёме USB, для которых в боковых крышках сделаны отверстия на нужном расстоянии от задней стенки корпуса. В задней стенке корпуса имеются четыре отверстия напротив подстроечных конденсаторов. Передняя панель рисовалась в файле печатной платы в дополнительных слоях. Она напечатана на струйном принтере на обычной бумаге, заламинирована и приклеена к корпусу на двухсторонний скотч. Круглые отверстия пробивались пробойниками, изготовленными из колен телескопической антенны подходящих диаметров.
В исходниках прошивки контроллера имеется поддержка дисплеев на нескольких типах чипов. Для вывода изображения используется только 16-битный цвет. Дисплей выбирается снятием комментария с нужного типа и установкой комментария на текущем, с последующей пересборкой прошивки. Инициализация дисплея на чипе НХ8352 перенесена из исходников NS-3 и не проверялась в работе в виду отсутствия такого дисплея. Кроме НХ8352 и моего ST7793 есть инициализация для ILI9481, R61509V и даже ILI9325 с разрешением 320х240. Поддержка ILI9481 рабочая, но он имеет большее разрешение – 320х480 вместо 240х400. Из-за этого картинка на дисплее будет не на всё рабочее поле. Так же мне попался один такой дисплей с проблемным чипом. Он изначально выдавал инверсные цвета и в принципе имел проблемы с цветопередачей, а также не имел возможности программно изменять направление вывода точек в выделенной области. То есть китайцы его достаточно сильно изменили. Так же встречаются дисплеи с меньшим физическим разрешением по узкой стороне, при этом изображение может быть обрезанным в зависимости от направления ориентации вывода. Такая ситуация может наблюдаться и с другими типами дисплеев. Дисплей на R61509V я определил, прочитав его ID, но не смог пока запустить, возможно это тоже была какая-то китайская модификация или это на самом деле не R61509V. Поэтому рассчитывайте на то, что ваш дисплей будет полноценным, а не урезанной или изменённой версией. Дисплей на ILI9325 я использовал на макете во время первичного портирования прошивки и отработки её энкодерной части. Его можно применять только для проверки, так как картинка будет обрезана справа. Для добавления нового чипа дисплея можно внести изменения в один из имеющихся вариантов, который требует наименьшей переделки. Для большинства чипов можно найти готовые варианты последовательности команд инициализации, включая варианты под разные диагонали. Схема осциллографа подразумевает работу с 8-битной шиной передачи данных. Для использования дисплеев, работающих по 16-битной шине необходимо добавить регистр типа 74НС573 или 74НС574, который размещается на небольшой переходной плате дисплея, и пересобрать прошивку с поддержкой 16-битной шины, раскоментировав параметр LCD_HC573. Регистр 74НС573 подключается между шиной LD7..LD0 и старшим байтом шины данных дисплея, а сама шина LD7..LD0 подключается напрямую к младшему байту шины данных дисплея. Сигнал записи в регистр 74НС573 – WR_573. При использовании дисплеев на разных чипах нужно обращать внимание на правильность подключения шины данных. При 8-битной шине передачи и 16-битной физической шине данных дисплея к некоторым дисплеям нужно подключаться к старшему байту шины, а к некоторым к младшему, при этом может понадобиться подключить не используемые линии шины данных на общий провод. При 16-битной шине передачи данных и 18-битной физической шине данных дисплея для некоторых чипов подключаться нужно к разрядам 17-10 и 8-1. Так нужно подключаться, например, к дисплеям на ST7793. Поэтому необходимо читать документацию на конкретный чип дисплея для определения правильного варианта. На шлейфах большинства дисплеев есть резисторы, определяющие разрядность шины данных. Они подключены к сигналам IM2-IM0 чипа. Изменяя их подключение можно изменить разрядность шины данных. Так же обычно хотя бы один из сигналов IM выведен на шлейф, что позволяет переключать разрядность шины данных без перепайки этих резисторов. Обычно переключение производится между 8-и и 16-битным режимами. Как видно на фотографии выше, у меня дисплей расположен шлейфом влево. Если из-за длины шлейфа применённого дисплея или порядка следования сигналов будет удобнее расположить сам дисплей шлейфом вправо, то, потребуется внесение изменений в прошивку в части инициализации дисплея. Для дисплеев, которые я проверил, то есть ST7793, ILI9481 и ILI9325, ориентация определяется параметром LANDSCAPE_L. Если через мои руки будут проходить другие подходящие дисплеи, и я добьюсь их нормальной работы, то их поддержка тоже будет добавлена в прошивку.
Полевые транзисторы типа IRLML или аналогичные, в корпусе SOT-23 – с малым открывающим напряжением на затворе. Чем меньше открывающее напряжение – тем лучше, остальные параметры не критичны. Биполярные – любые маломощные в корпусе SOT-23. Подтягивающие резисторы на цифровых микросхемах — от единиц до десятков кОм, не критично. Резисторы на шинах вокруг ПЛИС – несколько десятков Ом, у меня реально 22. Я использовал отдельные резисторы, так как у меня их целая бобина, но желающие могут переразвести себе плату для использования резисторных сборок, хотя площадь платы от этого не уменьшится. Диоды Шотки – любые в подходящих корпусах. На схемах компоненты, обозначенные В1 и далее – это ферритовые бусины в SMD исполнении, а не дроссели. В аналоговом тракте часть резисторов должна иметь допуск 1%, они указаны на схеме. Отдельно упомяну подстроечные конденсаторы. Конденсаторов другого типа у меня в доступе не было, а эти имели выводы, которые не паялись никакими нормальными флюсами. Только после использования флюса с хлористым цинком мне удалось залудить их выводы. Естественно потом их нужно хорошо отмыть.
Прошивка контроллера позволяет выбрать дисплей из нескольких типов с разной ориентацией и шириной шины данных, переназначить сигналы управления дисплея для упрощения переходной платы, выбрать тип внешней памяти и ещё несколько других возможностей. В связи с этим я физически не могу выложить все возможные варианты готовых прошивок и пользователь должен сам собрать себе нужный вариант из приложенных исходников. Для тех, кто уже в курсе, как это делается – это не проблема. Для тех, кто никогда программированием не занимался, сообщаю – это тоже не проблема, рассказываю как. Для сборки прошивки сначала нужно установить пакет компилятора GGC-ARM, взять который можно на его официальной страничке здесь. Затем нужно скачать и установить CoIDE-1.7.8. Найти его можно в разных местах, кроме официального, так как проект вроде как помер. После установки и запуска CoIDE нужно будет указать ему место расположения ранее установленного компилятора через меню “Project — Select Toolchain Path”. Это директория, в которой находятся файлы типа arm-none-eabi-gcc. У меня это D:Develgnu-arm-4.9bin. Теперь загружаете в CoIDE проект и в открытом файле defines.h снимаете или ставите комментарии на нужных строчках. Комментарии – это две косых «//»перед строкой. Затем жмёте кнопку F7 и ждёте окончания сборки своей версии прошивки. Сама прошивка будет располагаться в директории NeilScope3DebugBin в директории исходников проекта.
Если к осциллографу подключается USB шнур и запаяна микросхема зарядки, то обязательно должен быть подключен аккумулятор. Перед программированием контроллера я рекомендую сначала запрограммировать микросхему ПЛИС. Это делается при помощи программатора Byte-Blaster или USB-Blaster. Первый под LPT порт, а для второго есть несколько вариантов клонов на разных контроллерах, например здесь. Номера контактов разъёма стандартного Blaster-а, соответствующие сигналам программатора, указаны на схеме возле названий сигналов разъёма JTAG. Для записи ПЛИС используется либо полный Quartus II, либо Quartus II Stand-Alone Programmer. Записывать нужно файл HW3_4.pof.
Для программирования контроллера можно воспользоваться двумя способами. Или посредством аппаратного отладчика через интерфейс SWD, или посредством встроенного загрузчика через UART. Чтобы воспользоваться вторым способом, нужно скачать бесплатную программу Flash Magic и родной драйвер для СР2102. Сначала устанавливается драйвер СР2102. В системе должен появиться нормально работающий СОМ порт с неким номером. Для записи прошивки сначала нужно подключить USB кабель к осциллографу и только потом включить сам прибор, удерживая кнопку питания нажатой до завершения записи прошивки. При таком порядке включения в момент подачи питания на контроллер транзистор Q13 будет уже открыт и переведёт контроллер в режим встроенного загрузчика. Теперь в программе Flash Magic нужно выбрать используемый СОМ порт, тип контроллера и записать прошивку в контроллер. Затем кабель USB обязательно нужно отключить. При следующем включении прибора контроллер запустит уже прошивку и всё должно заработать. Для использования осциллографа совместно с ПК необходимо поменять VID/PID для СР2102 с помощью специальной программы, которая выложена на страничке изначального проекта. Затем сначала нужно включать осциллограф и только потом подключать USВ кабель, иначе контроллер попадёт в загрузчик, как при записи прошивки. Вот такой небольшой нюанс использования.
Если после включения прибора он остановился с ошибкой на начальных тестах регистров ПЛИС или ОЗУ, то проблема может быть в неработающем генераторе 100Мгц, так как при тестировании ОЗУ контроллер ожидает окончания цикла записи, а он без тактового сигнала не происходит. В этом случае можно для проверки поставить любой другой генератор даже на меньшую частоту. При этом просто параметр Время/деление не будет соответствовать действительности.
После того, как прибор запустился, необходимо проверить его работу. Для этого нужно подать на его входы какой-нибудь известный тестовый сигнал. Перед подачей тестового сигнала аналоговые каналы необходимо откалибровать. Для этого желательно выбрать самую быструю развёртку, нажатием энкодера «T/Div» необходимо отключить синхронизацию и замкнуть калибруемый вход на общий провод. В меню канала А или В выбрать пункт «Auto corr.», после чего начнётся процесс автоматической коррекции нуля для всех пределов чувствительности. Визуально это выглядит как подымающаяся снизу до середины рабочего поля горизонтальная линия сигнала. В дальнейшем, при необходимости, можно подправить коррекцию в ручном режиме. Для проверки работоспособности аналогового тракта проще всего использовать сигналы из самого осциллографа. Я использовал сигнал ШИМ смещения лучей, снимаемый с правого по схеме вывода резистора R125, подавая его на вход обычным проводом через резистор сопротивлением 3Мом. За счёт паразитных емкостей и индуктивностей такого включения на дисплее должна получиться пила с амплитудой около 0.4В. После появления сигнала можно изменить вид синхронизации на нормальный или автоматический и установить требуемый уровень синхронизации. Если подать сигнал ШИМ через нормальный щуп и настроить соответствующие подстроечные конденсаторы щупа и осциллографа, то получим правильный прямоугольный импульс. На фотографии канал А – сигнал через резистор, а канал В – он же через щуп 1:10. Хочу отметить, что здесь видна частота обновления экрана, равная 46 кадров в секунду. Это было ещё до оптимизации прошивки в части вывода на экран. Сейчас этот же сигнал в таком же режиме развёртки выводится с частотой 52 кадра в секунду. Прирост 13%. Мелочь, но приятно.
По такому пилообразному сигналу легко можно отследить дефекты монтажа, особенно в цифровой части. В прошивке NS-3 смещение лучей по вертикали производилось программно на уже оцифрованном сигнале, простым визуальным смещением в пределах окна вывода. Я заменил это на аппаратное смещение посредством той же ШИМ. Это позволяет больше растягивать сигналы, одновременно смещая их по вертикали, без входа в ограничение АЦП. Применительно к вышепоказанной картинке, если смещать луч, ШИМ сигнал которого наблюдаем, то увидим изменение скважности этого сигнала.
Теперь немного расскажу об использовании энкодеров в разных режимах. Энкодеров всего пять и некоторые из них могут выполнять разные функции в разных режимах. Для вызова меню соответствующей «кнопки» интерфейса нужно нажать на соответствующий ей энкодер, после чего вращением энкодера можно перемещаться по выпавшему меню. Некоторые пункты разных меню имеют всего по несколько вариантов изменяемого параметра, а сами параметры переключаются по кругу нажатием на соответствующий энкодер. Другие пункты меню имеют достаточно большое число вариантов изменяемого параметра. Например, выбор цвета имеет 256 возможных значений. Для изменения параметра такого типа нужно сначала нажать на энкодер, при этом цвет текста выбранного пункта меню станет чёрным, а сам параметр будет изменяться вращением энкодера. Для таких параметров, как цвет или, например, смещения лучей, есть две градации плавности изменения параметра. При первом нажатии на энкодер включается грубая регулировка для быстрого изменения параметра с дискретностью 5 единиц на шаг энкодера. Для увеличения плавности регулировки нужно нажать на энкодер второй раз, дискретность изменения параметра станет 1. После третьего нажатия происходит выход из редактирования параметра и текст выбранного меню становится опять белым.
Энкодер «Menu» перемещает активную «кнопку» по кругу и служит для выбора вложенных меню для всех «кнопок» кроме чувствительностей каналов, длительности развёртки и типа синхронизации. Данные «кнопки» пропускаются, так как для них есть свои индивидуальные энкодеры. При нажатии энкодера на «кнопке» «MEAS» выпадает меню режима измерений и отображается окно с измеряемыми параметрами, но вход в меню не происходит. То есть, кнопка энкодера просто включает или выключает окно измерений. Для того, чтобы попасть в меню измерений, нужно нажать на энкодер и одновременно повернуть его по часовой стрелке. Пункт меню «TRIG», отвечающий за выбор источника синхронизации, зависит от выбора условия срабатывания триггера. Условия срабатывания триггера делятся на две группы — относящиеся к аналоговым входам и относящиеся к цифровым входам. Если используется группа для аналоговых входов, то для выбора источника синхронизации доступны только аналоговые каналы. Если выбрать условие из группы для цифровых входов, то к источникам синхронизации добавляется вариант, позволяющий выбрать условие срабатывания триггера по цифровым входам. Для входа в меню условий триггера для цифровых входов и выхода из него нужно нажать на энкодер «T/Div». Для выбора фрагмента выводимой на дисплей осциллограммы вход/выход в меню «окна» (синусоида вверху) и изменение размера этого окна производится энкодером «Menu», а положение окна – энкодером «T/Div». Нажатие на энкодер «T/Div» в обычном режиме производит изменение вида синхронизации. Энкодер «Level» меняет уровни синхронизации и положение точки синхронизации по оси Х. Переключение между соответствующими курсорами происходит вращением этого энкодера в момент, когда он нажат. Так же этот энкодер используется для управления курсорами в режиме измерений.
Ниже в файлах находится вся необходимая проектная документация.
Вот и всё. И пусть у всех будет так: «Устройство, собранное правильно и из исправных деталей в настройке не нуждается».
Все вопросы в форум.
Файлы:
Эта статья в формате DOC
Проект железа под Altium
Исходники прошивки контроллера
Схемы в формате PDF
Проект ПЛИС под Quartus
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться: