770 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды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-порт, а затем откройте каналы.

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

  • Arduino oscilloscope.rar

Шаг 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: Все готово!

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

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

ВХОДНЫЕ УЗЛЫ САМОДЕЛЬНЫХ ОСЦИЛЛОГРАФОВ

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

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

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

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

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

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

Да и многие другие устройства значительно проще налаживать имея осциллограф.

Исходя из этого и получаем требования к входному аттенюатору. Я буду рассматривать аттенюатор, построенный на механических переключателях. Почему — объясню несколько позже.

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

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

Схемы входных аттенюаторов

Пожалуй наиболее часто встречается входной аттенюатор (делитель), собранный по схеме, приведенной на рисунке 1.

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

Удобно вроде. Правда есть жирное «НО» в этом деле. При настройке осциллографа обычно подают на его вход прямоугольный сигнал и настраивают емкость С1 и С3, добиваясь плоских вершин импульсов. Примерно вот так. (Здесь и далее идут скриншоты из программы «Мультисим 12»).

Настройка обычно производится один раз. На одном конкретном диапазоне чувствительности. И на этом считается законченной.

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

И только конденсаторами С2 и С4 по схеме 1, не меняя настройки конденсатора С1, нам не удается никак это скомпенсировать.

Должен заметить, что на последних двух картинках изображены еще достаточно простые случаи, относительно понятные. А могут быть и куда круче. Вплоть до полной невменяемости. Что делать? Каждый раз настраивать С1? По моему опыту, многие просто даже не обращают внимания на этот нюанс настройки. Ну и в результате видят неизвестно что.

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

Чтобы избавиться от данного недостатка лучше применять другую схему входного аттенюатора. По рисунку 2.

Отличие от первой только в том, что переключается не только нижнее плечо делителя, но и верхнее. И частотно компенсирующая емкость для верхнего плеча каждого из делителей настраивается отдельно.

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

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

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

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

Как вариант можно применить принцип как в DSO-138 и его последователях.

Клик для увеличения

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

Словом, на сегодняшний день, считаю оптимальным для несложных самодельных осциллографов использовать входной аттенюатор (делитель) по схеме 2.

Переключение диапазонов

И здесь мы подходим ко второй проблеме этого дела. Трех ступеней делителя НЕДОСТАТОЧНО. Получается, что наименьшие сигналы будет трудно рассмотреть и требуется дополнительное переключение либо растяжка по вертикали.

Можно применить галетники. Но это габариты, сопоставимые с габаритами самого ослика. Наименьший, что у меня есть – на 5 положений 2 направления, размерами чуть длиннее подстроечного советского резистора. Но 5 положений тоже мало, да и он выдран из японской техники очень давно и аналогов мне больше не попадалось. Не путь.

Последний из построенных мной осциллографов это «Осциллограф на микроконтроллере ATMEGA32А» с сайта bezkz. Его особенность в том, что он имеет программную растяжку 2 раза в 2 раза. То есть способен растягивать картинку в 2 и 4 раза.

С трехпозиционным переключателем диапазонов чувствительности получается всего 9 положений. И они достаточно неплохо друг друга перекрывают. Я применил в нем входной аттенюатор на одной плате с усилителем на AD823. Естественно с цепями защиты и т.д.

Еще один вариант осциллографа, который нацеливаюсь переделать, это VirtOS в версии от VetalST под дисплей LS020. Он у меня уже реализован в металле, но диапазон чувствительности (1 вольт на деление, от 2 до 8 делений на экран) не устраивает.

В нем есть программная растяжка в 2 раза и потенциометром еще в 2 раза. Т.е. снова два раза по два, как в «Электрике». Правда переключение уже будет не столь удобное. Но этот ослик мне симпатичен и очень хотел бы довести его до ума. Планирую добавить в него усилитель с аттенюатором и расширить диапазон в 100 раз вниз. Ну а щуп с делителем на 10 — повышает диапазон вверх.

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

Для начинающих радиолюбителей такие схемы куда проще в изготовлении и настройке. И на практике мне лично куда удобнее переключать диапазоны просто щелкая переключателями, а не прыгать по пунктам меню кнопками, либо энкодерами. Специально для сайта Радиосхемы — Тришин Александр Олегович. Г. Комсомольск-на Амуре.

Обсудить статью ВХОДНЫЕ УЗЛЫ САМОДЕЛЬНЫХ ОСЦИЛЛОГРАФОВ

Читать еще:  Как сделать рычаг в minecraft

Сообщества › Сделай Сам › Блог › Простой 4х канальный осциллограф для диагностики автомобиля.

Вот потребовался мне автомобильный осциллограф, посмотрел цены, удивился… Цены как на крыло самолета. Кстати, не понятно почему, ведь параметры осциллографа для тестирования авто крайне низки, как по частотам так и по напряжению. По сему решил сам себе сделать.

1. Вид осциллографа – USB приставка к ноутбуку, ибо на большом экране смотреть удобно, можно сохранять для последующего анализа ну и т.д. и т.п.
2. Тип сигнала – Переменный, Постоянный, Положительная полярность. Работа с отрицательными напряжениями не нужна.
3. Кол-во каналов – 4, больше смысла не вижу, но с возможностью расширения до 8.
4. Максимальное входное напряжение — вольт 50, выше смысла нет.
5. Чувствительность — 1 милливольт, больше тоже не надо 🙂
6. Частота — до 20Кгц, для миллисекундных сигналов за глаза хватит, а других там нет 🙂
7. Удобная программная оболочка.

Начну с самого важного – Оболочки для автомобильного осциллографа. Да да, именно с оболочки. Ибо железо не сложно любое сделать, а вот удобная оболочка это реальный дефицит. Оболочки которые просто тупо показывают сигнал в реальном времени для автомобильного осциллографа крайне не удобны, ибо часто нужно анализировать сигнал продолжительное время и иметь возможность «отмотать» назад. По сему нужна оболочка типа Самописец-Осциллограф. И что б каналов было не менее 4х…

Долго лопатил просторы интернета на наличие удобной оболочки и в итоге нашел! Называется PowerGraph. Разработала эту прекрасную программу ООО «ДИСофт». На сайте у них есть платная и бесплатная версия. В принципе это софт для промышленного использования но он на все 100% подходит для моего осциллографа, работает в режиме самописца и в режиме чистого осциллографа. Эта программа предназначена для:
1. Сбор данных с различных измерительных устройств и приборов.
2. Регистрация, визуализация и обработка сигналов в режиме реального времени.
3. Редактирование, математическая обработка и анализ данных.
4. Хранение, импорт и экспорт данных.
Это малая часть того что она умеет 🙂 И самое главное есть бесплатная версия. Остановился на ней, в сравнении с другими, а я перепробовал более десятка, это просто идеал для автомобильного осциллографа.

Вот она какая, на мой взгляд, самая лучшая. Это не реклама, это факт 🙂 ИМХО конечно.

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

Теперь железо, а точнее что использовать в роли АЦП. Железо должно быть доступное, стабильное, не дорогое и легко программироваться. Долго не думал, остановился на микроконтроллере АТмега 328р. Программируются эти микроконтроллеры банально на С++, точнее на упрощенном С++.
Очень удобно то что этот микроконтроллер можно купить уже распаянным на плате с минимально нужной обвязкой., Ардуино сее называется 🙂 То есть не надо самому плату разводить и паять, удобно. Всем параметрам, из моего ТЗ, АТмега 328р отвечает полностью, по сему использовать буду ее.

Для миниатюризации я вот такую взял. Она имеет 8 аналоговых входов, отвечающих всем требованиям ТЗ, имеет на борту эмулятор СОМ порта на СН340, питание берет напрямую с USB порта. В общем то что нужно. Ардуинку можно любую использовать на 328р

Вот схема этой платы. На ней стоит сам микроконтроллер АТмега 328р, банальный эмулятор СОМ порта на СН340, кварц и стабилизатор питания на ЛМке для запитки от внешнего источника, если надо, вот и все, ну пара лампочек и фильтров не в счет 🙂 То есть все то что нам нужно и ничего лишнего! Не зря говорят — Совершенство в простоте.

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

Вот скриншот того что должен выдавать микроконтроллер в СОМ порт для нашей программы PowerGraph.

Осциллограф у меня будет работать в 4х режимах — 1канал, 2канала, 3канала и 4 канала.
Переключение между каналами будет осуществляться по кругу нажатием на кнопку.
При включении канала будет загораться светодиод индикации работы канала.
Вот написал программку. Сам я не программист, по сему написал как смог, сильно не критикуйте, расстроюсь 🙂 Программа полностью рабочая и проверена не однократно в деле. Как заливать программу в плату рассказывать не буду, в инете на каждом углу это с картинками рассказано 🙂

Вот сама программа.

int regim=1;
int flag=0;
void setup()
<
digitalWrite(07,HIGH);
Serial.begin(128000);//скорость СОМ порта должна совпатать со скорость в драйвере
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
>
void loop()
<
if(digitalRead(07)==HIGH&&flag==0)//если кнопка нажата
// и перемення flag равна 0 , то …
<
regim++;
flag=1;
if(regim>4)//ограничим количество режимов
<
regim=1;//так как мы используем только одну кнопку,
// то переключать режимы будем циклично
>
>
if(digitalRead(07)==LOW&&flag==1)//если кнопка НЕ нажата
//и переменная flag равна — 1 , то …
<
flag=0;//обнуляем переменную «knopka»
>
if(regim==1)//первый режим
<
digitalWrite(2,HIGH);//включение светодиода
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
// читаем аналоговый вход pin 0:
int port0 = analogRead(A0);
//Преобразовываем аналоговые показания (которые идут от 0 до 1023) в напряжение (0 — 5 В)
float voltageport0 = port0 * (4.745 / 1023.000);//4.745 опорное напряжение, замеряется при калибровке на плате
// выводим значение напряжения в порт
Serial.println(voltageport0,3);// печатаем значение в порт и жмем энтер
//задержка для стабильности
delay(1);
>
if(regim==2)//второй режим
<
digitalWrite(2,HIGH);//включение светодиодов
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
Serial.print(voltageport0,3);// печатаем значение в порт
Serial.print(» «);// печатаем таб
Serial.println(voltageport1,3);// печатаем значение в порт и жмем энтер
delay(1);
>
if(regim==3)//Третий режим
<
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(» «);
Serial.print(voltageport1,3);
Serial.print(» «);
Serial.println(voltageport2,3);
delay(1);
>
if(regim==4)//Четвертый режим
<
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
int port3 = analogRead(A3);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
float voltageport3 = port3 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(» «);
Serial.print(voltageport1,3);
Serial.print(» «);
Serial.print(voltageport2,3);
Serial.print(» «);
Serial.println(voltageport3,3);
delay(1);
>
>

Программа закончена и отлажена.
Приступим к электронной части.

Схему приводил выше. Из нее видно что плата имеет 8 аналоговых входов, 14 цифровых входов/выходов. Вот и будем работать с ними.

Аналоговые № 0,1, 2, 3 будем использовать как входы осциллографа. Сделаем для них защиту и дополнительный вход через делитель 1х10, так как подавать на микроконтроллер максимум можно всего 5.2 вольта. С делителем можно будет работать с напряжениями до 50 вольт, что полностью перекрывает наши потребности.
Цифровые № 2,3,4,5 будем использовать для светодиодов, они будут индицировать включенные аналоговые входы.
Цифровой №7 будет подключен к кнопке которая будет переключать режимы моего осциллографа.
Еще будет кнопка Бут режима. Плата по умолчанию в бут режиме, но для работы это не удобно, ибо управление идет через RESET. При обращении к СОМ порту идет инициализация СОМ порта и чип эмулятор посылает резет на микроконтроллер. То есть при запуске программы плата ребутится и сбрасывает настройки которые выставили кнопкой, это не удобно. Для того что бы этого безобразия не было, я сее отключаю с помощью кнопки. Она подключает вход микроконтроллера «RESET» к электролитическому конденсатору 10Мкф, конденсатор сглаживает посылку на перезагрузку. Эта же цепь используется при заливке прошивки, по сему на момент программирования надо конденсатор отключать. Назвал эту кнопку Бут кнопкой 🙂

Ну вот, как подключать понятно, осталось воплотить в железе.

Начнем с защиты и делителя.
Защиту будет обеспечивать стабилитрон на 5.1в. А делитель будет обычный на резисторах.
Так как сигналы у нас будут низкочастотные, это сильно упрощает жизнь. В расчетах делителя не надо учитывать внутреннее сопротивление приемника, не надо согласовывать вход с делителем, не надо учитывать волновое сопротивление кабеля и разъемов.
Надо просто посмотреть в даташите на микроконтроллер на какое сопротивление выхода оптимизирован его АЦП, и сделать делитель с таким выходным сопротивлением. Так мы добьемся максимальной точности в 0.005 вольта. В даташите написано что он оптимизирован под 10Ком выходного сопротивления нагрузки. Внутреннее сопротивление АЦП 100Мом…

Читать еще:  Мини рубанок своими руками

Миниатюрный осциллограф на микроконтроллере AVR XMEGA с OLED дисплеем. Часть 1. Схемотехническое решение

Проект Xprotolab, разработанный компанией Gabotronics, являющийся миниатюрным измерительным прибором с богатым набором функций и возможностей, построен на микроконтроллере компании Atmel семейства AVR XMEGA. Для визуализации данных, организации пользовательского интерфейса и меню управления используется графический OLED дисплей с разрешением 128×64 точки с широким углом обзора. Все электронные компоненты и органы управления размещаются на двухсторонней печатной плате, размеры которой не превышают 25.4 мм × 40.64 мм. Кроме того, проект может использоваться в качестве отладочной платы для микроконтроллеров семейства AVR XMEGA.

Отличительные особенности устройства:

  • основа устройства – микроконтроллер ATXMEGA32A4:
    • Flash-память программ — 32 КБайт;
    • SRAM — 4 КБайт;
    • EEPROM – 1КБайт;
  • режимы работы:
    • осциллограф смешанных сигналов;
    • генератор сигналов произвольной формы;
    • 8-канальный логический анализатор;
    • анализатор спектра;
  • возможность одновременной работы генератора и осциллографа;
  • графический OLED дисплей, размер 0.96», разрешение 128×64 точки;
  • PDI интерфейс для программирования и отладки;
  • управление с помощью 4-кнопочной клавиатуры;
  • USB коннектор для питания устройства (в дальнейшем программная реализация USB интерфейса).

Спецификация измерительного прибора:

  • осциллограф:
    • 2 аналоговых канала;
    • 8 цифровых каналов;
    • аналоговая полоса пропускания — 318 кГц;
    • максимальная скорость выборки — 2 Msps;
    • разрешение — 8 бит;
    • аналоговая синхронизация и внешняя цифровая синхронизация;
    • вертикальный и горизонтальный курсоры;
    • входное сопротивление – 1 МОм;
    • размер буфера для каждого канала – 256;
    • максимальное входное напряжение — ±10 В;
  • генератор сигналов произвольной формы:
    • 1 аналоговый канал;
    • максимальная скорость конвертирования – 1 Msps;
    • аналоговая полоса пропускания – 66 кГц;
    • разрешение – 8 бит;
    • низкое выходное сопротивление;
    • размер буфера – 256;
    • максимальное выходное напряжение — ±2 В.

Принципиальная схема прибора

Входные аналоговые каналы осциллографа, выходной канал генератора сигналов – выполнены на JFET операционном усилителе TL064 с низким потреблением. На таком же операционном усилителе выполнен источник опорного напряжения для встроенного аналого-цифрового преобразователя микроконтроллера.

Питание прибор получает от USB интерфейса, однако можно применить внешний источник напряжения 5 В, но следует быть внимательным и необходимо исключить возможность одновременного подключения внешнего источника и USB интерфейса. Напряжение питания микроконтроллера составляет 3.3 В, с этой целью установлен регулятор напряжения 3.3 В AP7333. Также, напряжение 3.3 В необходимо для питания контроллера дисплея.

Для питания операционных усилителей требуется двуполярный источник напряжения + 5 В и –5 В. Для получения отрицательного напряжения –5 В установлен интегральный DC/DC преобразователь TPS60403 (charge pump).

Графический OLED дисплей UG-2864HSWEG01 является монохромным и имеет встроенный контроллер SSD1306.

Источником тактовой частоты для микроконтроллера является внешний кварцевый резонатор 16 МГц.

Управление, навигация по меню, настройка параметров осуществляются с помощью клавиатуры K1-K4.

Для программирования (а также для отладки ПО) микроконтроллера используется 2-проводный интерфейс PDI. Данный интерфейс поддерживает высокоскоростное программирование всех пространств энергонезависимой памяти, в т.ч. Flash-память, EEPOM, Fuse-биты, Lock-биты и сигнатурный код пользователя. Программирование осуществляется путем доступа к контроллеру энергонезависимой памяти (NVM-контроллер) и выполнения NVM-контроллером команд.

Внешний вид печатной платы

Демонстрация работы прибора

Загрузки

Принципиальная схема (pdf) – скачать
Список компонентов (xls) – скачать
Расположение элементов на печатной плате (pdf) — скачать

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

Компания Gabotronics реализует все необходимые для сборки комплектующие, печатную плату, а также готовое к работе устройство.

Перевод: Vadim по заказу РадиоЛоцман

USB осциллограф на PIC микроконтроллере

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

Кнопка S2 — это часть железа нужного для бутлоадера. Если при подключении осциллографа к USB держать её нажатой, то PIC заработает в режиме бутлоадера и можно будет обновить прошивку осциллографа при помощи соответствующей утилиты. В качестве АЦП (IC3) была использована «телевизионная» микросхема — TDA8708A. Она вполне доступна во всяких «Чип и Дип»ах и прочих местах добычи деталей. На самом деле это не только АЦП для видеосигнала, но и коммутатор входов, выравниватель и ограничитель уровней белого — чёрного и т.д. Но все эти прелести в данной конструкции не используются. АЦП весьма шустр — частота дискретизации — 30 МГц. В схеме он работает на тактовой частоте 12 МГц — быстрее не нужно, потому что PIC18F2550 просто не сможет быстрее считывать данные. А чем выше частота — тем больше потребление АЦП. Вместо TDA8708A можно использовать любой другой быстродействующий АЦП с параллельным выводом данных, например TDA8703 или что-нибудь от Analog Devices.

Тактовую частоту для АЦП удалось хитрым образом извлечь из PIC’а — там запущен ШИМ с частотой 12 МГц и скважностью 0.25. Тактовый импульс положительной полярности проходит в цикле Q1 PIC’а так что при любом обращении к порту B, которое происходит в цикле Q2 данные АЦП будут уже готовы. Ядро PIC’а работает на частоте 48 МГц, получаемой через PLL от кварца 4 МГц. Команда копирования из регистра в регистр выполняется за 2 такта или 8 циклов. Таким образом, данные АЦП возможно сохранять в память с максимальной частотой 6 МГц при помощи непрерывной последовательности команд MOVFF PORTB, POSTINC0. Для буфера данных используется один банк RAM PIC18F2550 размером 256 байт.

Меньшие частоты дискретизации реализуются добавлением задержки между командами MOVFF. В прошивке реализована простейшая синхронизация по отрицательному или положительному фронту входного сигнала. Цикл сбора данных в буфер запускается командой от PC по USB, после чего можно эти данные по USB прочитать. В результате PC получает 256 8-битных отсчётов которые может, например, отобразить в виде изображения. Входная цепь проста до безобразия. Делитель входного напряжения без всяких изысков сделан на поворотном переключателе. К сожалению не удалось придумать как передавать в PIC положение переключателя, поэтому в графической морде осциллографа есть только значения напряжения в относительных единицах — делениях шкалы. Усилитель входного сигнала (IC2B) работает с усилением в 10 раз, смещение нуля, необходимое для АЦП (он воспринимает сигнал в диапазоне от Vcc — 2.41В до Vcc — 1.41В) обеспечивается напряжением с программируемого генератора опорного напряжения PIC (CVREF IC1, R7,R9) и делителем от отрицательного напряжения питания (R6,R10, R8). Т.к. в корпусе ОУ был «лишний» усилитель (IC2A), я использовал его как повторитель напряжения смещения.

Не забудьте про емкостные цепочки для частотной компенсации входной ёмкости вашего ОУ и ограничивающих диодов, которые отсутствуют на схеме — нужно подобрать ёмкости параллельно резисторам делителя и резистору R1, иначе частотные характеристики входной цепи загубят всю полосу пропускания. С постоянным током всё просто — входное сопротивление ОУ и закрытых диодов на порядки выше сопротивления делителя, так что делитель можно просто посчитать не учитывая входное сопротивление ОУ. Для переменного тока иначе — входная ёмкость ОУ и диодов составляют значительную величину по сравнению с ёмкостью делителя. Из сопротивления делителя и входной ёмкости ОУ и диодов получается пассивный ФНЧ, который искажает входной сигнал.

Чтобы нейтрализовать этот эффект нужно сделать так, чтобы входная ёмкость ОУ и диодов стала значительно меньше ёмкости делителя. Это можно сделать соорудив емкостной делитель параллельно резистивному. Посчитать такой делитель сложно, т.к. неизвестна как входная ёмкость схемы, так и ёмкость монтажа. Проще его подобрать.

Способ подбора такой:
1. Поставить конденсатор ёмкостью примерно 1000 пФ параллельно R18.
2. Выбрать самый чувствительный предел, подать на вход прямоугольные импульсы с частотой 1 кГц и размахом в несколько делений шкалы и подобрать конденсатор параллельно R1 так, чтобы прямоугольники на экране выглядели прямоугольниками, без пиков или завалов на фронтах.
3. Повторить операцию для каждого следующего предела, подбирая конденсаторы параллельно каждому резистору делителя соответственно пределу.
4. Повторить процесс с начала, и убедиться, что на всех пределах всё в порядке ( может проявиться ёмкость монтажа конденсаторов ), и, если что-то не так, слегка подкорректировать ёмкости.

Сам ОУ — это Analog Devices AD823. Самая дорогая часть осциллографа. Но зато полоса 16 МГц — что весьма неплохо.А кроме того, это первое из шустрого, что попалось в розничной продаже за вменяемые деньги.

Конечно же этот сдвоенный ОУ без всяких переделок можно поменять на что-то типа LM2904, но тогда придётся ограничится сигналами звукового диапазона. Больше 20-30 кГц оно не потянет.

Ну и форму прямоугольных, например, сигналов будет слегка искажать. А вот если удастся найти что-то типа OPA2350 (38МГц) — то будет наоборот замечательно.

Источник отрицательного напряжения питания для ОУ сделан на хорошо известной charge-pump ICL7660. Минимум обвязки и никаких индуктивностей. Ток по выходу -5 В конечно у неё невелик, но нам много и не надо. Цепи питания аналоговой части изолированы от помех цифры индуктивностями и ёмкостями (L2, L3, C5, C6). Индуктивности попались номиналом 180 uГн, вот их и поставил. Никаких помех по питанию даже на самом чувствительном пределе. Прошивка PIC заливается по USB с помощью бутлоадера который сидит с 0-го адреса в памяти программ и запускается если при включении удерживать нажатой кнопку S2. Так что прежде чем прошивать PIC — залейте туда сначала бутлоадер — будет проще менять прошивки.
Исходники драйвера осциллографа для ядер 2.6.X находятся в архиве с прошивкой. Там же есть консольная утилитка для проверки работоспособности осциллографа. Её исходники стоит посмотреть, чтобы разобраться как общаться с осциллографом, если хочется написать для него свой софт.
Программа для компьютера проста и аскетична, ее вид показан на рисунках 2 и 3. Подключить осциллограф к USB и запустить qoscilloscope. Требуется QT4.

Читать еще:  Направляющая для электролобзика своими руками

Рис2. Программа qoscilloscope

На рисунке 4 показан смонтированный осциллограф.

Как собрать осциллограф своими руками — 3 рабочие схемы, советы по монтажу, видео

  1. Осциллограф на PIC18F2550
  2. Цифровой осциллограф для ПК
  3. На AVR — инструкция по сборке, характеристики
  4. Видео

Рассмотрим 3 рабочие схемы осциллографов. Первый прибор собран на микроконтроллере PIC18F2550. Второй осциллограф — цифровой, в основе третьего — микроконтроллер AVR. Поговорим о каждом по порядку.

Осциллограф на PIC18F2550 своими руками — схема, инструкция по сборке

Осциллограф на PIC18F2550 измеряет среднее, максимальное, минимальное, пиковое напряжения и пересечение нулевого уровня. Осциллограф имеет встроенную функцию триггера, который может быть использован для остановки сигнала для его детального изучения. Масштаб времени для отображения может быть легко изменён функцией changeTimeDivision.

Осциллограф измеряет напряжение в пределах 0–5В, 0–2.5В и 0–1,25. Основным недостатком этого осциллографа является низкая частота дискретизации (

60 кГц), а также тот факт, что входы ограничены ограничениями АЦП микроконтроллера. Тем не менее, это очень хороший прибор и первым мы рассмотрим именно его схему.

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

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

Напряжение поступает с 9-вольтовой батареи на интегральный стабилизатор напряжения TC1262-5.0V для обеспечения стабильных 5В для питания микроконтроллера и дисплея. На выходе стоит 1мкФ конденсатор.

Графический ЖК дисплей AGM1264F с разрешением 128х64 пикселей оснащен встроенными контроллером KS0108. Он имеет светодиодную подсветку и генератор отрицательного напряжения для управления.

Вывод A0 настроен на аналоговый вход. Обратите внимание, что сопротивление источника сигнала влияет на напряжение смещения на аналоговом входе. Максимально рекомендованное сопротивление составляет 2.5 кОм.

Микроконтроллер PIC18F2550 работает на частоте 48 МГц от внутреннего генератора. R1 представляет собой нагрузочный резистор, необходимый для работы. C1 является стабилизирующим конденсатором. Компонент пометкой «RES» является 20 MHz резонатором.

Выводы USART должны быть подсоединены к RS-232 конвертеру для подключения к ПК для обновления прошивки. После этого он может быть отключен.

Необходимые детали для сборки осциллографа на PIC18F2550 и прошивка

  • МК PIC 8-бит (IC1) — PIC18F2550
  • Линейный регулятор (IC2) — TC1264, 5 Вольт.
  • Конденсатор (С1) — 0.22 мкФ.
  • Электролитический конденсатор (С2) — 1 мкФ.
  • 2 резистора (R1, R3) — 3.3 кОм и 5 Ом соответственно.
  • Подстроечный резистор (R2) — 10 кОм.
  • Кварцевый резонатор (RES) — 20 МГц.
  • LCD-дисплей — AGM1264F.
  • Батарея питания (G1) — 9 В
  • 3 разъёма — JP1 для подключения дисплея, JP2 для обновления прошивки (RS-232) и JP3 для входа аналогового сигнала.

Микроконтроллер должен быть прошит файлом «SAC_tinybld18F2550usb _20MHz_115200_48MHz». Его можно скачать ниже.

Видео, как работает осциллограф на PIC18F2550:

Цифровой осциллограф RS232 для ПК

Рассмотрим простое решение для создания цифрового компьютерного осциллографа. Устройство построено на базе восьмиразрядного процессора PIC12F675.

Схема цифрового осциллографа для компьютера

Ниже представлена структурная схема осциллографа:

Процессор работает на частоте 20 МГц. Микроконтроллер непрерывно измеряет входное напряжение, преобразовывает его и отправляет цифровое значение на последовательный порт компьютера. Скорость передачи данных последовательного порта — 115кБит и, как показано на следующем рисунке, данные сканируются и отправляются с частотой около 7,5 кГц (134 мкс).

Вот принципиальная схема самого цифрового осциллографа:

Основа схемы — микроконтроллер PIC12F675 (микросхема U2), который работает с тактовой частотой 20 МГц кристалла Y1. J1 — стандартный разъем для подключения питания в 9–12 В, которое затем стабилизируется на U1 до 5 В для питания процессора.

  • Узнайте, как сделать щуп для осциллографа своими руками

После U2 в схему добавляется простой преобразователь TTL уровня с последовательным портом RS232 персонального компьютера. Он построен на базе транзистора BC337 (Q1) и резисторов R1 и R3. Вход 5 микроконтроллера ведет к переключателю S1. В своей основной позиции (1–2) прибор переключается в режим осциллографа постоянного тока (DC измерений), который способен отображать входной сигнал 0–5В. Во второй позиции — в режим осциллографа переменного тока. В этом положении максимальное напряжение — от -2,5 до +2,5 В. Конденсатор С6 подойдет керамический 22000nF, чтобы наблюдать низкие частоты без особых искажений.

При необходимости можно добавить дополнительные входной аттенюатор (сплиттер), или ОУ.

Необходимые радиоэлементы

  • Линейный регулятор (U1) — LM78L05.
  • МК PIC 8-бит (U2) — PIC12F675 (675-I/P).
  • Биполярный транзистор (Q1) — BC337.
  • 6 конденсаторов — С1, С2, С5 (3х0.1 мкФ); С3, С4 (2х22 пФ); С6 (22 мкФ)
  • 4 резистора — R1, R3 (2х1 кОм) и R2, R4 (2х270 кОм).
  • Кварцевый резонатор (Y1) — 20 МГц.
  • Переключатель (S1)
  • 3 разъема — J1 питания, J2 RS232, J3 входа сигнала.

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

Для управления на Windows доступна простая программа на Visual Basic. Её можно скачать в архиве ниже.

Программа запускается сразу и ожидает появления данных на последовательном порте COM1. Слева — четыре ползунка, используемые для измерения периода и напряжения сигнала. Затем идут вкл/выкл синхронизации, поля для масштабирования или изменения значений размера выборки.

Монтаж

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

Прошивку для процессора можно скачать в конце статьи. Биты конфигурации (fuse) в процессе программирования должны быть установлены следующим образом:

Вот фото готового прототипа цифрового осциллографа:

Ниже вы можете скачать исходник, прошивку и ПО для Windows.

Осциллограф своими руками на AVR — инструкция по сборке, характеристики

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

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

Рассмотрим проект осциллографа с использованием МК PIC18F2550 и графического LCD с контроллером KS0108. В качестве среды разработки здесь использована WinAVR, которая основывается на open source AVR-GNU компиляторе и прекрасно работает с AVR Studio 4. Графическую библиотека разработана специально для данного проекта.

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

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

Принципиальная схема AVR-осциллографа приведена ниже:

Напряжение питания схемы составляет 12 вольт постоянного тока. Из этого напряжения, в дальнейшем получается еще 2 напряжения: +8.2В для IC1 и +5В — для IC2, IC3.

  • Схема светодиодного осциллографического пробника

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

Необходимые радиоэлементы

  • Операционный усилитель (IC1) — LM358.
  • LCD-дисплей (IC2) — DEM128064A (128×64, контроллер KS0108).
  • МК AVR 8-бит (IC3) — ATmega32.
  • Линейный регулятор (IC4) — LM7805.
  • Стабилитрон (D1) — 1N4738A, 8.2В.
  • Выпрямительный диод (D2) — 1N4007.
  • 7 конденсаторов — C1 (470 нФ); C2 (27 пФ); C4, C7, C9 (3х100 нФ); C5, C6 (2х22 пФ).
  • 2 электролитических конденсатора — C3 (22 мкФ 16 В) и C8 (100 мкФ 25 В).
  • 7 резисторов — R1, R2, R4 (3х1 МОм); R3, R5 (2х390 кОм); R6 (56 Ом); R7 (220 Ом).
  • 2 подстроечных резистора (P1, P2) — 10 кОм и 22 кОм соответственно.
  • Кварц (X1) — 16 МГц.
  • 3 переключателя (S1, S2, S5).
  • 5 кнопок (S3, S4, S6–S8) — замыкающие.
  • 2 разъёма (K1, K2) — 2 контакта вход сигнала, 2 контакта питание.

Прошивка ATmega32 и настройка

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

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

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

Вы можете перемещать луч осциллограммы вверх или вниз путем нажатия кнопок S8 и S4. Один квадрат на экране, соответствует 1В.

При помощи кнопок S7 и S3 можно увеличивать или уменьшать частоту измерений. Минимальная частота формы сигнала, которая может быть отображена на LCD составляет 460 Гц. Если необходимо посмотреть сигнал с более низкой частотой, например, 30 Гц, то необходимо нажать S7 для сжатия осциллограммы или S3 — для растяжения.

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

Фото готового AVR осциллографа:

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


Ссылка на основную публикацию
Adblock
detector