ERK'2022, Portorož, 466-469 466 Izdelava signalnega generatorja na osnovi mikrokrmilnika STM32G061 Luka Kavˇ ciˇ c Univerza v Ljubljani, Fakulteta za Elektrotehniko, Trˇ zaˇ ska cesta 25, Ljubljana E-poˇ sta: lk4653@student.uni-lj.si Making a signal generator based on Microprocessor STM32G061 When making or repairing electronic devices we can be much more efficient with proper measuring and testing equipment. We are often unable to solve unexpected prob- lems without it. The problem is that devices like oscil- loscope or signal generator can often be too expensive for students or amateurs. Signal generators usually have very low output current and high internal resistance of 50 Ω . That can be quite a problem with dual channel oscil- loscopes since one channel is used to measure the output of our signal generator, making us unable to concurrently measure more than one node. The goal was to make a low-cost signal generator with small output impedance and large output power. Sam- ple frequency is 6 MSps, output frequency is limited to 1 MHz. Output voltage swing is± 13 V . Output current is limited to 333 mA. The generator can add up to 6 func- tions, including noise and DC offset. It is controlled by 3.5-inch touch screen, where we can choose desired func- tions and set their parameters. The screen contains a graph for easier representation of the output signal. The circuit contains a relay, used for high impedance output. For better compatibility with lab equipment, 50Ω output with BNC connector is used. 1 Uvod V ˇ casu korone, ko smo bili zaprti doma, smo bili ˇ studentje prikrajˇ sani laboratorijev, marsikdo pa je le imel veˇ c pro- stega ˇ casa in se je ˇ zelel zaˇ ceti ukvarjati z elektroniko. Eden prvih problemov, ki ga sreˇ camo pri delu z elektro- niko je pomanjkanje primerne opreme za ustvarjanje in testiranje naˇ sih kreacij. Osnovne komponente in mikro- krmilniˇ ske ploˇ sˇ cice se da kupiti v poceni paketih, ven- dar pogosto potrebujemo tudi osciloskop in funkcijski ge- nerator, ki pa sta zelo draga. Za potrebe amaterjev in ˇ studentov ne potrebujemo, da ima signal zelo veliko raz- merje signal-ˇ sum ali da je amplituda natanˇ cna na mV . Je pa zelo uporabno, ˇ ce lahko odda nekaj W moˇ ci, da lahko z njim tudi napajamo manjˇ se vezje. Cilj je bil na- rediti poceni funkcijski generator, ki lahko deluje tudi kot manjˇ si napajalnik za enosmerne in izmeniˇ cne signale, obenem pa lahko signalu doda tudi ˇ sum ali superponira druge funkcije. 2 Vezje Vezje je sestavljeno iz 3 podvezij. Napajalni del je za ge- neriranje potrebnih enosmernih napetosti. Digitalni del je za generiranje signala in uporabniˇ ski vmesnik. Analogni del je za ojaˇ canje signala. 2.1 Napajanje Vezje dobi elektriko iz zunanjega 12 V vira. Za napajanje LCD ekrana in mikrokrmilnika potrebujemo 3,3 V , za kar je uporabljen AMS1117-3.3 linearni regulator napetosti. Na vhodu in izhodu regulatorja je dodan 10 µF konden- zator, kot piˇ se v podatkovni tabeli [1]. Ker ˇ zelimo izhod z± 13 V , potrebujemo vhodno nape- tost poveˇ cati in obrniti polariteto. Zato je uporabljen izo- liran pretvornik enosmernih napetosti, specifiˇ cno kompo- nenta MPRA2415ZP-10W, ki na vhodu potrebuje 9 V do 24 V , na izhodu pa dobimo 15 V in -15 V . Zemljo na vhodu in izhodu ˇ cipa smo vezali kratko. Za veˇ cjo stabilnost izhodov sta uporabljena 10 µF kondenzatorja. Najveˇ cji izhodni tok komponente je 333 mA. Ker so vse napetosti v vezju interno regulirane, vho- dna napetost ne potrebuje biti toˇ cno 12 V . Najniˇ zja do- voljena vhodna napetost je 9 V zaradi releja in vhoda na MPRA2415ZP-10W, najviˇ sja pa 15 V zaradi toplotnih omejitev AMS1117-3.3. Z dodatkom hladilnika na nape- tostni regulator bi lahko poveˇ cali vhodno napetost do 19 V , kjer bi nas spet omejil rele. Zato je vezje mogoˇ ce napa- jati tudi z baterijami, brez dodatnega vezja za regulacijo napetosti. 2.2 Digitalni del Uporabljen je bil mikrokrmilnik STM32G061C8T6 [2], saj ima visoko hitrost podatkovnega vodila, kar potrebu- jemo za hitro vzorˇ cenje. Obenem je ˇ cip zelo nov, kar pomeni, da ˇ se zanj ni veliko komercialnih uporabnikov in je zato na zalogi kljub trenutnim razmeram. Ob mi- krokrmilniku je gumb za resetiranje programa in 2 sve- tleˇ ci diodi za indikacijo napajanja in prevelikega signala v izhodni tabeli. Na mikrokrmilnik je vezan tudi 8MHz kvarˇ cni kristal. Uporabljen je 3,5 palˇ cni ekran na dotik z gonilnim ˇ cipom ILI9488 ter ˇ cipom za dotik XPT2046, Ima 480x320 barvnih pik in podpira 65536 barv. Za komunikacijo z ekranom na dotik se uporablja protokol SPI. Za poˇ siljanje in sprejemanje ukazov mikrokrmilnik uporablja vgrajeno 467 Slika 1: Shema analognega dela vezja. SPI enoto, ki ustvarja urin cikel ter samodejno sprejema in oddaja pakete osmih bitov podatkov. Mikrokrmilnik deluje s frekvenco 60 MHz. Frekvenca poˇ siljanja podat- kov na ekran je 15 MHz, s ˇ cipom za dotik pa komunicira z 468 kHz. 2.3 Analogni del Analogno vezje je sestavljeno iz ojaˇ cevalnika in releja. Celotno vezje je na prikazano na shemi (slika 1). Ojaˇ ce- valnik je zgrajen iz operacijskega ojaˇ cevalnika in moˇ c- nostnih tranzistorjev v B vezavi. Za operacijski ojaˇ ceval- nik je najpomembnejˇ si parameter stopnja naraˇ sˇ canja si- gnala (ang. Slew Rate), zato je bil izbran ojaˇ cevalnik LM7171 [3]. Med spreminjanjem signala se digitalno- analogni pretvornik postavi na najniˇ zje stanje, kar v naˇ sem primeru pomeni -13 V. Ker bi to lahko poˇ skodovalo zu- nanje vezje, potrebujemo rele, da lahko izhod postavimo na visoko-impedanˇ cno stanje. Ojaˇ cevalnik ima 3 funkcije. Ojaˇ ci napetost iz obmoˇ cja med 0 V in 3,3 V , na obmoˇ cje med -13 V in 13 V . Najveˇ cji izhodni tok poveˇ ca iz 0,3 mA na 333 mA, ˇ ce poveˇ camo napajanje, bi omogoˇ cal tudi veˇ cje tokove. Deluje tudi kot impedanˇ cni pretvornik, ki ga potrebu- jemo za izboljˇ sanje visokofrekvenˇ cnih karakteristik digitalno-analognega pretvornika. Mikrokrmilnik ima si- cer vgrajen operacijski ojaˇ cevalnik, vendar ta nima do- volj hitre stopnje naraˇ sˇ canja, zato ga izklopimo. Pro- blem predstavljajo parazitne kapacitivnosti, zaradi kate- rih ˇ se vedno ne moremo dosegati visokih frekvenc. Zuna- nji operacijski ojaˇ cevalnik, v uporabljeni vezavi, je krmi- ljen s spremembo toka skozi upor ter uporovno lestev v digitalno-analognem pretvorniku in drˇ zi skoraj konstan- tno napetost na izhodu digitalno-analognega pretvornika. Zato nas parazitne kapacitivnosti ne ovirajo veˇ c, para- zitne induktivnosti digitalno-analognega pretvornika pa so mnogo manjˇ se. Podrobneje je ta vezava opisana v poroˇ cilu uporabe AN4566 [4]. Za dostop do izhodnega signala sta uporabljena 2 banana prikljuˇ cka, dodatno pa je za 50Ω uporom ˇ se pri- kljuˇ cek BNC za veˇ cjo kompatibilnost z laboratorijsko opremo. 3 Program Osnove programa so opisane na diagramu (slika 2). Upo- rabnik lahko izbira med petimi osnovnimi funkcijami: enosmerna napetost, ˇ sum, sinus, pravokotni signal in tri- kotni signal. Vsaki lahko nastavi napetost, frekvenco, fa- zni zamik ter delovni cikel. Izbere lahko do ˇ sest funkcij, ki jih bo generator seˇ stel in poˇ siljal na skupen izhod. Na ekranu je prikazan graf z izhodnim signalom, naj- veˇ cjo, srednjo in najmanjˇ so napetostjo in hitrostjo vzorˇ c- enja. Napisane so uporabljene funkcije in njihovi para- metri. Z dotikom lahko nastavimo parametre in funkcije, lahko tudi znova izraˇ cunamo izhodno tabelo in nastavimo izhod na visoko-impedanˇ cno stanje. 3.1 Perioda vseh funkcij Za izraˇ cunanje periode signala vzamemo prvi dve fre- kvenˇ cno odvisni funkciji. Vsaki priredimo redukcijski faktor 1 in zapiˇ semo naslednjo enaˇ cbo. (1) f 1 k r1 ≈ f 2 k r2 (1) ˇ Ce je ena stran enaˇ cbe veˇ cja od druge, ji poveˇ camo re- dukcijski faktor za 1. Faktor poveˇ cujemo toliko ˇ casa, do- kler obe strani nista pribliˇ zno enaki. Skupna perioda je f1 kr1 . Ta postopek ponovimo za vse frekvenˇ cno odvisne funkcije. Glede na konˇ cno frekvenco izberemo primerno vzorˇ cno frekvenco in nastavimo ˇ stevec. 3.2 Perioda vzorˇ cenega signala Perioda signala pred in po vzorˇ cenju nista vedno enaki. Toˇ cno ˇ stevilo vzorcev v periodi se doloˇ ci z deljenjem vzorˇ cne frekvence s frekvenco signala. Dobljen rezul- tat je realno ˇ stevilo, mi pa potrebujemo celo ˇ stevilo. Zato rezultat pomnoˇ zimo z naravno-ˇ stevilsko konstanto. ˇ Ce ima nova ˇ stevilka dovolj manjˇ so razliko do najbliˇ zjega celega ˇ stevila, bo to naˇ se novo ˇ stevilo vzorcev v peri- odi. Konstanto poveˇ cujemo in ta postopek ponavljamo, dokler ni ˇ stevilo vzorcev v preizkuˇ seni periodi veˇ cje od 468 Slika 2: Diagram programa. najveˇ cjega ˇ stevila vzorcev v tabeli. Konˇ cno ˇ stevilo vzor- cev je najveˇ cji veˇ ckratnik periode, ki ga ˇ se lahko zapiˇ semo v izhodno tabelo. Veˇ c period signala je uporabnih, saj se tako dodane aperiodiˇ cne funkcije ne ponovijo vsako pe- riodo signala, temveˇ c le ob ponovitvah celotne tabele. 3.3 Raˇ cunanje signala Za raˇ cunanje vrednosti izhodnega signala so uporabljene parametriˇ cne enaˇ cbe funkcij. Za izraˇ cunanje sinusa je uporabljena funkcija sin() , za izraˇ cunanje ˇ suma pa funk- cija rand(), obe funkciji najdemo v knjiˇ znici ”math.h”. Zahteve so, da lahko uporabnik seˇ steje veˇ c enakih funkciji, obenem pa se ne shranjuje vrednosti posame- znih funkcij zaradi omejenega pomnilnika. Zato so upo- rabljeni kazalci na funkcije, ki jim s parametrom ”funct” doloˇ cimo, na katero funkcijo kaˇ zejo. Funkcijam podamo tudi ostale parametre in vzorec, v katerem raˇ cunamo. Funkcije nam vrnejo vrednost funkcije v tem vzorcu kot ˇ stevilo s plavajoˇ co vejico. Vrednost vzorca v izhodni ta- beli je seˇ stevek 6 vrednosti funkcij, preslikano v 12 bitna ne predznaˇ ceno ˇ stevilo. 3.4 Zaslon Prikaz na zaslon se posodablja le v primeru dotika. Na desni strani zaslona je prikazanih 6 gumbov, na katerih so prikazane izbrane funkcije in njihova napetost in fre- kvenca. Spodaj desno je prikazan gumb, ki prikazuje trenutno stanje izhoda, zelena pomeni delujoˇ c signal, ru- mena pomeni, da se signal na izhodu in parametri na za- slonu razlikujejo, rdeˇ ca pa da je izhod ugasnjen. Spo- daj so prikazani gumbi s parametri izbranega signala, nad njimi pa vrednost izbranega parametra in gumbi s puˇ sˇ ci- cami. Ena od ˇ stevk vrednosti parametra je oznaˇ cena z rdeˇ co, s pritiskom na puˇ sˇ cico gor ali dol se ta ˇ stevka poveˇ ca ali zmanjˇ sa, s pritiskom na puˇ sˇ cico levo ali de- sno pa spremenimo, katera ˇ stevka je oznaˇ cena. V sredini ekrana je graf, ki kaˇ ze izhodni signal. Ska- liran je tako, da izhodni signal sega od zgornjega do spo- dnjega roba in da je na ekranu prikazanih nekaj period. Narisane so tudi 3 horizontalne ˇ crte za prikaz minimalne, maksimalne in srednje vrednosti, na desnem robu so te vrednosti napisane. Na levem robu sta napisani vzorˇ cna frekvenca in razmerje med vzorci in ˇ stevilo pik na ekranu. Spodnji in desni gumbi so normalno modri, ˇ ce so iz- brani pa rdeˇ ci. ˇ Ce pritisnemo na ˇ ze izbran desni gumb, se nam ˇ cez graf prikaˇ zejo gumbi za izbiro signala. 469 4 Omejitve 4.1 Periodiˇ cnost Za doseganje najveˇ cje hitrosti digitalno-analognega pre- tvornika ter sprostitev jedra mikrokrmilnika je uporabljen DMA. To omogoˇ ca prepisovanje tabele vrednosti na iz- hod digitalno-analognega pretvornika brez uporabe ciklov procesne enote in zagotavlja ˇ casovno konstanten razmak med vzorci. Ta tabela mora biti periodiˇ cna, kar onemogoˇ ca generiranje aperiodiˇ cnih signalov. Zaradi omejenega spo- mina mikrokrmilnika je tabela omejena na najveˇ c 4096 vrednosti. Zaradi omejitve periodiˇ cnosti vzorˇ cenega si- gnala in cikliˇ cnega prenosa podatkov iz spomina pa ne moremo uporabiti celotne tabele. 4.2 Kvantizacija in preciznost DAC Digitalno-analogni pretvornik je 12-bitni, kar mu omogoˇ ca 4096 izhodnih stanj. ˇ Ce predpostavimo, da je izhod po- polnoma linearen in brez pogreˇ skov, je najmanjˇ sa razlika napetosti na izhodu 6,35 mV . V realnosti ima procesor efektivno ˇ stevilo bitov 11,5 in nekaj najmanj pomembnih bitov napake ter ˇ suma. Pri majhnih izhodnih napetostih pride do izraza tudi prehod skozi niˇ clo B ojaˇ cevalne sto- pnje. Zato ojaˇ cevalnik ni primeren za uporabo pri izhodni napetosti manjˇ si od 0,5 V . 5 Moˇ zne izboljˇ save 5.1 Digitalno sito Ker je uporabljen realni digitalno-analogni pretvornik ter je na izhodu analogno sito za zagotavljanje stabilnosti, se realni in ˇ zeljeni signal nekoliko razlikujeta. Reˇ sitev bi bila implementacija digitalnega filtra, ki bi kompenziral te pogreˇ ske. Ker se vrednosti vzorcev izraˇ cunajo pred iz- vajanjem, se sito ne potrebuje raˇ cunati v dejanskem ˇ casu in je lahko ˇ casovno zahtevno. 5.2 Programska kalibracija Nastavitev enosmerne napetosti in ojaˇ cenja je izvedena analogno z regulacijskimi potenciometri. Boljˇ sa bi bila uporaba digitalne kompenzacije. Z uporabo integriranega analogno digitalnega pretvornika bi izmerili izhod ojaˇ ce- valnika ter spremenili izhodno tabelo za korekcijski fak- tor. To bi omogoˇ calo samodejno kalibracijo. Lahko bi tudi odpravili napake v izhodnem signalu zaradi segreva- nja uporovne lestve v digitalno-analognem pretvorniku. Zmanjˇ sala bi ceno ploˇ sˇ cice, saj bi lahko potenciometre zamenjali z navadnimi upori. 5.3 Izhodna stopnja Za poveˇ canje maksimalnega izhodnega toka je bila upo- rabljena B izhodna moˇ cnostna stopnja, ki predvsem pri majhnih signalih povzroˇ ci popaˇ cenja ob prehodu skozi 0 V . Z implementacijo AB izhodno moˇ cnostne stopnje bi lahko ta popaˇ cenja zmanjˇ sali. Problem implementa- cije AB je poveˇ cana porabo energije in dodatno segre- vanje komponent, ki se mi pri naˇ crtovanju ni zdela smi- selna. Lahko bi uporabili tudi G izhodno stopnjo, ki bi omogoˇ cala manjˇ se izgube na tranzistorjih in manjˇ sa popa- ˇ cenja pri majhnih signalih, vendar bi potem potrebovali veˇ c komponent in dvignili ceno ter kompleksnost izdelka. Literatura [1] LCSC. AMS1117 Datasheet. Teh. poroˇ cilo. URL: https : / / datasheet . lcsc . com/szlcsc/2001081204_Shikues- AMS1117-1-2_C475600.pdf. [2] ST. Datasheet - STM32G061x6/x8. Teh. poroˇ cilo. URL: https : / / www . st . com / resource / en / datasheet / stm32g061f6.pdf. [3] Texas Instruments. LM7171 Datasheet. Teh. poroˇ cilo. URL: https://www.ti.com/ lit/ds/symlink/lm7171.pdf?HQS= dis-mous-null-mousermode-dsf- pf-null-wwe&ts=1656418847677& ref_url=https%253A%252F%252Feu. mouser.com%252F. [4] ST. Application note AN4566: Extending the DAC performance of STM32 microcontrol- lers. Teh. poroˇ cilo. URL: https : / / www . st . com / resource / en / application _ note / dm00129215 - extending-the-dac-performance- of - stm32 - microcontrollers - stmicroelectronics.pdf. [5] Donald Neamen. Microelectronics Circuit Ana- lysis and Design. en. Sep. 2009. URL:https: //www.mheducation.com/highered/ product / microelectronics - circuit-analysis-design-neamen/ M9780073380643 . html (pridobljeno 21. 1. 2022). [6] Iztok Fajfar in Jernej Olensek. Osvojimo C C89, C99 in primeri programiranja mikrokrmilni- kov. Slovenian. OCLC: 1267933000. Ljubljana: Zalozba FE, 2020. ISBN: 978-961-243-409-0. URL: http://fajfar.eu/Osvojimo- C.pdf (pridobljeno 21. 1. 2022). [7] Saso Tomazic in Savo Leonardis. Dis- kretni signali in sistemi. sl. OCLC: 1016112762. Ljubljana: Zalozba FE, 2017. ISBN: 978-961-243-344-4. URL: http : / / www . fe . uni - lj . si / o _ fakulteti/zalozba_in_trgovina/ prenos / Tomazic - Leonardis - %20DiskretniSignaliInSistemi . pdf (pridobljeno 30. 6. 2022). [8] ST. RM0444 Reference Manual - STM32G0x1. Teh. poroˇ cilo. URL: https://www.st. com / resource / en / reference _ manual / rm0444 - stm32g0x1 - advanced-armbased-32bit-mcus- stmicroelectronics.pdf.