Самодельный осциллограф на микроконтроллере pic. Самодельный осциллограф на AVR. Варианты решения проблемы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Этот простой и дешёвый 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.

У каждого в жизни был момент, когда понимаешь, « Надо покупать осциллограф! » . В моей практике,в большинстве случаев осциллограф нужен был для наблюдения за формой сигнала (или вообще показывал его наличие), тогда как основные измерения и исследования проводились на других приборах. Многие сейчас со мной поспорят, ну что поделаешь мне так удобней.Поэтому я решил сделать простой осциллограф-пробник. Он не будет отличаться хорошими характеристиками, главная цель, как можно популярней объяснить принцип работы! В конце статьи можно найти архив со всеми исходниками и материалами, которые потребуются. Итак начнем...

Цифровой сигнал - это массив чисел(если сразу по простому), каждое число это значение напряжения в данное время. Отсчеты делаются с определенной частотой, что и называется частотой дискретизации. Переводом из аналогового сигнала в дискретный и занимается АЦП. Существуют специальные микросхемы реализующие данную функцию, но микроконтроллеры специально снабжаются выводами с которых можно снимать значения. Откроем datasheet на Atmega8, там видим фразу: 8 каналов(или 6 для корпуса PDIP) 10-бит АЦП. Т.е. можно подвести 8 сигналов к каждому из этих каналов, и снимать с каждого свой сигнал! 10-бит же означает, что в каждый момент времени напряжение кодируется 2-чным числом из 10 цифр. Запомните этот факт.

Теперь, наш АЦП не понимает отрицательного напряжения, он производит измерения от 0-GND до AREF. Верхний порог может быть задан в регистре ADMUX как внутренний источник = 2,56 В или же может быть равен напряжению на ножке AVCC(что обычно и делается). Так же в ADLAR(смотри рисунок ниже) можно задавать порядок заполнения результата.

Адрес MUX 0x0000 соответствует входу ADC0, и по аналогии продолжается (если не поняли смотрите в даташите стр 199).

Теперь, запуск АЦП. АЦП может работать в 2 режимах. Первый - однократный режим (Single Conversation), в данном режиме мы подаем команду "Измерить!" он измеряет и выключается (но это так образно). Второй - постоянный запуск (Free Running), где мы настраиваем все, включаем и он работает а мы постоянно снимаем значения. Для реализации нашей задачи больше подходит второй режим, но так сложней контролировать измерение, поэтому будем использовать первый.

Настройка режима АЦП происходит в регистре ADCSRA.

Последнее, что осталось, регистры результатов ADCH - старший бит ADCL - младший. Про них рассказывать не буду, на картинке все видно и понятно.

С теорией все! Теперь напишем программку! Для отладки и обучения АЦП соберем схему в Proteus. Будем делать следующее:

Измерять уровень на входе;

Выводить уровень в двоичном коде (с помощью 8 светодиодов).

Для этого будем работать в режиме ADLAR=1 и считывать только старшие биты ADCH (т.е. 2 младших бита мы теряем, теряется точность, но в допустимых для меня пределах). Программа написана в AVR Studio.

Int main(void) { DDRD=0xFF; ADMUX = 0b01100000;//Настроили верхний порог на напряжение AVCC подвели 3,3В //ADLAR=1 и снимаем АЦП с ножки ADC0 ADCSRA = 0b10001101; //Настраиваем режим АЦП, включаем Single Mode, снимаем АЦП с входа ADC0 _delay_us(10); while(1) { ADCSRA |= 0x40;//Включаем АЦП while((ADCSRA & 0x10)==0);//ждем завершения PORTD=ADCH;//выводим результат } }

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

Для решения этой проблемы нам надо поднять наш сигнал на 1.6 В (половина всего диапазона), т.е. надо прибавить к сигналу половину питания, а сам сигнал в 2 раза ослабить, чтобы значение на входе не превышало наши рамки 0-3.3 В. НО! Так как статья учебная, и тут главное все вам объяснить пойдем проще! Для проверки работы нашего устройства мы будем использовать выход со звуковой карты (а на ПК запущен генератор сигналов), поэтому мы просто кидаем резистор 470 Ом между +3 В и входом АЦП. Так мы получим желаемое смещение.

В итоге, мы сигнал оцифровали. Осталось вывести его на экран.

Для своего проекта я выбрал экран от nokia1100, почему? Да потому что только его нашел в своем городе + на него есть макет в Proteus. Можно использовать и другие, главное данные у нас уже есть (научились их получать!).

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

#include "nokia1100.h" // Подключаем библиотеку NOKIA1100 unsigned int n={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned int deltaU=4,deltaT=0; unsigned int buffer; int flag=0; void LCD_Signal(int index,int znachenie,int deltaU){//функция вывода пикселя в столбце znachenie=znachenie/deltaU; unsigned int h; for(unsigned int i=0;i<8;i++){ nlcd_GotoXY(index,7-i); h=1; for(unsigned int j=0;j<8;j++){ if(i*8+j==znachenie){h=0; nlcd_SendByte(DATA_LCD_MODE,n[j]);} } if(h) nlcd_SendByte(DATA_LCD_MODE,0x00); } } void function_buttons(){//обработка кнопок while(PINB==0x01) flag=1; while(PINB==0x02) flag=2; if(flag==1)deltaU+=2; if(flag==2) deltaT+=10; } int main(void) { nlcd_Init();//инициализация дисплея _delay_us(10); ADMUX =0b01100000;//Настроили АЦП от 0 до AVCC на который мы подаем 3,3 В ADCSRA = 0b10001100;//Настраиваем режим АЦП, вход настраиваем так же на ADC0 while(1) { DDRB=0x00; PORTB=0x00; for(int i=0;i<96;i++){ ADCSRA |= 0x40;//Включаем АЦП while((ADCSRA & 0x10)==0);//Ждем завершения buffer[i]=ADCH;//Записываем в буфер _delay_us(deltaT);//задержка для уменьшения частоты дискритизации } for(int i=0;i<96;i++){//Выводим буфер на экран function_buttons(); LCD_Signal(i,buffer[i],deltaU); } } }

Подключаемые файлы находятся в архиве к статье!

Рассказать в:

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

Несколько месяцев назад, во время сёрфинга в интернете, я наткнулся на осциллограф на микроконтроллере pic18f2550 и графическом дисплее на контроллере ks0108 . Это был сайт steven cholewiak. Я ещё никогда не видел осциллограф на одном микроконтроллере. Для меня это было воодушевляющим и я решил сделать нечто подобное, но на языке c. Лучшим решением для меня было использовать winavr, он базирован на основе общедоступного компилятора avr-gnu и отлично работает с avr studio 4. Графическая библиотека, которую я использовал, была создана мною специально для этого проекта. Она не для общего использования. Если вы хотите включить её в свой код, вам надо будет переделать её под ваши нужды. Максимальная частота которую может отобразить этот осциллограф это 5 кГц, для меандра. Для других сигналов (синус, треугольник) - 4 кГц.

Описание
Напряжение питания схемы - 12В. С помощью преобразователей оно преобразуется в 8.2 В для ic1 и 5 В для ic2 и ic3. Эта схема может измерять напряжение от -2.5 В до +2.5 В или от 0 В до +5 В в зависимости от состояния переключателя s1 (переменный или постоянный ток). Используя делитель 1:10 можно измерять в 10 раз большее напряжение. Кроме того с помощью s2 можно дополнительно разделить входное напряжение на 2.

Программирование atmega32 .
avr_oscilloscope.hex - прошивка для микроконтроллера. При прошивке выставьте fuse биты микроконтроллера на тактирование от внешнего кварца. После прошивки обязательно отключите jtag! Если этого не сделать, при включении вы увидите начальный экран и при переходе на экран осциллографа вы опять увидите начальный экран.

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

Использование.
Вы можете перемещать луч вверх или вниз по экрану, нажав кнопку s8 или s4, соответственно. Напряжение в 1 В соответствует одному делению на дисплее. С s7 и s3 вы можете увеличить или уменьшить скорость измерения. Нажав на кнопку s6 можно заморозить экран.

Печатная плата (101x160mm) и расположение компонентов.

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

За основу этой разработки взят малогабаритный двухлучевой осциллограф-мультиметр, описанный в . В нём оставлен только один "луч". Максимальная чувствительность канала вертикального отклонения повышена с 640 до 100 мВ (на весь экран). Минимальная длительность развёртки уменьшена с 5 до 3 мс, а при наблюдении логических сигналов — до 300 мкс. Значительно уменьшены габариты прибора, его масса и ток потребления.

Основные технические характеристики

Схема осциллографа изображена на рис. 1. Исследуемый сигнал произвольной формы в зависимости от его амплитуды подают на "Вход 1" — одно из гнёзд 1—5, 7, 8 разъёма Х1, а с его гнездом 6 соединяют общий провод источника исследуемого сигнала. Резисторы R1—R6, задающие чувствительность канала вертикального отклонения осциллографа, смонтированы прямо на выводах гнёзд разъёма. Через усилитель на ОУ К140УД608 (DA1) сигнал поступает на вывод 2 (RA0) микроконтроллера (DD1), служащий входом встроенного в него АЦП. Цифровые отсчёты мгновенных значений сигнала за время, соответствующее выбранной длительности развёртки, сохраняются в оперативной памяти микроконтроллера и отображаются на графическом ЖКИ HG1 в виде осциллограммы. Использован ЖКИ , управление которым ведётся по линиям портов RB0—RB4 и RC0—RC7 микроконтроллера. При разработке программного обеспечения очень полезными оказались рекомендации из статьи .

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

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

Если установлена длительность развёртки 300 мкс (на весь экран), АЦП микроконтроллера уже не успевает оцифровывать отсчёты исследуемого сигнала. При такой скорости на индикаторе можно наблюдать только характер изменения во времени логических уровней импульсов, поданных на гнездо 9 разъёма Х1 ("Вход 2" осциллографа). Через разделительный конденсатор С1 эти импульсы поступают непосредственно на дискретный вход RA1 (вывод 3) микроконтроллера.

Осциллограф собран навесным монтажом на плате (рис. 2), помещённой в корпус, сделанный из коробки для рыболовных снастей. Индикатор HG1 размещён на крышке корпуса. Внешний вид действующего прибора показан на рис. 3. Видимая на фотоснимках третья кнопка оставлена неподключённой. В работе с прибором она не используется.

Исходный код программы на ассемблере и прошивка для микроконтроллера PIC16F873A доступны по .

Литература:

1. Кичигин А. Малогабаритный двухлучевой осциллограф-мультиметр. - Радио, 2004, № 6, с. 24-26.
2. Жидкокристаллический модуль MT-12864J. - .
3. Милевский А. Использование графического ЖКИ MT-12864A с микроконтроллером фирмы Microchip. - Радио, 2009, № 6, с. 28-31.