Ноутбук и компьютер - Информационный портал

Цифровой осциллограф на микроконтроллере. Карманный осциллограф "Лори" на микроконтроллере STM32F103. Приставка для компьютера

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

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

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

Как можно получить осциллограф

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


  • Купить готовый прибор в специализированном магазине или заказать его по сети;
  • Купить конструктор, например, широкой популярностью сейчас пользуются наборы радиодеталей, корпусов, которые продаются на китайских сайтах;
  • Самостоятельно собрать полноценный портативный прибор;
  • Смонтировать только приставку и щуп, а подключение организовать к персональному компьютеру.

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

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

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

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


Конструктор осциллографа: модель DSO138

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

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

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

Перед монтажом нужно ознакомиться с содержимым упаковки: плата, экран, щуп, все нужные радиодетали, инструкция для сборки и принципиальная схема.

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


На выходе должен получиться прибор с такими характеристиками:

  • Напряжение на входе: DC 9V;
  • Максимальное напряжение на входе: 50 Vpp (1:1 щуп)
  • Потребляемый ток 120 мА;
  • Полоса сигнала: 0-200KHz;
  • Чувствительность: электронное смещение с опцией вертикальной регулировки 10 мВ / дел - 5В / Div (1 - 2 - 5);
  • Дискретная частота: 1 Msps;
  • Сопротивление на входе: 1 MОм;
  • Временной интервал: 10 мкс / Div - 50s / Div (1 - 2 - 5);
  • Точность замеров: 12 бит.

Пошаговая инструкция сборки конструктора DSO138

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

Стоит отметить, что в данной модели плата поставляется сразу с впаянным 32-битным на M3 ядре микроконтроллере марки Cortex™. Работает он два 12-битных входа с характеристикой 1 μs и работает в максимальном частотном диапазоне до 72 МГц. Наличие этого девайса уже вмонтированным несколько облегчает задачу.

Шаг 1. Удобнее всего начинать монтаж с smd компонентов. Нужно учитывать правила при работе с паяльником и платой: не перегревать, держать не дольше 2 с, не смыкать между собой разные детали и дорожки, пользоваться паяльной пастой и припоем.

Шаг 2. Припаять конденсаторы, дросселя и сопротивления: нужно вставлять указанную деталь в отведенное на плате для нее место, отрезаем лишнюю длину ножки и запаиваем на плате. Главное не перепутать полярность конденсаторов и не сомкнуть паяльником или припоем соседние дорожки.


Шаг 3. Монтируем оставшиеся детали: переключатели и разъемы, кнопки, светодиод, кварц. Особенное внимание следует уделить стороне диодов и транзисторов. Кварц имеет металл в своем строении, потому нужно обеспечить отсутствие прямого контакта его поверхности с дорожками платы или позаботиться о диэлектрической подкладке.

Шаг 4. 3 разъема припаиваются к плате дисплея. После завершения манипуляций с паяльником нужно плату промыть спиртом без вспомогательных средств – никаких ваток, дисков или салфеток.

Шаг 5. Просушить плату и проверить насколько качественно была проведена пайка. Прежде, чем подсоединить экран, нужно припаять две перемычки к плате. В этом пригодятся имеющиеся откушенные выводы деталей.

Шаг 6. Для проверки работы нужно включить прибор в сеть с током от 200 мА и напряжением 9 В.

Проверка заключается в снятии показателей с:

  • Разъема 9 В;
  • Контрольной точки 3,3 В.

Если все параметры соответствуют нужным значениям, нужно отключить прибор от питания и установить JP4 перемычку.

Ша г 7. В 3 имеющихся разъему нужно вставить дисплей. К входу нужно подключить щуп для осциллографа, своими руками провести включение питания.

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

Приставка для компьютера

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

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

Поместив в него собранный прибор с готовыми выходами, можно приступать к организации работы с монитором компьютера. Для этого следует скачать программы «Осциллограф» и «Soundcard Oscilloscope». Можно протестировать их работу и выбрать ту, что понравилась больше.

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

Фото осциллографов своими руками


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

Максимальная частота дискретизации - 6 МГц;
- Полоса пропускания входного усилителя - 0-16 МГц;
- Входной делитель - от 0.01 В/дел до 10 В/дел;
- Входное сопротивление - 1 МОм;
- Разрешение - 8 бит.

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

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


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

Кнопка 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.

Этот простой и дешёвый USB осциллограф был придуман и сделан просто ради развлечения. Давным давно довелось чинить какой-то мутный видеопроцессор, в котором спалили вход вплоть до АЦП. АЦП оказались доступными и недорогими, я купил на всякий случай парочку, один пошёл на замену, а другой остался.


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

Максимальная частота дискретизации - 6 МГц;
- Полоса пропускания входного усилителя - 0-16 МГц;
- Входной делитель - от 0.01 В/дел до 10 В/дел;
- Входное сопротивление - 1 МОм;
- Разрешение - 8 бит.Принципиальная схема осциллографа показана на рисунке 1.

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

Кнопка 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.

Во вложении- все файлы к проекту

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

Оцифровка аналогового сигнала:

Напряжение 0-3В

Дискретизация до 153.9кГц.

Генератор:

Частота 0-533.3кГц

Напряжение 3В

Ток до 15мА

Батарейка 1.5В

Описание:

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

Осциллограф имеет 2 канала: аналоговый и цифровой. Оба канала отображаются на дисплее в виде временной диаграммы, аналоговый канал - синим цветом, цифровой - жёлтым. Синхронизация может осуществляться от обоихканалов. Также есть возможность переключения цифрового канала на выход и выдачи частоты от 20Гц до 533кГц с любой скважностью сигнала.

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

Интерфейс и управление

Информация на дисплее имеет следующий вид:

На канал 1(аналоговый вход) подана частота 50гц. Канал 2 включен в режим генератора и генерирует частоту 30Гц со скважностью 50%.

U 100 - это уровень синхронизации. Параметр влияет только когда синхронизация идёт от канала 1 (аналоговый вход).

T 025 - это смещение синхронизации по времени. 25 - четверть экрана. Таким образом, передний фронт смещён от левого края дисплея на 25 отчётов. Всего отчётов 100.

048мс - период развёртки. Между 2мя зелёными вертикальными полосками будет 48мс.

Стрелочка слева от цифры 048 – курсор, он указывает на текущий выбранный параметр.

/1 показывает режим синхронизации. Сейчас выбран передний фронт канала 1.Также может быть выбран задний, передний фронт любого из каналов или отключена синхронизация (символ “NO”).

30 – это частота генератора. Может быть значение частоты или значение IN – это указывает на то что канал 2 будет входным и частота не выдаётся.

Следующий параметр 000 указывает на скважность импульса. Он не выбран, поэтому скважность установлена по умолчанию - 50%.

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

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

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

Схема осциллографа составлена на основе контроллера ATTiny 43U . Данный контроллер имеет встроенный DC -DC преобразователь, который позволяет питать схему от одной батарейки. Я применял элемент ААА. Встроенный DC-DC преобразователь поднимает напряжение батарейки (0.7В – 1.8В) до напряжения 3В., и питание ядра контроллера (и портов) происходит от 3В.

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

Также в схеме применён ещё один DC -DC преобразователь на основе микросхемы MC34063, он нужен для питания подсветки дисплея, поскольку на подсветку должно приходить примерно 6В с копейками.

В особой настройке схема не нуждается.

Программная часть:

Программа осциллографа написана на ассемблере в AVR Studio .

При реализации программы я столкнулся со следующими нюансами:

Поскольку дисплей имеет последовательный интерфейс, причём SPI с передачей 9 бит (подробно протокол работы с дисплеем описан в более ранней статье про БП), не получается реализовать передачу данных аппаратно. Поэтому обновление дисплея занимает длительное время. Полностью закрашивание дисплея происходит примерно около секунды (это нас никак не устраивает), поэтому при выводе на дисплей осциллограммы затирание происходит по предыдущему контуру совместно с прорисовкой новых данных. Это позволило ускорить процесс прорисовки осциллограммы почти в 100 раз. ОЗУ как раз хватило для хранения 2х буферов оцифрованных данных.

Для уменьшения объёма хранимой информации в ОЗУ данные обоих каналов хранятся в одном буфере, то есть в одном байте буфера хранятся значения состояний обоих каналов. Биты от 0 по 6 - это данные АЦП (поскольку нас вполне устраивает 7 бит оцифрованных данных) и бит 7 - это состояние канала 2.

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

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

A п=A п-Ап/256+АЦП, где Ап – это накопленное значение.

Таким образом, происходит как бы усреднение 256 значений потенциометра..

Про АЦП

По даташиту на чип частота дискретизации АЦП составляет 15кГц с максимальным разрешением при тактовой примерно 200кГц. Но допускается тактирование АЦП до 1Мгц. При частоте 1Мгц частота дискретизации получается 76кГц. А делителями можно задать гораздо больше. В ходе экспериментов тактированием АЦП получилось, что оно вполне себе работает при частоте 2МГц. Если больше, то уже увеличивается цикл измерения, и период измерений начинает гулять. В программе при изменении частоты дискретизации тактовая АЦП меняется от 62кГц до 2Мгц.

Максим Керимов
Декабрь 2016 г.

Постановка задачи

Сделать простейший карманный осциллограф с минимальными затратами времени и средств.

Список компонентов

  • Китайский клон платы "Maple Mini" с микроконтроллером STM32F103C8T6 (AKA Blue Pill board).
  • Дисплей 1.8 TFT 128x160 SPI с драйвером ST7735.
  • Пять резисторов и два конденсатора (рис. 3).
  • Линейный регулятор с малым падением напряжения AMS1117-3.3 (по желанию).
  • Щуп-зажим "пинцет" - 2 шт.
  • Кнопка миниатюрная нормально разомкнутая без фиксации, с щелчком.

Рис. 1. Тестовый запуск осциллографа. Синусоида сгенерирована саунд бластером, от того ступенчатая.

Характеристики

7 диапазонов с ценой деления (клетки): 7 µS, 28 µS, 113 µS, 559 µS, 2 mS, 10 mS, 20 mS.
Чувствительность: 0.25 и 1.0 В/дел.
Максимальная амплитуда входного сигнала: 6 В.
Входное сопротивление: 20 kΩ.
Питание: 4 аккумулятора АА.
Потребляемый ток: 80 mA.

Сигнал какой частоты можно увидеть?

Теоретически можно увидеть 477 кГц. Отличить меандр от пилы, теоретически, можно на частотах 350 кГц и ниже. Практически же, более-менее комфортно можно наблюдать сигналы до 200 кГц. Размер клетки: 20 x 20 px.

"Частота развёртки" нашего осциллографа зависит от быстродействия АЦП. В STM32F103 разрядность АЦП фиксирована и равна 12. Это в полтора раза больше, чем нам нужно. В STM32F407, например, разрядность можно уменьшить, что сократит время измерений. Но это уже другая история с другим бюджетом.



Рис. 2. Подключение дисплея.

Рис. 3. Питание и входная цепь.

Делитель напряжения R1-R2 служит для контроля уровня заряда аккумуляторов. В правом верхнем углу экрана - пиктограмма батарейки, как на мобильном телефоне (на фото отсутствует).

Внешний регулятор напряжения нужен не всегда. На плате микроконтроллера есть свой регулятор 3.3 В 100 мА. Если питать дисплей от него, будет греться. На платах другого типа (STM Smart V2 board - с большим разъёмом JTAG) стоит как раз AMS1117, для них внешний не нужен. На некоторых дисплеях тоже есть AMS1117 (и перемычка). Решайте сами.

Последовательно с аккумуляторами имеет смысл поставить выключатель питания ПД9-1 или аналогичный.

Если есть желание увеличить размер своего импеданса, на вход можно добавить неинвертирующий повторитель на ОУ, что позволит достичь значения 1 MΩ и более. Питать ОУ следует непосредственно от аккумуляторов напряжением 4.8 - 5.4 В.

Принцип действия

Половина текста программы - это всевозможные инициализации. Принцип действия цифрового осциллографа прост и очевиден.

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

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

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

Для компиляции я использую среду CooCox CoIDE. Не выложил сюда Кокс-проект, поскольку он содержит абсолютные пути к файлам. Проще создать новый, чем править все пути. После создания проекта не забудьте подключить библиотеки: RCC, GPIO, DMA, SPI, TIM, ADC.

Как создать CooCox CoIDE проект

  1. Запускаем IDE. Из меню: Project > New Project
  2. Вводим имя, запоминаем где лежит проект.
  3. Выбираем "Board" , жмём "Next >"
  4. STM32 > STM32F103x > STM32F103C8T6 Core Development Board
  5. В окне "Repository" выбираем вкладку "Peripherals" , подключаем библиотеки (см. рис.)
  6. Чтобы Кокс не ругался на stdio.h , задаём: View > Configuration > Link > Library: "Use Base C Library" .
  7. Распаковываем скачанные файлы в папку проекта.
  8. Жмём "F7" .
  9. Ликуем.
  10. Чтобы автор порадовался вашему триумфу, переводим ему 50 рублей на пиво.


Прошивал при помощи программатора-отладчика ST-Link V2. Можно и без него, через USB-Serial адаптер.

Похожие публикации