Avtor: Brian Millier
email: bmillier1@gmail.com
Pred kratkim me je lastnik revije Svet Elektronike Jurij Mikeln opozoril na star projekt DDS generatorja signalov, ki temelji na MCU Atmel AVR – ATMega8.
Menil je, da bi bilo to zasnovo mogoče bistveno izboljšati z uporabo zmogljivejših MCU, ki so trenutno na voljo. To se mi je zdelo smiselno, zato sem se odločil, da to raziščem – uporabil sem MCU ESP32, ki je danes tako priljubljen zaradi svojih brezžičnih zmogljivosti in zelo nizke cene.
Ugotovil sem, da uporaba zmogljivejšega ESP32 ne pomeni nujno, da dobimo zmogljivejši DDS generator signalov. Vendar se mi je zaradi nizke cene in enostavne programabilnosti še vedno zdelo smiselno izdelati generator signalov z uporabo ESP32. Da bi bil projekt še bolj koristen, sem se odločil, da dodam nekaj komponent in vključim tester komponent. Ta tester komponent temelji na starem projektu, ki je uporabljal osciloskop (v načinu prikaza X-Y), z dodatkom nekaj dodatnih delov za preizkušanje komponent.
Ta vsebina je samo za naročnike
Prvotna zamisel testerja komponent je bila, da se skozi komponento prek serijskega upora vodi izmenična napetost. Nato bi izmerili tako napetost na komponenti kot tudi tok skozi njo. Napetost se pošlje v X (vodoravni) kanal merilnika, tok pa v Y (navpični) kanal.
Različne vrste komponent bi imele drugačno sled ali „podpis“. Dobre komponente bi bile videti drugače kot slabe. Dodatna prednost te vrste testerja je, da vam za testiranje komponente ni treba odstraniti z njenega vezja – vsaj v mnogo primerih ne. Če ste komponento testirali „v vezju“, so se pojavljali primeri, ko so okoliške komponente pomembno vplivale na „podpis“. V teh primerih ste običajno potrebovali znano dobro, vendar sicer identično tiskano vezje za primerjalne teste „A-B“, da bi ugotovili slabo(-e) komponento(-e).
Ta vrsta testerja je uporabljala podobno nastavitev, kot se uporablja za izdelavo „Lissajousovih“ številk na osciloskopu. V Googlu lahko preverite, kaj so Lissajousove številke.
V tem projektu je izmenična napetost, potrebna za tester komponent, proizvedena z DDS generatorjem signalov. V prvotni zasnovi je bil za dovajanje nizkonapetostnega 50 (ali 60) Hz signala, potrebnega za testiranje komponente, uporabljen žarilni transformator (op. ur.: to je transformator, ki je napajal žarilne nitke elektronk).
Z uporabo generatorja signalov je mogoče komponento preskusiti pri veliko višjih (in nižjih) frekvencah od 50 Hz, kar v nekaterih primerih pomeni veliko razliko v natančnosti/uporabnosti meritev.
DDS vezje
DDS pomeni neposredna digitalna sinteza (angl. Direct Digital Synthesis). To je način digitalnega ustvarjanja analognega signala pri uporabniško izbranih frekvencah v širokem območju. Frekvenčna ločljivost DDS vezja je zelo visoka. Zlahka ga je mogoče zasnovati tako, da ima ločljivost 1/100 Hz na frekvenčnem območju od praktično enosmerne napetosti do visokih radijskih frekvenc (v primeru hardverskega DDS generatorja). Vezje DDS napaja DAC iz tabele signalov v ROM pomnilniku, Flash ali celo SRAM. Zato lahko izberete različne vrste signalov tako, da spremenite vrednosti, shranjene v tej tabeli. Zaradi načina delovanja je DDS bolj uporaben pri posnemanju gladko spreminjajočih se oblik signalov, kot so sinusni signali in v manjši meri trikotni signali. Kvadratne signale lahko ustvarite tudi tako, da spreminjate najpomembnejši bit digitalnih signalnih linij, ki napajajo DDS, vendar ima lahko nastali signal precejšnje „ tresenje “ (angl. jitter), ko se frekvenca ustvarjenega signala zviša.
DDS osnove
Predstavljajte si, da ste računalniški programer, ki mora zasnovati oscilator s sinusnim izhodom in spremenljivo frekvenco. Za začetek bi verjetno vključili pregledovalno tabelo sinusnega signala, do katere bi dostopali z določeno fiksno hitrostjo. Z zaporednim pošiljanjem vseh vnosov iz tabele na DAC bi ustvarili sinusni signal s frekvenco, ki bi bila enaka hitrosti, s katero bi dostopali do tabele, deljeno s številom vnosov v tabeli. Več kot je vnosov v preglednici in večja kot je ločljivost DAC pretvornika, bolj se bo generirani izhodni signal ujemal s pravim sinusnim signalom. Naslednji korak bi bil omogočiti preskok n vnosov tabele med naslednjimi dostopi do tabele. Zlahka vidimo, da bi s preskokom vsakega drugega vnosa v tabelo še vedno dobili sinusni izhodni signal, vendar bi bila njegova frekvenca dvakrat višja od frekvence prvega primera. Na splošno bi shema zagotavljala naslednje frekvence, formula 1:
kjer je sf frekvenca vzorčenja tabele, ts je velikost tabele in ptrincr je razdalja med vnosi tabele za vsak dostop do tabele.
Čeprav shema predvideva več izhodnih frekvenc, se iz razlogov, ki jih bom pojasnil pozneje izkaže, da lahko ptrincr povečujete le, dokler ne doseže približno 40 % velikosti preglednice. Na primer, s tabelo z 256 vnosi lahko ustvarite približno 102 frekvenci med sf/256 in sf/2,5. Zaradi majhnega števila izbir in načina porazdelitve frekvenc ta shema ne zagotavlja zadostne ločljivosti, da bi bila uporabna.
Naslednja težava bi bila opredelitev prirastka kazalca, ki ni omejen na integralno število vnosov tabele. Izkazalo se je, da je to mogoče preprosto doseči tako, da vzdržujemo fazni akumulator, ki ima bitno širino, večjo, kot je potrebna za naslavljanje preglednice. Pri vsakem naslednjem dostopu do tabele lahko temu akumulatorju dodate fiksni prirastek. Čeprav bi ta dodatek izvedli v celotni širini akumulatorja, bi za naslavljanje preglednice uporabili le n najpomembnejših bitov akumulatorja (kjer 2n predstavlja velikost preglednice). S to metodo bi dobili veliko višjo frekvenčno ločljivost.
Na splošno je izhodna frekvenca te DDS sheme določena na naslednji način, formula 2:
kjer je sf frekvenca dostopa do tabele, n je bitna širina akumulatorja, ptrincr pa je prirastek kazalca, ki se doda faznemu akumulatorju po vsakem dostopu do tabele.
V tem projektu je bila najvišja frekvenca vzorčenja tabele, ki sem jo lahko dosegel z ESP232 z uporabo funkcije I2S in DMA, 300 kHz. Uporabil sem 32-bitni fazni akumulator, zato je frekvenčna ločljivost, formula 3:
Če bi načrtovali strojno vezje DDS in ne bi potrebovali tako visoke ločljivosti, bi namesto tega uporabili fazni akumulator s samo 24 biti in prihranili nekaj vezja. Če pa ESP32 izvaja DDS programsko rutino, lahko uporabite tudi 32 bitov, saj je to velikost celega števila, ki je opredeljena v Arduino C prevajalniku.
Hiter pregled te metode pokaže, da pri številnih vpogledih tabele ni nujno, da je dejansko izbrani vnos ravno pravi. Namesto tega bo to tisti vnos, ki je najbližji številu v akumulatorju, potem ko je zaokrožen zaradi izpusta 24 najmanj pomembnih bitov (32-bitni fazni akumulator kaže na 256-vhodno preglednico). Dovolj je povedati, da se ta majhna napaka ne kopiči in da jo v veliki meri filtrira nizkoprepustni filter, ki sledi DAC pretvorniku.
Zgornja frekvenčna meja DDS vezja je odvisna od tega, kako natančno pričakujete, da bo izhodni signal podoben izbrani obliki signala. Če na primer s frekvenco vzorčenja 300 kHz poskušate ustvariti sinusni signal s frekvenco 75 kHz, bo ta sestavljen le iz štirih točk, kar komajda spominja na sinusni signal. Če za DAC pretvornikom DDS generatorja sledi nizkopasovni filter, bo sam filter „preoblikoval“ ta 4-točkovni signal v nekaj, kar je bolj podobno sinusnemu signalu. Vendar pa je moje „pravilo palca“, da pri frekvenci, ki presega 1/10 frekvence vzorčenja, ne morete pričakovati uporabnega sinusnega signala. V tem projektu je to 300 kHz/10 ali 30 kHz. To zadostuje za namene preizkušanja zvoka. Če o tem dvomite, pomislite na glasbene CD-je. Na njih je frekvenca vzorčenja le 44,1 kHz s 16-bitno amplitudno ločljivostjo, rezultati pa so povsem v redu za vse, razen za najzahtevnejše avdiofile.
Slika 1 prikazuje izhodno amplitudo v odvisnosti od izhodne frekvence tipičnega DDS generatorja signalov. Opazite, da ovojnica amplitude signala sledi funkciji sin(x)/x (sinc).
Torej se pri frekvenci vzorčenja v bistvu zniža na nič. Prav tako je prikazano, da se s povečevanjem večkratnika se ustvarjajo tudi „zrcalne“ frekvence z nižjimi amplitudami. Te frekvence so v veliki meri filtrirane z RC filtrom, ki sledi DAC pretvorniku. V kodi tega projekta prilagajam vrednosti v preglednici za iskanje glede na uporabniško izbrano frekvenco, da bi kompenziral ta odziv.
Vezje generatorja signalov
ESP32 vsebuje dva 8-bitna DAC pretvornika, ki ju lahko poganja ESP32 notranji generator kosinusov. Pri uporabi teh dveh funkcijskih blokov se pojavljata dve težavi. Prvič, generator kosinusov se napaja s programirljivo verigo delilnikov, ki imajo na vhodu notranji RC takt frekvence 8 MHz. Dobljene frekvence niso zelo natančne, frekvenčna ločljivost pa je pri višjih frekvencah zelo slaba – zaradi nizkih delitvenih razmerij, ki so potrebna za doseganje teh frekvenc. Drugič, menil sem, da 8-bitna ločljivost pretvornika DAC ni idealna.
Zato sem se odločil, da bom uporabil DDS metodo, ki sem jo pojasnil prej. Preprosto povedano, ta DDS uporablja tabelo za iskanje sinusnih (trikotnih) signalov v SRAM-u s 16-bitno ločljivostjo. Pregleduje to preglednico s spremenljivo vrednostjo faznega prirastka (ptrincr v prejšnjih formulah), ki določa frekvenco sinusnega signala. 16-bitne vrednosti amplitude iz te preglednice se prenesejo na izhodna vrata I2S. Tok podatkov I2S mora biti konstanten. Ugnezdena programska oprema ESP32 vse to obravnava transparentno – samo shranite medpomnilnik SRAM, rutina ESP32 DMA pa poskrbi za pošiljanje teh podatkov na izhodni priključek I2S z uporabniško izbrano frekvenco vzorčenja.
Uporabljam frekvenco vzorčenja 300.000 Hz. To je bila najvišja frekvenca, ki sem jo lahko dosegel z uporabo konfiguracijske rutine I2S ESP32 podjetja Espressif. Natančna vrednost vzorčevalne frekvence ni ključnega pomena. Dokler rutina DDS natančno ve, za kaj gre, lahko pri izbrani frekvenci proizvaja natančne sinusne signale.
Za uporabo I2S porta za generator sinusnih valov sem se odločil iz več razlogov
Lahko bi uporabil 16-bitni SPI DAC, vendar je dražji in bi potreboval kar nekaj programerskega truda, da bi ga krmilil z DMA in SPI priključkom na ESP32.
Stereo I2S DAC PT8211 je zelo poceni. Na Kitajskem so na voljo za skoraj nič denarja, edini kraj, ki ga poznam za nakup v Severni Ameriki, in sicer v količinah po 1, pa je:
https://www.pjrc.com/store/pt8211_kit.html
PT8211 I2S DAC je stereo izvedba. Načrtoval sem le en sinusni izhod, zato bi lahko eden od izhodov DAC pretvornika ostal neizkoriščen. Vendar narava protokola I2S zahteva, da pošljete oba kanala ne glede na to, ali ju uporabljate ali ne.
Na sliki 2 je blok diagram generatorja sinusnih signalov. Odločil sem se, da bom sinusno frekvenco poslal v levi DAC, v desni DAC pa 180˚ protifazni signal – tako sem dobil diferencialni signal z izhodno amplitudo, ki je bila dvakrat večja od standardne 1,0-voltne vrednosti PT8211 v polni skali.
Glavni razlog za to je, da je ničelni izhod PT8211 pri Vcc/2. Zato je izhodno območje 1,0 volta polne skale na tej ravni 1,65 volta. Z napajanjem dveh kanalov DAC s 180° protifaznimi vrednostmi in napajanjem dveh izhodov DAC na diferencialni ojačevalnik (U2A) ta 1,65-voltna skupna napetost izgine. Tako je veliko lažje dovajati signal v potenciometer, ki omogoča spremenljivo izhodno amplitudo – ki NI odvisna od enosmerne ravni, ki se spreminja z amplitudo signala. Uporaba te sheme je pomenila, da sem moral uporabiti preglednico za iskanje s 512 vnosi in premešati dve vrednosti protifaze – eno za drugo.
Prav tako sem želel imeti možnost, da sinusni signal odmaknemo od njegove nominalne referenčne vrednosti nič voltov. To sem zlahka dosegel tako, da sem preko R6 v U2B, invertirajoči seštevalni ojačevalnik, dovajal spremenljivo offset napetost. Da bi omogočili pozitivno in negativno offset napetost, se potenciometer za offset napaja iz napajalnikov +5 V in -5 V. Upoštevajte, da izhodni signal ni kondenzatorsko vezan, preden se pripelje v izhodno vtičnico X1, zato se ohranijo vse uporabniško izbrane enosmerne prednapetosti.
Za en pol nizkopasovnega izhodnega filtriranja se uporabljata kondenzatorja C3/R2 in C4/R5, ki sta priključena na U2A. Drugi pol sestavljata C2/R8 na izhodnem ojačevalniku U2B. Ta imata -3 dB mejno frekvenco 88 kHz – precej nad najvišjo frekvenco signala 30 kHz, vendar dovolj nizko, da filtrirata vse zrcalne frekvence.
Tako U2, optični ojačevalnik TL082, kot kompenzacijsko vezje potrebujeta vir napajanja +5 voltov in -5 voltov. Napajanje +5 V je zagotovljeno s 5 V stenskim adapterjem z vtičem micro-USB, ki se priključi v USB vtičnico modula ESP32. Za negativno napajanje skrbi izolirani pretvornik DC-DC RFM-0505S. To je najcenejši način ustvarjanja stabilnega napajanja z napetostjo -5 V, ki lahko prenese dovolj toka, da lahko TL082 z največjim izhodnim signalom 6 V p-p poganja 600-ohmsko breme.
Vezje testerja komponent
Če si ogledate sliko 3, boste videli „originalni“ tester komponent – izumljen verjetno pred več kot 50 leti ali kmalu po tem, ko so bili osciloskopi splošno dostopni. Omrežna napetost je izolirana in zmanjšana na 6,3 VRMS s pomočjo žarilnega transformatorja TR1 (v tistih časih običajnega). Ta 6,3 VRMS (18 Vp-p) je višja, kot je potrebno, in se z R1, R2 zmanjša na 3 Vp-p. Ta napetost je dovolj velika, da polprevodnikm zagotovi prednapetost, ki povzroči tok, vendar napetost ni dovolj velika, da bi poškodovala večino običajnih sestavnih delov. Ta vzbujalna napetost se prek 1k upora (R3) dovede v preskušano komponento. Tok, ki ga komponenta odvaja, ustvari padec napetosti na R3 in ta napetost se pošlje v vertikalni kanal osciloskopa prek vtičnice BNC X1. Napetost na preskušani komponenti se prek X2 pošlje v vodoravni kanal osciloskopa. Za ustvarjanje „podpisa“ komponente je treba osciloskop postaviti v način X-Y. To spremeni vir signala za vodoravno odklonitev osciloskopa s privzetega generatorja časovnih ramp na osciloskopov izhod ojačevalnika kanala 2.
Napetost na preizkušani komponenti in napetost na šent uporu R3 se razlikujeta glede na preizkušano komponento. Zato je treba prilagoditi nastavitve navpičnega in vodoravnega območja osciloskopa, da se zagotovi dobro viden vzorec. To lahko storite vnaprej tako, da preizkusite znano dobro komponento enake vrednosti, kot je tista, ki jo želite preizkusiti.
Če si pozorno ogledate to vezje, boste opazili, kje sem prikazal simbol zemlje. To ustreza masi merilnika, ki je povezana z omrežno maso. Opazite, da ta ozemljitev osciloskopa NI povezana z nobeno od dveh točk izmeničnega signala (tj. preko R2). To deluje pravilno, ker transformator TR1 zagotavlja „plavajoči“ izmenični signal.
Oglejte si sliko 2 vezje tega projekta. Izhod generatorja sinusnih signalov iz U2B se generira glede na maso – vsaj kar zadeva MCU ESP32 in preostalo vezje. Če bi projekt napajali iz 5 V stenskega USB adapterja, bi bilo celotno vezje glede na maso lebdeče. Vendar sem med razvojem projekt napajal prek USB kabla, priključenega na računalnik, zaradi razhroščevanja pa sem uporabljal serijski terminal računalnika. S tem je bila referenčna masa vezja postavljena na potencial omrežne mase, saj je računalnik vezan na omrežno maso. Vendar sem ugotovil, da je bil signal iz osciloskopa močno popačen zaradi motenj iz omrežne frekvence. Te motnje so izginile, ko sem izoliral izhodni izmenični signal od ozemljitve vezja z majhnim transformatorjem TR1 600 Ω: 600 Ω, TY-311P proizvajalca Triad Magnetics. Da bi odstranil morebitni enosmerni zamik, ki bi lahko bil prisoten zaradi nastavitve R9, potenciometra za zamik, sem ta transformator povezal z U2B z uporabo povezave dveh 47 uF elektrolitskih (polariziranih) kondenzatorjev, C5, C6, obrnjenih drug proti drugemu.
Vezje, ki ga uporabljam v tem projektu, je v osnovi enako tistemu, ki je prikazano na sliki 3, shemi „originalnega“ testerja. Edina razlika je, da fiksni upor 1k (R3) zamenjam s tremi različnimi, s stikalom izbranimi vrednostmi od 500 Ω do 10 kΩ. To omogoča večje napetosti, ki gredo na osciloskop, kadar preizkušana komponenta potrebuje majhen tok. Ker lahko generator sinusnih signalov proizvaja signale od frekvence pod Hz do 30 kHz, izmenični signal, ki gre na preskušano komponento, ni fiksiran na 50 (60) Hz, kot je bilo v prvotni zasnovi. Tako bi na primer kondenzatorji z manjšo vrednostjo dali boljše „podpise“, če bi bila izbrana višja frekvenca vzbujanja.
Uporabniški vmesnik
Poskušal sem zasnovati čim cenejši uporabniški vmesnik, ne da bi bila njegova uporaba neprijetna. Izbral sem MCU ESP32 in se odločil za modul DF Robot DFR0478, ki se imenuje tudi „FireBeetle“. To je poceni ploščica, ki vsebuje LiPo polnilnik/regulator, ki je priročen, vendar tu ni potreben. Upoštevajte, da DF Robot prodaja tudi nekoliko boljši modul DFR0654 (FireBeetle 2), ki vsebuje MCU ESP32-E, vendar prednosti tega modula tukaj niso potrebne.
Ker ima ESP32 veliko GPIO linij, sem se odločil uporabiti 16×2 LCD alfanumerični zaslon in ga povezal s standardnim 4-bitnim vzporednim načinom. Uporabil sem vrtljivi enkoder z vgrajenim stikalom. Za izbiro, na kaj vpliva vrtljivi enkoder, sta na voljo dve dodatni stikali. Ko pritisnete tipko Meni, zaslon ciklično preklaplja med prikazom naslednjih funkcij:
- Generator sinusnega signala
- Generator trikotnega signala
- Tester komponent @ 100 Hz
- Tester komponent @ 1 kHz
- Tester komponent @ 10 kHz
Ko pritisnete tipko enkoderja, se sproži postopek, ki je trenutno prikazan. V primeru načinov testiranja komponent se zažene generator sinusnih signalov pri eni od treh vnaprej nastavljenih frekvenc.
Za način generiranja sinusnega in trikotnega signala se prikaže privzeta frekvenca. S pritiskom na gumb kurzorja se premaknete na želeni položaj prikazane frekvence in z enkoderjem spremenite to vrednost. Izhodna frekvenca sinusnega/trikotnega signala se med prilagajanjem ne bo takoj spremenila, da bi ustrezala vsaki številki. Ko vnesete želeno frekvenco, pritisnite tipko enkoderja: generator signalov se bo zagnal in na zaslonu se bo prikazal napis „waveform on“ s čemer se na izhodu pojavi želeni signal. S ponovnim pritiskom na tipko enkoderja se generator signalov izklopi, za trenutek se prikaže „waveform off“, nato pa se prikaže trenutna frekvenca – za morebitne nadaljnje potrebne nastavitve uporabnika. Enota ostane v tem načinu, dokler ponovno ne pritisnete gumba Menu, takrat se vrne v način izbire glavnega menija.
Čeprav je frekvenčna ločljivost DDS rutine 7 x 10-5 Hz, ta izjemno visoka ločljivost v praksi ni potrebna, zato frekvenco prikažem le na 3 decimalna mesta.
Tester komponent
Za uporabo testerja komponent potrebujete osciloskop, ki omogoča prikaz X-Y in ne le prikaz napetosti v odvisnosti od časa. Na mojem starem analognem Tektronix 236 osciloskopu to dosežemo tako, da krmilnik X-osi obrnemo za en položaj za najpočasnejšo hitrost preleta, ki je jasno označena kot „X-Y“. Na mojem novejšem digitalnem osciloskopu Siglent 1202X je ta način na voljo v meniju Acquire. Nekoliko nerodno mi je priznati, da se v desetih letih, odkar imam ta osciloskop, nisem zavedal, da ima X-Y način. To sem ugotovil šele, ko sem za pregledni članek, ki sem ga pripravil za neko drugo revijo, prejel popolnoma nov osciloskop Siglent SDS812X. Za ta pregled sem temeljito prebral uporabniški priročnik in preveril vse njegove funkcije. Ko sem odkril način X-Y v meniju Acquire, sem ponovno pogledal svoj SDS1202X in tam odkril enako funkcijo.
Konfiguracija testerja komponent zaradi svoje preprostosti pomeni, da boste morali uporabiti funkcijo Channel Invert na 2. kanalu osciloskopa, da bi prikazali „podpis“, pri katerem je pozitivni tok prikazan kot sled v zgornji polovici zaslona.
Slika 4 prikazuje podpis kondenzatorja 0,1 uF pri 1 kHz. Ta krožna sled je „podpis“ za vsako komponento, ki vnaša fazni premik, kar kondenzatorji počnejo.
Odvisno od vrednosti kapacitivnosti in šent upora (R15-R17), ki ga izberete, boste morda morali prilagoditi območje 2. kanala na osciloskopu, da boste dosegli nekaj, kar je podobno krogu ali vsaj elipsi. Praviloma velja, da manjši kot je kondenzator, višjo frekvenco vzbujanja morate uporabiti.
Tudi tuljave ali navitja transformatorjev proizvajajo krožno obliko signala. Seveda pa vnesejo premik, ki je 180° izven faze s kondenzatorji. Vendar pa so v testerju komponent, kot je ta, na zaslonu osciloskopa tako vodilni kot tudi zaostali fazni premiki videti enako. Slika 5 prikazuje podpis majhnega navitja transformatorja s frekvenco vzbujanja 10 kHz. Silicijeva dioda bo videti kot na sliki 6 ali 7, odvisno od tega, kako so nanjo priključeni testni kabli. V obeh primerih je vodoravna skala 1 volt/razdelek in vidite, da začne dioda pri približno 0,5 V prevajati.
Schottkyjeva dioda ima seveda nižjo prebojno napetost. Podobne signature je mogoče dobiti za prehode baza-kolektor in baza-emitor na bipolarnih tranzistorjih – vendar so lahko videti nekoliko drugače, če jih merimo v vezju. Enostavni testerji komponent, kot je ta, so najprimernejši za merjenje v vezju, če imate identično ploščo, za katero veste, da je dobra – potem lahko primerjate podpise različnih komponent na TIV med dobro ploščo in testirano ploščo.
Odprtesponke se prikažejo kot vodoravna črta, kratek stik pa kot navpična črta. Upori se prikažejo kot diagonalna črta, ki se začne v spodnjem levem kvadrantu in konča v zgornjem desnem kvadrantu. Naklon bo sorazmeren z upornostjo preizkušane komponente in izbrano vrednostjo R15-R17.
Ta tester ne vsebuje zaščitnih komponent. Le en upor in sekundarni del transformatorja TY-311P sta neposredno povezana s preskušano komponento – seveda razen z osciloskopom. Prepričajte se, da so vsi preizkušani veliki kondenzatorji izpraznjeni, preden nanje priključite ta tester. Ta varnostni ukrep seveda velja tudi za odpravljanje težav, ki jih lahko opravite z DVM ali osciloskopom.
Na sliki 8 je prikazan generator signalov in tester komponent pred namestitvijo v ohišje.
Ugnezdena programska oprema za ESP32 je bila napisana z Arduinom 2.3.2 IDE. Vse potrebne knjižnice lahko dobite s funkcijo iskanja knjižnic Arduino. Kot ciljno ploščo lahko izberete ploščo ESP32 Dev, saj je DFR0478 podobna – vsaj kar zadeva ta projekt.
Zaključki
Kot sem omenil v uvodu, je ta projekt spodbudila omemba starejšega DDS generatorja z ATMega8. V tem projektu je bila DDS rutina napisana v AVR asemblerju, DDS zanka pa je obsegala le 10 ukazov. Vključen ni bil noben časovnik ali DMA: DDS zanka je delovala s hitrostjo, ki jo je nadzoroval uporabljeni kristal MCU (10 MHz). Fazni akumulator je bil po mojem mnenju le 24-bitni, preglednica za iskanje pa je vsebovala 8-bitne vrednosti. Ni bilo diskretnega DAC – za izvedbo DAC-a je bila uporabljena uporovna lestvica R-2R, ki jo je krmililo 8 linij GPIO.
Vendar je ta zasnova omogočila vzorčenje s frekvenco 1 MHz, kar je 3-krat več, kot lahko delujejo I2S vrata v ESP32. ESP32 nima 8-bitnega GPIO vzporednega priključka. Zato bi bilo nemogoče uporabiti lestvični pretvornik R-2R, kot je bilo to storjeno v prejšnjem projektu. Obstajali so tudi drugi pomisleki, zaradi katerih na ESP32 z 32-bitnim jedrom Xtensa LX7 ni bilo mogoče izvajati neposrednega dostopa do vrat, ki je bil na voljo v enoti AVR MCU. Zato moram priznati, da novejše ni vedno boljše v smislu zmogljivosti MCU!
https://svet-el.si