česky english Vítejte, dnes je čtvrtek 25. duben 2024

Vyrábíme signály s MCU PIC. Jak na to

DPS 4/2018 | Články
Autor: Mary Iva Rosario Salimbao, Microchip Technology
01.jpg

Mary Iva Rosario Salimbao ze společnosti Microchip Technology vysvětluje, jakým způsobem využijeme při vytváření referenčních signálů a také zdrojů pro účely časování periférií v podobě programovatelných generátorů PRG.

Programovatelný generátor PRG (Programmable Ramp Generator), kterým společnost Microchip Technology vybavila několik nedávných 8bitových mikrokontrolérů PIC ® , je velmi flexibilní analogovou periférií navrženou s cílem zjednodušit aplikace vyžadující lineární změnu napětí. Jak již naznačuje samotné pojmenování, generátory PRG pro nás na svém výstupu za současného řízení ze strany softwaru vyrobí lineárně rostoucí, klesající nebo též střídavě rostoucí a klesající funkce – průběhy. Jakmile však budou jednou nakonfigurovány, dokážou takové periférie pracovat nezávisle na jádru a odlehčit přitom jednotce CPU (Central Processing Unit), která se tak může věnovat dalším úlohám, vstoupit do nízkopříkonového režimu, příp. se v systému ještě lépe chopit dohlížecí role.

Délku trvání náběžné a sestupné hrany bude možné dynamicky nastavit řízením integrovaného zdroje konstantního proudu. Flexibilní volbou vstupů a výstupů pak vývojář vše svobodně propojí se zdroji signálu mimo čip nebo též se signály pocházejícími z dalších periférií mikrokontroléru. Často tak dosáhneme ještě lepších reakcí systému za současného omezení případných zdrojů rušení na minimum. Také se nám sníží výsledné rozměry aplikace, protože jsme zmenšili počet vnějších součástek. Blokový diagram periférie zachycuje obr. 1.

vyvoj01
Obr. 1 Zjednodušený blokový diagram modulu PRG

Užitečným nástrojem pro konfiguraci PRG se stává MPLAB® Code Configurator (MCC), uživatelsky přívětivý plug-in pro MPLAB X Integrated Development Environment (IDE), viz obr. 2. Zajistíme si tak drivery pro ovládání a řízení periférií mikrokontrolérů PIC od Microchipu, jako jsou např. zmiňované PRG. S využitím generátorů PRG vytvoříme různé funkce a každou z nich nastavíme díky MCC.

vyvoj02
Obr. 2 MCC a hardwarová nastavení modulu PRG

Vyrábíme trojúhelník

Generátor trojúhelníkového průběhu TWG (Triangular Wave Generator) vyrábí periodický nesinusový signál ve tvaru trojúhelníku se stejnými délkami náběžné a sestupné hrany. Abychom tak mohli učinit, potřebujeme generátor PRG nakonfigurovat ve střídajícím se režimu zvyšování a snižování. Konfiguraci časování vstupních zdrojů pro náběh RS (Rising) a také pokles FS (Falling) zajišťuje MCC. PRG poté stanovuje kmitočet oscilací výstupu na základě těchto dvou napěťových referencí spouštějících náběžnou a také sestupnou hranu. Zmíněné reference také rozhodnou o minimálních a maximálních napěťových špičkách trojúhelníkového signálu.

Bude-li výstup PRG pod napěťovou úrovní nastavenou D/A převodníkem (DAC), dochází ke spouštění vstupu RS generátoru PRG a interní kapacita se z proudového zdroje nabíjí. Když pak výstup PRG překročí úroveň pevné napěťové reference FVR (Fixed Voltage Reference), aktivuje se vstup FS a pro vnitřní kondenzátor vstupuje do hry proudová nora.

vyvoj03
Obr. 3 Zapojení periférií při generování trojúhelníkového průběhu

Protože však generátor PRG nemá vyhrazen výstupní pin, oddělujeme výstup PRG operačním zesilovačem s nastaveným jednotkovým zesílením. Frekvenci výstupu sice dokážeme spočítat, ale její přesnost mohou ovlivnit různé faktory, např. parazitní odpor kondenzátoru, rušení, výrobní odchylky nebo též teplota. Hodnotu kmitočtu posouváme změnou výstupní úrovně převodníku DAC nebo rychlostí přeběhu generátoru PRG – parametr Slope Rate (SR). Rychlost SR u výstupního průběhu definujeme v aktuálním nastavení PRG.

Ideální chování návrhu pozorujeme na obr. 4. Obecně vzato se bude generovaný trojúhelníkový průběh skládat z periodických a symetricky se měnících náběžných a sestupných hran. Maximální a také minimální napětí zde máme definována na základě VFVR, resp. VDAC. Spouštění se pak při náběhu nebo poklesu aktivuje, dosáhne-li signál buď maximálního, nebo též minimálního napětí. Kmitočet dostavíme změnou v nastavení rychlosti přeběhu v rámci MCC. Změna VDAC rovněž ovlivňuje frekvenci, ale bude se podle toho zvyšovat nebo zase snižovat minimální napětí.

