Портативный осциллограф на микроконтроллере. Карманный осциллограф "Лори" на микроконтроллере STM32F103. Видео работы осциллографа

Портативный осциллограф на микроконтроллере. Карманный осциллограф "Лори" на микроконтроллере STM32F103. Видео работы осциллографа

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

Ардуино – замечательная вещь, работающая на 8-битных микроконтроллерах, которые имеют цифровые выходы, SPI, линии I2S, последовательную связь, ADC и т.д. Таким образом, использование в этом проекте Ардуино – хорошая идея.

Шаг 1: Необходимые материалы




Я хотел, чтобы всё оставалось простым и дешевым, поэтому вам понадобятся:

  • Ноутбук x1
  • Ардуино x 1 (UNO,PRO MINI, NANO –подойдёт любой, кроме MEGA)
  • Кабели со штекерами x 2
  • Макетная плата x 1
  • Клипсы аллигаторы x 2
  • Кабель джек папа-папа на 3.5 мм x 1
  • Источник аудио, или другого сигнала, чью форму вы хотите увидеть

Шаг 2: Код и программа осциллоскопа


После подключения, просто загрузите в него код из zip-архива. Этот код просто считывает напряжение на аналоговых пинах A0-A5 или A7 Ардуино (в зависимости от вашей платы), а затем конвертирует его в значение, варьирующееся от 0 до 1023. Далее это значение отправляется на компьютер через порт USB.

Пины A0-A5 или A7 (в зависимости от вашей платы) действуют в качестве 6 или 8 каналов осциллоскопа, но софт позволяет отобразить только три канала за раз.

После того, как вы открыли программу осциллоскопа вслед за загрузкой скетча, выберете нужные параметры baud rate (скорость передачи) и COM-порт, а затем откройте каналы.

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

Файлы

Шаг 3: Принцип действий



  1. Подключите Ардуино
  2. Загрузите код
  3. Пустите сигнал через пины A0 — A5 или A7 (в зависимости от вашей платы). Я выбрал сигнал, идущий от моего телефона через джек. Один конец провода был подключен к телефону, а на другом конце я подключил землю к GND Ардуино, а второй аллигатор был подключен к одному из аудиоканалов. (в моем случае правый канал аудиосигнала) .
  4. Откройте программу осциллографа
  5. Выберите COM-порт и baud rate
  6. Откройте каналы и всё готово!

Шаг 4: Особенности

  • Разрешение осциллоскопа: примерно 0.0049 Вольта (4.9мВ)
  • Частота обновления: 1КГц
  • Скорость передачи: 115200
  • Диапазон напряжения: 0-5 Вольт
  • Он может отображать одновременно 3 канала

Замечание: не превышайте на электронном осциллографе предел в 5 Вольт, или вы поджарите свой Ардуино.

Ограничения:

  1. Напряжение нельзя превышать, оно находится в диапазоне 0-5 Вольт
  2. Любой сигнал выше 1КГц не будет замечен Ардуино, либо же он будет определяться как мусорные значения (помехи)
  3. Не пробуйте измерить сигналы AC, так как аналоговые пины не приспособлены для этого и в конце концов вы либо повредите Ардуино, либо засечёте позитивную половину

Шаг 5: Все готово!

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

Частота измерения: 10 Гц - 7.7 кГц
Макс. входное напряжение: 24В AC / 30В DC
Напряжение питания: 12В DC
Разрешение экрана: 128x64 пикселей
Область экрана осциллограммы: 100x64 пикселей
Информационная область экрана: 28x64 пикселей
Режим триггера: автоматический

Введение

Однажды, просматривая различные интернет сайты по электронике, я наткнулся на очень любопытный проект осциллографа, который был спроектирован с использованием МК PIC18F2550 и графического LCD с контроллером KS0108. Это был веб-сайт Steven Cholewiak . Это была хорошая схема и я решил разработать свой проект осциллографа и использование языка С, на котором я программировал последние года, вместо ассемблера. В качестве среды разработки я использовал , которая основывается на open source AVR-GNU компиляторе и прекрасно работает с . Графическую библиотеку я разработал сам, специально для данного проекта. Если вы захотите ее использовать для каких-то других проектов, то ее необходимо переделывать. При измерении прямоугольного сигнала, максимальная частота, при которой вы увидите хорошую осциллограмму составляет около 5 кГц. Для других форм сигналов (синусоида или треугольный сигнал) максимальная частота составляет около 1 кГц.

Принципиальная схема AVR-осциллографа приведена на картинке ниже (нажмите для увеличения):

Напряжение питания схемы составляет 12 вольт постоянного тока. Из этого напряжения, в дальнейшем получается еще 2 напряжения: +8.2В для IC1 и +5В для IC2, IC3. Устройство может измерять входное напряжение от +2.5В до -2.5В или от 0 до +5В, зависящее от позиции переключателя S1 (выбор типа входного тока: постоянный или переменный). При использовании пробника 1:10, входное напряжение соответственно может быть увеличено в 10 раз. Кроме того, переключателем S2, можно установить дополнительно деление напряжения на 2.

Прошивка ATmega32

Файл прошивки: AVR_oscilloscope.hex, при выборе фьюзов необходимо указать использование внешнего кварца. После, необходимо обязательно отключить JTAG интерфейс, если этого не сделать, то на осциллографе будет отображаться экран инициализации, а после он будет уходить в перезагрузку.

Настройка

Для настройки прибора нужно выполнить всего 2 вещи: настроить контрастность LCD при помощи подстроечного резистора Р2 и выставить центр осциллограммы при помощи подстроечного резистора Р1.

Использование

Вы можете перемещать луч осциллограммы вверх или вниз путем нажатия кнопок S8 и S4. Один квадрат на экране, соответствует 1В.
При помощи кнопок S7 и S3 можно увеличивать или уменьшать частоту измерений. Минимальная частота формы сигнала, которая может быть отображена на LCD составляет 460Гц. Если необходимо посмотреть сигнал с более низкой частотой, например 30Гц, то необходимо нажать S7 для сжатия осциллограммы или S3 для растяжения.
В осциллографе используется автоматический режим триггера. Это означает, что если входной сигнал повторяющийся (к примеру треугольник) то триггер работает хорошо. Но если, форма сигнала постоянно меняется (к примеру какая-то последовательность данных), то для фиксации изображения необходимо нажать кнопку S6. Повторное нажатие S6 возвращает в нормальный режим.

Видео работы осциллографа

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 Операционный усилитель

LM358

1 В блокнот
IC2 LCD-дисплей DEM128064A 1 128x64, контроллер KS0108 В блокнот
IC3 МК AVR 8-бит

ATmega32

1 В блокнот
IC4 Линейный регулятор

LM7805

1 В блокнот
D1 Стабилитрон

1N4738A

1 8.2В В блокнот
D2 Выпрямительный диод

1N4007

1 В блокнот
C1 Конденсатор 470 нФ 1 В блокнот
C2 Конденсатор 27 пФ 1 В блокнот
C3 22 мкФ 16 В 1 В блокнот
C4, C7, C9 Конденсатор 100 нФ 3 В блокнот
C5, C6 Конденсатор 22 пФ 2 В блокнот
C8 Электролитический конденсатор 100 мкФ 25 В 1 В блокнот
R1, R2, R4 Резистор

1 МОм

3 В блокнот
R3, R5 Резистор

390 кОм

2 В блокнот
R6 Резистор

56 Ом

1 В блокнот
R7 Резистор

220 Ом

1 В блокнот
P1 Подстроечный резистор 10 кОм 1 В блокнот
P2 Подстроечный резистор 22 кОм 1 В блокнот
X1 Кварц 16 МГц 1

При настройке собранных электронных схем, особенно цифровых, необходимо бывает проводить различные измерения. Для этого можно пользоваться различными пробниками, например логическим пробником, самым простым, состоящим из светодиода, токоограничительного резистора, и проводков оканчивающихся с одного конца щупом, а с другого крокодилом. С его помощью мы можем убедиться, присутствует ли у нас логическая единица, или ноль, например на ножке МК, или выводе Ардуино. Я же решил пойти дальше, собрать то, что думаю заинтересует простотой сборки многих новичков, позволит получить полезные знаний из теории, посмотреть на форму сигнала, например, как это выглядит при мигании того же светодиода, и конечно же им можно будет проверить наличие логического ноля или единицы, на ножке МК. В общем, решил собрать простейший осциллографический пробник, с подключением к компьютеру по USB порту.

Данная схема является иностранной разработкой, откуда впоследствии она перекочевала в Рунет, и разошлась по множеству сайтов. В поисках детальной информации при его сборке, обошел множество сайтов, не меньше 10-12. На всех них были только краткое описание, переведенное и содранное с забугорного сайта и прошивка для скачивания, с примером выставления фьюзов. Ниже представлена схема этого осциллографического пробника:

Я сознательно не называю его чисто осциллографом, потому что он не дотягивает до этого звания. Давайте разберем подробнее, что же он представляет из себя. Бюджет устройства составляет всего 250, максимум 300 рублей, и его сборку может позволить себе любой школьник или студент. Как наглядного пособия, для отработки навыков пайки, прошивания МК, в общем, для отработки всех навыков, необходимых для самостоятельного конструирования цифровых устройств. Если кто-то сразу загорелся и собрался немедленно бежать в магазин, за покупкой радиодеталей, подождите, у этого осциллографического пробника, есть несколько существенных минусов. У него очень неудобный софт, оболочка, в которой собственно мы и будем наблюдать наш сигнал. На следующем фото показано, как я ловлю момеху от пальца:

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

Начнем с того, что показания у нас выводятся в милливольтах, и шкалы по напряжению, соответствующей реальным значениям, попросту нет. Но и это еще не все. Схема устройства, как мы можем увидеть, посмотрев на рисунок со схемой, основана на МК Tiny 45.

В данном устройстве не применяется внешний быстродействующий АЦП, и это её существенный недостаток. Это означает, что при измерении сигнала с частотой, на которую наш пробник - осциллограф не рассчитан, мы получим на экране, просто прямую линию… Недавно мне потребовалось провести ремонт пульта дистанционного управления, диагностика показала, что и питание приходит, и дорожки все целые, и контакты на плате, вместе с резиновыми кнопками почищены, все безрезультатно, пульт не подавал признаков жизни. На местном радиофоруме, мне предложили заменить керамический резонатор, на котором кстати не было ни трещин, ни каких других внешних признаков, по которым можно было бы решить, что деталь неисправна. Решил послушать совета, сходил в магазин и купил новый керамический резонатор на 455 кГц, стоимостью всего 5 рублей, перепаял его, и пульт сразу “ожил”.

К чему я это рассказываю? А к тому, что после сборки этого пробника, пришла в голову мысль проверить на пульте генерацию тактового сигнала. Не тут-то было. Пробник-осциллограф показал, на одной ножке резонатора условно низкий уровень, на другой высокий, и вывел прямую линию. Не справившись даже с частотой 455 кГц... Теперь, когда вы предупреждены о его минусах, вы можете сами определиться для себя, нужен ли вам такой осциллографический пробник. Если все же да, то продолжаем чтение)... Входное сопротивление обоих каналов осциллографа равно 1 МОм.

Для этой цели нам будет нужно приобрести и запаять подстроечные резисторы на 1 МОм, делитель сигнала 1\10. Соответственно сопротивления делителя, у нас должны составлять 900 и 100 КилоОм. Я решил использовать 2 канала осциллографа, так как был в наличии разъем - гнезда, распаянные на плате, два тюльпана, и разница в стоимости деталей для меня составляла, по сути, только стоимость подстроечного резистора. Другое дело, что оба канала оказались не идентичны по своим показаниям. Как мы видим на схеме один канал был рассчитан на работу с делителем, а другой нет. Ну да это не беда, если потребуется, чтобы и этот канал работал без делителя, нам достаточно выкрутить положения движка подстроечного резистора в ноль, тем самым подав сигнал с выхода, напрямую на ножку МК. Это может быть полезным при измерении сигналов, на двух линиях с низкой амплитудой. На следующем фото показано, как я снимаю сигнал с мультивибратора:

Также мы можем, покрутив регулятор подстроечного резистора, выставить, какой делитель нам требуется, 1\10, 1\25, 1\50, 1\100, или любой другой, измерив мультиметром сопротивление, между центральным выводом и крайними выводами подстроечного резистора. Это может потребоваться для измерения формы сигнала, с большой амплитудой напряжения. Для этого нужно будет лишь подсчитать, получившиеся соотношения сопротивлений делителя. Есть еще один важный нюанс, на иностранном сайте автора схемы, при выборе фьюзов указано, что нужно перевести фьюз - бит Reset Disable в положение включено. Как мы помним, отключение этого фьюз - бита, прекращает возможность последовательного программирования. Фьюзы которые нужно изменить, показаны на следующем рисунке:

В данной схеме Pin 1 Reset не используется как Pin, поэтому нам изменять этот фьюз-бит не обязательно. Но на одном из форумов, для более стабильной работы осциллографа - пробника, рекомендовали притянуть Pin Reset через резистор 10 килоОм к плюсу питания, что я и сделал. Также, когда искал информацию по нему, ни на одном из сайтов я не нашел понятного и доступного объяснения, насчет источника тактирования МК Tiny 45. Так вот, в этой схеме МК тактируется не от внутреннего RC - генератора, не от кварцевого резонатора, а от внешнего тактового сигнала, подаваемого на МК от USB порта. Логично предположить, что выбрав этот источник тактирования, МК перестанет у нас быть виден, в оболочке для прошивания, при отключении от USB порта, поэтому сначала залейте прошивку, а затем внимательно выставляйте фьюз биты.

Давайте разберем схему осциллографа более подробно, на сигнальных линиях USB порта D+ и D-, установлены согласующие резисторы на 68 Ом. Изменять их номинал не рекомендую. Между сигнальными жилами и землей, рекомендовано для снижения помех, установить керамические конденсаторы на 100 наноФарад. Такой же конденсатор на 100 наноФарад, нужно установить параллельно электролитическому, на 47 микроФарад, установленному по цепям питания +5 вольт и земля. Между землей и сигнальными линиями, должны быть установлены стабилитроны на 3.6 Вольта. Я правда поставил на 3.3 вольта, все работает нормально. Предусмотрена индикация включения на светодиоде, включенном последовательно с резистором 220-470 Ом.

Номинал в данном случае не критичен, и от него зависит только яркость свечения светодиода. Я установил на 330 Ом, яркость свечения достаточная. В схеме установлен резистор номинала 1.5-2.2 килоОма, для определения устройства операционной системой.

Подпаивайте провода USB кабеля к плате ориентируясь по распиновке кабеля, а не по расположению на схеме осциллографа. На схеме очередность следования жил указана произвольно. Также из несущественных недостатков, по отзывам пользовавшихся, после перезагрузки Windows, нам потребуется переткнуть осциллограф заново в USB порт. Не забудьте снять фьюз - бит делитель тактовой частоты на 8 CKDIV 8. Данный осциллограф не требует для своей работы, каких-то сторонних драйверов, и определяется как Hid устройство, аналогично мышке или клавиатуре. При первом подключении, устройство определится как Easylogger. На следующем рисунке, приведен список необходимых для сборки деталей.

Существует 6 версий программы Usbscope, оболочки, в которой собственно мы и наблюдаем график. Первые три версии не поддерживают 64-битные операционные системы Windows. Начиная с четвертой версии Usbscope, поддержка обеспечена. Для работы программы на компьютер должен быть установлен Netframework. На сайте автора были выложены исходники прошивки, и исходники программы-оболочки, так что возможно найдутся умельцы, которые смогут дополнить софт. Какое-же практическое использование данного осциллографа, неужели только как игрушка? Нет, данный прибор используется в автоделе домашними умельцами, как бюджетная замена дорогому осциллографу, для настройки автомобильных систем зажигания, расхода топлива и подобных нужд.

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

  1. Один из проводов - щупов осциллографа, оканчивается для измерения щупом от мультиметра для сигнальной жилы, и крокодилом для подключения к земле.
  2. Второй щуп оканчивается крокодилами разных цветов, и для сигнальной жилы и для земли.

Вывод: сборка данного пробника, целесообразна, скорее как наглядное пособие, для изучения формы низкочастотных сигналов. Для практических целей, например для проверки и настройки импульсных блоков питания, в частности работы ШИМ контроллеров, данный пробник не годится однозначно, так как не может обеспечить необходимого быстродействия. Поэтому не может являться заменой, даже самому простому советскому осциллографу, и даже простым осциллографам с Али экспресс.

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

Обсудить статью USB ПРОБНИК-ОСЦИЛЛОГРАФ

Осциллограф выполнен на микроконтроллере ATmega32. Индикатор графический ЖКИ 128 х 64 точек. Схема данного устройства очень проста. Один из недостатков данного осциллографа – это низкая максимальная частота измеряемого сигнала, для меандра это всего лишь 5 кГц. Программа написана на Си в WinAVR, в связке с AVRStudio 4. Графическая библиотека была написана специально для этого проекта.

Описание:

Напряжение питания схемы 12 вольт. Из этого напряжения на выходе преобразователя получаем +8.2V для IC1 и +5V для IC2 для IC3. Данная схема имеет входной диапазон от -2,5вольт до +2,5 вольт или от 0 до +5 вольт в зависимости от положения S1(переем./пост. ток). Используя делитель можно расширить диапазон измеряемых напряжений. Регулировка контраста дисплея производится потенциометром P2. Максимальное входное напряжение 30 вольт для постоянного и 24 вольта для переменного тока.

Более продвинутую схему осциллографа на базе микроконтроллере ATxmega128A3 вы можете посмотреть .

Схема:

Прошивка микроконтроллера:

Файл прошивки AVR_oscilloscope.hex , при прошивке выставьте Fuse биты микроконтроллера для тактирования от внешнего кристалла. Обязательно отключите JTAG интерфейс.

Поскольку интегрированный в микроконтроллер АЦП довольно медленный, было принято решение использовать внешний скоростной АЦП AD9280. В качестве дисплея используется WG12864A (128*64). Прошивка написана на С в компиляторе MikroC pro for AVR 5.60.

Характеристики осциллографа:

Входное сопротивление 100 кОм;

Максимальная частота дискретизации 9 МГц;

Минимальная частота 25 Гц;

Максимальная частота 500 кГц;

Минимальное напряжение +/- 0,25 В;

Максимальное напряжение +/- 25 В;

Напряжени е питания 9 В;

С правой стороны на экране отображается амплитудное значение напряжения, среднеквадратическое значение напряжения, частота в кГц, тип синхронизации и делитель. ATMEGA32 работает на повышенной частоте 26,601712 МГц. Кварц выпая л с денди. Для стабильной работы ATMEGA32 питается повышенным напряжением 5,4 В. Для этого в минусовой вывод стабилизатор а 7805 впаян о 2 диода Шоттки с падением на каждом 0,2 В. Если ATMEGA32 не будет стабильно работать на 26,601712 МГц, можно поставить кварц на 20 МГц или поставить внешний генератор на 32 МГц. При частотах, отличных от 26,601712 МГц необходимо изменить частоту в настройках проекта и подобрать другие константы для подсчета частоты. Стабилизатор 7805 необходимо поставить на радиатор. В качестве входного разъема используется з звуковой 3,5 мм. Микросхема ICL7660 делает отрицательное напряжение -5,4 В, котор о е необходим о для питания ОУ и для смещения переменного сигнала в плюсовой диапазон. В качестве ОУ я использовал LM358 , питал его напряжением 6,5 В от стабилитрон а . LM358 сильно искажа ет сигнал на частотах выше 20 к Гц. Прямоугольные импульсы на высоких частотах можно увидеть на фото.

ОУ необходимо использовать с частотой 10 МГц. Возможно, подойдет lm833. Если ОУ будет rail-to-rail, то можно питать его от 5,4 V. Например, MCP6H92.

Диапазоны переключаются трехпозиционным переключателем - 1:1 (25 V); 1:4 (10 V); 1:10 (2,5 V).

Для управления осциллографом используется 5 клавиш. Клавиши вверх/вниз используются для установления развертки по амплитуде. Клавиши влево/вправо предназначены для изменения частоты виб о рок АЦП. Центральная клавиша используется для входа в меню. В первом пункте выбирается тип отображения осциллограммы: по точкам или по линиям. Во втором пункте выставляется делитель в зависимости от переключателя диапазонов напряжения. Он необходим для правильного отображения напряжения. В третьем пункте выбирается тип синхронизации : по максим уму , по спаду фронта, переход через ноль.

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

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

Схема и печатки обновления V3

© 2024 oaservis.ru - Стройка и ремонт - Оaservis