Neil Scope 3. Глубокая модернизация
Автор: Serj_K На мой взгляд, конструкция радиолюбительского цифрового осциллографа Neil Scope-3 является лучшей по соотношению цена/качество среди конструкций радиолюбительских цифровых осциллографов. Но и она не лишена некоторых недостатков. Таковыми, с моей точки зрения, являются: 1) управление кнопками, которые опрашиваются только в циклах чтения и которые не позволяют оперативно изменять наиболее часто используемые режимы работы Применённый в изначальной конструкции дисплей сейчас является дефицитным и для многих это стало проблемой. Но на самом деле это не недостаток конструкции, это проблема людей, не желающих самостоятельно даже сделать попытку разобраться в исходных текстах прошивки и внести небольшие изменения под какой-нибудь другой, доступный им дисплей. А ведь исходники были изначально выложены в свободный доступ. Ни один автор не может перекрыть всё разнообразие производимой сейчас и в будущем продукции, тем более покупать все возможные образцы. Но в данном случае инструмент для решения проблемы был предоставлен. Кто хотел – тот свою проблему решил. Так что дисплей я недостатком не считаю. В моём приборе используется дисплей на чипе 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. После третьего нажатия происходит выход из редактирования параметра и текст выбранного меню становится опять белым. Ниже в файлах находится вся необходимая проектная документация. Вот и всё. И пусть у всех будет так: «Устройство, собранное правильно и из исправных деталей в настройке не нуждается». Все вопросы в форум.
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
||||||||||||
|
||||