Përmbajtje:

Osciloskopi me Gjurmë të Dyfishtë: 11 hapa (me fotografi)
Osciloskopi me Gjurmë të Dyfishtë: 11 hapa (me fotografi)

Video: Osciloskopi me Gjurmë të Dyfishtë: 11 hapa (me fotografi)

Video: Osciloskopi me Gjurmë të Dyfishtë: 11 hapa (me fotografi)
Video: Режимы измерения осциллографа, для чего нужны? 2024, Qershor
Anonim
Osciloskop me Gjurmë të Dyfishtë
Osciloskop me Gjurmë të Dyfishtë

Kur ndërtova mini oshiloskopin tim të mëparshëm, doja të shihja se sa mirë mund ta bëja mikrokontrolluesin tim më të vogël ARM një STM32F030 (F030), dhe bëri një punë të bukur.

Në një nga komentet u sugjerua që një "Pilulë Blu" me një STM32F103 (F103) mund të jetë më i mirë, më i vogël se bordi i zhvillimit me F030 dhe ndoshta edhe më i lirë. Por për mini oshiloskopin nuk kam përdorur bordin e zhvillimit, por F030 në një tabelë edhe më të vogël SMD-DIP, kështu që atje një Pill Blue sigurisht që nuk do të ishte më i vogël dhe dyshoj se do të ishte edhe më i lirë.

Kodi tani është në dispozicion në Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Furnizimet

Lista e pjesëve: - kuti plastike - dërrasë e dërrasës (bordi prototip i dyanshëm 8x12cm) - Pilula blu - Ekrani TFT ST7735s - bateri litium -jon - HT7333 3.3V rregullator i ulët i braktisjes - opam i dyfishtë MCP6L92 - TSSOP8 në bordin DIP8 - kristal 12 MHz (jo i nevojshëm) - kodifikues rrotullues plus çelës (2x) - powerwitch - terminalet e bananeve (4x) - bordi i karikuesit litium -jon - disa rezistorë dhe kondensatorë - ndarës najloni, arra dhe vida

Mjetet:

- stacion saldimi - saldim 0.7mm - disa tela - prerës anësorë - gota dhe litar - stërvitje - multimetër - oshiloskop - STLink -V2

Softuer:

- STM32IDE - STM32CubeMX - STLink Utility - Biblioteka LowLayer - biblioteka e përshtatur për ST7735s - Notepad ++ - Kicad

Hapi 1: Mënyra e ndërveprimit ose e njëkohshme

Mënyra e ndërveprimit ose e njëkohshme
Mënyra e ndërveprimit ose e njëkohshme
Mënyra e ndërveprimit ose e njëkohshme
Mënyra e ndërveprimit ose e njëkohshme

Pilula Blu

Por ideja ishte atje, dhe unë e dija që F103 ka dy ADC! Po sikur t'i përdorja ato dy ADC së bashku në modalitetin "interleave", diçka që kam bërë më parë me STM32F407 (F407). Shpejtësia e marrjes së mostrave do të dyfishohej. Kombinoje atë me një mikrokontrollues më të shpejtë dhe do të bënte një pasardhës të madh të mini oshiloskopit.

Mënyra e ndërhyrjes Çuditërisht ADC -të në F103 janë më pak të avancuara se ajo në F030 (dhe F407), ju nuk mund të zgjidhni rezolucionin. Më e rëndësishme është që ju gjithashtu nuk mund të ndryshoni kohën midis dy ADC -ve. Tani, kur përdorni modalitetin interleave zakonisht dëshironi që marrja e mostrave të jetë sa më e shpejtë me kohën më të shkurtër midis çdo mostre, por me një oshiloskop është e nevojshme të ndryshoni kohën. Ndoshta akoma mund të bëhet, unë nuk jam një projektues profesionist i oshiloskopit, por kam hequr dorë nga plani për të përdorur modalitetin interleave.

Mënyra e njëkohshme

Por, të kesh dy ADC jep shumë më tepër mundësi, të dy ADC mund të vendosen edhe në modalitetin "rregullt-të njëkohshëm". Po në lidhje me një oshiloskop të dyfishtë gjurmë?

Pasi vendosa të përpiqem të bëj një oshiloskop me gjurmë të dyfishtë, gjithashtu doja të kisha ndjeshmëri të ndryshueshme të hyrjes, një opsion që nuk e kisha në mini oshiloskop. Kjo do të thotë një zbutës (dhe përforcues) në hyrjet. Dhe mbase doja edhe më shumë? Kështu që unë bëra një listë të vogël të "personave të këndshëm".

LISTA DISSHIRORE

dy kanale

ndjeshmëri e ndryshueshme në të dy kanalet

duke shkaktuar në të dy kanalet

niveli i ndryshueshëm i shkaktimit në të dy kanalet

kompensim i ndryshueshëm

fuqi e vetme e baterisë

përshtaten në të njëjtën kuti me mini-oshiloskopin

Hapi 2: Prototipizimi

Prototipizimi
Prototipizimi
Prototipizimi
Prototipizimi

Si zakonisht, i fillova këto projekte në një dërrasë buke. (Shih foton) Dhe para se të bashkoj gjithçka në tabelën e perfekte përpiqem të zbuloj nëse dhe si do të përshtatet në kutinë e projektit të zgjedhur. Përshtatet, por vetëm vetëm. Disa pjesë janë të fshehura nën ekran, të tjera nën pilulën blu. Dhe përsëri, ashtu si për shumicën e projekteve të mia, ky është një projekt vetëm një herë dhe nuk do të krijoj një PCB për të.

Hapi 3: Zbutës

Zbutës
Zbutës

Në oshiloskopët e zakonshëm, zbutësit e hyrjes janë qarqe që ndryshojnë zbutjen dhe amplifikimin duke kaluar dhe dalë rezistorë me stafetë të vegjël sinjali. Ndërsa kam disa nga ato stafetë, e di që ata nuk do të kalojnë në më pak se 4 Volt, kjo do të thotë se ata do të punojnë vetëm me një bateri litium jon të ngarkuar plotësisht (4.2V). Kështu që më duhej një mënyrë tjetër për të ndryshuar ato rezistente. Sigurisht që unë thjesht mund të instaloja çelsin mekanikë, por kjo sigurisht që nuk do të përshtatet më në kutinë e projektit duke pasur parasysh, mbase mund të provoja përsëri një potenciometër më të mirë dixhital (ai që kam është shumë i zhurmshëm).

Pastaj mendova për "çelsat analoge", me ato që mund të bëj vetë një potenciometër dixhital. Në koleksionin tim të pjesëve gjeta CD4066 me katër ndërprerës analogë. Ideja është që të bëhet rezistenca e reagimit të një ndryshoreje opamp duke futur dhe dalë rezistorë paralelisht me rezistencën e reagimit.

Punon shumë mirë, por duke pasur vetëm 4 ndërprerës në 4066 dhe duke pasur 2 kanale nuk ishte e mundur të bëheshin më shumë se tre nivele të ndjeshmërisë. Zgjodha 500mV, 1V dhe 2V për ndarje pasi ato janë nivelet e tensionit që përdor më shumë. Ekrani është i ndarë në 6 ndarje, në mënyrë që të bëjë për diapazonet -1.5V në +1.5V, -3V në +3V dhe -6V në 6V.

Me "tokën virtuale" ju mund t'i lëvizni këto vargje lart e poshtë kështu që edhe 0v në +12V është e mundur.

Hapi 4: Terren Virtual

Terren Virtual
Terren Virtual
Terren Virtual
Terren Virtual

Për shkak se oshiloskopi përdor një hekurudhë të vetme të energjisë (3.3V), opamps kanë nevojë për një nivel virtual të tokës ose nuk do të funksionojnë. Ky nivel virtual i tokës është bërë me PWM në një kanal dalës të TIM4, cikli i funksionimit të tij ndryshon nga vetëm disa për qind në pothuajse njëqind për qind. Një filtër me kalim të ulët me një rezistencë 1k dhe një kondensator 10uF e shndërron atë në një tension prej (pothuajse) 0V në (pothuajse) 3.3V. Frekuenca e valës katrore është pak më pak se 100 kHz, kështu që filtri i thjeshtë me kalim të ulët është mjaft i mirë.

Më vonë në ndërtimin e këtij oshiloskopi kuptova se nuk mund të kesh dy kompensime të ndara për kanalet. Kjo për faktin se me një furnizim me energji të vetme, niveli i hyrjes-tokës duhet të jetë i ndarë nga niveli i tokës reale i opamps. Pra, të dy kanalet lëvizin në të njëjtën mënyrë kur ndryshoni cilësimin GND.

Hapi 5: Kodifikuesit rrotullues dhe korrigjimi

Kodifikues dhe korrigjim rrotullues
Kodifikues dhe korrigjim rrotullues
Kodifikues dhe korrigjim rrotullues
Kodifikues dhe korrigjim rrotullues

Në mini oshiloskop kam përdorur vetëm një kodues rrotullues për të gjitha funksionet. Kjo do ta bënte një oshiloskop të dyfishtë shumë të vështirë për t’u përdorur, kështu që këtu më duhen dy. Një kodues për zbutësit dhe nivelin virtual të tokës dhe koduesi tjetër për bazën kohore dhe aktivizimin. Mjerisht, ashtu si në projektin tim tjetër, këta kodues rrotullues janë shumë "të zhurmshëm". Ato janë aq të këqija saqë thjesht nuk do të punonin me kohëmatësit në "modalitetin e kodimit", mënyra standarde e leximit të tyre. Më duhej të bëja një mekanizëm debonimi me kohëmatës TIM2, duke kontrolluar koduesit çdo 100us. Ky kohëmatës nga ana tjetër fillon (vetëm) kur ka ndonjë aktivitet në koduesit, kjo kontrollohet me funksionimin EXTI në portat hyrëse. Tani kodifikuesit funksionojnë mirë.

Dhe siç mund ta shihni, të kesh një ekran mund të jetë gjithashtu shumë i dobishëm për të shfaqur informacionin e korrigjimit.

Hapi 6: Shfaqja dhe baza kohore

Shfaqja dhe Baza kohore
Shfaqja dhe Baza kohore

Ekrani ka një rezolucion prej 160 x 128 piksele, kështu që nevojiten 160 mostra për një ekran, unë arrita të shpejtoj ADC -të për të bërë 1.6 milion mostra në sekondë dhe kjo, me mikrokontrolluesin e mbingarkuar shumë (më shumë për atë më vonë), jep një bazë kohore minimale prej 20us për ndarje (100us për ekran). Kështu një formë vale prej 10kHz do të mbushë të gjithë ekranin.

Kjo është vetëm dy herë më shpejt se një oshiloskop që kam bërë më parë. Epo, tani është me dy kanale:-).

Siç u tha, ekrani është 160 piksel i gjerë kështu që nevojiten vetëm 160 vlera për ekran. Por të gjithë tamponët në të vërtetë përmbajnë 320 mostra. Pra, DMA ruan 320 vlera para se të shkaktojë një ndërprerje të plotë të transmetimit (TC). Kjo ndodh sepse nxitja bëhet në softuer. Marrja e mostrave fillon në një moment të rastësishëm, kështu që nuk ka shumë mundësi që vlera e parë në tampon të jetë vendi ku duhet të jetë pika e nxitjes.

Prandaj pika e nxitjes gjendet duke lexuar përmes gjurmimit_x_buffer, nëse vlera është në vlerën e kërkuar të nxitësit en nëse vlera e mëparshme është pak më poshtë saj, pika_të shkaktimit gjendet. Kjo funksionon mjaft mirë, por keni nevojë për një tampon më të madh se sa madhësia e ekranit aktual.

Kjo është gjithashtu arsyeja që shkalla e rifreskimit në cilësimet e bazës më të ulët kohore është më e ngadaltë nga sa mund të prisni. Kur përdorni cilësimin 200ms/div, një ekran i plotë i të dhënave është 1 sekondë, por për shkak se sasia e dyfishtë e konvertimeve është bërë, kjo merr 2 sekonda. Në cilësimet më të shpejta të bazës kohore nuk do ta vini re aq shumë.

TIM3 përdoret për të gjeneruar bazën kohore. Nxit ADC -të me shpejtësinë siç kërkohet nga cilësimi i zgjedhur i bazës kohore. Ora e tij e TIM3 është 120MHz (shiko OVERCLOCKING), numri maksimal në të cilin llogaritet (ARR) përcakton se si ai tjetër derdhet ose, në gjuhën ST përditësohet. Nëpërmjet TRGO këto impulse përditësimi shkaktojnë ADC -të. Frekuenca më e ulët që gjeneron është 160 Hz, më e larta është 1.6MHz.

Hapi 7: ADC dhe DMA

ADC dhe DMA
ADC dhe DMA

Të dy ADC -të konvertojnë tensionin në hyrjet e tyre në të njëjtën kohë, ata i ruajnë ato dy vlera 12 -bit në një ndryshore të vetme 32bit. Pra, DMA ka vetëm një ndryshore për (dyfish) konvertim në transferim.

Për të përdorur këto vlera, prandaj është e nevojshme t'i ndani ato në dy vlera, në mënyrë që ato të mund të përdoren për të shfaqur dy gjurmët. Siç u tha, ADC -të në F103 nuk mund të vendosen në rezolucione të tjera sesa 12 bit. Ata janë gjithmonë në modalitetin 12 bit dhe kështu konvertimet marrin gjithmonë të njëjtin numër pulsesh të orës. Megjithatë, me mbingarkimin e ADC -ve, mund të bëhen 1.6 mostra MS për sekondë (shih Extra: Overclocking).

Referenca e ADC -ve është Vdd, hekurudha 3.3V. Për ta shndërruar atë në vlera më të përshtatshme (për ndarje) unë kam llogaritur vlerat e zbutësve, sepse nuk kam vlerat e sakta të rezistencës që dalin nga ato llogaritje, bëhen disa korrigjime në softuer.

Në këtë projekt unë përdor DMA në "rregull-mode". Në këtë mënyrë DMA ndalon transferimin e të dhënave (nga ADC-të në memorje) kur transferohet numri i fjalëve (ose gjysmë-fjalëve ose bajtëve). Në mënyrën tjetër të mundshme, "mënyra rrethore" DMA rivendoset dhe vazhdon transferimin e të dhënave pa ndërprerje. Kjo nuk funksionoi me F103, është aq e shpejtë sa mbishkruan të dhënat në adc_buffer para se pjesa tjetër e programit të mund t'i lexojë ato. Pra, tani procesi është si më poshtë:

- vendosni DMA në numrin e të dhënave që do të transferohen dhe aktivizoni DMA

- filloni aktivizimin e ADC -ve, këto do të kërkojnë transferime DMA pas çdo konvertimi (të dyfishtë)

- pasi të transferohet numri i caktuar i konvertimeve, DMA ndalon

- gjithashtu ndaloni menjëherë nxitjen e ADC -ve

- të bëjë të gjitha manipulimet e nevojshme me të dhënat në memorie

- shfaq gjurmët në ekran

- filloni përsëri procesin

Hapi 8: Ndërfaqja e përdoruesit

Ndërfaqja e përdoruesit
Ndërfaqja e përdoruesit

Një ekran 160 me 128 piksel nuk është shumë i madh dhe unë dua të përdor sa më shumë që të jetë e mundur. Pra, nuk ka asnjë pjesë të saj të rezervuar për cilësimet e rrymave. Në rreshtat e fundit shfaqen ndjeshmëria vertikale, baza kohore, niveli i shkyçjes dhe kanali i shkaktimit, por kur sinjalet të jenë mjaft të mëdha ato do të shfaqen në të njëjtën zonë. Opsioni që është aktiv tregohet me të verdhë, pjesa tjetër tregohet me të bardhë.

Hapi 9: Ndërtimi dhe Përmirësimet e Mundshme

Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme
Ndërtimi dhe përmirësimet e mundshme

Jam shumë i lumtur për këtë projekt. Punon mirë dhe e bën punën, por mund të jetë më mirë.

Kutia e projektit është shumë e vogël për të përshtatur gjithçka në mënyrë të qetë, kjo rezulton në nevojën për të vënë komponentët nën Pilulën Blu. Për ta bërë këtë të mundur, Pilula Blu nuk mund të ngjitej direkt në "bordin kryesor". Dhe për shkak se kjo e bëri gjithçka shumë të lartë, më duhej të hiqja shumë pjesë nga Pilula Blu, të tilla si kërcyesit për zgjedhjen e BOOT0 dhe BOOT1 (gjëra që nuk i përdor kurrë gjithsesi) dhe madje më duhej ta lëvizja kristalin nga lart poshtë. pcb.

Unë e bëra jetën më të vështirë duke përdorur lidhëset e bananeve në vend të lidhësve BNC ose SMA, kjo do të thoshte se një pjesë e madhe e tabelës ishte një "zonë e ndaluar", për ta bërë të qartë për veten time vendosa shirit kapton mbi të për të parandaluar veten nga vendosja e pjesëve mbi të.

Një problem tjetër me vendosjen e gjithçkaje në një kuti kaq të vogël projekti është se qarqet analoge dhe dixhitale janë shumë afër njëra -tjetrës. Ju mund të shihni se ka shumë zhurmë të dukshme në të dy gjurmët. Këtë nuk e kisha as në pjatën e bukës! Duke lëvizur linjat e energjisë për qarqet analoge dhe dixhitale sa më larg që të jetë e mundur, u bë një përmirësim i vogël, por jo i mjaftueshëm për dëshirën time. Reduktimi i të gjitha vlerave të rezistencës në qarqet analoge edhe më tej se unë (rezistenca e hyrjes është 100kOhm në vend të 1MOhm) nuk ndihmoi. Unë dyshoj se aktivizimi i cilësimit më të shpejtë të bazës kohore (20us/div), i cili nuk është i shkëlqyeshëm, gjithashtu do të përmirësohet me më pak zhurmë në sinjale.

Nëse e bëni këtë dizajn në një PCB "të vërtetë", me të gjitha pjesët smd dhe shtresa të veçanta për analoge, dixhitale dhe fuqi (kjo është 4 shtresa!), Me siguri do të funksionojë shumë mirë. Do të jetë shumë më i vogël, nuk do të përdorë një Blue Pill të plotë, por vetëm F103 dhe kjo do të bëjë të mundur furnizimin e tij me një Vdda analoge të veçantë (të pastër) për ADC -të.

Si një prekje përfundimtare vendosa ta spërkas kutinë me ngjyrë të zezë, ajo bën një ndryshim nga të gjitha kutitë ngjyrë bezhë që ka.

Hapi 10: Kodi dhe një video e shkurtër

Hapi 11: EXTRA: Overclocking

EXTRA: Overclocking
EXTRA: Overclocking

Ashtu siç bëra me F03, doja të shihja sa mirë një F103 mund të mbingarkohet. Specifikimet për këtë mikrokontrollues pretendojnë se shpejtësia maksimale e orës nuk duhet të kalojë 72MHz (e cila natyrisht është tashmë më e shpejtë se F030), por unë kisha lexuar në disa bloge që mbingarkesa ishte e lehtë, kështu që pse jo?

Pilula Blu është e pajisur me një kristal 8MHz, PLL e shumëzon atë me një faktor prej 9 deri në 72MHz. PLL mund të rritet deri në 16 duke dhënë një orë prej 128MHz. Ky nuk ishte aspak problem për Pilulën time Blue, në fakt, të gjitha Pilulat e mia Blue punojnë pa asnjë problem në 128MHz.

Por tani doja të zbuloja se cili është kufiri i vërtetë. Kështu hoqa kristalin 8MHz dhe e zëvendësova me një prej 12MHz. Përsëri rrita shumëzuesin PLL derisa mikrokontrolluesi më në fund hoqi dorë. Ishte në 168MHz! Në 156MHz ai ende funksiononte mirë. E lashë të funksiononte me atë shpejtësi për orë të tëra dhe kurrë nuk e pashë të rrëzohej. Në këtë oshiloskop u vendosa për 120MHz, një shpejtësi që mund të zgjidhet me një kristal 12MHz dhe PLL në 10, si dhe me një kristal 8 MHz dhe PLL më 15. (shiko SystemClock_Config në main.c)

ADC -të tani gjithashtu punojnë më shpejt, i kam ato të punojnë në 30MHz (në vend të 14), ata ende punonin mirë në 60MHz, STMicroelectronics bën disa pajisje të këndshme!

STMicroelectronics i vendos këto kufizime në fletën e të dhënave për arsye të mira, ato garantojnë që mikrokontrolluesi punon në 72MHz të specifikuar në të gjitha kushtet.

Por meqenëse nuk e përdor mikrokontrolluesin në -40 Celsius, +85 Celsius, në vetëm 2.0 Volt ose 3.6 Volt mendoj se është e sigurt ta mbingarkosh. MOS e bëni këtë kur keni ndërmend të shisni një pajisje me mikrokontrolluesit e tyre, nuk e dini kurrë se ku do të përdoren.

Recommended: