Mundarija:
- Ta'minotlar
- 1 -qadam: Interleave yoki bir vaqtda rejim
- 2 -qadam: prototip yaratish
- 3 -qadam: Zayıflatıcılar
- 4 -qadam: Virtual Ground
- 5 -qadam: Rotary kodlovchi va disk raskadrovka
- 6 -qadam: Displey va vaqt bazasi
- 7 -qadam: ADC va DMA
- 8 -qadam: foydalanuvchi interfeysi
- 9 -qadam: qurilish va mumkin bo'lgan yaxshilanishlar
- 10 -qadam: Kod va qisqa video
- 11 -qadam: QO'ShIMChA: Overclock
Video: Ikki izli osiloskop: 11 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Men avvalgi mini osiloskopni qurganimda, men eng kichik ARM mikrokontrollerimni STM32F030 (F030) ishlashini qanchalik yaxshi bajarishimni ko'rishni xohladim va bu juda yaxshi ish qildi.
Sharhlardan birida STM32F103 (F103) bo'lgan "Moviy tabletka" F030 ishlab chiqish kartasidan kichikroq va ehtimol undan ham arzonroq bo'lishi mumkinligi taklif qilingan. Ammo mini osiloskop uchun men ishlab chiqish platasini emas, balki F030-ni undan ham kichikroq SMD-DIP taxtasida ishlatardim, shuning uchun u erda ko'k tabletka bundan kichik bo'lmaydi va men ham arzonroq bo'lishiga shubha qilaman.
Kod Gitlab -da mavjud:
gitlab.com/WilkoL/dual-trace-oscilloscope
Ta'minotlar
Qismlar ro'yxati: - plastik quti - perfort taxtasi (ikki tomonlama prototip taxtasi 8x12 sm) - Moviy tabletka - ST7735s TFT displeyi - lityum -ionli batareya - HT7333 3.3V past kuchlanishli regulyator - MCP6L92 ikkita opamp - TSSOP8 - DIP8 kartasiga - 12 MGts kristalli (kerak emas)) - aylanuvchi kodlovchi plyus tugmachasi (2x) - powerwitch - banan terminallari (4x) - lityum -ionli zaryadlovchi paneli - bir nechta rezistorlar va kondansatörler - neylon ajratgichlar, yong'oqlar va vintlar
Asboblar:
- lehim stantsiyasi - lehim 0,7 mm - ba'zi simli yon kesgich - ko'zoynak va lup - matkap - multimetr - osiloskop - STLink -V2
Dasturiy ta'minot:
- STM32IDE - STM32CubeMX - STLink Utility - LowLayer kutubxonasi - ST7735s uchun moslashtirilgan kutubxona - Notepad ++ - Kicad
1 -qadam: Interleave yoki bir vaqtda rejim
Moviy tabletka
Lekin bu fikr bor edi va men bilardimki, F103 ikkita ADCga ega! Agar men bu ikkita ADCni "interleave" rejimida birgalikda ishlatgan bo'lsam, men oldin STM32F407 (F407) bilan qilganman. Namuna olish tezligi ikki baravar ko'payadi. Buni tezroq mikrokontroller bilan birlashtirsangiz, mini osiloskopning katta vorisi bo'ladi.
Interleave rejimi G'alati, F103 -dagi ADC -lar F030 (va F407) -dagiga qaraganda kamroq rivojlangan, siz aniqlikni tanlay olmaysiz. Eng muhimi shundaki, siz ikkita ADC o'rtasidagi vaqtni o'zgartira olmaysiz. Endi, agar siz interleave rejimidan foydalansangiz, odatda namunalar orasidagi eng qisqa vaqt ichida namuna olishni iloji boricha tezroq qilishni xohlaysiz, lekin osiloskop yordamida vaqtni o'zgartirish zarur. Balki buni hali ham qilish mumkin, men professional osiloskop dizayner emasman, lekin interleave-mode rejimidan voz kechdim.
Bir vaqtning o'zida rejim
Ammo ikkita ADC-ga ega bo'lish ko'plab boshqa variantlarni beradi, ikkita ADC-ni "muntazam-bir vaqtning o'zida" rejimiga o'rnatish mumkin. Ikki izli osiloskop haqida nima deyish mumkin?
Ikki izli osiloskopni yaratishga qaror qilib, men ham o'zgaruvchan kirish sezuvchanligiga ega bo'lishni xohlardim, bu variant menda mini osiloskopda yo'q edi. Bu kirishlardagi susaytirgich (va kuchaytirgich) degan ma'noni anglatadi. Va, ehtimol, men bundan ham ko'proq narsani xohlardim? Shunday qilib, men "yoqimli narsalarning" kichik ro'yxatini tuzdim.
TILOGI Ro'yxati
ikkita kanal
ikkala kanalda ham o'zgaruvchan sezuvchanlik
ikkala kanalda ham ishga tushadi
ikkala kanalda ham o'zgaruvchan tetik darajasi
o'zgaruvchan ofset
bitta batareya quvvati
mini-osiloskop bilan bir xil qutiga joylashtiring
2 -qadam: prototip yaratish
Odatdagidek men bu loyihalarni non taxtasida boshladim. (Rasmga qarang) Va hamma narsani pervaz taxtasida lehimlashdan oldin, u tanlangan loyiha qutisiga mos keladimi yoki yo'qligini bilishga harakat qilaman. Bu mos keladi, lekin faqat. Ba'zi qismlar ekran ostida, boshqalari Moviy tabletka ostida yashiringan. Va yana, mening loyihalarimning ko'pchiligida bo'lgani kabi, bu ham bir martalik loyihadir va men unga tenglikni yaratmayman.
3 -qadam: Zayıflatıcılar
Oddiy osiloskoplarda kirish susaytirgichlari kichik signalli o'rni bo'lgan rezistorlarni yoqish va o'chirish orqali susayish va kuchayishni o'zgartiradigan sxemalardir. Menda bu o'rni bor bo'lsa -da, men bilaman, ular 4 voltdan kam ishlamaydi, ya'ni ular faqat to'liq yuklangan lityum -ion batareyasi bilan ishlaydi (4.2V). Menga rezistorlarni almashtirishning boshqa usuli kerak edi. Albatta, men faqat mexanik kalitlarni o'rnatishim mumkin edi, lekin bu, albatta, loyiha qutisiga to'g'ri kelmaydi, ehtimol men yana yaxshi raqamli potansiyometrni sinab ko'rishim mumkin edi (menda juda shovqinli).
Keyin men "analog kalitlar" haqida o'yladim, ular yordamida raqamli potentsiometrni o'zim qila olaman. Mening qismlar to'plamimda to'rtta analog kalitli CD4066 topildi. Fikr, qarshilik qarshiligiga parallel rezistorlarni yoqish va o'chirish orqali opamp o'zgaruvchisining teskari aloqa rezistorini yaratishdir.
Bu juda yaxshi ishlaydi, lekin 4066 -da atigi 4 ta kalitga ega va 2 ta kanalga ega bo'lgan holda, sezgirlik darajasini uchdan ortiq qilish mumkin emas edi. Men bo'linish uchun 500mV, 1V va 2V ni tanladim, chunki men eng ko'p ishlatadigan kuchlanish darajalari. Ekran 6 qismga bo'linadi, shuning uchun -1,5V dan +1,5V gacha, -3V dan +3V gacha va -6V dan 6V gacha.
"Virtual tuproq" yordamida siz bu diapazonlarni yuqoriga va pastga siljitishingiz mumkin, shuning uchun hatto 0v dan +12V gacha bo'lishi mumkin.
4 -qadam: Virtual Ground
Osiloskopda bitta elektr uzatish tarmog'i (3.3V) ishlatilganligi sababli, opamplar virtual zamin darajasiga muhtoj yoki ular ishlamaydi. Bu virtual zamin darajasi TW4 ning bitta chiqish kanalida PWM yordamida amalga oshiriladi, uning ish aylanishi bir necha foizdan deyarli yuz foizgacha o'zgaradi. 1k rezistorli va 10uF kondensatorli past o'tkazgichli filtr uni (deyarli) 0V dan (deyarli) 3.3V kuchlanishga aylantiradi. Kvadrat to'lqinning chastotasi 100 kHz dan past, shuning uchun oddiy past o'tkazgichli filtr etarli.
Kechroq, bu osiloskop binosida kanallar uchun ikkita alohida ofset bo'lmasligini tushundim. Buning sababi shundaki, bitta quvvat manbai bilan kirish-er sathi opamplarning haqiqiy er sathidan alohida bo'lishi kerak. Shunday qilib, ikkala kanal ham GND-sozlamalarini o'zgartirganingizdek harakat qiladi.
5 -qadam: Rotary kodlovchi va disk raskadrovka
Mini osiloskopda men barcha funktsiyalar uchun faqat bitta aylanadigan kodlovchi ishlatardim. Bu ikkita osiloskopni ishlatishni juda qiyinlashtiradi, shuning uchun bu erda menga ikkitasi kerak. Atenuatorlar va virtual zamin sathi uchun bitta kodlovchi, vaqt bazasi va ishga tushirish uchun boshqa kodlovchi. Afsuski, mening boshqa loyihamda bo'lgani kabi, bu aylanadigan kodlovchi juda "shovqinli". Ular shunchalik yomonki, ular taymerlar bilan "kodlovchi rejimida" ishlamaydi, ularni o'qishning standart usuli. Men har 100usda kodlovchi tekshiruvchi TIM2 taymeri bilan hisobdan chiqarish mexanizmini yasashim kerak edi. Bu taymer o'z navbatida (faqat) enkoderlarda biron -bir faollik bo'lganda ishga tushadi, bu kirish portlaridagi EXTI funksiyasi bilan tekshiriladi. Endi kodlovchilar yaxshi ishlaydi.
Ko'rib turganingizdek, displeyga ega bo'lish disk raskadrovka ma'lumotlarini ko'rsatish uchun ham juda qulay bo'lishi mumkin.
6 -qadam: Displey va vaqt bazasi
Displeyning o'lchamlari 160 x 128 piksel, shuning uchun bitta ekran uchun 160 ta namuna kerak, men ADC -larni tezlashtirishga muvaffaq bo'ldim, sekundiga 1,6 million namunani bajaraman va bu juda tezlashtirilgan mikrokontroller bilan (keyinroq). bo'linish uchun minimal vaqt bazasi 20us (har bir ekran uchun 100us). Shunday qilib, 10 kHz to'lqin shakli butun ekranni to'ldiradi.
Bu men ilgari qilgan mini osiloskopdan atigi ikki baravar tez. Xo'sh, endi u ikkita kanalda:-).
Aytganimizdek, displeyning kengligi 160 piksel, shuning uchun bitta ekranga atigi 160 qiymat kerak. Ammo barcha buferlar aslida 320 ta namunani o'z ichiga oladi. Shunday qilib, DMA uzatishning to'liq uzilishini (TC) ishga tushirishdan oldin 320 qiymatni saqlaydi. Buning sababi, ishga tushirish dasturiy ta'minotda amalga oshiriladi. Namuna olish tasodifiy lahzada boshlanadi, shuning uchun buferdagi birinchi qiymat tetik nuqtasi bo'lishi kerak bo'lgan joy bo'lishi ehtimoldan yiroq emas.
Shuning uchun tetiklanish nuqtasini trace_x_buffer orqali o'qish orqali topiladi, agar qiymat kerakli qiymatda bo'lsa, agar oldingi qiymat uning pastida bo'lsa, trigger_ nuqtasi topiladi. Bu juda yaxshi ishlaydi, lekin sizga haqiqiy ekran o'lchamidan kattaroq bufer kerak.
Buning sababi shundaki, pastroq vaqt oralig'idagi yangilanish tezligi siz kutganingizdan pastroq. 200ms/div sozlamasidan foydalanganda, ma'lumotga to'la bitta ekran 1 soniyani tashkil qiladi, lekin konvertatsiya miqdori ikki baravar ko'p bo'lgani uchun 2 soniya vaqt ketadi. Vaqt bazasi sozlamalarida siz buni unchalik sezmaysiz.
TIM3 vaqt bazasini yaratish uchun ishlatiladi. Bu ADC -larni tanlangan vaqt bazasi sozlamalari talab qilgan tezlik bilan ishga tushiradi. Uning TIM3 chastotasi 120 MGts ("OVERCLOCKING" bo'limiga qarang), u hisoblaydigan maksimal son (ARR) uning qanday to'kilishini yoki ST tilida yangilanishini aniqlaydi. TRGO orqali ushbu yangilanish pulslari ADClarni ishga tushiradi. U ishlab chiqaradigan eng past chastota - 160 Gts, eng yuqori - 1,6 MGts.
7 -qadam: ADC va DMA
Ikkita ADC bir vaqtning o'zida o'z kirishlaridagi kuchlanishni o'zgartiradi, ular 12 bitli ikkita qiymatni bitta 32 bitli o'zgaruvchida saqlaydi. Shunday qilib, DMA o'tkazish uchun har bir konvertatsiya uchun bitta o'zgaruvchiga ega.
Ushbu qiymatlarni ishlatish uchun ularni ikkita qiymatga bo'lish kerak, shuning uchun ular ikkita izni ko'rsatish uchun ishlatilishi mumkin. Aytganimizdek, F103 dagi ADC -larni 12 bitdan boshqa o'lchamlarga o'rnatish mumkin emas. Ular har doim 12 bitli rejimda bo'ladi, shuning uchun konvertatsiya har doim bir xil miqdordagi soat impulslarini oladi. Shunday bo'lsa -da, ADC -larni overclock qilish bilan sekundiga 1,6 ta namunani bajarish mumkin (Qo'shimcha: Overclock -ga qarang).
ADC ma'lumotnomasi Vdd, 3.3V temir yo'li. Buni qulayroq qiymatlarga aylantirish uchun (bo'linish bo'yicha) men susaytirgichlarning qiymatlarini hisoblab chiqdim, chunki menda bu hisoblardan chiqadigan aniq qarshilik qiymatlari yo'q, dasturiy ta'minotda ba'zi tuzatishlar kiritilgan.
Ushbu loyihada men "muntazam rejimda" DMA dan foydalanaman. Bu rejimda DMA barcha ma'lumotlar (yoki yarim so'zlar yoki baytlar) o'tkazilganda, ma'lumotlarni uzatishni to'xtatadi. Boshqa mumkin bo'lgan rejimda "dumaloq rejim" DMA o'zini tiklaydi va uzatishsiz ma'lumotlarni uzatishda davom etadi. Bu F103 bilan ishlamadi, u shunchalik tezki, adc_buffer dagi ma'lumotlarni dasturning qolgan qismi o'qishidan oldin yozib yuboradi. Shunday qilib, endi jarayon quyidagicha:
- DMA -ni uzatiladigan ma'lumotlar soniga sozlash va DMA -ni yoqish
- ADClarni ishga tushirishni boshlang, ular har bir (ikki marta) konvertatsiyadan keyin DMA o'tkazmalarini talab qiladi
- belgilangan miqdordagi konvertatsiya o'tkazilgandan so'ng, DMA to'xtaydi
- ADClarni ishga tushirishni darhol to'xtating
- xotiradagi ma'lumotlarga kerak bo'lgan barcha manipulyatsiyalarni bajaring
- ekranda izlarni ko'rsatish
- jarayonni qaytadan boshlang
8 -qadam: foydalanuvchi interfeysi
160 dan 128 pikselgacha bo'lgan ekran juda katta emas va men undan iloji boricha ko'proq foydalanishni xohlayman. Shunday qilib, uning hech qanday qismi oqim sozlamalari uchun ajratilmagan. Oxirgi qatorlarda vertikal sezuvchanlik, vaqt bazasi, tetik darajasi va tetik kanali ko'rsatiladi, lekin signallar etarlicha katta bo'lganda ular o'sha maydonda paydo bo'ladi. Faol variant sariq rangda, qolganlari oq rangda ko'rsatilgan.
9 -qadam: qurilish va mumkin bo'lgan yaxshilanishlar
Men bu loyihadan juda xursandman. Bu yaxshi ishlaydi va vazifani bajaradi, lekin yaxshiroq bo'lishi mumkin.
Loyiha qutisi hamma narsaga qulay bo'lishi uchun juda kichik, bu esa komponentlarni Moviy tabletka ostiga qo'yishga olib keladi. Buning uchun ko'k tabletkalarni to'g'ridan-to'g'ri "asosiy kartochkaga" lehimlab bo'lmaydi. Va bu juda baland bo'lgani uchun, men ko'k tabletkadan BOOT0 va BOOT1 (men hech qachon ishlatmaydigan narsalar) ni tanlash uchun o'tish moslamalari kabi ko'p qismlarni olib tashlashga majbur bo'ldim va hatto billurni yuqoridan pastgacha siljitishim kerak edi. pcb.
Men BNC yoki SMA ulagichlari o'rniga banan konnektorlari yordamida hayotni qiyinlashtirdim, bu shuni anglatadiki, men o'zimga buni oldini olish uchun kaptonli lentani yopib qo'ydim. uning qismlarini qo'yishdan.
Hammasini shunday kichik loyiha qutisiga joylashtirishning yana bir muammosi shundaki, analog va raqamli sxemalar bir -biriga juda yaqin joylashgan. Ko'ryapsizmi, ikkala izda ham juda ko'p shovqin ko'rinadi. Bu menda hatto non taxtasida ham bo'lmagan! Analog va raqamli zanjirlar uchun elektr uzatish liniyalarini iloji boricha bir -biridan uzoqlashtirish orqali kichik yaxshilanish amalga oshirildi, lekin bu menga yoqmadi. Analog davrlardagi barcha qarshilik qiymatlarini men qilganimdan ham pastroq qilish (kirish qarshiligi 1MOhm o'rniga 100kOm) yordam bermadi. Menimcha, eng yaxshi vaqt oralig'ini (20us/div) ishga tushirish signallarning shovqini kamayishi bilan ham yaxshilanadi.
Agar siz ushbu dizaynni analog, raqamli va quvvat uchun barcha smd qismlari va alohida qatlamlari bo'lgan "haqiqiy" kompyuterda qilsangiz (bu 4 qatlam!) Bu juda yaxshi ishlaydi. Bu juda kichikroq bo'ladi, u to'liq ko'k tabletkalarni ishlatmaydi, faqat F103 va bu uni ADC uchun alohida (toza) analog Vdda bilan ta'minlashga imkon beradi.
Oxirgi teginish sifatida men qutini qora rangga sepishga qaror qildim, u bej rangdagi barcha qutilarini o'zgartiradi.
10 -qadam: Kod va qisqa video
11 -qadam: QO'ShIMChA: Overclock
Xuddi F03 -da bo'lgani kabi, men F103 -ni qanday qilib overclock qilish mumkinligini ko'rishni xohlardim. Ushbu mikrokontrollerning texnik xususiyatlari maksimal soat tezligi 72 MGts dan oshmasligi kerakligini da'vo qilmoqda (albatta, bu F030 -ga qaraganda tezroq), lekin men bir nechta bloglarda uni overclock qilish oson bo'lganini o'qiganman, shuning uchun nima uchun?
Moviy tabletka 8 MGts kristal bilan ta'minlangan, PLL 9 dan 72 MGts gacha ko'payadi. PLL -ni 16 tagacha oshirish mumkin, bu esa 128 MGts chastotali soatni beradi. Bu mening Blue Pill uchun hech qanday muammo emas edi, aslida mening barcha Blue Pills 128 MGts muammosiz ishlaydi.
Lekin hozir men haqiqiy chegara nima ekanligini bilmoqchi edim. Shunday qilib, men 8 MGts kristalni olib tashladim va uni 12 MGts chastotaga almashtirdim. Yana PLL multiplikatorini mikrokontroller oxirigacha taslim bo'lguncha oshirdim. Bu 168 MGts chastotada edi! 156 MGts chastotada u hali ham yaxshi ishladi. Men uni soatlab shu tezlikda ishlatib qo'ydim va uning qulaganini ko'rmadim. Ushbu osiloskopda men 120 MGts tezlikni o'rnatdim, bu tezlikni 12 MGts kristalli va PLL 10, shuningdek 8 MGts kristalli va PLL 15 da tanlash mumkin (qarang SystemClock_Config main.c)
Endi ADClar tezroq ishlaydi, menda 30 MGts da ishlaydi (14 o'rniga), ular hali ham 60 MGts da yaxshi ishlaydilar, STMikroelektronika yaxshi jihozlar ishlab chiqaradi!
STMicroelectronics bu cheklovlarni ma'lumotlar jadvaliga yaxshi sabablar bilan qo'yadi, ular mikrokontroller 72 MGts da har qanday sharoitda ishlashini kafolatlaydi.
Ammo men mikrokontrolderni -40, +85 Selsiyda, atigi 2.0 volt yoki 3.6 voltda ishlatmaganim uchun, uni overclock qilish xavfsiz deb o'ylayman. Qachonki siz qurilmani mikrokontrolderlari bilan sotmoqchi bo'lsangiz, ularni qaerda ishlatilishini hech qachon bilmaysiz.
Tavsiya:
CircuitPython bilan ikki rangli chiziqli grafik: 5 qadam (rasmlar bilan)
CircuitPython bilan ikkita rangli chiziqli grafik: Men Pimoroni saytidagi bu LED-bar-grafikni ko'rdim va bu COVID-19 blokirovkasini amalga oshirishda arzon va qiziqarli loyiha bo'lishi mumkin deb o'yladim, uning har birida qizil va yashil rangdagi 24 LED mavjud. 12 segment, shuning uchun nazariy jihatdan siz r ni ko'rsatishingiz kerak
Tower toqqa chiqishga yordamchi robot V1 - Ikki oyoqli, RF, BT boshqaruvi: 22 qadam (rasmlar bilan)
Tower Climb yordamchi robot V1 - Ikki oyoqli, RF, BTni ilova yordamida boshqarish: Devorlarda kaltakesaklarni ko'rganimda, men shunga o'xshash robot yasashni rejalashtirmoqdaman. Bu uzoq muddatli g'oya, men ko'plab yopishtiruvchi moddalarni qidiraman va qandaydir tarzda tekshirib ko'raman. Hozircha men uni elektromagnit yordamida qilishni rejalashtirmoqdaman
Ikki tarmoqli WiFi analizatori: 6 qadam (rasmlar bilan)
Ikkala tarmoqli WiFi analizatori: Bu ko'rsatgichlar Seeedstudio Wio terminalidan 2.4 gigagertsli va 5 gigagertsli ikkita diapazonli WiFi analizatorini qanday ishlatishni ko'rsatadi
Arduino -dan foydalanadigan RC izli robot - asta -sekin: 3 qadam
Arduino -dan foydalanadigan RC -Tracked robot - qadam -baqadam: Salom bolalar, men BangGood -dan yana bir ajoyib robotli shassi bilan qaytdim. Umid qilamizki, siz oldingi loyihalarimizdan o'tdingiz - Spinel Crux V1 - Imo -ishora bilan boshqariladigan robot, Spinel Crux L2 - Arduino Pick and Place Robot Robot Arms va Badland Braw bilan
Past kuchlanishli ikki pinli halogenlarni LEDlar bilan almashtiring: 6 qadam (rasmlar bilan)
Past kuchlanishli ikki pimli halogenlarni LEDlar bilan almashtiring: Bu ko'rsatma past kuchlanishli (12V) ikki pimli halogenli armaturani yuqori quvvatli LEDli "lampochka" bilan qanday osonlik bilan qayta jihozlash haqida batafsil ma'lumot beradi. Bu kamroq quvvat sarflaydi (< 10W), uzoqroq (50,000 soat) va taxminan bir xil yorug'lik quvvatini beradi (~ 300 lumen