Схема usb осциллографа своими руками на атмега 2550

Обновлено: 03.07.2024


PICO SCOPE – это миниатюрный цифровой осциллограф. Основа его микроконтроллер, Atmega8. Естественно ЖК, как у nokia 3310 – это небольшие размеры и низкая стоимость. Имеется возможность измерения переменного напряжения.

Схема и печатная плата были разработаны в KiCad, программное обеспечение в Eclipse AVR и корпус во FreeCad.

Миниатюрный AVR осциллограф ПикоСкоп

Основные параметры PICO SCOPE

  • частота дискретизации до 50 кГц
  • диапазон входного напряжения для зонда 1: 1 – макс +/- 100 В
  • разрешение 20V / d, 10V / d, 5V / d, 2V / d, 1V / d, 500mV / d, 200mV / d, 100mV / d, 50mV / d
  • временные интервалы 200us / d, 500us / d, 1ms / d, 2ms / d, 5ms / d, 10ms / d, 20ms / d, 50ms / d, 100ms / d, 200ms / d, 500ms / d
  • изменение формы сигнала на экране
  • режимы запуска AUTO, MANUAL, НОРМ, ВЫКЛ.
  • запуск по нарастающему или падающему фронту
  • регулируемый уровень запуска
  • выбор датчика 1:1, 1:10 и 1:100
  • кривые напряжения и времени
  • сохранение текущих настроек
  • питание от батареи CR2032.

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

Миниатюрный AVR осциллограф ПикоСкоп

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

Миниатюрный AVR осциллограф ПикоСкоп

ПикоСкоп потребляет около 4 мА во время работы. Один из протестированных ЖК дисплеев работал даже при 2,2 В, терял контраст, но все еще работал. Конечно батарейка CR2032 не лучшая идея, но цель была предельно упростить конструкцию. Конечно лучшим решением была бы литий-ионная батарея, но для нее нужно добавить систему зарядки и разъём ЗУ.


Прежде чем приступить к описанию usb осциллограф своими руками на ATtiny45, необходимо отметить, что в конструкции используется только интегрированный АЦП преобразователь микроконтроллера ATmega45 с разрешением 10-бит, и в компьютер данные передаются посредством внедрения программного обеспечения V-USB с использованием драйверов USB HID, общая скорость передачи данных сильно ограничена.

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

V-USB является чисто программной реализации низкоскоростного USB протокол для процессоров серии AVR фирмы Atmel. Благодаря этим библиотекам можно с незначительными ограничениями применять USB практически с любым микроконтроллером, без необходимости использования дополнительного специального оборудования. Все библиотеки V-USB распространяются под лицензией GNU GPL v.2.

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

Всю основную работу выполняет запрограммированный микроконтроллер ATtiny45 . Работает он от внутреннего тактового генератора с предделителем с частотой 16,5 МГц. Для связи через интерфейс скоростного USB эта частота необходима, однако, это ведет к ограничению в минимальном напряжении питания, который должен быть выше, чем 4,5 В и, конечно, ниже, чем 5,5 В.

Но, поскольку выводы данных порта USB используют уровень напряжения от 0 до +3,3 В, то необходимо использовать ограничивающие резисторы R2, R3 и стабилитроны D2, D3. Такое решение, конечно, нельзя рекомендовать для коммерческого продукта, но для ознакомления с проблематикой USB и получение простой конструкции для домашнего использования вполне достаточно.

продаётся раскрученный сайт недорого обращаться в личку

alt


Этот простой и дешёвый USB осциллограф был придуман и сделан просто ради развлечения. Давным давно довелось чинить какой-то мутный видеопроцессор, в котором спалили вход вплоть до АЦП. АЦП оказались доступными и недорогими, я купил на всякий случай парочку, один пошёл на замену, а другой остался. Недавно он попался мне на глаза и почитав документацию к нему я решил употребить его для чего-нибудь полезного в хозяйстве. В итоге получился вот такой приборчик. Обошёлся в копейки (ну рублей 1000 примерно), и пару выходных дней. При создании я постарался уменьшить количество деталей до минимума, при сохранении минимально необходимой для осциллографа функциональности. Сначала я решил, что получился какой-то уж больно несерьёзный аппарат, однако, сейчас я им постоянно пользуюсь, потому что он оказался весьма удобным - места на столе не занимает, легко помещается в карман (он размером с пачку сигарет) и обладает вполне приличными характеристиками:

Принципиальная схема осциллографа показана на рисунке 1.

Простой 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 байт.

Не забудьте про емкостные цепочки для частотной компенсации входной ёмкости вашего ОУ и ограничивающих диодов, которые отсутствуют на схеме - нужно подобрать ёмкости параллельно резисторам делителя и резистору 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.

Простой USB-осциллограф

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

Осциллограф имеет два аналоговых входа и питается от USB-интерфейса. Один вход задействован через потенциометр, что позволяет уменьшать
уровень входного сигнала.

ПО для микроконтроллера Tiny45 написано на Си и скомпилировано при помощи Winavr и V-USB разработки Obdev, который реализует со стороны микроконтроллера HID-устройства.

В схеме не используется внешний кварц, а программно задействована частота от USB 16.5 МГц. Естественно не стоит ожидать от этой схемы
дискретизации 1Gs/s.

Простой USB-осциллограф

Принципиальная схема USB-осциллографа очень проста!

Простой USB-осциллограф

Список используемых компонентов:

1 светодиод (любой)
1 резистор для светодиода, от 220 до 470 Ом
2 резистора 68 Ом для USB D+ & D-линий
1 резистор 1.5K для определения USB-устройства
2 стабилитрона 3.6V для выравнивания USB-уровней
2 конденсатора 100нФ и 47пФ
2 фильтрующих конденсатора на аналоговых входах(от 10нФ до 470нФ), можно и без них
1 или 2 потенциометра на аналоговых входах, для уменьшения уровня входного напряжения (если нужно)
1 USB-разъем
1 микроконтроллер Atmel Tiny45-20.

Тот же осциллограф, только с другой печатной платой.

Простой USB-осциллограф

Простой USB-осциллограф

А так же программа с расширенным экраном для большего удобства.

Простой USB-осциллограф

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

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

Осциллограммы одного и того же сигнала, красный график с параллельным резистором, синий - без:

Простой USB-осциллограф

Команда для avrdude


Фьюзы, спасибо daimos12: CKSEL0=1 CKSEL1=0 CKSEL2=0 CKSEL3=0 SUT0=0 SUT1=1 BODLEVEL0=1 BODLEVEL1=0 BODLEVEL2=1 0-программируем, 1-не трогаем.

Читайте также: