Orodha ya maudhui:

Dual Trace Oscilloscope: Hatua 11 (na Picha)
Dual Trace Oscilloscope: Hatua 11 (na Picha)

Video: Dual Trace Oscilloscope: Hatua 11 (na Picha)

Video: Dual Trace Oscilloscope: Hatua 11 (na Picha)
Video: When you switch your petrol scooter with an electric one ๐Ÿ˜‚ 2024, Novemba
Anonim
Ufuatiliaji Dual Oscilloscope
Ufuatiliaji Dual Oscilloscope

Wakati ninaunda oscilloscope yangu ya zamani ya mini nilitaka kuona jinsi ninavyoweza kutengeneza mdhibiti wangu mdogo wa ARM STM32F030 (F030) kufanya, na ilifanya kazi nzuri.

Katika moja ya maoni ilipendekezwa kuwa "Kidonge cha Bluu" na STM32F103 (F103) inaweza kuwa bora, ndogo kuliko bodi ya maendeleo na F030 na labda hata bei rahisi. Lakini kwa oscilloscope ya mini sikutumia bodi ya maendeleo lakini F030 kwenye bodi ndogo ndogo ya SMD-DIP, kwa hivyo kuna Kidonge cha Bluu hakika hakitakuwa kidogo na nina shaka kuwa itakuwa bei rahisi pia.

Nambari sasa inapatikana kwenye Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Vifaa

Orodha ya sehemu: - Sanduku la plastiki - ubao (bodi ya mfano wa pande mbili 8x12cm) - Kidonge cha Bluu - ST7735s TFT kuonyesha - betri ya lithiamu-ion - HT7333 3.3V mdhibiti wa kuacha chini - MCP6L92 opamp mbili - TSSOP8 kwa bodi ya DIP8 - kioo 12 MHz (sio lazima - encoder ya rotary pamoja na kitovu (2x) - nguvu ya uchawi - vituo vya ndizi (4x) - bodi ya chaja ya lithiamu-ioni - vipinga na viboreshaji kadhaa - spacers za nylon, karanga na vis.

Zana:

- kituo cha kuuza - solder 0.7mm - mkata waya - glasi na loupe - drill - multimeter - oscilloscope - STLink-V2

Programu:

- STM32IDE - STM32CubeMX - Huduma ya STLink - Maktaba ya LowLayer - maktaba iliyobadilishwa kwa ST7735s - Notepad ++ - Kicad

Hatua ya 1: Njia ya kuingiliana au SImultaneous

Njia ya kuingiliana au SImultaneous
Njia ya kuingiliana au SImultaneous
Njia ya kuingiliana au SImultaneous
Njia ya kuingiliana au SImultaneous

Kidonge cha Bluu

Lakini wazo lilikuwa pale, na nilijua kuwa F103 ina ADC mbili! Je! Ikiwa nitatumia ADC hizo mbili pamoja katika hali ya "interleave", jambo ambalo nimefanya hapo awali na STM32F407 (F407). Kasi ya sampuli ingeongezeka mara mbili. Hiyo, unganisha hiyo na mdhibiti mdogo zaidi na ingefanya mrithi mzuri wa oscilloscope ya mini.

Njia ya kuingiliana Oddly ADCs katika F103 hazijasonga mbele kuliko ile ya F030 (na F407), huwezi kuchagua azimio. Muhimu zaidi ni kwamba pia huwezi kubadilisha muda kati ya ADC mbili. Sasa, unapotumia hali ya kuingiliana kawaida unataka sampuli haraka iwezekanavyo na wakati mfupi kati ya sampuli yoyote, lakini kwa oscilloscope ni muhimu kubadilisha wakati. Labda bado inaweza kufanywa, mimi sio mbuni wa mtaalam wa oscilloscope, lakini niliacha mpango wa kutumia njia ya kuingiliana.

Hali ya wakati mmoja

Lakini, kuwa na ADC mbili kunatoa chaguzi nyingi zaidi, ADC mbili zinaweza kuwekwa kwa hali ya "kawaida-samtidiga" pia. Vipi kuhusu trace-oscilloscope mbili?

Baada ya kuamua kujaribu kutengeneza oscilloscope ya athari mbili pia nilitaka kuwa na unyeti wa pembejeo wa kutofautisha, chaguo ambalo sikuwa nalo kwenye oscilloscope ya mini. Hiyo inamaanisha kipenyo (na kipaza sauti) kwenye pembejeo. Na labda nilitaka hata zaidi? Kwa hivyo nilifanya orodha ndogo ya "wazuri-wa-nacho".

WISH ORODHA

njia mbili

unyeti wa kutofautisha kwenye njia zote mbili

kuchochea kwenye chaneli zote mbili

kiwango cha kutofautisha kwenye chaneli zote mbili

kukabiliana tofauti

nguvu moja ya betri

inafaa kwenye sanduku sawa na mini-oscilloscope

Hatua ya 2: Prototyping

Kuweka mfano
Kuweka mfano
Kuweka mfano
Kuweka mfano

Kama kawaida, nilianzisha miradi hii kwenye ubao wa mkate. (Tazama picha) Na kabla ya kuuza kila kitu kwenye ubao wa ubao ninajaribu kujua ikiwa na jinsi itakavyofaa kwenye kisanduku cha mradi kilichochaguliwa. Inafaa, lakini tu tu. Sehemu zingine zimefichwa chini ya skrini, zingine chini ya Kidonge cha Bluu. Na tena, kama tu kwa miradi yangu mingi, huu ni mradi wa mara moja tu na sitatengeneza PCB kwa hiyo.

Hatua ya 3: Watulizaji

Watoaji
Watoaji

Katika oscilloscopes ya kawaida viboreshaji vya kuingiza ni nyaya ambazo hubadilisha upunguzaji na ukuzaji kwa kubadili vipingamizi vya ndani na nje na upeanaji wa ishara ndogo. Wakati nina zingine za kupokezana, najua hazitabadilika chini ya Volt 4, hiyo inamaanisha kuwa watafanya kazi tu na betri ya Lithium Ion iliyojaa kabisa (4.2V). Kwa hivyo nilihitaji njia nyingine ya kubadili vipinga. Kwa kweli ningeweza tu kufunga swichi za mitambo, lakini hiyo hakika haingefaa tena kwenye sanduku la mradi lililokuwa na akili, labda ningeweza kujaribu potentiometer bora zaidi ya dijiti (ile niliyonayo ni kelele sana).

Kisha nikafikiria "swichi za analog", na hizo naweza kutengeneza potentiometer ya dijiti mwenyewe. Katika mkusanyiko wangu wa sehemu nilipata CD4066 na swichi nne za analog. Wazo ni kufanya kipingamizi cha maoni cha ubadilishaji wa opamp kwa kubadili vipingamizi ndani na nje sambamba na kipinga maoni.

Inafanya kazi vizuri sana, lakini kuwa na swichi 4 tu katika 4066 na kuwa na njia 2 haikuwezekana kutengeneza viwango vya unyeti zaidi ya tatu. Nilichagua 500mV, 1V na 2V kwa kila mgawanyiko kwani hizo ni viwango vya voltage ambazo ninatumia zaidi. Skrini imegawanywa katika mgawanyiko 6, kwa hivyo hufanya safu -1.5V hadi + 1.5V, -3V hadi + 3V na -6V hadi 6V.

Ukiwa na "ardhi halisi" unaweza kusogeza safu hizi juu na chini kwa hivyo hata 0v hadi + 12V inawezekana.

Hatua ya 4: Ground Virtual

Uwanja wa Kweli
Uwanja wa Kweli
Uwanja wa Kweli
Uwanja wa Kweli

Kwa sababu oscilloscope hutumia reli moja ya nguvu (3.3V) opamp zinahitaji kiwango cha chini cha ardhi au hazitafanya kazi. Kiwango hiki cha ardhi kinafanywa na PWM kwenye kituo kimoja cha pato cha TIM4, mzunguko wa ushuru wake hubadilika kutoka asilimia chache hadi asilimia mia moja. Kichujio cha kupitisha cha chini na kipinga 1k na 10uF capacitor hubadilisha hiyo kuwa voltage ya (karibu) 0V hadi (karibu) 3.3V. Mzunguko wa mawimbi ya mraba ni chini ya 100kHz, kwa hivyo kichujio rahisi cha kupitisha cha chini ni cha kutosha.

Badala ya kuchelewa kwa ujenzi wa oscilloscope hii niligundua kuwa huwezi kuwa na njia mbili tofauti za vituo. Hii ni kwa sababu ya ukweli kwamba kwa usambazaji wa umeme mmoja kiwango cha pembejeo-ardhi lazima iwe kando na kiwango halisi cha opamp. Kwa hivyo vituo vyote vinasonga kwa njia ile ile unapobadilisha mipangilio ya GND.

Hatua ya 5: Encoders za Rotary na Utatuaji

Encoders za Rotary na Utatuaji
Encoders za Rotary na Utatuaji
Encoders za Rotary na Utatuaji
Encoders za Rotary na Utatuaji

Kwenye oscilloscope ya mini nilitumia encoder moja tu ya rotary kwa kazi zote. Hiyo inaweza kufanya oscilloscope mbili iwe ngumu sana kutumia, kwa hivyo hapa ninahitaji mbili. Kisimbuzi kimoja cha viambatanisho na kiwango cha chini cha ardhi na kisimbuzi kingine kwa muda wa saa na kuchochea. Kwa kusikitisha, kama ilivyo katika mradi wangu mwingine, encoders hizi za rotary ni "zenye kelele" sana. Wao ni mbaya sana kwamba hawawezi kufanya kazi na vipima muda katika "mode ya encoder", njia ya kawaida ya kuzisoma. Ilinibidi nifanye utaratibu wa kujiondoa na kipima muda TIM2, kuangalia viambatisho kila 100us. Kipima wakati hiki kimeanza (tu) wakati kuna shughuli kadhaa kwenye visimbuzi, hii inakaguliwa na utendaji wa EXTI kwenye bandari za kuingiza. Sasa encoders hufanya kazi vizuri.

Kama unavyoona, kuwa na onyesho pia inaweza kuwa rahisi sana kuonyesha habari ya utatuzi.

Hatua ya 6: Onyesha na Timebase

Kuonyesha na Timebase
Kuonyesha na Timebase

Onyesho lina azimio la saizi 160 x 128 kwa hivyo kuna sampuli 160 zinazohitajika kwa skrini moja, niliweza kuharakisha ADC kufanya sampuli milioni 1.6 kwa sekunde na kwamba, na mdhibiti aliyezidi kupita kiasi (zaidi baadaye), anatoa muda wa chini wa 20us kwa kila mgawanyiko (100us kwa kila skrini). Kwa hivyo muundo wa wimbi la 10kHz utajaza skrini nzima.

Hiyo ni mara mbili tu kwa kasi oscilloscope mini niliyoifanya hapo awali. Ah, sasa ni kwa njia mbili:-).

