- Osnove PWM signala
- Postavljanje i zahtjev hardvera
- Kružna shema zatamnjenja LED dioda mikrokontrolera Nuvoton N76E003
- PWM igle na mikrokontroleru N76E003 Nuvoton
- PWM registri i funkcije u N76E003 Nuvoton mikrokontroleru
- Načini rada PWM-a u mikrokontroleru Nuvoton N6E003
- Programiranje Nuvoton N76E003 za PWM
- Treptanje koda i ispitivanje rezultata
Modulacija širine impulsa (PWM) je uobičajena tehnika u mikrokontrolerima za stvaranje kontinuiranog impulsnog signala s definiranom frekvencijom i radnim ciklusom. Ukratko, PWM je promjena širine impulsa dok je frekvencija konstantna.
PWM signal se uglavnom koristi za upravljanje servo motorom ili svjetlinom LED-a. Također, budući da mikrokontroleri mogu pružiti samo Logic 1 (High) ili Logic 0 (Low) na svojim izlaznim pinovima, ne mogu pružiti promjenjivi analogni napon ako se ne koristi DAC ili Digital to Analog pretvarač. U takvom slučaju, mikrokontroler se može programirati za izlaz PWM-a s promjenjivim radnim ciklusom koji se zatim može pretvoriti u analogni napon koji varira. Prethodno smo koristili PWM perifernu opremu i u mnogim drugim mikrokontrolerima.
- Vodič za PWM za ARM7-LPC2148: Upravljanje svjetlinom LED-a
- Modulacija širine impulsa (PWM) pomoću MSP430G2: Upravljanje svjetlinom LED-a
- Generiranje PWM-a pomoću PIC mikrokontrolera s MPLAB-om i XC8
- Modulacija širine impulsa (PWM) u STM32F103C8: Kontrola brzine istosmjernog ventilatora
- Generiranje PWM signala na GPIO pinovima PIC mikrokontrolera
- Vodič za PWM za Raspberry Pi
- Vodič za PWM s ESP32
U ovom ćemo uputstvu povezati LED diodu kojom će se upravljati pomoću ovog PWM signala iz mikrokontrolera N76E003. Procijenit ćemo kakvu postavku hardvera trebamo i kako bismo trebali programirati svoj mikrokontroler. Prije toga, shvatimo neke osnove PWM signala.
Osnove PWM signala
Na slici ispod prikazan je stalni PWM signal.

Gornja slika nije ništa drugo nego konstantni kvadratni val s istim vremenom UKLJUČENJA i istim vremenom ISKLJUČENJA. Pretpostavimo da je ukupan period signala 1 sekunda. Stoga je vrijeme uključivanja i isključivanja 500 ms. Ako je preko ovog signala spojena LED dioda, LED će se uključiti na 500 ms, a isključiti na 500 ms. Stoga će se u perspektivnom prikazu LED zasvijetliti s pola stvarne svjetline ako je uključena na izravni 5V signal bez ikakvog vremena isključenja.

Kao što je prikazano na gornjoj slici, ako se radni ciklus promijeni, LED će zasvijetliti s 25% stvarne svjetline koristeći isti princip kao što je prethodno spomenuto. Ako želite znati više i naučiti o modulaciji širine impulsa (PWM), možete pogledati povezani članak.
Postavljanje i zahtjev hardvera
Kako je zahtjev ovog projekta upravljanje LED diodama pomoću PWM-a. Za povezivanje s N76E003 potrebna je LED dioda. Budući da je LED dioda dostupna na razvojnoj ploči N76E003, ona će se koristiti u ovom projektu. Nisu potrebne druge komponente.
Da ne spominjem, potreban nam je razvojni odbor zasnovan na mikrokontroleru N76E003, kao i Nu-Link programer. Dodatna jedinica napajanja od 5 V može biti potrebna ako se programer ne koristi kao izvor napajanja.
Kružna shema zatamnjenja LED dioda mikrokontrolera Nuvoton N76E003
Kao što možemo vidjeti u donjoj shemi, testna LED dioda dostupna je unutar razvojne ploče i spojena je na priključak 1.4. Krajnje lijevo prikazana je veza programskog sučelja.

PWM igle na mikrokontroleru N76E003 Nuvoton
N76E003 ima 20 pinova od kojih se 10 pinova može koristiti kao PWM. Sljedeće slike prikazuju PWM igle istaknute u crvenom kvadratnom okviru.

Kao što vidimo, istaknute PWM igle mogu se koristiti i u druge svrhe. Međutim, ova druga svrha pinova neće biti dostupna kad su pinovi konfigurirani za PWM izlaz. Pin 1.4 koji se koristi kao PWM izlazni pin, izgubit će drugu funkcionalnost. Ali, to nije problem jer za ovaj projekt nije potrebna druga funkcionalnost.
Razlog izabiranja pina 1.4 kao izlaznog pina je taj što je ugrađena ispitna LED dioda povezana s tim pinom u razvojnoj ploči, pa nam nisu potrebne vanjske LED diode. Međutim, u ovom mikrokontroleru od 20 pinova, 10 pinova može se koristiti kao PWM izlazni pin, a bilo koji drugi PWM pinovi mogu se koristiti u svrhe povezane s izlazom.
PWM registri i funkcije u N76E003 Nuvoton mikrokontroleru
N76E003 koristi sistemski sat ili preljev timera 1 podijeljen PWM satom s Prescalerom koji se može odabrati od 1/1 ~ 1/128. Razdoblje PWM-a može se postaviti pomoću 16-bitnog registra razdoblja PWMPH i PWMPL.
Mikrokontroler ima šest pojedinačnih PWM registara koji generiraju šest PWM signala nazvanih PG0, PG1, PG2, PG3, PG4 i PG5. Međutim, razdoblje je isto za svaki PWM kanal jer dijele isti 16-bitni brojač razdoblja, ali radni ciklus svakog PWM-a može se razlikovati od ostalih jer svaki PWM koristi drugačiji 16-bitni registar radnog ciklusa nazvan {PWM0H, PWM0L}, {PWM1H, PWM1L}, {PWM2H, PWM2L}, {PWM3H, PWM3L}, {PWM4H, PWM4L} i {PWM5H, PWM5L}. Dakle, u N76E003, šest PWM izlaza može se generirati neovisno s različitim radnim ciklusima.
Za razliku od ostalih mikrokontrolera, omogućavanje PWM-a ne postavlja I / O-pinove u njihov PWM izlaz automatski. Dakle, korisnik mora konfigurirati način I / O izlaza.
Dakle, što god je potrebno za aplikaciju, prvi korak je odrediti ili odabrati koji jedan ili dva ili čak više od dva I / O pina kao PWM izlaz. Nakon odabira jednog, I / O pinovi trebaju biti postavljeni kao Push-Pull način ili Kvazi-dvosmjerni za generiranje PWM signala. To se može odabrati pomoću registra PxM1 i PxM2. Ova dva registra postavljaju I / O načine rada gdje x predstavlja broj porta (Na primjer, Port P1.0 registar će biti P1M1 i P1M2, za P3.0 to će biti P3M1 i P3M2 itd.)
Konfiguracija se može vidjeti na donjoj slici-

Zatim je sljedeći korak omogućavanje PWM-a u tim I / O pinovima. Da bi to učinio, korisnik treba postaviti registre PIOCON0 ili PIOCON1. Registar ovisi o mapiranju pinova jer PIOCON0 i PIOCON1 kontroliraju različite pinove ovisno o PWM signalima. Konfiguracija ova dva registra može se vidjeti na donjoj slici-


Kao što vidimo, gornji registar kontrolira 6 konfiguracija. Za ostalo upotrijebite registar PIOCON1.


Dakle, gornji registar kontrolira ostale 4 konfiguracije.
Načini rada PWM-a u mikrokontroleru Nuvoton N6E003
Sljedeći je korak odabir načina rada PWM. Svaki PWM podržava tri načina rada - neovisni, sinkroni i način rada s mrtvim vremenom.
Neovisni način nudi rješenje gdje se šest PWM signala može generirati neovisno. To je potrebno maksimalno vrijeme kada radnje ili zujalice povezane s LED diodama trebaju biti uključene i kontrolirane.
Je sinkroni način postavlja PG1 / 3/5 u istom u fazi PWM izlaz, isto kao PG0 / 2/4, pri čemu je PG0 / 2/4 daje neovisna PWM izlazne signale. To je uglavnom potrebno za upravljanje trofaznim motorima.
Način umetanja mrtvog vremena malo je složen i primjenjuje se u stvarnim motornim primjenama, posebno u industrijskim primjenama. U takvim aplikacijama, komplementarni PWM izlaz mora biti "mrtvo vrijeme" umetanje koje sprječava oštećenje uređaja za prebacivanje napajanja kao što su GPIB. Konfiguracije su postavljene u ovom načinu rada na način da PG0 / 2/4 daje PWM izlazne signale na isti način kao i neovisni način rada, ali PG1 / 3/5 pruža "izvanfazne PWM signale" na izlazu PG0 / 2/4 i zanemarite PG1 / 3/5 registar dužnosti.
Iznad tri načina mogu se odabrati pomoću donje konfiguracije registra -

Sljedeća konfiguracija je odabir vrsta PWM-a pomoću registra PWMCON1.

Dakle, kao što vidimo, dostupne su dvije vrste PWM-a koje se mogu odabrati pomoću gornjeg registra. U poravnanju s rubom, 16-bitni brojač koristi rad s jednim nagibom brojeći od 0000H do zadane vrijednosti {PWMPH, PWMPL}, a zatim započinjući od 0000H. Izlazni valni oblik poravnat je s lijevim rubom.
Ali, u načinu centriranog poravnanja, 16-bitni brojač koristi rad s dvostrukim nagibom brojeći od 0000H do {PWMPH, PWMPL}, a zatim odbrojavanjem od {PWMPH, PWMPL} do 0000H. Izlaz je poravnat prema centru i koristan je za generiranje valova koji se ne preklapaju. Sada napokon PWM upravljačke operacije koje se mogu provjeriti u donjim registrima-
Da biste postavili izvor sata, upotrijebite CKCON registar sata.

Izlazni signal PWM-a također se može maskirati pomoću registra PMEN. Pomoću ovog registra korisnik može maskirati izlazni signal za 0 ili 1.

Sljedeći je PWM kontrolni registar-

Gornji registar koristan je za pokretanje PWM-a, učitavanje novog razdoblja i dežurnog opterećenja, kontrolu PWM zastavice i brisanje brojača PWM-a.
Povezane konfiguracije bitova prikazane su ispod -

Da biste postavili razdjelnik sata, upotrijebite PWMCON1 registar za PWM razdjelnik sata. Peti bit koristi se za grupirani PWM s omogućenim grupnim načinom rada i pruža isti radni ciklus za prva tri PWM para.