vyvoj04
Obr. 4 Časový diagram generátoru trojúhelníkového signálu

Kmitočet oscilací generátoru PRG závisí na zvoleném proudovém zdroji / noře, interní kapacitě a nastavení spouštění pro náběžné a sestupné hrany. Pokud na výstup PRG umístíme další kapacitu, dostaneme se do nižších kmitočtových rozsahů. S dodatečnou konfigurovatelnou logickou buňkou CLC (Configurable Logic Cell) a externím kondenzátorem C1 mohou napěťové spouštěcí body nastavené převodníkem DAC a referencí FVR znovu aktivovat náběžné, resp. sestupné, události. C1 máme připojený na výstup operačního zesilovače a v podstatě paralelně s interní kapacitou generátoru PRG. Doplňkový kondenzátor prodlužuje časový úsek mezi spouštěním a pro FOUT tím zajišťuje nižší kmitočet.

vyvoj05
Obr. 5 Přidáním buňky CLC a kondenzátoru docílíme na výstupu nižších frekvencí

Zapojení buňky CLC na výstup komparátorů umožní generátoru průběhů vyrábět obdélníkové signály a také pulzy. Buňku CLC zde máme nakonfigurovánu jako klopný obvod RS a nízký kmitočet FOUT pak odebíráme z jeho výstupu. Podobně jako v případě generátoru PRG i zde napěťové reference aktivují spouštění a resetují vstupy. K aktivaci FOUT dochází, když napětí na C1 (OPAOUT) klesne pod napěťovou úroveň převodníku DAC. Jakmile se pak OPAOUT dostane nad hladinu FVR, situace se pro FOUT změní opačným způsobem.

Napětím řízený oscilátor

Napěťově řízený oscilátor VCO (Voltage- Controlled Oscillator) je elektronickým zdrojem kmitů, ve kterém kmitočet oscilací ovlivňujeme řídicím napětím na vstupu. Systém je navržen tak, aby okamžitá frekvence VCO byla lineárně závislá na přiváděném napětí. Vyšší napětí na vstupu pak zajistí rostoucí frekvence kmitů. Činnost generátoru PRG bude v návrhu oscilátoru VCO podobná jako v případě generátoru trojúhelníkového signálu TWG, jen s tím rozdílem, že výstupní kmitočet odebíráme z klopného obvodu CLC a vstup RS u generátoru PRG nastavujeme s pomocí proměnného napětí VCNTRL.

vyvoj06
Obr. 6 Způsob řešení napětím řízeného oscilátoru

S rostoucím VCNTRL snižujeme čas potřebný k opětovné aktivaci náběžné hrany. Z tohoto důvodu rychleji přepínáme mezi proudovým zdrojem a proudovou norou a frekvence kmitů se zvyšuje. Vztah mezi řídicím napětím a výstupním kmitočtem pro tři různé úrovně rychlosti přeběhu SR generátoru PRG vidíme na obr. 7. Hodnota SR se pro žádaný frekvenční rozsah může změnit. Nižší úrovně rychlosti přeběhu nám zajistí frekvence od několika hertzů zhruba až do 500 kHz. S vyššími SR se však můžeme dostat až do řádu MHz. Použijeme-li dvě úrovně řídicího napětí a pevnou rychlost přeběhu, pokles VCNTRL nám zmenší kmitočet oscilátoru VCO zajišťovaný na výstupu buňky CLC.

vyvoj07
Obr. 7 Výstupní kmitočet oscilátoru VCO v závislosti na velikosti řídicího napětí

Oscilátor s napěťově řízenou střídou

Standardní obvod napětím řízeného oscilátoru VCO přímo ovlivňuje frekvenci kmitů. V případě oscilátoru s napěťově řízenou střídou VCDCO (Voltage-Controlled Duty Cycle Oscillator) však řídicím napětím „promlouváme“ do střídy výstupních pulzů. Zapojení oscilátoru VCDCO bude podobné jako v případě VCO, jen výstupní pulzy nám zde bude spouštět časová základna. Moduly PWM a TMR stanovují periodu a kmitočet oscilátoru, zatímco generátor PRG prostřednictvím VCNTRL ovlivňuje jeho střídu.

Náběžná hrana PWM aktivuje vstup RS generátoru PRG a spouští buňku CLC. Jakmile pak výstup PRG překračuje úroveň VCNTRL, dochází k aktivaci vstupu FS, kondenzátor PRG bude zkratován a buňka CLC resetována. Výstupy PRG a CLC nyní setrvají na nízké úrovni, dokud znovu nepřeteče TMR a nedostaneme tak kladný výstup PWM. Rostoucí napětí VCNTRL prodlužuje náběžnou hranu, a tudíž i šířku výstupního pulzu.

vyvoj08
Obr. 8 Spouštění s časovou základnou zajistí napětím řízenou střídu

Střídu stanovujeme jako poměr napětí VCNTRL vůči VMAX. Pokud chceme pro střídu zvýšit rozsah, měla by být perioda časovače rovna době náběhu (Ramp), kdy pro danou rychlost přeběhu dosahujeme VMAX. Použijeme-li dvě různé úrovně VCNTRL, může být spouštěcí sekvence pro RS z titulu pevné periody časovače a PWM v obou případech stejná. Před aktivací FS se však může vyskytnout dodatečné zpoždění způsobené konstantní rychlostí přeběhu a vyšším napětím VCNTRL.

Rychlost přeběhu generátoru PRG a délka periody TMR2 se odvíjí od požadovaného rozsahu frekvencí a střídy generátoru VCDCO. Střídu PWM pak lze za účelem aktivace vstupu RS generátoru PRG nastavit dostatečně nízkou. Výstup FOUT stále odebíráme z klopného obvodu RS buňky CLC, přičemž výstupy PWM a CMP zároveň slouží k nastavení a resetování vstupů CLC.

Jednou a asynchronně

Asynchronní systém AOS (Asynchronous One-Shot) generuje při externím spouštění jediný výstupní pulz. AOS, které běžně známe jako monostabilní multivibrátory, mají tedy jeden stabilní stav. Bude-li tento případ odpovídat nízké úrovni, změní nám vnější aktivace stav výstupu po přesně stanovenou dobu na jedničku. Na konci jedné periody se pak AOS vrací zpět do svého stabilního stavu a vyčkává na další událost.

vyvoj09
Obr. 9 Externě spouštěný jediný výstupní pulz

Stav po resetu buňky CLC se pro AOS stává stabilním stavem. Vnější aktivace spouští vstup RS generátoru PRG a také výstup AOS odebíraný z CLC. Když pak PRG dosáhne úrovně reference FVR, aktivuje se vstup FS, vnitřní kapacita generátoru PRG bude zkratována a výstup buňky CLC resetován. Dobu trvání pulzu ovlivňuje referenční napětí FVR a také rychlost přeběhu generátoru PRG. Spouštění vnějším napětím dokáže nahradit moduly PWM a TMR a my se tak vyhneme opakované aktivaci vstupu RS generátoru PRG a také nastavení buňky CLC (S). Žádané pulzy znovu odebíráme z výstupu CLC.

Jednou a řízeně s napětím

Dalším příkladem už jen zdokonalíme předchozí přístup. Jeden vstup zde bude sloužit ke spouštění, zatímco druhým pak stanovujeme délku trvání. Možnou aplikací se stává řízení aktivní doby kontroléru PFC v režimu CrCM (Critical Conduction Mode). Vstupním napětím VCNTRL ovlivňujeme periodu (one-shot) nebo též dobu sepnutí výstupu (on-time). Vyšší úroveň VCNTRL zde znamená též delší aktivní časový úsek. Dosáhne-li tedy rostoucí signál generátoru PRG hodnoty VCNTRL, bude kondenzátor PRG zkratován a střída generátoru COG (Complementary Output Generator) završena. Výstup zůstane na nízké úrovni až do okamžiku, kdy signálem znovu aktivujeme náběh generátoru PRG a také začátek periody COG.

vyvoj10
Obr. 10 Zapojení pro napětím řízené jednotlivé pulzy (one-shot)

Ve výše zmiňovaném kontroléru bude generátor COG řídit spínání výkonového tranzistoru MOSFET (metal-oxide-semiconductor field-effect transistor). Zpětnovazební signál ze zesilovače odchylky pak vedeme jako VCNTRL. Neměnný signál zpětné vazby bude znamenat rovněž pevně danou dobu sepnutí. Při zapínání a vypínání se proud tekoucí indukčností zvyšuje až ke vstupnímu referenčnímu napětí, resp. klesá zpátky k nule. Typické chování takového proudu pro kontrolér s CrCM pak vidíme na obr. 11.

vyvoj11
Obr. 11 Průběh proudu indukčností u kontroléru s CrCM a pevnou dobou sepnutí

Abychom nakonfigurovali periférie s MCC, nahradíme moduly PWM a TMR druhým CMP. Na seznamu zdrojů pro jednotlivé vstupy vybereme vývod CINx+, resp. FVR. Místo buňky CLC zvolíme modul COG a komparátory nastavíme na pozici zdrojů událostí pro FS i RS. V oblasti měničů pro napájení se periférie COG jako výstupní budič hodí mnohem lépe.

Závěr

Na příkladu generátoru PRG jsme si ukázali praktickou výrobu napěťových průběhů sloužících jako referenční signály nebo též zdroje časování. Zmiňované funkce snadno nakonfigurujeme s využitím MCC orientovaného právě na uživatele. Tím však výčet periférií dostupných na mikrokontrolérech PIC od společnosti Microchip ještě nekončí. Za přispění generátorů PRG se totiž můžeme pustit i do dalších aplikací.

Zdroje:

[1] Aplikační poznámka Sample Functions Implemented with the Programmable Ramp Generator,
http://ww1.microchip.com/downloads/cn/AppNotes/cn587053.pdf

[2] Grafické programovací prostředí MPLAB Code Configurator (MCC) od Microchipu,
http://www.microchip.com/mplab/mplab-code-configurator