Осциллограф на stm32f303cbt6

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

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

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

Сначала был порыв снимать показания штатным ADC микроконтроллера, и не делать экрана, а написать софт для отображения и передавать данные по USART или USB. В процессе разработки я передумал, и сделал внешний ADC и экранчик. При этом все же хотел сохранить возможность передачи данных на компьютер. Еще хотелось чтобы коэффициент входного делителя управлялся программно, а не всякими ручками и переключателями, по хорошему надо было делать дискретно, но после подключения экрана у меня уже не осталось ног микроконтроллера, и поэтому входной делитель состоит из одного JFET транзистора управляемого DAC микроконтроллера.


Теперь по порядку:


Начинаю с выбора компонентов и принципиальной схемы.

Компоненты:

ADC - ADS828E это одноканальный 10-ти битный преобразователь с максимальной частотой дискретизации в 100 MHz.

ОУ - AD8066 - достаточно быстрые Rail-To-Rail усилители с полевым входом. Микроконтроллер - stm32f303cbt6.

Источник отрицательного напряжения - LT1054.

Экран — эээм ну что-то непонятно-китайское 2.4 дюйма с надписью mcufriend, за 180 рублей, с ним кстати по факту возникло больше всего проблем.

Про всякую SMD мелочевку писать не буду тут и так все понятно.

Принципиальная схема устройства:

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
Ну а дальше дело техники, трассирую плату, я сделал двухстороннюю.
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

Дальше собственно делаю саму плату.

Кусок стеклотекстолита

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
Вырезаю под нужный размер, клею фоторезист, я использую ORDYL Alpha 340.
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
Печатаю фотошаблон
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
Засвечиваю и проявляю щелочью
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
Травлю, заклеив обратную сторону скотчем :-), главное не забыть. Для травления использую раствор лимонной кислоты + поваренная соль + гидропирит.
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
После повторяю все то же самое, но для другой стороны. Получается вот такая плата:
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

Наношу паяльную маску, у меня красного цвета, как раз в цвет китайского экранчика, удачно получилось :-). Сверлю отверстия.

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

Дальше распаиваю компоненты, и собираю все вместе, и тут меня ждала первая засада от mcufried. По наивности я полагал что пины на экранчике китайцы расположили по сетке в 100 mills(0.1 дюйма или 2.54 мм), но нет. Выругался, подогнул пины и с помощью доброго слова и плоскогубцев водрузил экран на место. Залил тестовую прошивку(контроллер завелся сразу без вопросов, что уже радовало), и… не заработало. А вот и вторая засада от китайцев, экранчик не хотел заводится ни с какой известной последовательностью инициализации для таких экранов, я уже было подумал что меня таки обманули, но после долгого и нудного гугления и поисков, все таки я нашел библиотеку Mcufriend_kbv, взял оттуда массив команд, и о чудо «It“s ALIVE!!».

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

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

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

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост
А ведь я не просто так повесил такт на PA8 на эту ногу можно вывести меандр с частотой системного такта то есть 72Mhz, что же жаль, но ничего не поделаешь. Тогда беру ногу PA10 это RX USART1(который я вывел на пины на всякий случай) и сажаю на нее такт через резистор на всякий случай.
Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

Вот он там так некрасиво висит.


После этого костыля ADC заработал как надо.

На оставшийся TX USART1(PA9) я вывел тестовый сигнал который также настраивается из интерфейса.

Осциллограф на stm32f303cbt6 Осциллограф, Stm32, Stm32f303, Libopencm3, Видео, Длиннопост

Прошивку писал на libopencm3.


Что получилось в результате:

1) Максимальная частота дискретизации 24MHz(так я и не осилил DMA).

2) Тестовый сигнал - частота 50Hz — 1MHz.

3) Диапазон измерений -25V — 25V.

4) Питание — USB.

Видео работы:

Спасибо за внимание.

Лига Радиолюбителей

1.1K постов9.2K подписчика

Добавить пост

Правила сообщества

Соблюдайте правила Пикабу. Посты выкладывать лишь касаемо нашей тематики. Приветствуется грамотное изложение. Старайтесь не использовать мат.

Постарайтесь не быть снобами в отношении новичков. Все мы когда-то ничего не знали и ничего не умели.

За попытку приплести политику или религию - предупреждение. 2 предупреждения - бан.

10
Автор поста оценил этот комментарий
Тс , какого жить с прямыми руками ?
раскрыть ветку
2
Автор поста оценил этот комментарий

https://bitbucket.org/strelok1111/osciloscope_stm32/src - это код прошивки если кому интересно.

раскрыть ветку
1
DELETED
Автор поста оценил этот комментарий

Папаня заказал китайца(кит набор)  на 5 МГц  что то около 1000 вышло. Реально собрать дешевый на 100МГц?

раскрыть ветку
1
Автор поста оценил этот комментарий

Поздравляю!

Питание можно через li-pol АКБ реализовать (под дисплей по идее должен залезть).

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

P.S. Что за кнопка на плате с дисплеем слева?

раскрыть ветку
Автор поста оценил этот комментарий

М-да, попробовал перенести в кеил,не получается.

раскрыть ветку