Programiranje Nuvoton N76E003 za PWM
Kodiranje je jednostavno, a cjeloviti kod korišten u ovom vodiču nalazi se na dnu ove stranice. LED je spojen na pin P1.4. Stoga je pin P1.4 potreban za korištenje za PWM izlaz.
U glavnom programu podešavanja se vrše odgovarajućim redoslijedom. Ispod redaka kodova postavlja se PWM i konfigurira pin P1.4 kao PWM izlaz.
P14_PushPull_Mode;
To se koristi za postavljanje pina P1.4 u push-pull modu. To je definirano u knjižnici Function_define.h kao-
#define P14_PushPull_Mode P1M1 & = ~ SET_BIT4; P1M2- = SET_BIT4 PWM1_P14_OUTPUT_ENABLE;
Sljedeći se retci koriste za omogućavanje PWM-a u pinu P1.4. To je također definirano u knjižnici Function_define.h kao-
#define PWM1_P14_OUTPUT_ENABLE BIT_TMP = EA; EA = 0; TA = 0xAA; TA = 0x55; SFRS- = 0x01; PIOCON1- = 0x02; TA = 0xAA; TA = 0x55; SFRS & = 0xFE; EAP = BIT_T.4 PWM1 izlaz omogućuje PWM_IMDEPENDENT_MODE;
Kôd u nastavku koristi se za postavljanje PWM-a u neovisni način. U biblioteci Function_define.h definira se kao-
#define PWM_IMDEPENDENT_MODE PWMCON1 & = 0x3F PWM_EDGE_TYPE;
Zatim moramo postaviti PWM izlaz tipa EDGE. U biblioteci Function_define.h definira se kao-
#define PWM_EDGE_TYPE PWMCON1 & = ~ SET_BIT4 set_CLRPWM;
Dalje, moramo jasno PWM protuvrijednost koja je dostupna u SFR_Macro.h knjižarsko
#define set_CLRPWM CLRPWM = 1
Nakon toga, PWM sat se odabire kao Fsysov sat, a korišteni faktor podjele je 64 odjeljenja.
PWM_CLOCK_FSYS; PWM_CLOCK_DIV_64;
Obje su definirane kao-
#define PWM_CLOCK_FSYS CKCON & = 0xBF #define PWM_CLOCK_DIV_64 PWMCON1- = 0x06; PWMCON1 & = 0xFE PWM_OUTPUT_ALL_NORMAL;
Ispod retka koda koristi se za maskiranje izlaznog PWM signala za 0 definirano kao-
#define PWM_OUTPUT_ALL_NORMAL PNP = 0x00 set_PWM_period (1023);
Tada moramo postaviti vrijeme razdoblja PWM signala. Ova funkcija postavlja razdoblje u PWMPL i PWMPH registru. Kako je ovo 16-bitni registar, funkcija koristi metodu pomicanja bitova za postavljanje PWM razdoblja.
void set_PWM_period (nepotpisana int vrijednost) { PWMPL = (vrijednost & 0x00FF); PWMPH = ((vrijednost & 0xFF00) >> 8); }
Međutim, osim razdoblja 1023 i 8-bitnog, korisnici mogu koristiti i druge vrijednosti. Povećanje razdoblja rezultira glatkim zatamnjivanjem ili blijeđenjem.
set_PWMRUN;
Ovo će pokrenuti PWM koji je definiran u SFR_Macro.h knjižnici kao-
#define set_PWMRUN PWMRUN = 1
Dalje, u while petlji LED se uključuje i neprestano blijedi.
while (1) { for (value = 0; value <1024; value + = 10) { set_PWM1 (value); Timer1_Delay10ms (3); } za (vrijednost = 1023; vrijednost> 0; vrijednost - = 10) { set_PWM1 (vrijednost); Timer1_Delay10ms (2); } } }
Radni ciklus postavlja set_PWM1 (); , funkcija koja postavlja radni ciklus u registru PWM1L i PWM1H.
void set_PWM1 (nepotpisana int vrijednost) { PWM1L = (vrijednost & 0x00FF); PWM1H = ((vrijednost & 0xFF00) >> 8); set_LOAD; }
Treptanje koda i ispitivanje rezultata
Jednom kad je kod spreman, samo ga prevedite i prenesite na kontroler. Ako ste novi u okolišu, pogledajte početne korake s vodičem Nuvoton N76E003 da biste naučili osnove. Kao što možete vidjeti iz donjeg rezultata, kod je vratio 0 upozorenja i 0 pogrešaka i bljesnuo koristeći zadani način treptanja od strane Keila. Aplikacija počinje raditi.
Počela obnova: Projekt: PWM Izgradnja cilja 'Cilj 1' sastavljanje STARTUP.A51… sastavljanje main.c… sastavljanje Delay.c… povezivanje… Veličina programa: podaci = 35,1 xdata = 0 code = 709 stvaranje hex datoteka iz ". \ Objekti \ pwm"… ". \ Objekti \ pwm" - 0 Greška, 0 Upozorenje. Prošlo vrijeme gradnje: 00:00:05
Hardver je povezan s izvorom napajanja i radio je kako se očekivalo. To je svjetlina ugrađene LED diode smanjena, a zatim povećana da ukaže na promjenu radnog ciklusa PWM-a.

Kompletan rad ovog vodiča također se može naći u video linku dolje. Nadam se da ste uživali u vodiču i naučili nešto korisno ako imate bilo kakvih pitanja, ostavite ih u odjeljku za komentare ili možete koristiti naše forume za druga tehnička pitanja.

