Taula de continguts:

Generar PWM Wave amb microcontrolador PIC: 6 passos
Generar PWM Wave amb microcontrolador PIC: 6 passos

Vídeo: Generar PWM Wave amb microcontrolador PIC: 6 passos

Vídeo: Generar PWM Wave amb microcontrolador PIC: 6 passos
Vídeo: How to make a LED digital counter using 7- Segment Display 2024, De novembre
Anonim
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC
Genereu PWM Wave amb el microcontrolador PIC

QUÈ ÉS PWM?

ELS STANDS PWM PER A LA MODULACIÓ D'AMPLADA D'IMPULS són una tècnica mitjançant la qual es varia l'ample del pols.

Per entendre aquest concepte, considereu clarament un pols de rellotge o qualsevol senyal d’ona quadrada que tingui un cicle de treball del 50% que significa que el període Ton i Toff és el mateix, la durada total durant la qual el senyal era alt i la durada durant la qual el senyal era baix s’anomena total. període de temps.

Per a la imatge que es mostra a sobre, aquesta ona té un cicle de treball del 50%

Cicle de treball = (temps ON / Temps total) * 100

HORA ON: hora en què el senyal era alt

Temps d’APAGAT: temps de l’enemic que el senyal era baix Temps total -Període total de temps del pols (temps d’activació i apagat)

Pas 1: Selecció del microcontrolador

Selecció del microcontrolador
Selecció del microcontrolador

La selecció del microcontrolador adequat per al projecte és la part essencial del projecte que es poden generar senyals PWM en microcontroladors amb canals PWM (registres CCP). Per a aquest projecte tinc previst quedar-me amb pic16f877 Podeu descarregar l'enllaç del full de dades que es mostra a continuació

Full de dades PIC16F877a feu clic aquí

El mòdul CCP és responsable de produir el senyal PWM. CCP1 i CCP2 es multiplexen amb PORTC. PORTC és un port bidireccional d'amplada de 8 bits. El registre de direcció de dades corresponent és TRISC. Si configureu el bit TRISC (= 1), es prendrà el pin PORTC corresponent com a entrada. Si esborreu un bit TRISC (= 0), el PIN PORTC corresponent serà una sortida.

TRISC = 0; // Esborrar aquest bit farà que PORTC com a sortida

Pas 2: CONFIGURAR EL MUDUL CCP

CONFIGURA EL MUDUL CCP
CONFIGURA EL MUDUL CCP
CONFIGURA EL MUDUL CCP
CONFIGURA EL MUDUL CCP

CCP: M MODDULS DE CAPTURA / COMPARACIÓ / PWM

Cada mòdul Capture / Compare / PWM (CCP) conté un registre de 16 bits que pot funcionar com:

• Registre de captura de 16 bits

• Registre de comparació de 16 bits

• Registre de cicle de treball mestre / esclau PWM

Configureu el registre CCP1CON al mode PWM

Descripció del registre

CCPxCON Aquest registre s'utilitza per configurar el mòdul CCP per a l'operació Capture / Compare / PWM.

CCPRxL Aquest registre conté els bits de 8 Mb de PWM, els 2 bits inferiors formaran part del registre CCPxCON.

TMR2 Comptador de funcionament lliure que es compararà amb CCPR1L i PR2 per generar la sortida PWM.

Ara faré servir binari per representar els bits per configurar el registre CCP1CON.

consulteu la imatge superior.

CCP1CON = 0b00001111;

També podeu format hexadecimal

CCP1CON = 0x0F; // configuració del registre CCP1CON per al mode PWM

Pas 3: Configuració del mòdul Timer2 (registre TMR2)

Configuració del mòdul Timer2 (registre TMR2)
Configuració del mòdul Timer2 (registre TMR2)

Timer2 és un temporitzador de 8 bits amb un precalador i un postescalador. Es pot utilitzar com a base de temps PWM per al mode PWM dels mòduls CCP. El registre TMR2 es pot llegir i escriure i s’esborra a qualsevol restabliment del dispositiu.

Es mostra el registre T2CON

La preescala i la postescala ajustaran la freqüència de sortida de l’ona PWM generada.

Freqüència = freqüència de rellotge / (4 * prescaler * (PR2-TMR2) * Postscaler * count)

On Tout = 1 / freqüència

T2CON = 0b00000100;

Això generarà cristalls de 2,5 KHz @ 1Mhz o 100KHz @ 4MHz (pràcticament hi ha una limitació per a aquesta freqüència PWM. Consulteu el full de dades particular per obtenir més detalls)

representació hexadecimal

T2CON = 0x04; // habilitar T2CON sense configuració de Prescaler i postescala

Pas 4: Configuració de PR2 (registre de períodes Timer2)

El mòdul Timer2 té un registre de període de 8 bits, PR2. El temporitzador2 augmenta des de les 00h fins que coincideix amb PR2 i, a continuació, es restableix a 00h en el següent cicle d'increment. PR2 és un registre que es pot llegir i escriure. El registre PR2 s’inicialitza a FFh després del reinici.

Establir un rang adequat per a PR2 permetrà que l’ús canviï el cicle de treball de l’ona PWM generada

PR2 = 100; // Estableix el temps de cicle a 100 per variar el cicle de treball de 0 a 100

Per simplicitat estic fent servir PR2 = 100 fent CCPR1L = 80; Es pot aconseguir un 80% del cicle de treball.

Pas 5: configureu el mòdul CCPR1l

Ja que PR2 = 100 CCPR1l es pot configurar entre 0 i 100 per obtenir el cicle de treball desitjat.

Pas 6: escriviu l’esbós sobre vosaltres MPLAB X IDE on es mostra el codi

Escriviu l’esbós sobre vosaltres MPLAB X IDE que el codi es mostra a continuació
Escriviu l’esbós sobre vosaltres MPLAB X IDE que el codi es mostra a continuació

#incloure

void delay (int a) // funció per generar delay {

for (int i = 0; i <a; i ++)

{

per a (int j = 0; j <144; j ++);

}

}

void main ()

{TRISC = 0; // Esborrar aquest bit farà que PORTC com a sortida.

CCP1CON = 0x0F; // configuració del registre CCP1CON per al mode PWM

T2CON = 0x04; // habilita T2CON sense configuració de Prescaler i postescala.

PR2 = 100; // Estableix el temps de cicle a 100 per variar el cicle de treball de 0 a 100

mentre (1) {

CCPR1L = 75; // va generar un retard del 75% del cicle de treball (1);

}

}

També he fet una petita modificació del codi perquè la freqüència de l'ona PWM generada

Aquest codi es simula en proteus i es mostra l'ona PWM de sortida. Per carregar-lo a les taules de desenvolupament de fotos, utilitzeu #include amb bits de configuració adequats.

Gràcies

Recomanat: