nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 29 May 2020 10:17



Reply to topic  [ 15 posts ] 
НедоОсциллограф 
Author Message
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Пока у нас карантин и мы сидим дома, решил я заняться более плотным изучением stm32. Это мой первый реальный проект на stm, так что сильно ногами не пинать...
Многие, наверное, слышали или видели осциллографы с алиэкспресс на stm32f103 dso-138 или dso-150. Для начинающих вполне интересная игрушка, но экран в 2.4" уж совсем маленький.
Встретил я на просторах сети вот такое красивое решение вывода на экран. И возникла у меня мысль, а что, если это решение скрестить с осциллографом?! Поискал, может такое уже есть, и да, есть тема с непонятным роликом на Ютубе, прошивка платная, исходников соответственно нет.
Значит вполне можно этим заняться для изучения!
Даташиты на разные процессоры я то давно изучаю, но знать возможности кристалла это одно, а писать для него это совсем другое.
Для начала я экспериментировал с такой палаткой https://stm32-base.org/boards/STM32F103 ... -Pill.html
И уже после, сделал свою макетку ...
Image
Image
С прицелом перехода на stm32f303, у которого АЦП заметно лучше. Занимался я этим проектом набегами уже давно, но предыдущая карантинная неделя позволила заниматься им более плотно, и вот первые результаты:
~10КГц:
 
Image
Image
Image
Image

~100КГц:
 
Image
Image
Image
Image

~300КГц:
 
Image
Image
Image
Image

Источник сигналов генератор Г6-37. Ни каких сглаживаний пока нет. Реально, можно смотреть сигналы до 200кгц, все, что выше это не сигнал, а пародия на него. Это при том, что stm у меня разогнан до 96мгц от штатных 72, а АЦП с максимальных 14мгц тактовой до 24.
Как на dso заявляется 500кгц?! По моим прикидкам на dso можно смотреть сигналы до 100кгц и все. Если у кого есть реальная информация по возможностям dso, с интересом выслушаю.

В схеме я заложился на два канала, но это и возможности АЦП в 2 раза уменьшит,и тем не менее.
Экран имеет развертку 640х480х60гц, а в точках 320х240. С отображением есть одна проблема, во время работы АЦП появляется небольшой муар, он просмотру не мешает, но убрать его у меня не получается, не смотря на эксперименты с приоритетами dma spi и adc (нашел способ устранить, теперь все ок). Операционный усилитель на данный момент у меня mcp6022. Питание STM и соответственно опоры АЦП 3.6В, и диапазон ОУ приведен к этому напряжению. Кварц на 8Мгц у себя не нашел, использовал на 12 (12*8=96). Значение тактовой в районе 100МГц хорошо подходит к работе SPI при разрешении 640х480.

Исходники я выложу по завершению проекта, сейчас они ещё очень сырые, но если кто то захочет повторить схему прямо сейчас пишите (для 103 выложил).

upd: слегка откорректировал схему и добавил текущую прошивку, которую можно залить просто в плату Blue-Pill, те практически к этой платке припаять разъем VGA на 4х проводках и все! картинка уже будет. Дальше или свой сигнал подать на PA0 или тестовый с порта PA15, а если еще и три кнопки подключить, то будет вообще весь текущий функционал...

upd2: добавил исходник проекта для stm32f103 под кварц 8Мгц (для платки Blue-Pill) как есть, тк 103 проектом заниматься не вижу смысла в сравнении с возможностями stm32f303.


Attachments:
artekit_vga7.zip [105.46 KiB]
Downloaded 19 times
stm32_vga1.zip [13.93 KiB]
Downloaded 23 times
OSC_103.pdf [110.28 KiB]
Downloaded 49 times


Last edited by PVV on 29 Apr 2020 15:49, edited 3 times in total.

06 Apr 2020 13:49
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Подумалось, а как все те же самые сигналы выглядят на моем стареньком С1-76, теже наборы частот и форм:
~10КГц:
 
Image
Image
Image
Image

~100КГц:
 
Image
Image
Image
Image

~300КГц:
 
Image
Image
Image
Image

Генератор мой дает кривоватенькие сигналы, однако, и stm всю эту кривизну показывает верно...


Last edited by PVV on 29 Apr 2020 15:48, edited 1 time in total.



06 Apr 2020 14:23
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 510
Location: Ukraine
Reply with quote
Не то были ослы со электростатической разверткой. А это эмульгатор. Не зачет :mrgreen:

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


07 Apr 2020 04:50
Profile
Novelist

Joined: 10 Mar 2018 13:50
Posts: 43
Reply with quote
Был у меня осциллограф DSO 082. Конструктор с Али, собирал сам. В качестве пробника вполне ничего. Можно быстро оценить наличие сигнала, форму, частоту. До 3 МГЦ показывает, дальше уже надо извращаться. Единственное что раздражало, часто подвисал. Непонятно то ли есть сигнал, то ли нет, оказывается осциллограф уже не реагирует. Исправляется вкл-выкл, либо полным ресетом кнопкой сзади. Избавился я от него.


08 Apr 2020 01:42
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Поправил первое сообщение, выложил прошивку для экспериментов...
Shumadan wrote:
осциллограф DSO 082

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


10 Apr 2020 15:50
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
По причине случайной подачи напряжения 9В на питание stm_ки, 103я stm успешно сдохла ( О! как загнул ;)), что ускорило процесс перехода на 303ю stm в точно таком же корпусе с 48ю ножками. Перенос кода занял какое то время, но результат меня очень порадовал.
Сейчас АЦП работает в одиночном режиме (против двойного в 103), тактуется от 52Мгц (против 24), с разрешением в 8бит(против 12), что соответствует частоте выборок 52/10=5.2 (против 24/14=1.7, но в двойном режиме 1.7*2=3.4)
и вот как все выглядит
300Кгц:
 
Image
Image
Image
Image

300Кгц, но сильней растянуто, 0.5мкс в клетке:
 
Image
Image
Image
Image

500Кгц:
 
Image
Image
Image
Image

когда запущу АЦП работать в двойном режиме частота выборок будет 5.2*2=10.4Мгц, и это не предел. Сейчас я stm разгоняю до 104Мгц, что бы уложиться в развертку 640х480 (нужна кратность ~12.5Мгц и степени 2ки). Сама stm гонится без проблем, а вот АЦП нет, виснет на 104Мгц. Но ведь никто не запрещает перейти на развертку 800х600, здесь кратность 20. Штатные 72, а то и слегка разогнанные 80Мгц, самое то... Тогда частота выборок АЦП будет 7.2*2=14.4Мгц. Это все программные моменты, которые решаемые, нужно лишь время.
Однако проблема у меня сейчас отнюдь не программного свойства, а аппаратного и аналогового, а именно входной усилитель.
Если смотреть на низкочастотные сигналы, меньше 200Гц, то на фронтах вот такие выбросы:
Image
и как их победить? Я даже не пойму с какой стороны к ним подходить. Подстроечной емкостью на входе делителя такой же выброс, но на 1000Гц меандре регулируется от завала до выброса, те вроде как все в порядке, так что это? Входной ОУ? Делитель после входного повторителя? ОУ оконечного усилителя? Или просто плохой ОУ? Ладно бы, если б этот выброс был на низкочастотных сигналах, проблема же в невозможности измерить амплитуду сигналов вообще! даю постоянное напряжение, деления в клетках соответствуют, а даю сигналы с генератора, амплитуда в 1.5 раза выше! и когда я на вот эти выбросы посмотрел, то увидел, что именно они и портят картинку на высокочастотных сигналах по амплитуде. Меандр на 500Гц выглядит трапециевидно.
Image
Куда смотреть есть предложения?


Last edited by PVV on 29 Apr 2020 15:47, edited 2 times in total.



15 Apr 2020 15:37
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
В общем, победил я эти выбросы, все проблемы были от конденсатора С31(С34), убрал его и теперь все ок:
Image
Дабы не пугать ни себя ни окружающих ступеньками оцифровки на малых развертках, сделал линейную аппроксимацию, вот что получилось для частоты 500Кгц:
 
Image
Image
Image
Image

выглядит существенно приятней :rotate:, но нужно понимать, что здесь только 39 достоверных точек на весь экран получается...


Last edited by PVV on 29 Apr 2020 15:50, edited 1 time in total.



16 Apr 2020 17:24
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 510
Location: Ukraine
Reply with quote
ОУ дело тонкое. Это ток в журналах их как грабли использут :mrgreen:

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


18 Apr 2020 06:52
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Запустил я два АЦП в интерлив режиме, и ожидал увидеть 1Мгц, а его нет!, лишь какое то жалкое подобие. Решил посмотреть сигнал своим с1-76 на входе АЦП, и тут все стало ясно- уперся в быстродействие ОУ. Для частот до 500Кгц mcp6022 еще кое как хватает, а выше уже нет. Я этот факт изначально предполагал, и для возможных экспериментов запасся разными, желательно дешевыми ОУ. Значит настало время их проверить.
Спаял второй канал на макетке и начал визуально сравнивать картинки как на vga экране моего stm_osc так и на с1-76.
Базовые вводные, параметры mcp6022, полоса до 10Мгц, время нарастания 7V/uS, условная цена 100 руб.
Первым делом решил посмотреть TL082, полоса до 4Мгц, время нарастания 13V/uS, цена 19 руб. До 200Кгц он еще тянет, а дальше фронты и амплитуда валится очень сильно, но его вполне можно использовать с stm32f103, дешево и сердито.
Следующий ОУ mc33272, полоса до 24Мгц, время нарастания 10V/uS, цена 63 руб. Визуально по быстродействию как mcp6022, но, на фронтах появился звон, пришлось ставить конденсатор на 150пФ в обратно связи. После компенсации обратной связи разницы с mcp6022 не увидел.
Далее впаял такой ОУ - NJM4580, полоса до 15Мгц, время нарастания 5V/uS, цена 20 руб. Визуально по быстродействию как mcp6022, но, при переключении диапазонов делителя линия нуля прыгала, я в тот момент этому сильно внимание не придал.
И напоследок, запаял ОУ - LMH6643, полоса до 130Мгц, время нарастания 130V/uS, цена 140 руб. Этот ОУ имеет полосу больше, чем мой С1-76, отличий на входе и выходе как по форме, так и по амплитуде не увидел. Однако скачки линии нуля при переключении диапазона делителя громадные, в чем дело? Начал смотреть и обнаружил, что на входе первого повторителя при отсутствии сигнала присутствует напряжение 0.17В, которое повторитель честно транслирует на выход, и это напряжение и дает скачки линии нуля. На одном из форумов такое поведение для ОУ, купленных на ali, (хотя этот ОУ я покупал в местном магазине) 'лечили' установкой средней точки на вход повторителя резисторными делителями с плюса и минуса питания, что я и сделал, 1.3М и 2.4М практически все решили, смещение добился не более четверти клетки.
Image
Ну и с этим ОУ 1Мгц я таки увидел!
 
Image
Image
Image
Image

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


Attachments:
OSC_303sch.pdf [108.55 KiB]
Downloaded 15 times


Last edited by PVV on 29 Apr 2020 15:46, edited 1 time in total.

20 Apr 2020 16:46
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Добавил к первому сообщению исходники проекта под stm32f103 в том виде, как я остановился при переходе на 303, но добавил устранение мерцания изображения и сглаживание.


21 Apr 2020 14:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
Пока у нас карантин ...

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

Хотя, мне вполне этот режим подошел - давненько не занимался любимым делом без издержек
для здоровья... А то обычно что-то делаешь до 4-х утра, а скоро и на работу вставать... :wink:
Сплошной недосып... :-?

_________________
iLavr


22 Apr 2020 13:19
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 510
Location: Ukraine
Reply with quote
ОУ еще та зараза. Я тут мельком это прочувствовал на ЦАП от Ямахи.

Для видео TMS9928 купил аж в Англии. Дорого. Но руки все не ходят собрать.

Так что из поддержки у меня ток смайлик - :mrgreen:

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


25 Apr 2020 04:14
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Посмотрел я на результат работы АЦП в интерлив режиме и вернул все в обычный режим. Изначально у меня не получилось запустить АЦП от системной частоты 104Мгц при минимальном времени выборки, и я на АЦП подал половину частоты 52, а в интерлив режиме хотел получить эти самые 104. Однако, что бы интерлив режим работал и ДМА АЦП не захлебывалось от такого потока данных (учитывая наличие второго приоритетного потока ДМА на SPI видео выход), в настройках АЦП я задавал большие времена выборки, из-за чего эквивалентная частота АЦП получалась ~10 мегасемплов, а временной разнос между четными и нечетными выборками получался не 50% на 50%, а плавал в пределах 30-70%, что приводило к достаточно плохой картинке.
Когда же я для АЦП в одиночном режиме при частоте тактирования 104 задал большие времена выборки, АЦП стало честно работать, с эквивалентной частотой ~9 мегасемплов. Картинка стала заметно лучше. Ну а раз АЦП работает в одиночном режиме, появилась возможность запустить два АЦП синхронно по двум каналам.
верхний луч, входная часть на ОУ mcp6022, нижний луч на LMH6643.
Формы сигналов как и раньше, пила, прямоугольник, треуголиник и синус, частоты видно в нижней части экрана.
500Кгц:
 
Image
Image
Image
Image

1Мгц:
 
Image
Image
Image
Image

2Мгц:
 
Image
Image
Image
Image

тк частота выборок АЦП ~9 мегасемплов, то максимальная частота, которую можно увидеть и измерить будет половина от частоты выборок, и действительно, до 4.3Мгц частоты показывает верно.
сигнал меандр(прямоугольник):
 
Image
Image

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


29 Apr 2020 15:45
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Каких то жёстких, конечных целей для этого осциллографа я не ставил, а по тому решил, что этот проект завершён. Недоделки остались, но они больше не технического или программистского плана, а дизайнерского, типа как и что разместить на экране и какое управление сделать.
На данный момент:
- обрабатываются два канала, работающие в параллель, те абсолютно синхронно;
- частота дискретизации каждого канала 104/11=9.45 миллионов выборок в секунду;
- дискретизация АЦП 8бит;
- синхронизация развертки возможна от любого канала по фронту и по спаду;
- настройка уровня срабатывания триггера;
- развертка времени, в клетке/точек на экран: 250ns/35, 500ns/71, 1us/142, 2.5us/300, 5us/300, 10us/600, 25us/696, 50us/557, 100us/557, 0.25ms/696, 0.5ms/639, 1ms/639, 2.5ms/639 и 5ms/799;
- входной усилитель, в клетке: 4В, 2В, 1В, 400мВ, 200мВ и 100мВ;
- по каждому каналу идёт подсчёт частоты и, в зависимости от типа входа - закрытый(AC) или открытый(DC), размах сигнала Vpp или среднее напряжение Vavr, соответственно;
- есть выход тестовой частоты: 100Гц, 500Гц, 1000Гц, 2500Гц, 5000Гц, 10000Гц и выключен (сейчас выдаётся 500КГц);
- настройка линии нуля каждого канала;
- есть возможность выключить показ каждого канала и заморозить экран, режим HOLD.
Что ещё нужно сделать.
Доработать развертки для низкочастотных сигналов, тк 5ms для них много, но это влечет за собой изменение алгоритма опроса кнопок, тк сейчас это сделано не очень хорошо. Доработать вывод символа треугольника уровня срабатывания триггера, тк сейчас это сделано через вывод символа и его стирание пробелами. Аналогично доработать с символами линии нуля и корректно обработать момент, когда они совмещаются.
Доработать вывод частоты более наглядно, добавить разделительную точку, гашение незначащих старших нулей, индикацию Гц-КГц-МГц.
Реализовать растягивание вывода осциллограммы в режиме HOLD и перемещение по ней. Из-за упрощённого входного каскада и всего 8битной оцифровки режимы усиления 200мВ и 100мВ сделаны простым умножением (цифровой зумм), что не есть хорошо, по тому, можно сделать для не высоких разверток смену разрядности АЦП на 12бит, что позволит и ещё большие усиления в клетке сделать.

Ещё момент с входным ОУ. Когда я резисторами делителями сделал подстройку нуля входа, то изменился коэффициент входного делителя, и я компенсировал это программно, а правильно же это сделать резисторами усиления ОУ аппаратно.

Получившиеся характеристики уже вполне соизмеримы с моим старым С1-76.
В общем, вывод такой, если б у меня лет так 30 назад был бы осциллограф с такими характеристиками, то я был бы безмерно счастлив.
Исходники проекта во вложении.
вот эта страничка, возможно кому то может пригодиться и еще, вот здесь можно еще скачать разные версии Keil. Мне эти ссылки очень помогли. Для проектов до 20КБ можно спокойно и официально пользоваться.


Attachments:
osc_303x2_10.zip [561.27 KiB]
Downloaded 13 times
30 Apr 2020 07:14
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Сделал одну, но существенную доработку. Увеличил на порядок размер выборки, теперь каждый канал имеет 15440 семплов, при выводе на экран идет усреднение всех промежуточных выборок, и это дало возможность увидеть амплитудно модулированные сигналы. На совсем медленных развертках и этого, конечно мало, но с развертки 100uS и меньше уже все очень точно.
видеосигнал:
 
Image
Image
Image
Image

АМ модуляция, несущая 500Кгц:
 
Image
Image
Image
Image


Attachments:
osc_303x2_12.zip [60.93 KiB]
Downloaded 5 times
16 May 2020 05:06
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 15 posts ] 

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.