Satura rādītājs:

Dual Trace osciloskops: 11 soļi (ar attēliem)
Dual Trace osciloskops: 11 soļi (ar attēliem)

Video: Dual Trace osciloskops: 11 soļi (ar attēliem)

Video: Dual Trace osciloskops: 11 soļi (ar attēliem)
Video: Silenced Ruger 22 2024, Jūlijs
Anonim
Divu izsekošanas osciloskops
Divu izsekošanas osciloskops

Kad es izveidoju savu iepriekšējo mini osciloskopu, es gribēju redzēt, cik labi es varu izveidot savu mazāko ARM mikrokontrolleri ar STM32F030 (F030), un tas paveica jauku darbu.

Vienā no komentāriem tika ierosināts, ka "zilā tablete" ar STM32F103 (F103) varētu būt labāka, mazāka nekā izstrādes plate ar F030 un, iespējams, pat lētāka. Bet mini osciloskopam es neizmantoju izstrādes paneli, bet gan F030 uz vēl mazākas SMD-DIP plates, tāpēc tur Blue Pill noteikti nebūtu mazāks, un es šaubos, ka tas būtu arī lētāk.

Kods tagad ir pieejams vietnē Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Piegādes

Daļu saraksts: - plastmasas kaste - perforators (divpusējs prototipa dēlis 8x12cm) - zilā tablete - ST7735s TFT displejs - litija jonu akumulators - HT7333 3.3V zema izkrišanas regulators - MCP6L92 dubultā opamp - TSSOP8 līdz DIP8 plate - 12 MHz kristāls (nav nepieciešams) - rotējošais kodētājs un poga (2x) - jaudas slēdzis - banānu termināļi (4x) - litija jonu lādētāja plāksne - vairāki rezistori un kondensatori - neilona starplikas, uzgriežņi un skrūves

Rīki:

- lodēšanas stacija - lodēt 0,7 mm - daži stieples - sānu griezēji - brilles un lupas - urbis - multimetrs - osciloskops - STLink -V2

Programmatūra:

- STM32IDE - STM32CubeMX - STLink Utility - LowLayer bibliotēka - pielāgota bibliotēka ST7735s - Notepad ++ - Kicad

1. darbība. Interleave vai SI vienlaicīgs režīms

Interleave vai SI vienlaicīgs režīms
Interleave vai SI vienlaicīgs režīms
Interleave vai SI vienlaicīgs režīms
Interleave vai SI vienlaicīgs režīms

Zilās tabletes

Bet ideja bija, un es zināju, ka F103 ir divi ADC! Ko darīt, ja es izmantotu šos divus ADC kopā "interleave" režīmā, ko esmu darījis iepriekš ar STM32F407 (F407). Paraugu ņemšanas ātrums dubultosies. Apvienojiet to ar ātrāku mikrokontrolleri, un tas būtu lielisks mini osciloskopa pēctecis.

Interleave režīms Savādi, ka F103 ADC ir mazāk attīstīti nekā F030 (un F407), jūs nevarat izvēlēties izšķirtspēju. Vēl svarīgāk ir tas, ka jūs nevarat mainīt laiku starp abiem ADC. Tagad, kad izmantojat interleave režīmu, parasti vēlaties, lai paraugi tiktu ņemti pēc iespējas ātrāk un pēc iespējas īsākā laikā starp visiem paraugiem, bet ar osciloskopu ir nepieciešams mainīt laiku. Varbūt to joprojām var izdarīt, es neesmu profesionāls osciloskopa dizaineris, bet es atteicos no plāna izmantot interleave režīmu.

Vienlaicīgs režīms

Bet, ja ir divi ADC, ir daudz vairāk iespēju, abus ADC var iestatīt arī “regulāra vienlaicīga” režīmā. Kā būtu ar dubulto izsekošanas osciloskopu?

Nolēmusi izmēģināt divseku osciloskopa izgatavošanu, es arī vēlējos, lai būtu mainīga ievades jutība, kas man nebija mini osciloskopā. Tas nozīmē, ka ieejās ir vājinātājs (un pastiprinātājs). Un varbūt es gribēju vēl vairāk? Tāpēc es izveidoju nelielu sarakstu ar "jaukiem cilvēkiem".

VĒLAMAIS SARAKSTS

divi kanāli

mainīga jutība abos kanālos

aktivizēšana abos kanālos

mainīgs sprūda līmenis abos kanālos

mainīgais nobīde

viena akumulatora jauda

iederas vienā kastē ar mini-osciloskopu

2. solis: prototipēšana

Prototipēšana
Prototipēšana
Prototipēšana
Prototipēšana

Kā parasti, es sāku šos projektus uz maizes dēļa. (Skatīt attēlu) Un pirms visa lodēšanas uz perfboard es mēģinu noskaidrot, vai un kā tas iederēsies izvēlētajā projekta kastē. Tas der, bet tikai. Dažas daļas ir paslēptas zem ekrāna, citas - zem zilās tabletes. Un atkal, tāpat kā lielākajai daļai manu projektu, šis ir vienreizējs projekts, un es tam neveidošu PCB.

3. solis: vājinātāji

Vājinātāji
Vājinātāji

Parastos osciloskopos ieejas vājinātāji ir ķēdes, kas maina vājinājumu un pastiprinājumu, ieslēdzot un izslēdzot rezistorus ar maziem signāla relejiem. Lai gan man ir daži no šiem relejiem, es zinu, ka tie nepārslēgsies mazāk par 4 voltiem, tas nozīmē, ka tie darbosies tikai ar pilnībā ielādētu litija jonu akumulatoru (4,2 V). Tāpēc man vajadzēja citu veidu, kā pārslēgt šos rezistorus. Protams, es varētu vienkārši uzstādīt mehāniskos slēdžus, bet tas noteikti vairs neietilpst projekta kastē, prātā, iespējams, es varētu vēlreiz izmēģināt labāku digitālo potenciometru (tas, kas man ir, ir pārāk trokšņains).

Tad es iedomājos "analogos slēdžus", ar tiem es pats varu izgatavot digitālo potenciometru. Savā detaļu kolekcijā es atradu CD4066 ar četriem analogiem slēdžiem. Ideja ir padarīt opampa atgriezeniskās saites rezistoru mainīgu, ieslēdzot un izslēdzot rezistorus paralēli atgriezeniskās saites rezistoram.

Tas darbojas ļoti labi, taču, ja 4066 ir tikai 4 slēdži un 2 kanāli, nebija iespējams noteikt vairāk par trim jutīguma līmeņiem. Es izvēlējos 500mV, 1V un 2V katrā nodaļā, jo tie ir sprieguma līmeņi, kurus es izmantoju visvairāk. Ekrāns ir sadalīts 6 nodaļās, lai diapazons būtu no -1,5 V līdz +1,5 V, no -3 V līdz +3 V un no -6 V līdz 6 V.

Izmantojot "virtuālo zemi", jūs varat pārvietot šos diapazonus uz augšu un uz leju, lai būtu iespējams pat no 0 līdz +12 V.

4. solis: virtuālā zeme

Virtuālais laukums
Virtuālais laukums
Virtuālais laukums
Virtuālais laukums

Tā kā osciloskops izmanto vienu barošanas sliedi (3,3 V), opampiem ir nepieciešams virtuāls zemes līmenis, pretējā gadījumā tie nedarbosies. Šis virtuālais zemes līmenis ir veidots ar PWM vienā TIM4 izvadkanālā, tā darbības cikls mainās no dažiem procentiem līdz gandrīz simts procentiem. Zemas caurlaidības filtrs ar 1k rezistoru un 10uF kondensatoru to pārveido par (gandrīz) 0V līdz (gandrīz) 3,3V spriegumu. Kvadrātviļņu frekvence ir nedaudz zem 100 kHz, tāpēc vienkāršais zemas caurlaidības filtrs ir pietiekami labs.

Diezgan vēlu šī osciloskopa izveidē es sapratu, ka jums nevar būt divi atsevišķi kanālu nobīdes. Tas ir saistīts ar faktu, ka, izmantojot vienu barošanas avotu, ieejas zemes līmenim jābūt nošķirtam no opampu reālā zemes līmeņa. Tātad abi kanāli pārvietojas tāpat kā jūs maināt GND iestatījumu.

5. solis: rotējošie kodētāji un atkļūdošana

Rotācijas kodētāji un atkļūdošana
Rotācijas kodētāji un atkļūdošana
Rotācijas kodētāji un atkļūdošana
Rotācijas kodētāji un atkļūdošana

Mini osciloskopā visām funkcijām izmantoju tikai vienu rotējošu kodētāju. Tas padarītu dubulto osciloskopu ļoti grūti lietojamu, tāpēc šeit man vajag divus. Viens kodētājs vājinātājiem un virtuālajam zemes līmenim, bet otrs laika bāzes un aktivizēšanas kodētājs. Diemžēl, tāpat kā manā citā projektā, šie rotējošie kodētāji ir ļoti "trokšņaini". Tie ir tik slikti, ka vienkārši nedarbotos ar taimeriem “kodētāja režīmā”, kas ir standarta lasīšanas veids. Man bija jāizveido debouncing mehānisms ar taimeri TIM2, pārbaudot kodētājus ik pēc 100us. Šis taimeris savukārt tiek ieslēgts (tikai), ja kodētājos notiek kāda darbība, tas tiek pārbaudīts, izmantojot ievades portu EXTI funkcionalitāti. Tagad kodētāji darbojas labi.

Un, kā redzat, displejs var būt arī ļoti ērts, lai parādītu atkļūdošanas informāciju.

6. darbība: displejs un laika bāze

Displejs un laika bāze
Displejs un laika bāze

Displeja izšķirtspēja ir 160 x 128 pikseļi, tāpēc vienam ekrānam ir nepieciešami 160 paraugi, man izdevās paātrināt ADC, lai veiktu 1,6 miljonus paraugu sekundē, un tas, izmantojot daudz pārspīlētu mikrokontrolleri (vairāk par to vēlāk) minimālā laika bāze 20us katrā nodaļā (100us uz ekrāna). Tādējādi 10 kHz viļņu forma aizpildīs visu ekrānu.

Tas ir tikai divreiz ātrāk nekā iepriekš izgatavotais mini osciloskops. Ak, tagad tas ir ar diviem kanāliem:-).

Kā jau minēts, displeja platums ir 160 pikseļi, tāpēc katram ekrānam ir nepieciešamas tikai 160 vērtības. Bet visos buferos faktiski ir 320 paraugi. Tātad DMA saglabā 320 vērtības, pirms tas izraisa pārraides pilnīgu pārtraukumu (TC). Tas ir tāpēc, ka aktivizēšana tiek veikta programmatūrā. Paraugu ņemšana sākas nejaušā brīdī, tāpēc ir maz ticams, ka pirmā bufera vērtība ir vieta, kur jābūt sprūda punktam.

Tāpēc sprūda punkts tiek atrasts, lasot trase_x_buffer, ja vērtība ir vēlamajā sprūda vērtībā en, ja iepriekšējā vērtība ir tieši zem tās, sprūda_punkts tiek atrasts. Tas darbojas diezgan labi, taču jums ir nepieciešams lielāks buferis nekā faktiskais displeja izmērs.

Tas arī ir iemesls tam, ka atsvaidzes intensitāte zemākajos laika bāzes iestatījumos ir lēnāka, nekā jūs varētu gaidīt. Ja izmantojat iestatījumu 200 ms/div, viens ekrāns ar datiem ir 1 sekunde, bet, tā kā tiek veikts divkāršs reklāmguvumu daudzums, tas aizņem 2 sekundes. Ātrākajos laika bāzes iestatījumos jūs to nepamanīsit.

Laika bāzes ģenerēšanai izmanto TIM3. Tas aktivizē ADC ar ātrumu, kāds nepieciešams izvēlētajā laika bāzes iestatījumā. Tā TIM3 pulkstenis ir 120 MHz (sk. PĀRKLĒŠANU), maksimālais skaitlis, līdz kuram tas tiek skaitīts (ARR), nosaka, kā tas pārplūst, vai ST valodā tas tiek atjaunināts. Izmantojot TRGO, šie atjaunināšanas impulsi aktivizē ADC. Zemākā tā radītā frekvence ir 160 Hz, augstākā - 1,6 MHz.

7. darbība: ADC un DMA

ADC un DMA
ADC un DMA

Abi ADC pārveido spriegumu savās ieejās vienlaikus, tās saglabā šīs divas 12 bitu vērtības vienā 32 bitu mainīgajā. Tātad DMA ir tikai viens mainīgais, lai pārsūtītu (divkāršu) reklāmguvumu.

Lai izmantotu šīs vērtības, tās ir jāsadala divās vērtībās, lai tās varētu izmantot, lai parādītu abas pēdas. Kā jau minēts, F103 ADC nevar iestatīt uz citu izšķirtspēju, izņemot 12 bitus. Tie vienmēr ir 12 bitu režīmā, tāpēc reklāmguvumi vienmēr aizņem vienādu pulksteņa impulsu skaitu. Tomēr, pārspīlējot ADC, var veikt 1,6 MS paraugus sekundē (sk. Papildu: Overclocking).

ADC atsauce ir Vdd, 3.3V sliede. Lai to pārvērstu par ērtākām vērtībām (par sadalījumu), esmu aprēķinājis vājinātāju vērtības, jo man nav precīzu rezistoru vērtību, kas izriet no šiem aprēķiniem, daži labojumi tiek veikti programmatūrā.

Šajā projektā es izmantoju DMA "parastajā režīmā". Šajā režīmā DMA pārtrauc datu pārsūtīšanu (no de ADC uz atmiņu), kad tiek pārsūtīts vārdu (vai pusvārdu vai baitu) skaits. Citā iespējamajā režīmā "apļveida režīmā" DMA atiestata sevi un turpina nepārtraukti pārsūtīt datus. Tas nedarbojās ar F103, tas ir tik ātri, ka pārraksta adc_buffer datus, pirms pārējā programma to var nolasīt. Tātad tagad process ir šāds:

- iestatiet DMA uz pārsūtāmo datu skaitu un iespējojiet DMA

- sākt ADC aktivizēšanu, tie pieprasīs DMA pārsūtīšanu pēc katras (divkāršas) konversijas

- pēc noteiktā reklāmguvumu skaita pārsūtīšanas DMA apstājas

- nekavējoties pārtrauciet arī ADC iedarbināšanu

- veiciet visas nepieciešamās manipulācijas ar atmiņā esošajiem datiem

- parādīt pēdas ekrānā

- sāciet procesu no jauna

8. darbība: lietotāja interfeiss

Lietotāja interfeiss
Lietotāja interfeiss

160 x 128 pikseļu ekrāns nav ļoti liels, un es vēlos to izmantot pēc iespējas vairāk. Tātad nav tā daļas, kas rezervēta strāvas iestatījumiem. Pēdējās rindās tiek parādīta vertikālā jutība, laika bāze, sprūda līmenis un sprūda kanāls, bet, kad signāli ir pietiekami lieli, tie parādīsies tajā pašā apgabalā. Aktīvā opcija ir parādīta dzeltenā krāsā, pārējā - baltā krāsā.

9. solis: veidošana un iespējamie uzlabojumi

Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi
Celtniecība un iespējamie uzlabojumi

Esmu diezgan priecīga par šo projektu. Tas darbojas labi un dara darbu, bet tas varētu būt labāk.

Projekta kaste ir pārāk maza, lai visu ērti varētu ievietot, tāpēc komponenti jānovieto zem zilās tabletes. Lai tas būtu iespējams, zilo tableti nevarēja tieši pielodēt pie "galvenās plates". Tā kā tas padarīja to pārāk augstu, man bija jānoņem daudzas daļas no Zilās tabletes, piemēram, džemperi, lai izvēlētos BOOT0 un BOOT1 (lietas, kuras es nekad neizmantoju), un man pat bija jāpārvieto kristāls no augšas uz leju PCB.

Es apgrūtināju dzīvi, izmantojot BNC vai SMA savienotāju vietā banānu savienotājus, tas nozīmēja, ka liela daļa no perforatora bija “aizliegta zona”, lai to padarītu skaidru, es uzliku tam kaptona lenti, lai novērstu sevi no detaļu uzlikšanas.

Vēl viena problēma, ievietojot visu tik mazā projekta kastē, ir tā, ka analogās un digitālās shēmas ir ļoti tuvu viena otrai. Var redzēt, ka uz abām pēdām ir redzams diezgan liels troksnis. Šī man nebija pat uz maizes dēļa! Pārvietojot analogo un digitālo ķēžu elektrolīnijas pēc iespējas tālāk viena no otras, tika panākts neliels uzlabojums, taču ar to man nepietiek. Visu rezistoru vērtību samazināšana analogās shēmās pat tālāk nekā es (ievades pretestība ir 100 kOhm 1MOhm vietā) nepalīdzēja. Man ir aizdomas, ka aktivizēšana, izmantojot ātrāko laika bāzes iestatījumu (20us/div), kas nav lieliski, uzlabosies arī ar mazāku signālu troksni.

Ja jūs veidojat šo dizainu uz "īstas" PCB, ar visām smd detaļām un atsevišķiem slāņiem analogajai, digitālajai un jaudai (tas ir 4 slāņi!), Tas, iespējams, darbosies ļoti labi. Tas būs daudz mazāks, tas neizmantos pilnu zilo tableti, bet tikai F103, un tas ļaus to piegādāt ar atsevišķu (tīru) analogo Vdda ADC.

Pēdējā pieskārienā es nolēmu kastīti izsmidzināt melnā krāsā, tas maina visas smilškrāsas kastes.

10. darbība: kods un īss video

11. darbība: PAPILDUS: pārspīlēšana

PAPILDUS: pārspīlēšana
PAPILDUS: pārspīlēšana

Tāpat kā es darīju ar F03, es gribēju redzēt, cik labi F103 var pārspīlēt. Šī mikrokontrollera specifikācijas apgalvo, ka maksimālais pulksteņa ātrums nedrīkst pārsniegt 72 MHz (kas, protams, jau ir ātrāks par F030), bet es vairākos emuāros biju lasījis, ka tā pārspīlēšana ir vienkārša, tad kāpēc ne?

Blue Pill ir aprīkots ar 8MHz kristālu, PLL reizina to ar koeficientu no 9 līdz 72MHz. PLL var palielināt līdz 16, nodrošinot 128 MHz frekvenci. Manai zilajai tabletei tā nebija nekāda problēma, patiesībā visas manas zilās tabletes darbojas bez problēmām 128 MHz.

Bet tagad es gribēju noskaidrot, kāda ir patiesā robeža. Tāpēc es noņēmu 8MHz kristālu un aizstāju to ar vienu no 12MHz. Atkal es palielināju PLL reizinātāju, līdz mikrokontrolleris beidzot padevās. Tas bija 168MHz! 156MHz tas joprojām strādāja labi. Es atstāju to strādāt ar šādu ātrumu stundām un nekad neredzēju, ka tas avarētu. Šajā osciloskopā es noskaņojos uz 120MHz, ātrumu, ko var izvēlēties ar 12MHz kristālu un PLL uz 10, kā arī ar 8 MHz kristālu un PLL uz 15. (sk. SystemClock_Config in main.c)

ADC tagad arī darbojas ātrāk, man tie darbojas 30MHz (nevis 14), tie joprojām labi darbojās 60MHz, STMicroelectronics rada jauku aparatūru!

STMicroelectronics pamatota iemesla dēļ ievieto šos ierobežojumus datu lapā, un tie garantē, ka mikrokontrolleris darbojas ar noteikto 72 MHz visos apstākļos.

Bet, tā kā es neizmantoju mikrokontrolleru pie -40 Celsija, +85 Celsija, tikai ar 2,0 V vai 3,6 V spriegumu, es domāju, ka ir droši to pārspīlēt. NEDRĪKST to darīt, ja plānojat pārdot ierīci ar to mikrokontrolleriem, jūs nekad nezināt, kur tās tiks izmantotas.

Ieteicams: