Домашен осцилоскоп на микроконтролер pic. Домашен AVR осцилоскоп. Опции за решаване на проблема

При настройване на сглобени електронни схеми, особено цифрови, е необходимо да се извършват различни измервания. За да направите това, можете да използвате различни сонди, например логическа сонда, най-простата, състояща се от светодиод, резистор за ограничаване на тока и проводници, завършващи в единия край на сондата, а от другия крокодил. С него можем да се уверим, че имаме логическа единица или нула, например, на крака MK или изхода на Arduino. Реших да продължа по-нататък, да събера това, което смятам, че ще представлява интерес за простотата на сглобяване за много начинаещи, позволете ми да получа полезни знания от теорията, да погледнете формата на вълната, например, как изглежда, когато мига същия светодиод и разбира се, че могат да проверят за логична нула или единици на МК. По принцип реших да сглобя обикновена сонда за осцилоскоп, с USB порт, свързан към компютър.

Тази схема е чуждестранно развитие, откъдето по-късно мигрира към Рунет и се разпространява в много сайтове. В търсене на подробна информация по време на нейното сглобяване той обиколи много сайтове, поне 10-12. Всички те имаха само кратко описание, преведено и извадено от чужд сайт и фърмуер за изтегляне, с пример за свързване. По-долу е представена диаграма на тази осцилоскопна сонда:

Умишлено не го наричам чист осцилоскоп, защото не достига до това заглавие. Нека разгледаме по-отблизо какво представлява. Бюджетът на устройството е само 250, максимум 300 рубли и всеки ученик или ученик може да си позволи да го сглоби. Като визуално помагало, за развиване на уменията за запояване, мигащи МК, като цяло, за практикуване на всички умения, необходими за независимо изграждане на цифрови устройства. Ако някой веднага се запали и се кани да изтича веднага до магазина, купувайки радио компоненти, изчакайте, тази осцилоскопна сонда има няколко значителни недостатъка. Той има много неудобен софтуер, черупка, в която всъщност ще наблюдаваме нашия сигнал. Следващата снимка показва как хващам мимеха от пръста си:

Да се \u200b\u200bкаже, че обвивката е сурова, означава да не казвам нищо ... Дори обвивката, използвана като нискочестотен осцилоскоп на звукова карта, значително я заобикаля в своите възможности. На следващата снимка за кратко докосвам клемите на акумулатора с помощта на сонди:

Като начало, нашите показания се показват в миливолти и просто няма скала за напрежение, съответстваща на реалните стойности. Но това не е всичко. Диаграмата на устройството, както виждаме, гледайки фигурата с диаграмата, се основава на Tiny 45 MK.

Това устройство не използва външен високоскоростен АЦП и това е неговият съществен недостатък. Това означава, че когато измерваме сигнала с честота, за която нашата сонда - осцилоскопът не е проектиран, получаваме на екрана само права линия ... Наскоро трябваше да поправя дистанционното управление, диагностиката показа, че захранването идва, а пистите са цели, т.е. а контактите на дъската, заедно с гумените бутони са почистени, без резултат, дистанционното управление не показва признаци на живот. В местния радио форум бях помолен да заменя керамичния резонатор, между другото нямаше пукнатини или други външни знаци, по които можеше да се реши, че частта е дефектна. Реших да изслушам съвета, отидох до магазина и купих нов керамичен резонатор на 455 kHz, струваше му само 5 рубли, отново го спойках и дистанционното управление веднага оживя.

Защо ви казвам това? И на факта, че след сглобяването на тази сонда ми хрумна да проверя генерирането на сигнала на часовника на дистанционното управление. Ето го. Сондата за осцилоскоп показа условно ниско ниво на единия крак на резонатора, високо ниво на другия и начертава права линия. Не може да се справи дори с честотата от 455 kHz ... Сега, когато сте предупредени за недостатъците му, можете сами да решите дали имате нужда от такава осцилографска сонда. Ако да, тогава продължете да четете ... ... Входният импеданс на двата канала на осцилоскопа е 1 MΩ.

За тази цел ще трябва да закупим и спойка тунинговите резистори на 1 MΩ, разделителят на сигнала е 1 \\ 10. Съответно, съпротивлението на разделителя, трябва да бъде 900 и 100 кило ома. Реших да използвам 2 канала на осцилоскопа, защото имаше конектор - гнезда, споени на платката, две лалета, а разликата в цената на частите за мен всъщност беше само цената на тунинг резистора. Друго нещо е, че и двата канала не бяха идентични в показанията си. Както виждаме на диаграмата, единият канал е проектиран да работи с разделител, а другият - не. Е, да, няма значение, ако искате този канал да работи без разделител, достатъчно е да развием позицията на плъзгача на настройващия резистор до нула, като по този начин приложим сигнал от изхода директно към крака на MK. Това може да бъде полезно, когато измервате сигнали по две линии с ниска амплитуда. Следващата снимка показва как приемам сигнал от мултивибратор:

Можем също така да завъртим копчето за настройка на резистора, за да зададем кой разделител ни е нужен, 1 \\ 10, 1 \\ 25, 1 \\ 50, 1 \\ 100 или който и да е друг, чрез измерване на съпротивлението с мултицет, между централния терминал и крайните клеми на настройващия резистор. Това може да е необходимо за измерване на форма на вълната с голяма амплитуда на напрежението. За да направите това, трябва само да изчислите полученото съотношение на съпротивлението на разделителя. Има още един важен нюанс, на чуждия сайт на автора на схемата, при избора на предпазители е посочено, че трябва да преведете предпазителя - бит Reset Disable в положение on. Както помним, деактивирането на този бит за предпазители спира възможността за последователно програмиране. Предпазителите, които трябва да бъдат променени, са показани на следната фигура:

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

Нека да анализираме схемата на осцилоскопа по-подробно, на сигналните линии на USB портовете D + и D-, са инсталирани крайни резистори от 68 ома. Не препоръчвам да променяте тяхната номинална стойност. Между сигналните проводници и земята се препоръчва да се инсталират керамични кондензатори на 100 nanoFarads, за да се намали смущаването. Същият кондензатор за 100 nanoFarads, трябва да инсталирате паралелно с електролитичните, при 47 microFarads, инсталирани на веригите +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. Един от проводниците - осцилоскопните сонди, завършва за измерване с сонда от мултицет за сигнално ядро \u200b\u200bи крокодил за свързване със земята.
  2. Втората сонда завършва с крокодили с различни цветове, както за сигналното ядро, така и за земята.

Заключение: сглобяването на тази сонда е по-целесъобразно, вместо визуално помагало, за изучаване на формата на нискочестотни сигнали. За практически цели, например, за проверка и конфигуриране на комутационни захранващи устройства, по-специално работата на PWM контролери, тази сонда не е подходяща за такава, тъй като не може да осигури необходимата скорост. Следователно той не може да бъде заместител, дори най-простият съветски осцилоскоп и дори прости осцилоскопи с Ali express.

Можете да изтеглите архива с веригата, фърмуера, екрана на сливане и обвивката на осцилографската сонда, като използвате връзката. Всички успехи, особено за - AKV.

Обсъдете статията USB Sampler-Oscillograph


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

Максимална честота на дискретизация - 6 MHz;
  - честотна лента на входния усилвател - 0-16 MHz;
  - Разделител на входа - от 0,01 V / div до 10 V / div;
  - Входно съпротивление - 1 MΩ;
  - Резолюция - 8 бита.

Схематична схема на осцилоскопа е показана на фигура 1.

Фиг   Принципна схема на осцилоскопа


За различни настройки и отстраняване на неизправности във всички видове преобразуватели на енергия, контролни вериги за домакински уреди, за изучаване на всички видове устройства и др., Където не се изискват точни измервания и високи честоти, просто трябва да разгледате формата на вълната с честота, да речем, до няколко мегагерца - повече от достатъчно.