Kama ilivyosemwa, onyesho lina saizi 160 kwa hivyo maadili 160 tu yanahitajika kwa kila skrini. Lakini bafa zote kweli zina sampuli 320. Kwa hivyo DMA huhifadhi maadili 320 kabla ya kusababisha usumbufu kamili wa usambazaji (TC). Hii ni kwa sababu kuchochea hufanywa katika programu. Sampuli hiyo huanza wakati wa nasibu, kwa hivyo haiwezekani kwamba thamani ya kwanza kwenye bafa ni mahali ambapo kiini cha kuchochea kinapaswa kuwa.

Kwa hivyo hatua ya kuchochea hupatikana kwa kusoma kupitia trace_x_buffer, ikiwa dhamana iko kwa thamani inayotafutwa ya kichocheo ikiwa thamani ya hapo awali iko chini yake, trigger_point inapatikana. Hii inafanya kazi vizuri, lakini unahitaji bafa kubwa zaidi kuliko saizi halisi ya onyesho.

Hii pia ndio sababu kwamba kiwango cha kuonyesha upya kwenye mipangilio ya muda wa chini ni polepole kuliko unavyotarajia. Unapotumia 200ms / div kuweka skrini moja iliyojaa data ni sekunde 1, lakini kwa sababu mara mbili ya ubadilishaji umefanywa, hiyo inachukua sekunde 2. Kwenye mipangilio ya mwendo wa kasi hautaiona sana.

TIM3 hutumiwa kutengeneza muda wa wakati. Husababisha ADCs kwa kasi kama inavyotakiwa na mpangilio wa muda uliochaguliwa. Saa yake ya TIM3 ni 120MHz (tazama KUZIMA), nambari ya juu ambayo inahesabu (ARR) huamua jinsi inavyofurika nyingine au, kwa lugha ya ST inasasisha. Kupitia TRGO hizi kunde za sasisho husababisha ADCs. Mzunguko wa chini kabisa unaozalisha ni 160 Hz, ya juu zaidi ni 1.6MHz.

Hatua ya 7: ADCs na DMA

ADC na DMA
ADC na DMA

ADC hizi mbili hubadilisha voltage kwenye pembejeo zao kwa wakati mmoja, zinahifadhi zile maadili mbili kidogo kwa tofauti ya 32bit. Kwa hivyo DMA ina ubadilishaji mmoja tu kwa ubadilishaji (mara mbili) kuhamisha.

Kutumia maadili haya kwa hivyo ni muhimu kugawanya katika maadili mawili ili yatumiwe kuonyesha athari hizo mbili. Kama ilivyosemwa, ADCs katika F103 haziwezi kuweka maazimio mengine kuliko bits 12. Wao huwa katika hali ya biti 12 na kwa hivyo ubadilishaji kila wakati huchukua idadi sawa ya mapigo ya saa. Bado, na kuzidishwa kwa ADCs, Sampuli za 1.6 kwa sekunde zinaweza kufanywa (tazama Ziada: Kuongeza nguvu).

Rejea ya ADCs ni Vdd, reli ya 3.3V. Kubadilisha hiyo kuwa maadili rahisi zaidi (kwa kila mgawanyiko) nimehesabu maadili ya viambatisho, kwa sababu sina nambari halisi za kontena ambazo hutoka kwa mahesabu hayo marekebisho mengine hufanywa katika programu.

Katika mradi huu ninatumia DMA katika "hali ya kawaida". Katika hali hii DMA inaacha kuhamisha data (kutoka kwa ADCs kwenda kwenye kumbukumbu) wakati idadi ya maneno (au nusu-maneno au ka) zote zinahamishwa. Katika hali nyingine inayowezekana, "hali ya duara" DMA inajiweka upya na inaendelea kuhamisha data bila kukatizwa. Hiyo haikufanya kazi na F103, ni haraka sana hivi kwamba inaandika data kwenye adc_buffer kabla ya programu yote kuisoma. Kwa hivyo sasa mchakato ni kama ifuatavyo:

- weka DMA kwa idadi ya data itakayohamishwa na kuwezesha DMA

- Anza kuchochea kwa ADCs, hizi zitaomba uhamishaji wa DMA baada ya kila ubadilishaji (mara mbili)

- baada ya idadi iliyowekwa ya ubadilishaji kuhamishwa, DMA inaacha

- mara moja pia acha kuchochea kwa ADCs

- fanya ujanja wote unaohitajika kwenye data kwenye kumbukumbu

- onyesha athari kwenye skrini

- anza mchakato tena

Hatua ya 8: Kiolesura cha Mtumiaji

Muunganisho wa Mtumiaji
Muunganisho wa Mtumiaji

Skrini ya pikseli 160 hadi 128 sio kubwa sana na ninataka kutumia mengi iwezekanavyo. Kwa hivyo hakuna sehemu yake iliyohifadhiwa kwa mipangilio ya mikondo. Katika safu chache za mwisho unyeti wa wima, muda wa saa, kiwango cha vichocheo na kituo cha kuchochea huonyeshwa, lakini ishara zitakapokuwa kubwa vya kutosha zitaonekana katika eneo moja. Chaguo ambayo inafanya kazi imeonyeshwa kwa manjano, iliyobaki imeonyeshwa kwa rangi nyeupe.

Hatua ya 9: Ujenzi na Maboresho Yanayowezekana

Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana
Ujenzi na Uboreshaji Unaowezekana

Nina furaha sana kuhusu mradi huu. Inafanya kazi vizuri na inafanya kazi hiyo, lakini inaweza kuwa bora.

Sanduku la mradi ni ndogo sana kutoshea kila kitu kwa raha, hii inasababisha kuweka vifaa chini ya Kidonge cha Bluu. Ili kufanya hivyo inawezekana Kidonge cha Bluu hakiwezi kuuzwa kwa "bodi kuu" moja kwa moja. Na kwa sababu hii ilifanya iwe juu sana ilibidi nitoe sehemu nyingi kutoka kwa Kidonge cha Bluu, kama vile warukaji wa kuchagua BOOT0 na BOOT1 (vitu ambavyo sikuwahi kutumia hata hivyo) na hata nililazimika kuhamisha kioo kutoka juu hadi chini ya pcb.

Nilifanya maisha kuwa magumu zaidi kwa kutumia viunganishi vya ndizi badala ya viunganishi vya BNC au SMA, ilimaanisha kuwa sehemu kubwa ya ubao wa maandishi ilikuwa "eneo lisilopitiwa", ili kujifanya wazi kwangu niliweka mkanda wa kapton juu yake ili kujizuia kutoka kuweka sehemu juu yake.

Shida nyingine ya kuiweka yote kwenye sanduku dogo la mradi ni kwamba mizunguko ya analog na dijiti iko karibu sana. Unaweza kuona kuwa kuna kelele nyingi zinazoonekana kwenye athari zote mbili. Hii sikuwa nayo hata kwenye ubao wa mkate! Kwa kusonga laini za umeme kwa nyaya za analog na dijiti mbali mbali iwezekanavyo uboreshaji mdogo ulifanywa, lakini haitoshi kwa kupenda kwangu. Kupunguza maadili yote ya kontena kwenye mizunguko ya analog hata zaidi kuliko nilivyofanya (upinzani wa pembejeo ni 100kOhm badala ya 1MOhm) haikusaidia. Ninashuku kuwa kuchochea kwa mpangilio wa kasi zaidi wa saa (20us / div), ambayo sio nzuri, pia itaboresha na kelele kidogo kwenye ishara.

Ukitengeneza muundo huu kwenye pcb "halisi", na sehemu zote za smd na tabaka tofauti za analog, dijiti na nguvu (hiyo ni tabaka 4!) Labda itafanya kazi vizuri sana. Itakuwa ndogo sana, haitatumia Kidonge cha Bluu kamili lakini tu F103 na hiyo itafanya iwezekane kuipatia Analog ya Vdda tofauti (safi) kwa ADCs.

Kama mguso wa mwisho niliamua kunyunyiza sanduku nyeusi, inafanya mabadiliko kutoka kwa masanduku yote ya beige.

Hatua ya 10: Kanuni na Video fupi

Hatua ya 11: ZIADA: Kuongeza kupita kiasi

ZIADA: Kufunika nguo kupita kiasi
ZIADA: Kufunika nguo kupita kiasi

Kama vile nilivyofanya na F03, nilitaka kuona jinsi F103 inaweza kuzidiwa. Maagizo ya mdhibiti mdogo huyu anadai kwamba kasi ya saa haipaswi kuzidi 72MHz (ambayo kwa kweli tayari ina kasi zaidi kuliko F030) lakini nilikuwa nimesoma katika blogi kadhaa kwamba kuzidi ilikuwa rahisi, kwa nini?

Kidonge cha Bluu hutolewa kwa kioo cha 8MHz, PLL huzidisha hiyo ikiwa na sababu ya 9 hadi 72MHz. PLL inaweza kuongezeka hadi 16 ikitoa saa ya 128MHz. Hiyo haikuwa shida hata kidogo kwa Kidonge changu cha Bluu, kwa kweli, Vidonge vyangu vyote vya Bluu hufanya kazi bila shida yoyote kwenye 128MHz.

Lakini sasa nilitaka kujua ni nini kikomo halisi ni. Kwa hivyo niliondoa glasi ya 8MHz na kuibadilisha na moja ya 12MHz. Tena niliongeza kiongezaji cha PLL hadi mwendeshaji mdogo atakapokata tamaa. Hiyo ilikuwa saa 168MHz! Kwenye 156MHz bado ilifanya kazi vizuri. Niliiacha ikikimbia kwa kasi hiyo kwa masaa na sikuwahi kuiona ikianguka. Katika oscilloscope hii nilikaa kwa 120MHz, kasi ambayo inaweza kuchaguliwa na glasi ya 12MHz na PLL mnamo 10, na pia na kioo cha 8 MHz na PLL mnamo 15. (angalia SystemClock_Config katika main.c)

ADCs sasa pia hufanya kazi kwa kasi, ninao wanaendesha kwa 30MHz (badala ya 14), walikuwa bado wakifanya kazi vizuri kwenye 60MHz, STMicroelectronics hufanya vifaa nzuri!

STMicroelectronics inaweka mipaka hii kwenye data kwa sababu nzuri, inahakikishia kuwa mdhibiti mdogo hufanya kazi kwa 72MHz maalum chini ya hali zote.

Lakini kwa kuwa situmii microcontroller saa -40 Celsius, +85 Celsius, kwa 2.0 Volt tu au 3.6 Volt nadhani ni salama kuipindua. Usifanye hivi wakati unakusudia kuuza kifaa na wadhibiti wao wadogo, hauwezi kujua wapi zitatumika.

Ilipendekeza: