Cuprins:
- Pasul 1: Selectarea microcontrolerului
- Pasul 2: CONFIGURAȚI MODULUL CCP
- Pasul 3: Configurarea modulului Timer2 (Registrul TMR2)
- Pasul 4: Configurarea PR2 (Timer2 Period Register)
- Pasul 5: Configurați modulul CCPR1l
- Pasul 6: Scrieți schița pe dvs. MPLAB X IDE, codul este dat mai jos
Video: Generați PWM Wave cu microcontrolerul PIC: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
CE ESTE PWM?
PWM STANDS PENTRU MODULAREA LĂȚIMII PULSULOR este o tehnică prin care lățimea pulsului este variată.
Pentru a înțelege acest concept, luați în considerare în mod clar un impuls de ceas sau orice semnal de undă pătrată, are un ciclu de funcționare de 50%, ceea ce înseamnă că perioada Ton și Toff este aceeași, durata totală pentru care semnalul a fost ridicat și durata pentru care semnalul a fost scăzut se numește total perioada de timp.
Pentru imaginea de mai sus această undă are un ciclu de funcționare de 50%
Ciclul de funcționare = (timp ON / Timp total) * 100
ON time - timp pentru care semnalul a fost ridicat
Timp OFF - Timpul care semnalul a fost scăzut Timp total - Perioada totală de timp a impulsului (atât timp ON, cât și OFF)
Pasul 1: Selectarea microcontrolerului
Selectarea microcontrolerului adecvat pentru proiect aceasta este partea esențială a proiectului Semnalele PWM pot fi generate în microcontrolere cu canale PWM (registre CCP). Pentru acest proiect intenționez să rămân cu pic16f877. puteți descărca link-ul fișei tehnice este dat mai jos
Foaie de date PIC16F877a faceți clic aici
Modulul CCP este responsabil pentru producerea semnalului PWM. CCP1 și CCP2 sunt multiplexate cu PORTC. PORTC este un port bidirecțional lat de 8 biți. Registrul de direcție a datelor corespunzător este TRISC. Setarea bitului TRISC (= 1) va face să ia pinul PORTC corespunzător ca intrare. Ștergerea unui bit TRISC (= 0) va face pinul PORTC corespunzător o ieșire.
TRISC = 0; // Ștergerea acestui bit va face PORTC ca ieșire
Pasul 2: CONFIGURAȚI MODULUL CCP
CCP - MODULURI CAPTURARE / COMPARARE / PWM
Fiecare modul Capture / Compare / PWM (CCP) conține un registru pe 16 biți care poate funcționa ca:
• Registr de captură pe 16 biți
• Registrul de comparație pe 16 biți
• Registrul PWM Master / Slave Duty Cycle
Configurați registrul CCP1CON în modul PWM
Descriere registru
CCPxCON Acest registru este utilizat pentru a configura modulul CCP pentru funcționarea Capture / Compare / PWM.
CCPRxL Acest registru deține biții de 8 Mb de PWM, 2 biți inferiori vor face parte din registrul CCPxCON.
Contor de rulare gratuit TMR2 care va fi comparat cu CCPR1L și PR2 pentru generarea ieșirii PWM.
Acum voi folosi binar pentru a reprezenta biții pentru a configura registrul CCP1CON.
consultați imaginea de mai sus.
CCP1CON = 0b00001111;
Puteți, de asemenea, să formatați hex
CCP1CON = 0x0F; // configurarea registrului CCP1CON pentru modul PWM
Pasul 3: Configurarea modulului Timer2 (Registrul TMR2)
Timer2 este un temporizator de 8 biți cu un prescaler și un postscaler. Poate fi folosit ca bază de timp PWM pentru modul PWM al modulului (modulelor) CCP. Registrul TMR2 poate fi citit și scris și este șters pe orice resetare a dispozitivului.
Este afișat registrul T2CON
Prescala și postcala vor regla frecvența de ieșire a undei PWM generate.
Frecvența = frecvența ceasului / (4 * prescaler * (PR2-TMR2) * Postscaler * număr)
Unde Tout = 1 / frecvență
T2CON = 0b00000100;
Acest lucru va genera cristal de 2,5 KHz @ 1Mhz sau 100KHz @ 4MHz (practic există o limitare pentru această frecvență PWM consultați fișa de date specială pentru mai multe detalii)
reprezentare hexagonală
T2CON = 0x04; // activați T2CON fără configurare Prescaler și postscale
Pasul 4: Configurarea PR2 (Timer2 Period Register)
Modulul Timer2 are un registru de perioadă de 8 biți, PR2. Timer2 crește de la 00h până când se potrivește cu PR2 și apoi se resetează la 00h în următorul ciclu de incrementare. PR2 este un registru care poate fi citit și scris. Registrul PR2 este inițializat la FFh după resetare.
Setarea unui interval adecvat pentru PR2 va permite utilizarea să schimbe ciclul de funcționare al undei PWM generate
PR2 = 100; // Setați timpul ciclului la 100 pentru a varia ciclul de funcționare de la 0 la 100
Pentru simplitate, folosesc PR2 = 100 făcând CCPR1L = 80; Ciclul de funcționare de 80% poate fi realizat.
Pasul 5: Configurați modulul CCPR1l
Deoarece PR2 = 100 CCPR1l poate fi configurat oriunde între 0-100 pentru a obține ciclul de funcționare dorit.
Pasul 6: Scrieți schița pe dvs. MPLAB X IDE, codul este dat mai jos
#include
void delay (int a) // funcție pentru a genera întârziere {
for (int i = 0; i <a; i ++)
{
pentru (int j = 0; j <144; j ++);
}
}
void main ()
{TRISC = 0; // Ștergerea acestui bit va face PORTC ca ieșire.
CCP1CON = 0x0F; // configurarea registrului CCP1CON pentru modul PWM
T2CON = 0x04; // activați T2CON fără configurare Prescaler și postscale.
PR2 = 100; // Setați timpul ciclului la 100 pentru a varia ciclul de funcționare de la 0 la 100
în timp ce (1) {
CCPR1L = 75; // a generat 75% întârziere a ciclului de funcționare (1);
}
}
De asemenea, am făcut o mică modificare a codului, astfel încât frecvența undei PWM generate
Acesta este codul este simulat în proteus și unda PWM de ieșire este prezentată mai jos.
Mulțumesc
Recomandat:
Cum să primiți date de la microcontrolerul STM32 pe computer: 5 pași
Cum să primiți date de la microcontrolerul bazat pe STM32 la computer: Aici în acest tutorial am transmis date de la microcontroler la computer utilizând unul dintre UART-urile STM32l100 mcu
Robotul care evită obstacolele folosind microcontrolerul (Arduino): 5 pași
Robotul de evitare a obstacolelor folosind microcontrolerul (Arduino): În acest instructiv, vă voi învăța cum să faceți un robot de evitare a obstacolelor care funcționează cu Arduino. Trebuie să vă familiarizați cu Arduino. Arduino este o placă de control care utilizează microcontrolerul ATMEGA. Puteți folosi orice versiune de Arduino, dar eu ha
Introducere în microcontrolerul CloudX: 3 pași
Introducere în microcontrolerul CloudX: microcontrolerul CloudX este un software open source și un computer softwaremic care vă permite să vă creați propriile proiecte interactive. CloudX este un mic chip chip care permite utilizatorilor să-i spună ce trebuie să facă înainte de a lua orice acțiune, acceptă diferite k
Cum se face o dronă folosind Arduino UNO - Realizați un Quadcopter folosind microcontrolerul: 8 pași (cu imagini)
Cum se face o dronă folosind Arduino UNO | Realizați un Quadcopter folosind microcontrolerul: Introducere Vizitați canalul meu Youtube O dronă este un gadget (produs) foarte scump de cumpărat. În această postare voi discuta, cum o fac la prețuri ieftine ?? Și cum poți să-ți faci propriile tale la prețuri ieftine … Ei bine, în India toate materialele (motoare, ESC-uri
Generați linkuri de afiliere Banggood (recomandare) mai ușor ca niciodată: 4 pași
Generați linkuri de afiliere Banggood (recomandare) mai ușor ca niciodată: Versiunea condensată a acestui instructiv poate fi găsită pe blogul meu personal Vânzările afiliate sunt o sursă excelentă de venit suplimentar pentru creatorii de conținut, iar mulți oameni care pot fi instruiți le folosesc. programul de afiliere este Ban