Opori-osveshenia.ru

Опоры освещения
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

ОСЦИЛЛОГРАФ НА МИКРОКОНТРОЛЛЕРЕ

:: ОСЦИЛЛОГРАФ НА МИКРОКОНТРОЛЛЕРЕ ::

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

Принципиальная схема осциллографа на AVR

Особенности работы схемы

— Измерение частоты 10 Гц — 7.7 кГц.

— Входное напряжение 24 В переменного напряжения или 30 В постоянного.

— Электропитание 12 вольт.

— ЖК дисплей 128×64 пикселей.

— Измерения в области 100×64 пикселей.

— Отображение информации в области 28×64 пикселей

Калибровка осциллографа заключается в установке контраста LCD экрана резисторами P2 и P1, перемещая луч в центре ЖК. Прошивка и все нужные файлы — тут.

ОСЦИЛЛОГРАФ НА МИКРОКОНТРОЛЛЕРЕ 1

ОСЦИЛЛОГРАФ НА МИКРОКОНТРОЛЛЕРЕ 2

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

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

Установка фузов для ATmega32 МК

Установка фузов осциллографа для ATmega32 МК

Обязательно отключите JTAG интерфейс. С помощью кнопок S8 и S4 перемещается начальный уровень вверх или вниз. С помощью кнопок S7 and S3 устанавливается развёртка. В осциллографе есть автотриггер для периодичных сигналов. Можно "заморозить" картинку нажатием кнопки S6. Автор схемы — Serasidis Vassilis.

Поделитесь полезными схемами

Измеритель уровня радиации на микроконтроллере PIC18F2550 — схема и конструкция.

Благодаря отдельному усилителю повышенной мощности, громкость сигнала в несколько раз выше, по сравнению с дешевыми устройствами аналогичного типа. Также имеется большая панель управления с многочисленными функциями. Объемный звук и четкость звучания на высоком уровне.

Схема ступенчатого регулятора температуры электрокамина, с применением микроконтроллера PIC16F628.

Схема простого радиопередатчика-трекера, работающего от батарейки 1,5 вольт.

Читайте так же:
Как сделать координатный стол своими

Самодельный цифровой осциллограф на Ардуино и микроконтроллере своими руками

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

Ардуино – замечательная вещь, работающая на 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: Все готово!

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

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Осциллограф LS020

В этой статье речь пойдет об осциллографе, у которого, как мне кажется, довольно интересные характеристики. Сам прибор собран на микроконтроллере AVR, серии XMega. Этот тип контроллера имеет очень быстрый АЦП, что позволяет создать осциллограф, имеющий приличные характеристики, без применения внешних АЦП. Это и было сделано в нижеописанном проекте. Сердцем устройства является микроконтроллер ATXMEGA128A3-AU. Осциллограф использует два встроенных канала АЦП микроконтроллера. Индикатором является ЖК-дисплей от телефона Siemens S65/SX65/CX65, разрешением 132х176 пикселей с чипом LS020 или L2F50 (ниже в архиве две прошивки для той и иной версии).

Технические характеристики:

  • Количество каналов – 2.
  • Макс. частота дискретизации в реальном времени: 2 MS / с на канал.
  • Макс-временный эквивалент дискретизации: 24 Мс / с.
  • Амплитуда-Разрешение: 12 бит.
  • Диапазон входного напряжения без делителя(AC + / — 35V DC 0-35V).
  • Диапазон частот измеряемых сигналов в реальном времени: 50 Гц — 300 кГц на канал.
  • Диапазон частот сигналов, измеренные в эквивалентное время: <1 МГц на синусоидальный или аналогичный периодический сигнал.

Время развертки в режиме реального времени:

  • 5us /10us/20us/40us/80us/160us/320us/640us/1.3ms/2,5ms/5ms

Время развертки в режиме время эквивалентны:

  • 1.6us / д, 800ns / д, 400ns / д
  • 200 мВ/0.5V/1V/2V/5V/10V/20/ (независимый контроль для каждого канала)
  • Возможность самостоятельно регулировать ослабление зонда (1x, 10x, 100x) для каждого канала.
  • Плавное изменение вертикального положения каждого сигнала на экране.
  • Плавная регулировка уровня запуска.
  • Автоматическая синхронизация (программное обеспечение) для выбранного канала.
  • Запускаемая при помощи внешнего сигнала (нарастающий фронт)
  • Запускаемая при помощи внешнего сигнала (задней кромкой)
  • Отображение амплитуды измерения для каждого канала
  • Отображение частоты для каждого канала
  • Курсоры время
  • Курсоры напряжения
  • Остановка Запуск
  • Режим XY-прогиб
  • Анализатор спектра с использованием алгоритма FFT.
  • Запись 50 измерения на микро SD карту (возможность именования измерения)
  • Вольтметр AC / DC 2-канальный (мгновенное значение или среднее значение напряжения)
Читайте так же:
Колесные редуктора своими руками

Схема осциллографа:

cxema-osziloghafa-ls020

Как видно схема достаточно простая, содержит один только микроконтроллер плюс обвязка. Несмотря на простоту, автор все же допустил некоторые ошибки. В частности питания подсветки подключено к общей шине питания 3,3 В. Подсветка дисплея LS020/L2F50 начинает работать примерно с 9 В, поэтому нужно сделать простейший преобразователь (хотя бы на mc34063). Еще, линии данных лучше подключить через делители на резисторах например вот так:

podk-rezistori

К сожалению, автор написал прошивку только под польский язык, немного разобравшись, все становится вполне понятным. Также автор не описывает сам процесс прошивки микроконтроллера XMega. Но я не думаю что это станет проблемой так как в сети есть варианты программаторов и программных оболочек для данного типа контроллера. Плату лучше конечно переразвести, с учетом рекомендаций данных выше. Но для примера можно взять плату автора:

peh-plata1peh-plata2
Архив с прошивкой и печатной платой СКАЧАТЬ (Яндекс Диск)

STM32F103C8T6 — делаем осциллограф. Часть 3

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

Аналоговая часть

Почти всё как было описано во второй части, кроме источника двухполярного питания. ОУ потребляют значительный ток (порядка 10 мА) и как не пытался схемами умножителей напряжения на диодах и конденсаторах получить приемлемых результатов — не удалось. Поэтому для положительного напряжения поставил вот такой модуль на основе МТ3608:

настроенный на 10 В выходного напряжения. А отрицательное напряжение получаю путём инвертирования положительного с помощью LT1054.

Про размер кода

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

CooCox CoIDE выводит информацию о размер программы в таком виде:

  • text — размер сегмента с кодом, векторами прерываний и константами только на чтение;
  • data — размер сегмента с инициализированными не нулём переменными;
  • bss — размер сегмента с неинициализированными и инициализированными нулём переменными.
  • флеш — text + data + 10..50 байт
  • ОЗУ — data + bss + 10..50 байт
Читайте так же:
Пресс для сто своими руками

Теперь посмотрим на что тратится память. Делаем новый проект и компилируем:

Чтобы использовать макросы типа GPIO_BSRR_BS9 надо подключить файл stm32f10x.h.
Чтобы подключить файл stm32f10x.h надо в репозитоях добавить компонент STM32F10x_MD_STDLIB, который подтягивает за собой cmsis_core. В итоге для программы, записывающей одно значение в регистр получаем:

Далее меня интересуют функции типа sprintf и sscanf. Чтобы их использовать надо определить некоторые функции типа _sbrk и возможно некоторых других. Я взял готовый файл (есть в архиве с проектом). Добавляем 1 вызов sscanf и получаем:

Режимы работы

Реализовал 3 режима по принципу действия: непрерывный, пакетный и логический и 3 по количеству каналов: 1, 2 и 4-х канальный.
МК имеет 9 аналоговых входов, но я не представляю когда мне может понадобиться больше 4-х каналов.

Непрерывный

Тут всё просто: в главном цикле МК считываем данные АЦП и передаём их на ПК, где можем строить непрерывный график. Недостаток — ограничение скорости со стороны канала МК -> ПК. Чтобы его обойти реализовал ещё 2 режима.

Пакетный

В этом режиме МК вначале набирает данные, потом пачкой передаёт на ПК. Опционально его можно разгонять. Про разгон подробно писал в предыдущих частях.

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

  • Меньше деталей, а значит меньше цена и проще монтаж;
  • Возможность в будущем реализовать более сложные триггеры, а не просто «сигнал в A канале стал больше Х».

В одноканальном режиме оба АЦП по очереди преобразуют значение одного канала.
В двухканальном — каждый АЦП преобразует свой канал запускаясь одновременно с другим.
В 4-х канальном — у каждого АЦП есть 2 канала, которые он преобразует. Старт обоих АЦП одновременный.
Очевидно, что скорость частота преобразования канала обратнопропорциональна количеству каналов.

Читайте так же:
Винтовая лестница своими руками из металла видео

Логический анализатор

Самый быстрый режим. Примерно 20 MSPS на каждом канале. Самый быстрый код для этого режима выглядит так:

и так далее на весь буфер.
Значение переменной i в этом случае вычисляются на этапе компиляции и в итоге из dataBuffer.u8[++i] = GPIOA->IDR; получается всего 2 операции — загрузить данные в регистр из порта и сохранить данные в память по заранее посчитанному адресу. Никакими циклами такой производительности достичь не получилось.

Программа для ПК

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

Проект не завершён, есть глюки, допиливать ещё много чего, но каких-то прорывов уже не предвидится. Для более быстрых систем нужно другое железо, например, отдельный АЦП + ПЛИС + память — а это уже будет гораздо дороже и сложнее монтировать.

  • Дисплей прикручивать не собираюсь т.к.:
    • Он стоит денег, а комп есть.
    • По качеству будет хуже, чем на большом экране ПК.
    • Создавать и изменять пользовательский интерфейс на C# проще, чем паять и перепаивать.

    Архив с проектом
    Если у кого появятся вопросы, а тут не зарегистрированы, пишите в почту: adefikux на gmail точка com.

    голоса
    Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector