Мазмұны:

Қос ізді осциллограф: 11 қадам (суреттермен)
Қос ізді осциллограф: 11 қадам (суреттермен)

Бейне: Қос ізді осциллограф: 11 қадам (суреттермен)

Бейне: Қос ізді осциллограф: 11 қадам (суреттермен)
Бейне: Еркебұлан Тоқтар - Бізде ше? | Серік Ибрагимов 2024, Шілде
Anonim
Қос ізді осциллограф
Қос ізді осциллограф

Мен бұрынғы шағын осциллографты жасаған кезде мен ең кішкентай ARM микроконтроллерін STM32F030 (F030) қаншалықты жақсы жасай алатынымды көргім келді және бұл жақсы жұмыс жасады.

Түсініктемелердің бірінде STM32F103 (F103) бар «көк таблетка» F030 бар әзірлеу тақтасынан гөрі жақсы, мүмкін одан да арзан болуы мүмкін деп ұсынылды. Бірақ мини осциллограф үшін мен әзірлеу тақтасын емес, F030-ды SMD-DIP тақтасында қолдандым, сондықтан көк таблетка аз болмайды, мен оның арзан болатынына күмәнданамын.

Код енді Gitlab -те қол жетімді:

gitlab.com/WilkoL/dual-trace-oscilloscope

Жабдықтар

Бөлшектер тізімі: - пластикалық қорап - перфорд тақтасы (екі жақты прототип тақтасы 8x12 см) - Көк таблетка - ST7735s TFT дисплейі - литий -ионды аккумулятор - HT7333 3.3В төмен түсу реттегіші - MCP6L92 қос опамп - TSSOP8 DIP8 тақтасына дейін - 12 МГц кристалл (қажет емес)) - айналмалы кодер плюс тұтқасы (2x) - powerwitch - банан терминалдары (4x) - литий -ионды зарядтау тақтасы - бірнеше резисторлар мен конденсаторлар - нейлон аралықтары, гайкалар мен бұрандалар

Құралдар:

- дәнекерлеу станциясы - дәнекерлеу 0,7 мм - кейбір сым - бүйірлік кескіш - стақандар мен лупа - бұрғы - мультиметр - осциллограф - STLink -V2

Бағдарламалық қамтамасыз ету:

- STM32IDE - STM32CubeMX - STLink Utility - LowLayer кітапханасы - ST7735s үшін бейімделген кітапхана - Блокнот ++ - Kicad

1 -қадам: Interleave немесе SI -синхронды режим

Аралық немесе бір мезгілде режим
Аралық немесе бір мезгілде режим
Аралық немесе бір мезгілде режим
Аралық немесе бір мезгілде режим

Көк таблетка

Бірақ бұл идея болды, мен F103 екі ADC бар екенін білдім! Егер мен бұл екі ADC -ді «интерлей» режимінде бірге қолдансам ше, мен бұрын STM32F407 (F407) арқылы істедім. Таңдау жылдамдығы екі есе артады. Мұны жылдам микроконтроллермен біріктірсеңіз, шағын осциллографтың үлкен мұрагері болады.

Аралық режим F103 -тегі ADC -тер F030 -ға (және F407) қарағанда біршама жетілдірілмеген, сіз ажыратымдылықты таңдай алмайсыз. Ең бастысы, сіз екі ADC арасындағы уақытты өзгерте алмайсыз. Енді, егер сіз интерлейлік режимді қолдансаңыз, әдетте кез келген үлгілер арасындағы ең қысқа уақыт ішінде іріктеуді мүмкіндігінше тез жүргізгіңіз келеді, бірақ осциллографпен уақытты өзгерту қажет. Мүмкін, мұны әлі де жасауға болады, мен кәсіби осциллограф дизайнері емеспін, бірақ мен интерлей режимін қолдану жоспарынан бас тарттым.

Бір мезгілде режим

Бірақ, екі ADC-тің болуы көптеген басқа мүмкіндіктерді береді, екі ADC-ті де «бір мезгілде» режиміне қоюға болады. Қосарлы осциллограф туралы не деуге болады?

Қос ізді осциллограф жасауға тырысамын деп шешкенде, мен мини осциллографта жоқ ауыспалы кіріс сезімталдығына ие болғым келді. Бұл кірістердегі әлсіреткішті (және күшейткішті) білдіреді. Мүмкін мен одан да көп нәрсені қалайтын шығармын? Сондықтан мен «жақсы көретіндердің» шағын тізімін жасадым.

ТІЛЕК ТІЗІМІ

екі арна

екі арнада да ауыспалы сезімталдық

екі арнада да іске қосылады

екі арнада да ауыспалы триггер деңгейі

ауыспалы ығысу

бір батарея қуаты

мини-осциллограф сияқты қорапқа салыңыз

2 -қадам: прототиптеу

Прототиптеу
Прототиптеу
Прототиптеу
Прототиптеу

Әдеттегідей мен бұл жобаны тақтадан бастадым. (Суретті қараңыз) Ал, перформат тақтасында бәрін дәнекерлемес бұрын, мен оның таңдалған жоба қорабына қалай сәйкес келетінін білуге тырысамын. Бұл сәйкес келеді, бірақ тек қана. Кейбір бөліктер экран астында, екіншілері көк таблетка астында жасырылады. Тағы да, менің жобаларымның көпшілігінде, бұл бір рет болатын жоба, мен оған ПХД жобаламаймын.

3 -қадам: сөндіргіштер

Сөндіргіштер
Сөндіргіштер

Кәдімгі осциллографтарда кіріс сөндіргіштері - кіші сигнал релесі бар резисторларды қосу мен өшіру арқылы әлсіреу мен күшейтуді өзгертетін тізбектер. Менде бұл реле болса да, мен олардың 4 вольттан төмен ауыспайтынын білемін, бұл олар тек толық жүктелген литий -ионды аккумулятормен жұмыс істейтінін білдіреді (4.2V). Маған резисторларды ауыстырудың басқа әдісі қажет болды. Әрине, мен жай ғана механикалық қосқыштарды орната аламын, бірақ бұл жобалық қорапқа енді сәйкес келмейтін болар еді, мүмкін мен қайтадан жақсы цифрлық потенциометрді қолданып көрер едім (менде тым шулы).

Содан кейін мен «аналогты қосқыштар» туралы ойладым, олардың көмегімен цифрлық потенциометрді өзім жасай аламын. Бөлшектер жинағында мен төрт аналогты қосқышы бар CD4066 таптым. Идея - резисторды кері байланыс резисторына параллель қосу және өшіру арқылы опам айнымалысының кері байланыс резисторын жасау.

Бұл өте жақсы жұмыс істейді, бірақ 4066 -да 4 қосқышы бар және 2 арнасы бар болса, сезімталдықтың үш деңгейінен асыруға болмайды. Мен әр дивизион үшін 500мВ, 1В және 2В таңдадым, себебі бұл мен жиі қолданатын кернеу деңгейлері. Экран 6 дивизионға бөлінген, сондықтан -1,5 В -тан +1,5 В дейін, -3 В -тан +3 В -қа дейін және 6 В -тан 6 В -қа дейінгі диапазондарды құрайды.

«Виртуалды жермен» сіз бұл диапазондарды жоғары және төмен жылжытуға болады, сондықтан тіпті 0v-ден +12V-ге дейін мүмкін болады.

4 -қадам: Виртуалды жер

Виртуалды жер
Виртуалды жер
Виртуалды жер
Виртуалды жер

Осциллограф бір рельсті (3.3В) қолданатындықтан, опампаларға виртуалды жер деңгейі қажет немесе олар жұмыс істемейді. Бұл виртуалды жер деңгейі PWM көмегімен TIM4 бір шығыс арнасында жасалады, оның жұмыс циклі бірнеше пайыздан жүз пайызға дейін өзгереді. 1k резисторы мен 10uF конденсаторы бар төмен өту сүзгісі оны (дерлік) 0В -тан (дерлік) 3,3В кернеуге айналдырады. Квадрат толқынның жиілігі 100 кГц -тен төмен, сондықтан қарапайым төмен өту сүзгісі жеткілікті жақсы.

Бұл осциллографтың ғимаратында кешірек сізде арналар үшін екі бөлек есеп айырысу мүмкін емес екенін түсіндім. Бұл бір қуат көзімен кіріс деңгейінің опампалардың нақты жер деңгейінен бөлек болуына байланысты. Осылайша, екі арна да GND параметрін өзгерткендей қозғалады.

5 -қадам: Ротари -кодерлер және күйін келтіру

Ротари -кодерлер және жөндеу
Ротари -кодерлер және жөндеу
Ротари -кодерлер және жөндеу
Ротари -кодерлер және жөндеу

Шағын осциллографта мен барлық функциялар үшін бір ғана айналмалы кодерді қолдандым. Бұл қос осциллографты қолдануды қиындатады, сондықтан мұнда маған екі қажет. Аттенуаторлар мен виртуалды жер деңгейіне арналған бір кодер, ал уақыт базасы мен іске қосуға арналған басқа кодер. Өкінішке орай, менің басқа жобамдағыдай, бұл айналмалы кодерлер өте «шулы». Олар соншалықты нашар, олар «кодер-режимде» таймерлермен жұмыс істемейді, оларды оқудың стандартты әдісі. Мен TIM2 таймері бар кодтау механизмін әр 100us сайын тексеріп отыру керек болды. Бұл таймер өз кезегінде кодерлерде біршама белсенділік болған кезде ғана іске қосылады, бұл кіріс порттарындағы EXTI функциясымен тексеріледі. Енді кодерлер жақсы жұмыс істейді.

Көріп отырғаныңыздай, дисплейдің болуы отладка туралы ақпаратты көрсету үшін өте ыңғайлы болуы мүмкін.

6 -қадам: Дисплей және уақыт базасы

Дисплей және уақыт базасы
Дисплей және уақыт базасы

Дисплейдің ажыратымдылығы 160 x 128 пиксель, сондықтан бір экранға 160 үлгі қажет, мен ADC -терді секундына 1,6 миллион үлгіні алу үшін жылдамдата алдым, бұл жылдамдатылған микроконтроллермен (толығырақ кейінірек) береді бір бөлімге 20us минималды уақыт базасы (бір экранға 100us). Осылайша 10 кГц толқын формасы бүкіл экранды толтырады.

Бұл мен жасаған шағын осциллографтан екі есе жылдам. Жақсы, қазір бұл екі арнада:-).

Айтылғандай, дисплейдің ені 160 пиксель, сондықтан бір экранға тек 160 мән қажет. Бірақ барлық буферлерде 320 үлгі бар. Осылайша, DMA тасымалдаудың толық үзілуін (TC) бастамас бұрын 320 мәнді сақтайды. Бұл триггер бағдарламалық жасақтамада жасалынғандықтан. Іріктеу кездейсоқ сәттен басталады, сондықтан буфердегі бірінші мән триггер нүктесі болуы керек орын болуы екіталай.

Сондықтан іске қосу нүктесін trace_x_buffer арқылы оқу арқылы табуға болады, егер мән ізделетін триггер мәнінде болса, егер алдыңғы мән оның астында болса, trigger_ нүктесі табылады. Бұл өте жақсы жұмыс істейді, бірақ сізге нақты дисплей өлшемінен үлкен буфер қажет.

Бұл уақыт базасының төменгі параметрлерінде жаңарту жылдамдығы сіз күткеннен баяу болатындығының себебі. 200ms/div параметрін қолданған кезде, деректерге толы бір экран - 1 секунд, бірақ түрлендірудің екі еселенген саны 2 секундты алады. Уақытша жылдамдық параметрлерінде сіз онша байқамайсыз.

TIM3 уақыт базасын құру үшін қолданылады. Ол ADC -ді таңдалған уақыт базасының параметрі талап ететін жылдамдықпен іске қосады. Оның TIM3 сағаты - 120 МГц (OVERCLOCKING бөлімін қараңыз), оның максималды саны (ARR) оның қалай толып кететінін немесе ST тілінде жаңартылатынын анықтайды. TRGO арқылы бұл жаңарту импульстары ADC -ді іске қосады. Ең төменгі жиілік - 160 Гц, ең жоғары - 1,6 МГц.

7 -қадам: ADC және DMA

ADC және DMA
ADC және DMA

Екі ADC бір уақытта кірістердегі кернеуді түрлендіреді, олар бұл 12 биттік екі мәнді бір 32 биттік айнымалыға сақтайды. Сонымен, DMA -да бір (екі есе) түрлендіруге бір ғана айнымалы бар.

Бұл мәндерді пайдалану үшін оларды екі мәнге бөлу қажет, сондықтан оларды екі ізді көрсету үшін пайдалануға болады. Жоғарыда айтылғандай, F103 -те ADC -ді 12 биттен басқа ажыратымдылыққа орнатуға болмайды. Олар әрқашан 12 биттік режимде болады, сондықтан түрлендіру әрқашан бірдей импульсті қабылдайды. Қалай болғанда да, ADC -тің үдеткішімен секундына 1,6 МС үлгісін жасауға болады (Қосымша: Үдеткішті қараңыз).

ADCs сілтемесі - Vdd, 3.3В рельс. Мұны ыңғайлы мәндерге айналдыру үшін (әр бөлім бойынша) мен әлсіреткіштердің мәндерін есептедім, себебі менде бұл есептеулерден шығатын резистордың нақты мәндері жоқ, бағдарламалық қамтамасыз етуде кейбір түзетулер енгізілген.

Бұл жобада мен «тұрақты режимде» DMA қолданамын. Бұл режимде DMA барлық сөздерді (немесе жартылай сөздерді немесе байттарды) тасымалдағанда, деректерді беруді тоқтатады. Басқа ықтимал режимде «айналмалы режим» DMA өзін қалпына келтіреді және үзіліссіз деректерді беруді жалғастырады. Бұл F103 -пен жұмыс істемеді, ол соншалықты тез, ол бағдарламаның қалған бөлігі оқымай тұрып, adc_buffer ішіндегі деректерді қайта жазады. Сонымен, қазір процесс келесідей:

- DMA жіберілетін деректер санына баптау және DMA қосу

- ADC -ті іске қосуды бастаңыз, олар әр (қос) түрлендіруден кейін DMA аударымдарын сұрайды

- түрлендірудің белгіленген саны берілгеннен кейін, DMA тоқтайды

- сонымен қатар ADC іске қосуды дереу тоқтатыңыз

- жадтағы барлық қажетті манипуляцияларды орындаңыз

- экранда іздерді көрсету

- процесті қайтадан бастаңыз

8 -қадам: пайдаланушы интерфейсі

Қолданушы интерфейсі
Қолданушы интерфейсі

160 -дан 128 пиксельге дейінгі экран өте үлкен емес және мен оны мүмкіндігінше қолданғым келеді. Сондықтан оның бір бөлігі ток параметрлері үшін сақталмаған. Соңғы бірнеше жолда тік сезімталдық, уақыт базасы, триггер деңгейі мен триггер арнасы көрсетіледі, бірақ сигналдар жеткілікті үлкен болғанда олар сол аймақта пайда болады. Белсенді опция сары түспен, қалғаны ақ түспен көрсетіледі.

9 -қадам: Құрылыс және мүмкін болатын жақсартулар

Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар
Құрылыс және мүмкін болатын жақсартулар

Мен бұл жобаға өте қуаныштымын. Бұл жақсы жұмыс істейді және тапсырманы орындайды, бірақ одан да жақсы болуы мүмкін.

Жобаның қорапшасы тым кішкентай, бұл барлық компоненттерді көк таблетканың астына қоюға әкеледі. Мұны істеу үшін көк таблетканы тікелей «негізгі тақтаға» дәнекерлеуге болмайды. Мұның бәрі тым жоғары болғандықтан, мен көк таблеткадан BOOT0 мен BOOT1 таңдауға арналған секіргіштер сияқты көптеген бөліктерді алып тастауға тура келді (мен ешқашан қолданбаймын) және мен кристалды жоғарыдан төмен қарай жылжытуға тура келді. компьютер

Мен BNC немесе SMA коннекторларының орнына банан коннекторларын қолдана отырып, өмірді қиындаттым, бұл перформат тақтасының үлкен бөлігі «кіруге болмайды» екенін білдірді, бұл маған өзіме түсінікті болу үшін каптон таспасын жаптым. оған бөлшектерді қоюдан.

Барлығын осындай шағын жобалық қорапқа салудағы тағы бір мәселе - аналогты және цифрлық схемалар бір -біріне өте жақын орналасқан. Сіз екі ізде де айтарлықтай көп шу бар екенін көре аласыз. Бұл менде тіпті тақтада жоқ еді! Аналогты және цифрлық тізбектердің электр желілерін мүмкіндігінше алысырақ жылжыту арқылы кішкене жақсартулар енгізілді, бірақ бұл маған ұнамады. Аналогты тізбектердегі барлық резисторлық мәндерді меннен де төмендету (кіріс кедергісі 1МОм орнына 100кОм) көмектеспеді. Менің ойымша, уақыт жылдамдығының ең жылдам параметрін (20us/div) қосу сигналдарда аз шуылмен жақсарады деп ойлаймын.

Егер сіз бұл дизайнды аналогтық, цифрлық және қуатқа арналған барлық smd бөліктері мен бөлек қабаттары бар «нақты» компьютерде жасасаңыз (бұл 4 қабат!) Ол өте жақсы жұмыс істейтін шығар. Бұл әлдеқайда кішірек болады, ол толық көк таблетканы пайдаланбайды, тек F103, бұл оны ADC үшін бөлек (таза) аналогты Vdda жеткізуге мүмкіндік береді.

Қорытынды ретінде мен қорапты қара түске бояуды шештім, ол бежевый қораптардың барлығын өзгертеді.

10 -қадам: Код және қысқа бейне

11 -қадам: ҚОСЫМША: үдеткіш

ҚОСЫМША: үдеткіш
ҚОСЫМША: үдеткіш

Мен F03 -тегідей, мен F103 -тің үдеткіштің қаншалықты жақсы болатынын көргім келді. Бұл микроконтроллердің сипаттамалары сағаттың максималды жылдамдығы 72 МГц -тен аспауы керек деп мәлімдейді (бұл, әрине, F030 -ға қарағанда, әлдеқайда жылдам), бірақ мен бірнеше блогтарда оны жылдамдату оңай екенін оқыдым.

Көк таблетка 8 МГц кристаллымен қамтамасыз етілген, PLL оны 9 -дан 72 МГц -ке дейін көбейтеді. PLL жиілігін 128 МГц жиілікке дейін 16 -ға дейін арттыруға болады. Бұл менің көк таблетка үшін ешқандай қиындық тудырмады, іс жүзінде менің барлық көк таблеткалар 128 МГц жиілікте еш қиындықсыз жұмыс істейді.

Бірақ қазір мен нақты шектеудің не екенін білгім келді. Сондықтан мен 8 МГц кристалды алып тастадым және оны 12 МГц диапазонына ауыстырдым. Мен PLL мультипликаторын микроконтроллер ақырында бас тартқанша арттырдым. Бұл 168 МГц жиілігінде болды! 156 МГц жиілігі әлі де жақсы жұмыс істеді. Мен оны бірнеше сағат бойы осындай жылдамдықта қалдырдым және оның құлағанын көрмедім. Бұл осциллографта мен 12 МГц кристалды және 10 -дағы PLL -ді, сондай -ақ 8 МГц кристаллында және 15 -те PLL -ді таңдауға болатын 120 МГц жиілігін анықтадым (main.c -те SystemClock_Config қараңыз).

ADC -лер енді тезірек жұмыс істейді, менде 30 МГц жиілігінде жұмыс істейді (14 емес), олар әлі де 60 МГц -те жақсы жұмыс істеді, STMicroelectronics жақсы жабдықты жасайды!

STMicroelectronics бұл шектеулерді мәліметтер парағына дәлелді түрде қояды, олар микроконтроллер 72 МГц жиілікте барлық жағдайда жұмыс істейтініне кепілдік береді.

Бірақ мен микроконтроллерді -40 Цельсийде +85 Цельсийде, тек 2,0 Вольт немесе 3,6 Вольт шамасында қолданбағандықтан, оны жылдамдату қауіпсіз деп ойлаймын. Егер сіз микроконтроллерлермен құрылғыны сатқыңыз келсе, мұны ЕМЕС жасаңыз, олардың қайда қолданылатынын ешқашан білмейсіз.

Ұсынылған: