Kazalo:
- Zaloge
- Korak: Prepletanje ali simultani način
- 2. korak: izdelava prototipov
- 3. korak: Dušilci
- 4. korak: Virtual Ground
- 5. korak: Rotacijski dajalniki in odpravljanje napak
- 6. korak: Prikaz in časovni okvir
- 7. korak: ADC -ji in DMA
- 8. korak: uporabniški vmesnik
- 9. korak: Gradnja in možne izboljšave
- 10. korak: Koda in kratek video
- 11. korak: EXTRA: Overclocking
Video: Osciloskop z dvojnim sledom: 11 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Ko sem sestavljal svoj prejšnji mini osciloskop, sem hotel videti, kako dobro bi lahko naredil svoj najmanjši mikrokrmilnik ARM STM32F030 (F030), in to mi je odlično uspelo.
V enem od komentarjev je bilo predlagano, da bi bila "modra tabletka" s STM32F103 (F103) boljša, manjša od razvojne plošče s F030 in morda celo cenejša. Toda za mini osciloskop nisem uporabil razvojne plošče, ampak F030 na še manjši plošči SMD-DIP, zato tam modra tabletka zagotovo ne bi bila nič manjša in dvomim, da bi bila tudi cenejša.
Koda je zdaj na voljo na Gitlabu:
gitlab.com/WilkoL/dual-trace-oscilloscope
Zaloge
Seznam delov: - plastična škatla - perfboard (dvostranska prototipna plošča 8x12cm) - modra tableta - ST7735s TFT zaslon - litij -ionska baterija - regulator nizkega izpada HT7333 3.3V - dvojni opamp MCP6L92 - plošča TSSOP8 do DIP8 - kristal 12 MHz (ni potrebno)) - vrtljivi dajalnik in gumb (2x) - stikalo za napajanje - bananine sponke (4x) - litij -ionska polnilna plošča - več uporov in kondenzatorjev - najlonski distančniki, matice in vijaki
Orodja:
- spajkalna postaja - spajkanje 0,7 mm - nekaj žice - stranski rezalnik - stekla in lupa - vrtalnik - multimeter - osciloskop - STLink -V2
Programska oprema:
- STM32IDE - STM32CubeMX - STLink Utility - knjižnica LowLayer - prilagojena knjižnica za ST7735s - Notepad ++ - Kicad
Korak: Prepletanje ali simultani način
Modra tabletka
Toda ideja je bila tam in vedel sem, da ima F103 dva ADC -ja! Kaj pa, če bi ta dva ADC -ja uporabljal skupaj v načinu "prepletanja", kar sem že storil s STM32F407 (F407). Hitrost vzorčenja bi se podvojila. Če to združite s hitrejšim mikrokrmilnikom, bi to postalo odličen naslednik mini osciloskopa.
Način prepletanja Nenavadno so ADC -ji v F103 manj napredni kot v F030 (in F407), ločljivosti ne morete izbrati. Bolj pomembno je, da tudi ne morete spremeniti časa med obema ADC -jema. Zdaj, ko uporabljate način prepletanja, običajno želite čim hitrejše vzorčenje z najkrajšim časom med vsemi vzorci, vendar je z osciloskopom potrebno spremeniti časovni razpored. Mogoče je to še mogoče, nisem profesionalni oblikovalec osciloskopov, vendar sem opustil načrt uporabe načina prepletanja.
Hkratni način
Če pa imate dva ADC-ja, imate veliko več možnosti, lahko oba ADC-ja nastavite tudi na način "redno-istočasno". Kaj pa osciloskop z dvojnim sledom?
Ko sem se odločil, da bom poskusil izdelati osciloskop z dvojno sledjo, sem želel imeti tudi spremenljivo vhodno občutljivost, ki je pri mini osciloskopu nisem imel. To pomeni oslabelec (in ojačevalnik) na vhodih. In morda sem hotel še več? Tako sem naredil majhen seznam "lepih za imeti".
SEZNAM ŽELJ
dva kanala
spremenljiva občutljivost na obeh kanalih
sproži na obeh kanalih
spremenljiva raven sprožilca na obeh kanalih
spremenljiv odmik
moč ene baterije
v isti škatli kot mini osciloskop
2. korak: izdelava prototipov
Kot običajno sem te projekte začel na podlagi. (Glej sliko) In preden spajkam vse na perfboard, poskušam ugotoviti, ali in kako se bo prilegalo izbranemu projektnemu polju. Ustreza, vendar samo pravično. Nekateri deli so skriti pod zaslonom, drugi pod modro tableto. In spet, tako kot pri večini mojih projektov, je to enkratni projekt in zanj ne bom oblikoval tiskanega vezja.
3. korak: Dušilci
V običajnih osciloskopih so vhodni dušilci vezja, ki spreminjajo dušenje in ojačanje z vklopom in izhodom uporov z majhnimi signalnimi releji. Čeprav imam nekaj teh relejev, vem, da se ne bodo preklopili pri manj kot 4 voltih, kar pomeni, da bodo delovali le s polno naloženo litij -ionsko baterijo (4,2 V). Zato sem potreboval drug način za zamenjavo teh uporov. Seveda bi lahko namestil samo mehanska stikala, vendar v mislih to zagotovo ne bi več ustrezalo okvirju projekta, morda bi lahko poskusil še z boljšim digitalnim potenciometrom (tisti, ki ga imam, je preveč hrupen).
Nato sem pomislil na "analogna stikala", s tistimi lahko sam naredim digitalni potenciometer. V svoji zbirki delov sem našel CD4066 s štirimi analognimi stikali. Zamisel je, da je povratni upor spremenljivke opampa z vklopom in izklopom uporov vzporednim z uporom.
Deluje zelo dobro, vendar s samo 4 stikali v sistemu 4066 in dvema kanaloma ni bilo mogoče določiti več kot treh ravni občutljivosti. Odločil sem se za 500mV, 1V in 2V na delitev, saj so to ravni napetosti, ki jih največ uporabljam. Zaslon je razdeljen na 6 oddelkov, tako da je v razponih od -1,5V do +1,5V, -3V do +3V in -6V do 6V.
Z "navideznim ozemljem" lahko te razpone premikate navzgor in navzdol, tako da je možno celo 0V do +12V.
4. korak: Virtual Ground
Ker osciloskop uporablja eno samo napajalno tirnico (3,3 V), opampi potrebujejo virtualno raven tal ali pa ne bodo delovali. Ta navidezni nivo tal je narejen s PWM na enem izhodnem kanalu TIM4, njegov delovni cikel se spreminja iz le nekaj odstotkov na skoraj sto odstotkov. Nizkoprepustni filter z 1k uporom in kondenzatorjem 10uF to pretvori v napetost (skoraj) 0V do (skoraj) 3.3V. Frekvenca kvadratnega vala je nekaj manj kot 100 kHz, zato je preprost nizkoprepustni filter dovolj dober.
Precej pozno pri izdelavi tega osciloskopa sem spoznal, da ne moreš imeti dveh ločenih odmikov za kanale. To je posledica dejstva, da mora biti z enim napajanjem vhodna-talna raven ločena od dejanske talne ravni opampov. Tako se oba kanala premikata na enak način, kot spremenite nastavitev GND.
5. korak: Rotacijski dajalniki in odpravljanje napak
Na mini osciloskopu sem za vse funkcije uporabil samo en rotacijski dajalnik. Zaradi tega bi bil dvojni osciloskop zelo težak za uporabo, zato potrebujem dva. En kodirnik za dušilce in navidezni nivo tal, drugi dajalnik za časovno osnovo in sprožitev. Na žalost so tako kot v mojem drugem projektu ti rotacijski dajalniki zelo "hrupni". Tako so slabe, da preprosto ne bi delovale s časovniki v "načinu dajalnika", standardnem načinu njihovega branja. Moral sem narediti mehanizem za odstranjevanje s časovnikom TIM2, ki je preverjal dajalnike vsakih 100us. Ta časovnik se zažene (samo), ko je na kodirnikih nekaj dejavnosti, to se preveri s funkcijo EXTI na vhodnih vratih. Zdaj kodirniki dobro delujejo.
Kot lahko vidite, je zaslon lahko zelo priročen tudi za prikaz informacij o odpravljanju napak.
6. korak: Prikaz in časovni okvir
Zaslon ima ločljivost 160 x 128 slikovnih pik, zato je za en zaslon potrebnih 160 vzorcev, uspel sem pospešiti ADC -je, da naredijo 1,6 milijona vzorcev na sekundo, kar z močno overclocked mikrokrmilnikom (več o tem kasneje) daje minimalna časovna baza 20us na oddelek (100us na zaslon). Tako bo valovna oblika 10 kHz zapolnila celoten zaslon.
To je le dvakrat hitreje od mini osciloskopa, ki sem ga naredil prej. No, zdaj je z dvema kanaloma:-).
Kot rečeno, je zaslon širok 160 slikovnih pik, zato je na zaslon potrebno le 160 vrednosti. Toda vsi pufri dejansko vsebujejo 320 vzorcev. Tako DMA shrani 320 vrednosti, preden sproži popolno prekinitev prenosa (TC). To je zato, ker se sprožitev izvaja v programski opremi. Vzorčenje se začne v naključnem trenutku, zato je zelo malo verjetno, da bo prva vrednost v vmesnem pomnilniku kraj, kjer bi morala biti sprožilna točka.
Zato se sprožilna točka odčita z odčitavanjem vmesnika trace_x_buffer, če je vrednost na želeni sprožilni vrednosti en, če je prejšnja vrednost tik pod njo, pa se najde sprožilna točka. To deluje precej dobro, vendar potrebujete večji medpomnilnik od dejanske velikosti zaslona.
Tudi to je razlog, da je hitrost osveževanja v nastavitvah nižje časovne baze počasnejša, kot bi pričakovali. Ko uporabljate nastavitev 200 ms/div, je en zaslon poln podatkov 1 sekunda, ker pa se izvede dvojna količina pretvorb, to traja 2 sekundi. Pri hitrejših nastavitvah časovne baze tega ne boste opazili toliko.
TIM3 se uporablja za ustvarjanje časovne baze. Sproži ADC -je s hitrostjo, ki jo zahteva izbrana nastavitev časovne baze. Njegova ura TIM3 je 120 MHz (glejte OVERCLOCKING), največje število, na katero šteje (ARR), določa, kako se druga preliva ali, v jeziku ST, posodablja. Preko TRGO ti posodobitveni impulzi sprožijo ADC -je. Najnižja frekvenca, ki jo ustvari, je 160 Hz, najvišja 1,6 MHz.
7. korak: ADC -ji in DMA
Oba ADC -ja hkrati pretvarjata napetost na svojih vhodih, ti dve 12 -bitni vrednosti shranita v eno 32 -bitno spremenljivko. Tako ima DMA samo eno spremenljivko na (dvojno) pretvorbo za prenos.
Za uporabo teh vrednosti jih je zato treba razdeliti na dve vrednosti, da se lahko uporabijo za prikaz dveh sledi. Kot rečeno, ADC -jev v F103 ni mogoče nastaviti na druge ločljivosti razen na 12 bitov. Vedno so v 12 -bitnem načinu, zato pretvorbe vedno vzamejo enako število taktnih impulzov. Kljub temu je s overclockingom ADC -jev mogoče narediti 1,6 MS vzorcev na sekundo (glejte Extra: Overclocking).
Referenca ADC -jev je Vdd, tirnica 3.3V. Za pretvorbo tega v primernejše vrednosti (na delitev) sem izračunal vrednosti dušilcev, ker nimam natančnih vrednosti upora, ki izhajajo iz teh izračunov, so v programski opremi izvedeni nekateri popravki.
V tem projektu uporabljam DMA v "rednem načinu". V tem načinu DMA preneha prenašati podatke (iz de ADC-jev v pomnilnik), ko se prenese vse besede (ali polovice besed ali bajtov). V drugem možnem načinu, "krožnem načinu", se DMA ponastavi in neprekinjeno prenaša podatke. To ni delovalo s F103, tako hitro je, da prepiše podatke v adc_buffer , preden jih lahko prebere preostali program. Zdaj je postopek naslednji:
- nastavite DMA na število podatkov za prenos in omogočite DMA
- zaženite sprožitev ADC -jev, ti bodo zahtevali prenose DMA po vsaki (dvojni) pretvorbi
- po prenosu nastavljenega števila konverzij se DMA ustavi
- takoj ustavite tudi sprožanje ADC -jev
- opravite vse potrebne manipulacije s podatki v pomnilniku
- prikaži sledi na zaslonu
- znova zaženite postopek
8. korak: uporabniški vmesnik
Zaslon velikosti 160 x 128 slikovnih pik ni zelo velik in želim ga čim več uporabiti. Tako da njegov del ni rezerviran za nastavitve tokov. V zadnjih nekaj vrsticah so prikazane navpična občutljivost, časovna baza, raven sprožilca in sprožilni kanal, ko pa so signali dovolj veliki, se bodo pojavili na istem območju. Aktivna možnost je prikazana rumeno, ostalo pa belo.
9. korak: Gradnja in možne izboljšave
Zelo sem vesel tega projekta. Deluje dobro in opravlja svoje delo, lahko pa bi bilo bolje.
Projektna škatla je premajhna, da bi lahko vse udobno namestili, zato je treba komponente postaviti pod modro tableto. Da bi bilo to mogoče, modre tablete ni bilo mogoče spajati neposredno na "matično ploščo". In ker je bilo zaradi tega vse previsoko, sem moral odstraniti veliko delov iz modre tablete, na primer skakalce za izbiro BOOT0 in BOOT1 (stvari, ki jih tako ali tako nikoli ne uporabljam), in celo kristal sem moral premakniti z vrha na dno pcb.
Življenje sem si otežil z uporabo banana priključkov namesto priključkov BNC ali SMA, kar je pomenilo, da je velik del perfboard-a "nedostopno območje". od tega, da bi vanj postavili dele.
Druga težava pri postavitvi vsega v tako majhen projektni okvir je, da sta analogno in digitalno vezje zelo blizu skupaj. Vidite lahko, da je na obeh sledovih vidno precej hrupa. Tega sploh nisem imel na krovu! S premikanjem daljnovodov za analogna in digitalna vezja čim bolj narazen je bil dosežen majhen napredek, vendar ne dovolj, da bi mi bil všeč. Zmanjšanje vseh vrednosti upora v analognih vezjih še dlje kot jaz (vhodni upor je 100kOhm namesto 1MOhm) ni pomagalo. Sumim, da se bo sprožitev pri najhitrejši nastavitvi časovne baze (20us/div), ki ni dobra, izboljšala tudi z manj hrupa v signalih.
Če to zasnovo naredite na "pravem" tiskanem vezju, z vsemi deli smd in ločenimi sloji za analogne, digitalne in napajalne (to so 4 plasti!), Bo verjetno delovalo zelo dobro. Bo veliko manjši, ne bo uporabljal celotne modre tablete, ampak samo F103, kar mu bo omogočilo dobavo ločenega (čistega) analognega Vdda za ADC -je.
Za konec sem se odločil, da škatlo poškropim v črno, kar naredi spremembo od vseh bež škatel, ki jih ima.
10. korak: Koda in kratek video
11. korak: EXTRA: Overclocking
Tako kot pri F03 sem želel videti, kako dobro je F103 mogoče overclockati. Specifikacije tega mikrokrmilnika trdijo, da največja ura ne sme presegati 72 MHz (kar je seveda že hitreje kot F030), vendar sem v več blogih prebral, da je bilo overclocking enostavno, zakaj pa ne?
Modra tabletka je opremljena s kristalom 8 MHz, PLL to pomnoži s faktorjem od 9 do 72 MHz. PLL se lahko poveča do 16, kar daje uro 128 MHz. Za mojo modro tableto to sploh ni bil problem, pravzaprav vse moje modre tablete delujejo brez težav na 128 MHz.
Zdaj pa sem hotel ugotoviti, kakšna je resnična meja. Zato sem odstranil 8MHz kristal in ga zamenjal z enim od 12MHz. Spet sem povečeval množitelj PLL, dokler mikrokrmilnik ni končno odnehal. To je bilo pri 168MHz! Na 156MHz je še vedno dobro deloval. Pustil sem ga pri tej hitrosti ure in nikoli nisem videl, da bi se zrušil. V tem osciloskopu sem se odločil za 120 MHz, hitrost, ki jo lahko izberemo s kristalom 12 MHz in PLL na 10, pa tudi s kristalom 8 MHz in PLL na 15. (glej SystemClock_Config v main.c)
ADC -ji zdaj delujejo tudi hitreje, imam jih na 30MHz (namesto na 14), še vedno so dobro delovali na 60MHz, STMicroelectronics naredi nekaj lepe strojne opreme!
STMicroelectronics te omejitve postavlja v podatkovni list z dobrim razlogom, saj zagotavljajo, da mikrokrmilnik deluje pod določenimi 72 MHz v vseh pogojih.
Ker pa mikrokontrolerja ne uporabljam pri -40 stopinjah Celzija, +85 stopinj Celzija, samo pri 2 volti ali 3,6 volta, se mi zdi varno, da ga overklokiram. NE delajte tega, če nameravate prodati napravo z njenimi mikrokrmilniki, nikoli ne veste, kje se bodo uporabljali.
Priporočena:
Nastavljiv linearni napajalnik z dvojnim izhodom: 10 korakov (s slikami)
Nastavljiv linearni napajalnik z dvojnim izhodom: Lastnosti: AC-DC pretvorba Dvojne izhodne napetosti (pozitivno-ozemljitev-negativno) Nastavljive pozitivne in negativne tirnice Samo enosmerni izmenični transformator Izhodni hrup (20 MHz-BWL, brez obremenitve): Okoli 1,12 mVpp Nizka hrup in stabilni izhodi (idealno
LED vezje z dvojnim gumbom: 5 korakov
LED -vezje z dvojnim gumbom: potrudil se bom, da bom pri programiranju in delu z arduinom zvenel kot stara roka, toda v resnici sem se s temi stvarmi seznanil šele pred nekaj dnevi, zato me veseli uspešno ustvarjanje in programiranje mojega
Kako narediti 220V pretvornik z dvojnim kovinskim tranzistorjem 3055: 9 korakov
Kako narediti 220V pretvornik z dvojnim tranzistorjem iz kovine 3055: Hii prijatelj, danes bom naredil pretvorniško vezje z dvojnim kovinskim tranzistorjem 3055. Ta pretvornik deluje zelo dobro. Začnimo
Zvočni ojačevalnik BC547 z dvojnim tranzistorjem: 8 korakov
Zvočni ojačevalnik z dvojnim tranzistorjem BC547: Pozdravljeni, danes bom naredil ojačevalnik z dvojnim tranzistorjem BC547. Začnimo
Lokator odmeva z dvojnim senzorjem: 7 korakov (s slikami)
Lokator odmeva z dvojnim senzorjem: a.članki {font-size: 110.0%; teža pisave: krepko; slog pisave: poševno; okras besedila: brez; barva ozadja: rdeča;} a.članki: lebdenje {barva ozadja: črna;} Ta navodila poučujejo, kako določiti lokacijo predmeta s pomočjo