Оглавление:

Осциллограф с двумя трассами: 11 шагов (с изображениями)
Осциллограф с двумя трассами: 11 шагов (с изображениями)

Видео: Осциллограф с двумя трассами: 11 шагов (с изображениями)

Видео: Осциллограф с двумя трассами: 11 шагов (с изображениями)
Видео: Как читать схему . Часть 7. Power sequence for Desktop. 2024, Июль
Anonim
Осциллограф с двумя трассами
Осциллограф с двумя трассами

Когда я собирал свой предыдущий мини-осциллограф, я хотел посмотреть, насколько хорошо я смогу заставить работать свой самый маленький ARM-микроконтроллер STM32F030 (F030), и он отлично справился со своей задачей.

В одном из комментариев было высказано предположение, что «Синяя таблетка» с STM32F103 (F103) может быть лучше, меньше по размеру, чем плата для разработки с F030 и, возможно, даже дешевле. Но для мини-осциллографа я использовал не отладочную плату, а F030 на еще меньшей SMD-DIP-плате, так что Blue Pill определенно не была бы меньше, и я сомневаюсь, что она будет дешевле.

Код теперь доступен на Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Запасы

Список деталей: - пластиковая коробка - перфокарт (двухсторонняя макетная плата 8x12 см) - Blue Pill - TFT-дисплей ST7735s - литий-ионный аккумулятор - HT7333 3,3 В стабилизатор с малым падением напряжения - двойной операционный усилитель MCP6L92 - плата TSSOP8 - DIP8 - кристалл 12 МГц (не требуется) - поворотный энкодер с ручкой (2 шт.) - выключатель питания - банановые клеммы (4 шт.) - литий-ионная плата зарядного устройства - несколько резисторов и конденсаторов - нейлоновые прокладки, гайки и винты

Инструменты:

- паяльная станция - припой 0,7 мм - немного проволоки - бокорез - очки и лупа - дрель - мультиметр - осциллограф - STLink-V2

Программное обеспечение:

- STM32IDE - STM32CubeMX - Утилита STLink - Библиотека LowLayer - адаптированная библиотека для ST7735s - Notepad ++ - Kicad

Шаг 1: чередование или одновременный режим

Чередование или одновременный режим
Чередование или одновременный режим
Чередование или одновременный режим
Чередование или одновременный режим

Синяя таблетка

Но идея была, и я знал, что у F103 два АЦП! Что, если бы я использовал эти два АЦП вместе в режиме «чередования», что я делал раньше с STM32F407 (F407). Скорость выборки увеличится вдвое. В сочетании с более быстрым микроконтроллером он станет отличным преемником мини-осциллографа.

Режим чередования Как ни странно, АЦП в F103 менее продвинуты, чем в F030 (и F407), вы не можете выбрать разрешение. Более важно то, что вы также не можете изменить синхронизацию между двумя АЦП. Теперь, когда вы используете режим чередования, обычно вы хотите, чтобы выборка была как можно быстрее с наименьшим временем между любыми выборками, но с осциллографом необходимо изменить синхронизацию. Может быть, это еще можно сделать, я не профессиональный разработчик осциллографов, но я отказался от плана использовать режим чередования.

Одновременный режим

Но, имея два АЦП, дает гораздо больше возможностей, два АЦП также могут быть установлены в режим «регулярный-одновременный». Как насчет двойного осциллографа?

Решив попробовать сделать осциллограф с двумя трассами, я также хотел иметь переменную входную чувствительность, чего у меня не было в мини-осциллографе. Это означает наличие аттенюатора (и усилителя) на входах. А может хотелось еще большего? Итак, я составил небольшой список тех, кого можно было бы иметь.

СПИСОК ЖЕЛАНИЙ

два канала

переменная чувствительность на обоих каналах

запуск по обоим каналам

переменный уровень запуска на обоих каналах

переменное смещение

питание от одной батареи

помещается в ту же коробку, что и мини-осциллограф

Шаг 2: прототипирование

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

Как обычно, я начинал эти проекты на макете. (См. Рисунок) И перед тем, как паять все на перфокарт, я стараюсь выяснить, поместится ли и как это в коробку выбранного проекта. Подходит, но только. Некоторые части скрыты под экраном, другие - под синей таблеткой. И снова, как и в большинстве моих проектов, это разовый проект, и я не буду разрабатывать для него печатную плату.

Шаг 3: Аттенюаторы

Аттенюаторы
Аттенюаторы

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

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

Он работает очень хорошо, но имея всего 4 переключателя в 4066 и имея 2 канала, невозможно было добиться более трех уровней чувствительности. Я выбрал 500 мВ, 1 В и 2 В на деление, так как это уровни напряжения, которые я использую чаще всего. Экран разделен на 6 частей, что соответствует диапазонам от -1,5 В до + 1,5 В, от -3 В до +3 В и от -6 В до 6 В.

С помощью «виртуального заземления» вы можете перемещать эти диапазоны вверх и вниз, так что возможно даже от 0 В до +12 В.

Шаг 4: виртуальная земля

Виртуальная земля
Виртуальная земля
Виртуальная земля
Виртуальная земля

Поскольку в осциллографе используется одна шина питания (3,3 В), операционным усилителям требуется виртуальный уровень земли, иначе они не будут работать. Этот виртуальный наземный уровень создается с помощью ШИМ на одном выходном канале TIM4, рабочий цикл которого изменяется от нескольких процентов до почти ста процентов. Фильтр нижних частот с резистором 1 кОм и конденсатором 10 мкФ преобразует его в напряжение от (почти) 0 В до (почти) 3,3 В. Частота прямоугольной волны чуть менее 100 кГц, поэтому простого фильтра нижних частот вполне достаточно.

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

Шаг 5: поворотные энкодеры и отладка

Поворотные энкодеры и отладка
Поворотные энкодеры и отладка
Поворотные энкодеры и отладка
Поворотные энкодеры и отладка

На мини-осциллографе я использовал только один энкодер для всех функций. Это затруднило бы использование двойного осциллографа, поэтому здесь мне нужны два. Один энкодер для аттенюаторов и виртуального уровня земли, а другой энкодер для временной развертки и запуска. К сожалению, как и в другом моем проекте, эти датчики вращения очень "шумные". Они настолько плохи, что просто не будут работать с таймерами в "режиме кодировщика", стандартном способе их считывания. Пришлось сделать механизм противодействия с таймером TIM2, проверяя энкодеры каждые 100 мкс. Этот таймер, в свою очередь, запускается (только), когда есть некоторая активность кодировщиков, это проверяется функцией EXTI на входных портах. Теперь кодировщики работают хорошо.

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

Шаг 6: отображение и временная шкала

Дисплей и временная шкала
Дисплей и временная шкала

Дисплей имеет разрешение 160 x 128 пикселей, поэтому для одного полного экрана требуется 160 отсчетов, мне удалось ускорить АЦП до 1,6 миллиона отсчетов в секунду, и это, с сильно разогнанным микроконтроллером (подробнее об этом позже), дает минимальная временная развертка 20 мкс на деление (100 мкс на экран). Таким образом, сигнал частотой 10 кГц заполнит весь экран.

Это всего в два раза быстрее, чем у мини-осциллографа, который я делал раньше. Да ладно, теперь это с двумя каналами:-).

Как уже говорилось, ширина дисплея составляет 160 пикселей, поэтому для каждого экрана требуется всего 160 значений. Но фактически все буферы содержат 320 отсчетов. Таким образом, DMA сохраняет 320 значений, прежде чем запускает прерывание завершения передачи (TC). Это потому, что запуск выполняется программно. Выборка начинается в случайный момент, поэтому маловероятно, что первое значение в буфере - это место, где должна быть точка запуска.

Следовательно, точка триггера находится при чтении через trace_x_buffer, если значение находится в желаемом значении триггера en, если предыдущее значение чуть ниже него, будет найдена точка триггера. Это работает довольно хорошо, но вам нужен буфер большего размера, чем фактический размер дисплея.

Это также является причиной того, что частота обновления при более низких настройках временной развертки ниже, чем вы могли ожидать. Когда вы используете настройку 200 мс / дел, один экран, заполненный данными, занимает 1 секунду, но поскольку выполняется удвоение количества преобразований, это занимает 2 секунды. На более быстрых настройках временной развертки вы этого не заметите.

TIM3 используется для создания временной развертки. Он запускает АЦП со скоростью, требуемой выбранной настройкой временной развертки. Его тактовая частота TIM3 составляет 120 МГц (см. ПЕРЕГОНКА), максимальное число, до которого он подсчитывается (ARR), определяет, как еще он переполняется или, на языке ST, он обновляется. Эти импульсы обновления через TRGO запускают АЦП. Самая низкая частота, которую он генерирует, составляет 160 Гц, максимальная - 1,6 МГц.

Шаг 7: АЦП и прямой доступ к памяти

АЦП и прямой доступ к памяти
АЦП и прямой доступ к памяти

Два АЦП одновременно преобразуют напряжение на своих входах, они сохраняют эти два 12-битных значения в одной 32-битной переменной. Таким образом, DMA имеет только одну переменную на каждое (двойное) преобразование для передачи.

Поэтому для использования этих значений необходимо разделить их на два значения, чтобы их можно было использовать для отображения двух кривых. Как уже было сказано, АЦП в F103 не могут быть установлены на разрешение, отличное от 12 бит. Они всегда работают в 12-битном режиме, поэтому преобразования всегда требуют одинакового количества тактовых импульсов. Тем не менее, с разгоном АЦП можно сделать 1,6 млн отсчетов в секунду (см. Дополнительно: Разгон).

Эталоном АЦП является Vdd, шина 3,3 В. Чтобы преобразовать это в более удобные значения (на деление), я рассчитал значения аттенюаторов, потому что у меня нет точных значений резисторов, которые получаются из этих расчетов, некоторые исправления сделаны в программном обеспечении.

В этом проекте я использую DMA в «обычном режиме». В этом режиме DMA прекращает передачу данных (из АЦП в память), когда передано все количество слов (или полуслов или байтов). В другом возможном режиме, «круговом режиме», DMA сбрасывает себя и продолжает непрерывную передачу данных. Это не сработало с F103, это настолько быстро, что перезаписывает данные в adc_buffer , прежде чем остальная часть программы сможет их прочитать. Итак, теперь процесс выглядит следующим образом:

- настроить DMA на количество передаваемых данных и включить DMA

- запустить запуск АЦП, они будут запрашивать передачи DMA после каждого (двойного) преобразования

- после того, как заданное количество преобразований передано, DMA останавливается

- сразу же прекратить срабатывание АЦП

- делать все необходимые манипуляции с данными в памяти

- показать следы на экране

- начать процесс заново

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

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

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

Шаг 9: Строительство и возможные улучшения

Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения
Строительство и возможные улучшения

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

Коробка для проекта слишком мала, чтобы в ней можно было удобно разместить все, поэтому приходится класть компоненты под Blue Pill. Для этого нельзя было припаять Blue Pill напрямую к «материнской плате». И поскольку это сделало его слишком высоким, мне пришлось удалить многие детали из Blue Pill, такие как перемычки для выбора BOOT0 и BOOT1 (вещи, которые я никогда не использую), и мне даже пришлось переместить кристалл сверху вниз. печатная плата.

Я усложнил жизнь, используя банановые разъемы вместо разъемов BNC или SMA, это означало, что большая часть монтажной платы была «закрытой зоной», и чтобы это было ясно для себя, я наклеил на нее каптонную ленту, чтобы не допустить себя. от надевания на него деталей.

Еще одна проблема, связанная с помещением всего этого в такую небольшую коробку для проекта, заключается в том, что аналоговые и цифровые схемы расположены очень близко друг к другу. Вы можете видеть, что на обеих графиках видно довольно много шума. Такого у меня даже на макетной плате не было! Путем перемещения линий электропередач для аналоговых и цифровых схем как можно дальше друг от друга было сделано небольшое улучшение, но, на мой взгляд, этого недостаточно. Уменьшение всех значений резисторов в аналоговых схемах даже больше, чем я сделал (входное сопротивление 100 кОм вместо 1 МОм), не помогло. Я подозреваю, что запуск по самой быстрой настройке временной развертки (20 мкс / дел), что не очень хорошо, также улучшится с меньшим шумом на сигналах.

Если вы сделаете этот дизайн на «настоящей» печатной плате, со всеми частями smd и отдельными слоями для аналогового, цифрового и силового (это 4 слоя!), Он, вероятно, будет работать очень хорошо. Он будет намного меньше, в нем не будет использоваться полная Blue Pill, а будет использоваться только F103, что позволит снабдить его отдельным (чистым) аналоговым Vdda для АЦП.

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

Шаг 10: код и короткое видео

Шаг 11: ДОПОЛНИТЕЛЬНО: разгон

ДОПОЛНИТЕЛЬНО: разгон
ДОПОЛНИТЕЛЬНО: разгон

Как и в случае с F03, я хотел посмотреть, насколько хорошо F103 можно разогнать. Спецификации этого микроконтроллера утверждают, что максимальная тактовая частота не должна превышать 72 МГц (что, конечно, уже быстрее, чем у F030), но я читал в нескольких блогах, что разгон был легким, так почему бы и нет?

Blue Pill снабжен кристаллом 8 МГц, а ФАПЧ умножает его с коэффициентом от 9 до 72 МГц. ФАПЧ может быть увеличена до 16, что дает частоту 128 МГц. Для моей Blue Pill это не было проблемой, на самом деле все мои Blue Pills без проблем работают на 128 МГц.

Но теперь я хотел узнать, каков реальный предел. Поэтому я удалил кристалл с частотой 8 МГц и заменил его на кристалл с частотой 12 МГц. Я снова увеличивал множитель PLL, пока микроконтроллер наконец не сдался. Это было на частоте 168 МГц! На 156 МГц он все еще работал хорошо. Я оставил его работать на этой скорости на несколько часов и ни разу не видел, чтобы он разбился. В этом осциллографе я выбрал 120 МГц, скорость, которую можно выбрать с кристаллом 12 МГц и ФАПЧ на 10, а также с кристаллом 8 МГц и ФАПЧ на 15. (см. SystemClock_Config в main.c)

АЦП теперь также работают быстрее, у меня они работают на частоте 30 МГц (вместо 14), они все еще хорошо работают на частоте 60 МГц, STMicroelectronics делает отличное оборудование!

STMicroelectronics не зря помещает эти ограничения в техническое описание, они гарантируют, что микроконтроллер будет работать на указанных 72 МГц при любых условиях.

Но поскольку я не использую микроконтроллер при -40 по Цельсию, +85 по Цельсию, всего на 2,0 или 3,6 вольт, я думаю, что его можно безопасно разогнать. НЕ делайте этого, когда собираетесь продавать устройство с их микроконтроллерами, вы никогда не знаете, где они будут использоваться.

Рекомендуемые: