Gerar onda PWM com microcontrolador PIC: 6 etapas
Gerar onda PWM com microcontrolador PIC: 6 etapas
Anonim
Gerar onda PWM com microcontrolador PIC
Gerar onda PWM com microcontrolador PIC
Gerar onda PWM com microcontrolador PIC
Gerar onda PWM com microcontrolador PIC
Gerar onda PWM com microcontrolador PIC
Gerar onda PWM com microcontrolador PIC

O QUE É PWM?

PWM STANDS PARA MODULAÇÃO DE LARGURA DE PULSO é uma técnica pela qual a largura do pulso é variada.

Para entender este conceito, considere claramente um pulso de clock ou qualquer sinal de onda quadrada, ele tem ciclo de trabalho de 50%, o que significa que o período de Ton e Toff é o mesmo. A duração total para a qual o sinal esteve alto e a duração para a qual o sinal esteve baixo é chamada de total período de tempo.

Para a imagem mostrada acima, esta onda tem um ciclo de trabalho de 50%

Ciclo de trabalho = (tempo ON / Tempo total) * 100

Tempo ON - tempo para o qual o sinal estava alto

Tempo DESLIGADO - tempo para o qual o sinal estava baixo. Tempo total - Período de tempo total do pulso (tempo LIGADO e DESLIGADO)

Etapa 1: Seleção do microcontrolador

Selecionando Microcontrolador
Selecionando Microcontrolador

Selecionando o microcontrolador apropriado para o projeto, esta é a parte essencial do projeto. Os sinais PWM podem ser gerados em microcontroladores com canais PWM (registros CCP). Para este projeto, estou planejando manter o pic16f877. você pode baixar o link da folha de dados é fornecido abaixo

Folha de dados do PIC16F877a clique aqui

O módulo CCP é responsável por produzir o sinal PWM. CCP1 e CCP2 são multiplexados com PORTC. PORTC é uma porta bidirecional de 8 bits. O registro de direção de dados correspondente é TRISC. Definir o bit TRISC (= 1) fará com que o pino PORTC correspondente seja uma entrada. Apagar um bit TRISC (= 0) tornará o pino PORTC correspondente uma saída.

TRISC = 0; // Limpar este bit tornará PORTC como saída

Etapa 2: CONFIGURAR MÓDULO CCP

CONFIGURAR MÓDULO CCP
CONFIGURAR MÓDULO CCP
CONFIGURAR MÓDULO CCP
CONFIGURAR MÓDULO CCP

CCP - CAPTURAR / COMPARAR / MÓDULOS PWM

Cada módulo de Captura / Comparar / PWM (CCP) contém um registro de 16 bits que pode operar como:

• Registro de captura de 16 bits

• Registro de comparação de 16 bits

• Registro de ciclo de trabalho mestre / escravo PWM

Configure o registro CCP1CON para o modo PWM

Descrição do Registro

CCPxCON Este registro é usado para configurar o módulo CCP para operação de Captura / Comparar / PWM.

CCPRxL Este registro contém os bits de 8 Msb do PWM, 2 bits inferiores farão parte do registro CCPxCON.

Contador de funcionamento livre TMR2 que será comparado com CCPR1L e PR2 para gerar a saída PWM.

Agora usarei o binário para representar os bits para configurar o registro CCP1CON.

consulte a imagem acima.

CCP1CON = 0b00001111;

Você também pode usar o formato hexadecimal

CCP1CON = 0x0F; // configurando o registro CCP1CON para o modo PWM

Etapa 3: Configurando o Módulo Timer2 (Registro TMR2)

Configurando Módulo Timer2 (Registro TMR2)
Configurando Módulo Timer2 (Registro TMR2)

Timer2 é um temporizador de 8 bits com um prescaler e um postscaler. Ele pode ser usado como a base de tempo PWM para o modo PWM do (s) módulo (s) CCP. O registro TMR2 é legível e gravável e é limpo em qualquer reinicialização do dispositivo.

O registro T2CON é mostrado

A pré-escala e a pós-escala ajustarão a frequência de saída da onda PWM gerada.

Frequência = frequência do relógio / (4 * prescaler * (PR2-TMR2) * Postcaler * contagem)

Onde Tout = 1 / frequência

T2CON = 0b00000100;

Isso irá gerar cristal de 2,5 KHz @ 1Mhz ou 100KHz @ 4MHz (praticamente há uma limitação para esta frequência PWM, consulte a folha de dados específica para obter mais detalhes)

representação hexadecimal

T2CON = 0x04; // habilita T2CON sem configuração de pré-escala e pós-escala

Etapa 4: Configurando PR2 (Registro de Período Timer2)

O módulo Timer2 possui um registro de período de 8 bits, PR2. O cronômetro2 aumenta de 00h até que corresponda a PR2 e, a seguir, é redefinido para 00h no próximo ciclo de incremento. PR2 é um registro legível e gravável. O registro PR2 é inicializado para FFh na reinicialização.

Definir uma faixa apropriada para PR2 permitirá o uso para alterar o ciclo de trabalho da onda PWM gerada

PR2 = 100; // Defina o tempo de ciclo para 100 para variar o ciclo de trabalho de 0-100

Para simplificar, estou usando PR2 = 100 fazendo CCPR1L = 80; O ciclo de trabalho de 80% pode ser alcançado.

Etapa 5: configurar o módulo CCPR1l

Como PR2 = 100, CCPR1l pode ser configurado em qualquer lugar entre 0-100 para obter o ciclo de trabalho desejado.

Etapa 6: Escreva o esboço em você MPLAB X IDE o código é fornecido abaixo

Escreva o esboço em você MPLAB X IDE o código é fornecido abaixo
Escreva o esboço em você MPLAB X IDE o código é fornecido abaixo

#incluir

void delay (int a) // função para gerar atraso {

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

{

para (int j = 0; j <144; j ++);

}

}

void main ()

{TRISC = 0; // Limpar este bit tornará PORTC como saída.

CCP1CON = 0x0F; // configurando o registro CCP1CON para o modo PWM

T2CON = 0x04; // habilita T2CON sem configuração de pré-escala e pós-escala.

PR2 = 100; // Defina o tempo de ciclo para 100 para variar o ciclo de trabalho de 0-100

enquanto (1) {

CCPR1L = 75; // gerou 75% de atraso do ciclo de trabalho (1);

}

}

Também fiz uma pequena modificação no código para que a frequência da onda PWM gerada

Este é um código simulado em proteus e a onda PWM de saída é mostrada abaixo.

Obrigado