Бутонът S2 е част от хардуера, необходим за зареждащия механизъм. Ако го държите натиснат, докато свързвате осцилоскопа към USB, PIC ще работи в режим на зареждане и можете да актуализирате фърмуера на осцилоскопа, като използвате съответната програма. Като ADC (IC3) се използва "телевизионна" микросхема, TDA8708A. Доста се предлага във всички видове "Chip and Dip" ах и други места за извличане на части. Всъщност това не е само ADC за видео сигнал, но и входен превключвател, еквалайзер и ограничител за нивата на бяло - черно и т.н. Но всички тези прелести не се използват в този дизайн. ADC е много бърз - честота на дискретизация - 30 MHz. Във веригата той работи с тактова честота 12 MHz - не е нужен по-бързо, защото PIC18F2550 просто няма да може да чете данните по-бързо. И колкото по-висока е честотата, толкова по-голяма е консумацията на ADC. Вместо TDA8708A, можете да използвате всеки друг високоскоростен АЦП с паралелен изход на данни, като TDA8703 или нещо от аналогови устройства.

Тактовата честота за ADC беше умело извлечена от PIC "a - PWM беше пуснат там с честота 12 MHz и работен цикъл 0,25. Тактовият импулс с положителна полярност преминава в Q1 PIC цикъла" и така за всеки достъп до порт B, който се случва в Q2 цикъла ADC ще бъдат готови. Ядрото на PIC работи с честота 48 MHz, получена чрез PLL от кварц от 4 MHz.Командата за копиране до регистър се изпълнява в 2 цикъла или 8 цикъла.Така че е възможно да се съхраняват ADC данните в паметта с максимална честота 6 MHz, като се използва непрекъсната последователност MOVFF PORTB, POSTINC0 команди, една 256-байтова RAM банка PIC18F2550 се използва за буфера на данни.

По-ниските честоти на вземане на проби се осъществяват чрез добавяне на закъснение между инструкциите на MOVFF. Фърмуерът осъществява най-простата синхронизация на отрицателния или положителния ръб на входния сигнал. Цикълът на събиране на данни към буфера се стартира от команда от компютъра чрез USB, след което можете да четете тези данни чрез USB. В резултат на това компютърът получава 256 8-битови проби, които може например да се покаже като изображение. Входната верига е проста за позор. Разделителят на входното напрежение е без излишъци на въртящия се превключвател. За съжаление не беше възможно да се разбере как да се прехвърли положението на превключвателя към PIC, следователно в графичното лице на осцилоскопа има само стойности на напрежението в относителни единици - мащабни деления. Усилвателят на входния сигнал (IC2B) работи с усилване 10 пъти, нулевото отместване, необходимо за ADC (приема сигнал в диапазона от Vcc - 2,41 V до Vcc - 1,41 V), се осигурява от напрежението от PIC програмируемия генератор на референтно напрежение (CVREF IC1, R7, R9) и разделителя от отрицателното захранващо напрежение (R6, R10, R8). защото имаше излишен усилвател (IC2A) в корпуса на усилвателя, аз го използвах като последовател на напрежение пристрастия.

Не забравяйте за капацитивните вериги за компенсиране на честотата на входния капацитет на вашия оптичен усилвател и ограничаващи диоди, които не са на веригата - трябва да изберете капацитетите успоредно с делителните резистори и резистор R1, в противен случай честотните характеристики на входната верига ще разрушат целия пропускателен диапазон. С постоянен ток всичко е просто - входното съпротивление на усилвателя и затворените диоди е с порядък по-голямо от съпротивлението на делителя, така че разделителят може просто да се изчисли, без да се взема предвид входното съпротивление на усилвателя. За променлив ток входният капацитет на усилвателя и диодите е значително количество в сравнение с капацитета на делителя. От съпротивлението на делителя и входния капацитет на усилвателя и диодите се получава пасивен нискочестотен филтър, който изкривява входния сигнал.

За да се неутрализира този ефект, е необходимо да се направи входният капацитет на усилвателя и диодите много по-малък от капацитета на делителя. Това може да стане чрез изграждане на капацитивен делител, успореден на резистивния. Трудно е да се изчисли такъв делител, защото както входната вместимост на веригата, така и капацитетът на монтаж са неизвестни. По-лесно е да го вземеш.

Методът за подбор е следният:
  1. Поставете кондензатор с капацитет приблизително 1000 pF успоредно с R18.
2. Изберете най-чувствителната граница, приложете правоъгълни импулси с честота 1 kHz и обхват от няколко деления на скалата към входа и изберете кондензатор, успореден на R1, така че правоъгълниците на екрана да изглеждат като правоъгълници, без пикове или запушвания по фронтовете.
  3. Повторете операцията за всяка следваща граница, като изберете кондензатори, успоредни на всеки делително съпротивление, в съответствие с ограничението.
  4. Повторете процеса от началото и се уверете, че всичко е наред при всички граници (може да се появи капацитетът на инсталирането на кондензатори) и ако нещо не е наред, леко коригирайте капацитетите.

Самият оптичен усилвател е Analog Devices AD823. Най-скъпата част от осцилоскопа. :) Но от друга страна, честотната лента от 16 MHz е доста добра. И освен това, това е първото от бързите, които попаднаха на дребно за скъпи пари.

Разбира се, този двоен оп усилвател без никакви промени може да бъде заменен за нещо като LM2904, но тогава ще трябва да се ограничи до звуковите сигнали. Повече от 20-30 kHz няма да дърпа.

Е, формата на правоъгълна, например, сигнали леко ще се изкриви. Но ако можете да намерите нещо като OPA2350 (38MHz), тогава ще бъде прекрасно напротив.

Източникът на отрицателно захранващо напрежение за оп усилвателя се основава на добре познатата зарядна помпа ICL7660. Минимално пристягане и без индуктивност. Изходният ток е -5 V, разбира се, е малък, но не ни трябва много. Силовите вериги на аналоговата част са изолирани от смущения от броя на индуктивността и кондензаторите (L2, L3, C5, C6). Индуктите бяха уловени с номинална стойност 180 uH, затова ги настроих. Без смущения в храненето, дори и в най-чувствителната граница. PIC фърмуерът се качва чрез USB с помощта на зареждащо устройство, което седи от 0-ия адрес в паметта на програмата и се стартира, ако държите S2 натиснат, докато го включите. Така че преди да мига PIC - първо попълнете зареждащия механизъм там - ще бъде по-лесно да промените фърмуера.
  Източниците на драйвери за осцилоскоп за ядра 2.6.X са в архива с фърмуер. Има и конзолна програма за проверка на работоспособността на осцилоскопа. Източниците му си струват да разгледате, за да разберете как да комуникирате с осцилоскопа, ако искате да напишете собствен софтуер за него.
  Програмата за компютъра е проста и аскетична, външният му вид е показан на фигури 2 и 3. Свържете осцилоскопа към USB и стартирайте qoscilloscope. Изисква се QT4.

Всеки в живота е имал момент, когато разбираш, " Трябва да купим осцилоскоп!". В моята практика в повечето случаи е необходим осцилоскоп, който да следи формата на вълната (или дори да показва нейното присъствие), докато основните измервания и изследвания се извършват на други устройства. Мнозина ще спорят сега с мен, какво можеш да ми направиш толкова удобно. Затова реших да направя обикновена осцилоскопна сонда. Той няма да се отличава с добри характеристики, основната цел, колкото е възможно по-популярно да се обясни принципа на работа! В края на статията можете да намерите архив с всички източници и материали, които ще бъдат необходими. Така че нека започнем ...

Цифровият сигнал е масив от числа (ако веднага е прост), всяко число е стойност на напрежението в даден момент. Пробите се правят с определена честота, която се нарича честота на вземане на проби. Преобразуването от аналогов в дискретен е ADC. Има специални микросхеми, които изпълняват тази функция, но микроконтролерите са специално оборудвани с изходи, от които можете да приемате стойности. Нека отворим листа с данни на Atmega8, там виждаме фразата: 8 канала (или 6 за PDIP пакета) 10-битов ADC. Т.е. Можете да внесете 8 сигнала на всеки от тези канали и да вземете свой собствен сигнал от всеки! 10-битов означава, че във всеки момент от време напрежението се кодира от двуцифрено число от 10 цифри. Помнете този факт.

Сега, нашият ADC не разбира отрицателното напрежение, той прави измервания от 0-GND до AREF. Горният праг може да бъде зададен в регистъра на ADMUX като вътрешен източник \u003d 2,56 V или може да бъде равен на напрежението на AVCC крака (което обикновено се прави). Също в ADLAR (вижте фигурата по-долу) можете да определите реда, в който се попълва резултатът.

MUX адресът 0x0000 съответства на входа ADC0 и по аналогия продължава (ако не разбирате, вижте листа с данни на стр. 199).

Сега стартирайте ADC. ADC може да работи в 2 режима. Първият е Single Conversation, в този режим даваме командата "Мярка!" измерва и изключва (но е толкова образно). Второто е постоянно стартиране (Free Running), при което ние конфигурираме всичко, включваме го и работи и ние постоянно приемаме стойности. За изпълнението на нашата задача вторият режим е по-подходящ, но е по-трудно да контролираме измерването, така че ще използваме първия.

Настройката на режим ADC се извършва в регистъра на ADCSRA.

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

С теория всичко! Сега нека напишем програмата! За отстраняване на грешки и обучение на ADC ние сглобяваме схемата в Proteus. Ще направим следното:

Измервайте нивото на входа;

Показва нивото в двоичен код (използвайки 8 светодиода).

За целта ще работим в режим ADLAR \u003d 1 и ще четем само най-значимите битове на ADCH (т.е. губим 2-ма най-значими бита, точността се губи, но в рамките на разрешените за мен граници). Програмата е написана в AVR Studio.

Int main (void) (DDRD \u003d 0xFF; ADMUX \u003d 0b01100000; // Задаване на горния праг на напрежение AVCC с 3.3V // ADLAR \u003d 1 и премахване на ADC от ADC0 пин ADCSRA \u003d 0b10001101; // Задаване на режим ADC, включване на един режим , премахнете ADC от входа ADC0 _delay_us (10); докато (1) (ADCSRA | \u003d 0x40; // Включете ADC докато ((ADCSRA & 0x10) \u003d\u003d 0); // изчакайте завършване PORTD \u003d ADCH; // отпечатайте резултата) )

Вижте фърмуер какво се случи. Когато синусът се увеличи от 0 до 3.3, виждаме как стойността нараства до максимум, но когато синусът премине в отрицателна част, имаме стабилно 0.

За да разрешим този проблем, трябва да повишим сигнала си с 1,6 V (половината от целия диапазон), т.е. трябва да добавите половината мощност към сигнала и да отслабите сигнала 2 пъти, така че стойността на входа да не надвишава нашите граници 0-3,3 V. НО! Тъй като статията е образователна, а основното е да ви обясним всичко, нека по-лесно! За да тестваме работата на нашето устройство, ще използваме изхода от звуковата карта (а генераторът на сигнала работи на компютъра), така че просто хвърляме резистор 470 Ohm между +3 V и ADC входа. Така получаваме желаните пристрастия.

В резултат на това дигитализирахме сигнала. Остава да го покажем на екрана.

За моя проект избрах екран от nokia1100, защо? Да, защото току-що го намерих в моя град + той има оформление в Proteus. Можете да използвате други, основните данни, които вече имаме (научихме се как да ги получим!).

Няма да опиша как да инициализирам екрана (има толкова много налична информация в Интернет, не искам да го повтарям + поставям възможно най-много коментари в източника), но просто ще дам текста на програмата с коментари:

   #include "nokia1100.h" // Свържете библиотеката NOKIA1100 без подпис int n \u003d (0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01); неподписан int deltaU \u003d 4, deltaT \u003d 0; неподписан int буфер; int flag \u003d 0; void LCD_Signal (int index, int znachenie, int deltaU) (// функция за извеждане на колона в колоната znachenie \u003d znachenie / deltaU; unsigned int h; for (unsigned int i \u003d 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. Никога не съм виждал осцилоскоп на един микроконтролер. Това беше вдъхновяващо за мен и реших да направя нещо подобно, но в в. Най-доброто решение за мен беше да използвам winavr, той се основава на публичния avr-gnu компилатор и работи добре с avr studio 4.Графичната библиотека, която използвах, беше създадена от мен специално за този проект. Не е за общо ползване. Ако искате да го включите във вашия код, ще трябва да го прекроите според вашите нужди. Максималната честота, която този осцилоскоп може да показва, е 5 kHz за меандъра. За други сигнали (синус, триъгълник) - 4 kHz.

описание
Захранващото напрежение на веригата е 12V. Използвайки преобразуватели, той се преобразува в 8,2 V за ic1 и 5 V за ic2 и ic3.   Тази верига може да измерва напрежение от -2,5 V до +2,5 V или от 0 V до +5 V в зависимост от състоянието на превключвателя s1 (променлив или постоянен ток). С помощта на разделител 1:10 можете да измерите 10 пъти напрежението. Освен това, използвайки s2, можете допълнително да разделите входното напрежение с 2.

Програмиране на Atmega32.
avr_oscilloscope.hex   - фърмуер за микроконтролера. Когато мига, настройте битовете на предпазителя на микроконтролера на часовник от външен кварц. След като мига, не забравяйте да деактивирате jtag! Ако не направите това, когато включите, ще видите началния екран и когато отидете на екрана на осцилоскопа, отново ще видите началния екран.

Калибриране.
Само две неща се нуждаят от калибриране. Това са променливите резистори p1 и p2. p1 е необходим за преместване на лъча в центъра на екрана, а p2 за регулиране на контраста на дисплея.

Използвайте.
Можете да преместите лъча нагоре или надолу по екрана, като натиснете съответно s8 или s4. Напрежение от 1 V съответства на едно разделение на дисплея. Със s7 и s3 можете да увеличите или намалите скоростта на измерване.С натискане на бутона s6 можете да замразите екрана.

Печатна платка (101х160мм) и оформление на компоненти.

Предлаганото устройство по-скоро принадлежи към категорията на осцилографско-графичните сонди. Възможностите му позволяват само „по око“ да оценява формата и параметрите на нискочестотните сигнали. Въпреки това, поради малкия си размер и ефективност, такъв осцилоскоп може да намери приложение в любителската радио практика, особено в диагностиката и ремонта на оборудване в областта.

Основата на това развитие е малкият двумелков мултицет с осцилоскоп, описан в. В него е останал само един лъч. Максималната чувствителност на канала за вертикално отклонение се увеличава от 640 на 100 mV (цял екран). Минималното време на сканиране бе намалено от 5 на 3 ms, а при наблюдение на логически сигнали - до 300 μs. Значително намаляха размерите на устройството, неговата маса и консумация на ток.

  Основни спецификации

Веригата на осцилоскопа е показана на фиг. 1. Изследваният сигнал с произволна форма, в зависимост от неговата амплитуда, се подава към "Вход 1" - един от гнездата 1-5, 7, 8 на конектор X1 и към неговия гнездо 6 е свързан общ проводник на източника на изследвания сигнал. Резисторите R1 - R6, които задават чувствителността на канала за вертикално отклонение на осцилоскопа, се монтират директно върху клемите на съединителите. Чрез усилвателя в OA K140UD608 (DA1) сигналът се подава към пин 2 (RA0) на микроконтролера (DD1), който служи като вход към вградения АЦП. Цифровите показания на моменталните стойности на сигнала през времето, съответстващо на избраната продължителност на сканиране, се съхраняват в оперативната памет на микроконтролера и се показват на графичния LCD HG1 под формата на осцилограма. Използван е LCD, който се контролира от линиите на портовете RB0 - RB4 и RC0 - RC7 на микроконтролера. При разработването на софтуер препоръките от статията се оказаха много полезни.

Променливият резистор R10 е проектиран да компенсира формата на вълната вертикално. Избира се резистор R17, постигащ най-добрия контраст на изображението на индикаторния екран.

Премахването на осцилоскопа е еднократно, всеки път, когато се натисне бутона SB2. Продължителността на метенето се променя чрез натискане на бутона SB1. След всяко щракване върху индикаторния екран се показва число - стойността на избраната продължителност.

Ако времето за сканиране е зададено на 300 μs (цял екран), ADC на микроконтролера вече не успява да дигитализира пробите на изследвания сигнал. При тази скорост индикаторът може да наблюдава само характера на промяната във времето на логическите нива на импулси, приложени към гнездо 9 на конектор X1 ("Вход 2" на осцилоскопа). Чрез разделителния кондензатор С1 тези импулси се подават директно към цифровия вход RA1 (щифт 3) на микроконтролера.

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

Изходният код на асемблера и фърмуера за микроконтролера PIC16F873A са достъпни от.

Литература:

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