- PWM signāla pamati
- Aparatūras iestatīšana un prasības
- Nuvoton N76E003 mikrokontrolleru LED aptumšošanas shēmas shēma
- PWM tapas uz N76E003 Nuvoton mikrokontrollera
- PWM reģistri un funkcijas N76E003 Nuvoton mikrokontrollerī
- PWM darbības režīmi Nuvoton N6E003 mikrokontrollerī
- Nuvoton N76E003 programmēšana PWM
- Koda mirgošana un izejas pārbaude
Pulsa platuma modulācija (PWM) ir mikrokontrolleros parasti izmantota tehnika, lai radītu nepārtrauktu impulsa signālu ar noteiktu frekvenci un darba ciklu. Īsāk sakot, PWM ir par impulsa platuma maiņu, kamēr frekvence ir nemainīga.
PWM signālu galvenokārt izmanto, lai kontrolētu servomotoru vai gaismas diodes spilgtumu. Tā kā mikrokontrolleri uz izejas tapām var nodrošināt tikai loģiku 1 (augstu) vai loģiku 0 (zemu), tas nevar nodrošināt mainīgu analogo spriegumu, ja vien netiek izmantots DAC vai digitālais līdz analogais pārveidotājs. Šādā gadījumā mikrokontrolleru var ieprogrammēt tā, lai tas izvadītu PWM ar mainīgu darba ciklu, kuru pēc tam var pārveidot par mainīgo analogo spriegumu. Iepriekš mēs PWM perifērijas ierīci izmantojām arī daudzos citos mikrokontrolleros.
- ARM7-LPC2148 PWM apmācība: LED spilgtuma kontrolēšana
- Pulsa platuma modulācija (PWM), izmantojot MSP430G2: LED spilgtuma kontrole
- PWM ģenerēšana, izmantojot PIC mikrokontrolleru ar MPLAB un XC8
- Impulsa platuma modulācija (PWM) STM32F103C8: DC ventilatora ātruma kontrolēšana
- PWM signālu ģenerēšana uz PIC mikrokontrollera GPIO tapām
- Aveņu Pi PWM apmācība
- PWM apmācība ar ESP32
Šajā apmācībā mēs saskarnēsim gaismas diodi, kas tiks kontrolēta, izmantojot šo PWM signālu no N76E003 mikrokontrolleru vienības. Mēs novērtēsim, kāda veida aparatūras iestatīšana mums nepieciešama, un kā mums jāprogrammē mūsu mikrokontrolleris. Pirms tam sapratīsim dažus PWM signāla pamatus.
PWM signāla pamati
Zemāk redzamajā attēlā tiek parādīts nemainīgs PWM signāls.
Iepriekš redzamais attēls ir nekas cits kā nemainīgs kvadrātveida vilnis ar tādu pašu ON laiku un to pašu OFF laiku. Pieņemsim, ka signāla kopējais periods ir 1 sekunde. Tādējādi ieslēgšanas un izslēgšanas laiks ir 500 ms. Ja šim signālam ir pievienota gaismas diode, gaismas diode iedegsies uz 500 ms un izslēgsies uz 500 ms. Tāpēc perspektīvajā skatījumā gaismas diode iedegas ar pusi no faktiskā spilgtuma, ja tā tiek ieslēgta tiešā 5 V signālā bez izslēgšanas laika.
Tagad, kā parādīts iepriekšējā attēlā, ja mainās darba cikls, gaismas diode iedegsies ar 25% faktiskā spilgtuma, izmantojot to pašu principu, kas tika apspriests iepriekš. Ja vēlaties uzzināt vairāk un uzzināt par pulsa platuma modulāciju (PWM), varat apskatīt saistīto rakstu.
Aparatūras iestatīšana un prasības
Tā kā šī projekta prasība ir kontrolēt LED, izmantojot PWM. Gaismas diodei jābūt saskarnei ar N76E003. Tā kā N76E003 izstrādes dēlī ir pieejams LED, tas tiks izmantots šajā projektā. Citi komponenti nav nepieciešami.
Nemaz nerunājot par to, ka mums ir nepieciešama uz mikrokontrolleru balstīta izstrādes padome N76E003, kā arī Nu-Link programmētājs. Papildu 5 V barošanas bloks var būt vajadzīgs, ja programmētājs netiek izmantots kā strāvas avots.
Nuvoton N76E003 mikrokontrolleru LED aptumšošanas shēmas shēma
Kā redzams zemāk redzamajā shēmā, testa LED ir pieejams izstrādes paneļa iekšpusē, un tas ir savienots ar 1.4 pieslēgvietu. Kreisajā malā tiek parādīts programmēšanas saskarnes savienojums.
PWM tapas uz N76E003 Nuvoton mikrokontrollera
N76E003 ir 20 tapas, no kurām 10 tapas var izmantot kā PWM. Zemāk redzamajos attēlos redzami sarkanā kvadrāta lodziņā izceltie PWM tapas.
Kā redzam, izceltās PWM tapas var izmantot arī citiem mērķiem. Tomēr šis cits tapu mērķis nebūs pieejams, kad tapas būs konfigurētas PWM izejai. 1. kontakts 1.4, ko izmanto kā PWM izvades kontaktu, zaudēs citu funkcionalitāti. Bet tā nav problēma, jo šim projektam nav nepieciešama cita funkcionalitāte.
Iemesls tam, kāpēc izvēlaties tapu 1.4 kā izejas kontaktu, ir tāpēc, ka iebūvētais testa LED ir pievienots šai tapai izstrādes panelī, tāpēc mums nav nepieciešami ārējie LED. Tomēr šajā mikrokontrollerī no 20 tapām 10 tapas var izmantot kā PWM izejas tapu, un jebkuras citas PWM tapas var izmantot ar izvadi saistītiem mērķiem.
PWM reģistri un funkcijas N76E003 Nuvoton mikrokontrollerī
N76E003 izmanto sistēmas pulksteņa vai 1. taimera pārpildi, dalītu ar PWM pulksteni ar Prescaler, kuru var izvēlēties no 1/1 ~ 1/128. PWM periodu var iestatīt, izmantojot 16 bitu perioda reģistru PWMPH un PWMPL reģistru.
Mikrokontrollerim ir seši atsevišķi PWM reģistri, kas ģenerē sešus PWM signālus, kurus sauc par PG0, PG1, PG2, PG3, PG4 un PG5. Tomēr katram PWM kanālam periods ir vienāds, jo tiem ir viens un tas pats 16 bitu perioda skaitītājs, taču katra PWM darbības cikls var atšķirties no citiem, jo katrs PWM izmanto atšķirīgu 16 bitu darba cikla reģistru ar nosaukumu {PWM0H, PWM0L}, {PWM1H, PWM1L}, {PWM2H, PWM2L}, {PWM3H, PWM3L}, {PWM4H, PWM4L} un {PWM5H, PWM5L}. Tādējādi N76E003 sešus PWM izvadus var ģenerēt neatkarīgi ar dažādiem darba cikliem.
Atšķirībā no citiem mikrokontrolleriem, PWM iespējošana neuzstāda I / O tapas viņu PWM izvadē automātiski. Tādējādi lietotājam jākonfigurē I / O izvades režīms.
Tātad, neatkarīgi no tā, kas nepieciešams lietojumprogrammai, pirmais solis ir noteikt vai izvēlēties, kura viena vai divas vai pat vairāk nekā divas I / O tapas kā PWM izeja. Pēc vienas izvēles I / O tapas PWM signāla ģenerēšanai jāiestata kā Push-Pull režīmā vai Kvazi divvirzienu. To var izvēlēties, izmantojot PxM1 un PxM2 reģistru. Šie divi reģistri iestata I / O režīmus, kur x apzīmē porta numuru (Piemēram, P1.0 ports reģistrs būs P1M1 un P1M2, P3.0 - P3M1 un P3M2 utt.)
Konfigurāciju var redzēt zemāk esošajā attēlā-
Pēc tam nākamais solis ir iespējot PWM konkrētajā (-os) I / O tapā (s). Lai to izdarītu, lietotājam jāiestata PIOCON0 vai PIOCON1 reģistri. Reģistrs ir atkarīgs no tapu kartēšanas, jo PIOCON0 un PIOCON1 kontrolē dažādas tapas atkarībā no PWM signāliem. Šo divu reģistru konfigurāciju var redzēt zemāk redzamajā attēlā.
Kā redzam, iepriekšējais reģistrs kontrolē 6 konfigurācijas. Pārējā gadījumā izmantojiet PIOCON1 reģistru.
Tādējādi iepriekšējais reģistrs kontrolē pārējās 4 konfigurācijas.
PWM darbības režīmi Nuvoton N6E003 mikrokontrollerī
Nākamais solis ir izvēlēties PWM darbības režīmus. Katrs PWM atbalsta trīs darbības režīmus - neatkarīgā, sinhronā un mirušā laika iespējošanas režīmu.
Neatkarīgais režīms nodrošina risinājumu, kur sešus PWM signālus var ģenerēt neatkarīgi. Tas ir nepieciešams maksimāli reizes, kad ir jāieslēdz un jākontrolē ar LED saistītas darbības vai signāli.
The sinhronie režīms noteikta tā PG1 / 3/5 vienā un tajā pašā in-fāzes PWM produkciju, tāds pats kā PG0 / 2/4, kur PG0 / 2/4 nodrošina neatkarīgus PWM izejas signālus. Tas galvenokārt ir vajadzīgs trīsfāžu motoru vadīšanai.
Dead-Time ievietošanas režīms ir mazliet sarežģīts un piemērots reālo mehānisko pieteikumiem, jo īpaši rūpniecības vajadzībām. Šādās lietojumprogrammās papildu PWM izejai jābūt “mirušā laika” ievietošanai, kas novērš strāvas komutācijas ierīču, piemēram, GPIB, sabojāšanu. Konfigurācijas šajā režīmā ir iestatītas tā, ka PG0 / 2/4 nodrošina PWM izejas signālus tāpat kā neatkarīgais režīms, bet PG1 / 3/5 nodrošina attiecīgi PG0 / 2/4 “ārpusfāzes PWM signālus”. un ignorēt PG1 / 3/5 Muitas reģistru.
Virs trim režīmiem var izvēlēties, izmantojot zemāk esošo reģistra konfigurāciju-
Nākamā konfigurācija ir PWM tipu atlase, izmantojot PWMCON1 reģistru.
Tātad, kā redzam, ir pieejami divi PWM veidi, kurus var izvēlēties, izmantojot iepriekš minēto reģistru. Izlīdzinātā malā 16 bitu skaitītājs izmanto viena slīpuma darbību, skaitot no 0000H līdz iestatītajai vērtībai {PWMPH, PWMPL} un pēc tam sākot no 0000H. Izejas viļņu forma ir izlīdzināta pa kreisi.
Bet centrētā izlīdzināšanas režīmā 16 bitu skaitītājs izmanto divu slīpumu darbību, skaitot no 0000H līdz {PWMPH, PWMPL} un pēc tam atkal pārejot no {PWMPH, PWMPL} uz 0000H, skaitot uz leju. Izeja ir līdzināta centrā, un tā ir noderīga, lai ģenerētu viļņu formas, kas nepārklājas. Tagad beidzot PWM vadības darbības, kuras var pārbaudīt zemāk esošajos reģistros -
Lai iestatītu pulksteņa avotu, izmantojiet CKCON pulksteņa vadības reģistru.
PWM izejas signālu var arī maskēt, izmantojot PMEN reģistru. Izmantojot šo reģistru, lietotājs var maskēt izejas signālu ar 0 vai 1.
Nākamais ir PWM vadības reģistrs-
Šis reģistrs ir noderīgs, lai palaistu PWM, ielādētu jaunu periodu un darba slodzi, kontrolētu PWM karodziņu un notīrītu PWM skaitītāju.
Saistītās bitu konfigurācijas ir parādītas zemāk-
Lai iestatītu pulksteņa dalītāju, izmantojiet PWMCON1 pulksteņa dalītāja reģistru. 5. bits tiek izmantots grupas režīmā iespējotajam grupētajam PWM un nodrošina tādu pašu darba ciklu pirmajiem trim PWM pāriem.
Nuvoton N76E003 programmēšana PWM
Kodēšana ir vienkārša, un pilns šajā apmācībā izmantotais kods ir atrodams šīs lapas apakšdaļā. LED ir savienots ar P1.4 tapu. Tādējādi P1.4 tapa ir nepieciešama PWM izejai.
Galvenajā programmā iestatījumi tiek veikti attiecīgajā secībā. Zem kodu rindiņām tiek iestatīts PWM un P1.4 tapa tiek konfigurēta kā PWM izeja.
P14_PushPull_Mode;
To izmanto, lai iestatītu tapu P1.4 push-pull režīmā. Tas ir definēts bibliotēkā Function_define.h
#define P14_PushPull_Mode P1M1 & = ~ SET_BIT4; P1M2- = SET_BIT4 PWM1_P14_OUTPUT_ENABLE;
Nākamās rindas, ko izmanto, lai iespējotu PWM tapā P1.4. Tas ir definēts arī bibliotēkā Function_define.h-
#define PWM1_P14_OUTPUT_ENABLE BIT_TMP = EA; EA = 0; TA = 0xAA; TA = 0x55; SFRS- = 0x01; PIOCON1- = 0x02; TA = 0xAA; TA = 0x55; SFRS & = 0xFE; EA = BIT_TMP //P1 PWM1 izvade iespējo PWM_IMDEPENDENT_MODE;
Tālāk redzamais kods tiek izmantots, lai PWM iestatītu neatkarīgā režīmā. Jo Function_define.h bibliotēkā, tas tiek definēts kā-
#define PWM_IMDEPENDENT_MODE PWMCON1 & = 0x3F PWM_EDGE_TYPE;
Tad mums jāiestata EDGE tipa PWM izeja. Jo Function_define.h bibliotēkā, tas tiek definēts kā-
#define PWM_EDGE_TYPE PWMCON1 & = ~ SET_BIT4 set_CLRPWM;
Tālāk, mums ir skaidri PWM counter vērtību, kas ir pieejams SFR_Macro.h library-
#define set_CLRPWM CLRPWM = 1
Pēc tam PWM pulkstenis tiek izvēlēts kā Fsys pulkstenis, un izmantotais dalīšanas koeficients ir 64 dalījums.
PWM_CLOCK_FSYS; PWM_CLOCK_DIV_64;
Abi ir definēti kā
#define PWM_CLOCK_FSYS CKCON & = 0xBF #define PWM_CLOCK_DIV_64 PWMCON1- = 0x06; PWMCON1 & = 0xFE PWM_OUTPUT_ALL_NORMAL;
Zem koda rindas tiek izmantots, lai maskētu izejas PWM signālu ar 0 definētu as-
#define PWM_OUTPUT_ALL_NORMAL PNP = 0x00 set_PWM_period (1023);
Tad mums jāiestata PWM signāla perioda laiks. Šī funkcija nosaka periodu PWMPL un PWMPH reģistrā. Tā kā šis ir 16 bitu reģistrs, funkcija izmanto bitu maiņas metodi, lai iestatītu PWM periodu.
void set_PWM_period (neparakstīta int vērtība) { PWMPL = (vērtība & 0x00FF); PWMPH = ((vērtība & 0xFF00) >> 8); }
Tomēr, izņemot 1023 un 8 bitu periodu, lietotāji var izmantot arī citas vērtības. Perioda palielināšana rada vienmērīgu aptumšošanu vai izbalēšanu.
set_PWMRUN;
Tas sāks PWM, kas definēts SFR_Macro.h bibliotēkā
#define set_PWMRUN PWMRUN = 1
Tālāk, kamēr cilpa , gaismas diode tiek ieslēgta un nepārtraukti izbalējusi.
while (1) { for (vērtība = 0; vērtība <1024; vērtība + = 10) { set_PWM1 (vērtība); Taimeris1_Delay10ms (3); } par (vērtība = 1023; vērtība> 0; vērtība - = 10) { set_PWM1 (vērtība); Taimeris1_Delay10ms (2); } } }
Darba ciklu nosaka funkcija set_PWM1 ();; funkcija, kas iestata darba ciklu PWM1L un PWM1H reģistrā.
void set_PWM1 (neparakstīta int vērtība) { PWM1L = (vērtība & 0x00FF); PWM1H = ((vērtība & 0xFF00) >> 8); set_LOAD; }
Koda mirgošana un izejas pārbaude
Kad kods ir gatavs, vienkārši to apkopojiet un augšupielādējiet kontrolierī. Ja esat jauns vides pārstāvis, iepazīstieties ar darba sākšanu ar Nuvoton N76E003 apmācību, lai uzzinātu pamatus. Kā redzat no zemāk redzamā rezultāta, kods atgrieza 0 brīdinājumu un 0 kļūdas un mirgo, izmantojot Keil noklusējuma mirgošanas metodi. Lietojumprogramma sāk darboties.
Sākta pārbūve: Projekts: PWM Pārbūvēt mērķi “Mērķis 1”, samontējot STARTUP.A51… sastādot main.c… sastādot Delay.c… saistot… Programmas lielums: dati = 35,1 xdata = 0 kods = 709 izveidošana hex fails no ". \ Objects \ pwm"… ". \ Objects \ pwm" - 0 kļūda (-as), 0 brīdinājums (-i). Pagatavošanas laiks: 00:00:05
Aparatūra ir savienota ar barošanas avotu, un tā darbojās, kā paredzēts. Tas ir borta LED spilgtums, kas samazināts un pēc tam palielināts, lai norādītu uz PWM darba cikla izmaiņām.
Pilnīga šīs apmācības darbība ir atrodama arī zemāk pievienotajā videoklipā. Ceru, ka jums patika apmācība un uzzinājāt kaut ko noderīgu, ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā vai arī varat izmantot mūsu forumus citiem tehniskiem jautājumiem.