Aula 16 – PWM (Pulse Width Modulation)
Nesta aula vamos estudar PWM, uma técnica muito utilizada para controlar potência, brilho de LEDs, velocidade de motores e sinais proporcionais em sistemas embarcados e industriais.
1. O que é PWM?
PWM significa Pulse Width Modulation, ou Modulação por Largura de Pulso. Em vez de variar a tensão diretamente, o PIC liga e desliga rapidamente uma saída digital.
Saída digital comum:
0V ou 5V
Saída PWM:
liga e desliga rapidamente, criando um valor médio
2. Conceito de Duty Cycle
Duty Cycle é a porcentagem de tempo em que o sinal permanece ligado dentro de um ciclo.
| Duty Cycle | Resultado |
|---|---|
| 0% | Saída sempre desligada |
| 25% | Pouca potência |
| 50% | Metade da potência |
| 75% | Alta potência |
| 100% | Saída sempre ligada |
Duty Cycle 25%:
ON ┌─┐ ┌─┐ ┌─┐
OFF ┘ └───┘ └───┘ └───
Duty Cycle 50%:
ON ┌──┐ ┌──┐ ┌──┐
OFF ┘ └──┘ └──┘ └──
Duty Cycle 75%:
ON ┌───┐ ┌───┐ ┌───┐
OFF ┘ └─┘ └─┘ └─
3. PWM não é tensão analógica real
O PWM continua sendo um sinal digital. O que muda é o valor médio percebido pela carga. Um LED, por exemplo, aparenta ficar mais fraco ou mais forte conforme o duty cycle.
4. Aplicações do PWM
- Controle de brilho de LEDs.
- Controle de velocidade de motores DC.
- Controle de potência em resistências.
- Controle proporcional de válvulas.
- Geração de sinais analógicos com filtro RC.
- Fontes chaveadas e conversores DC-DC.
5. PWM no PIC
Muitos PICs possuem módulos CCP, que podem trabalhar em modo PWM. CCP significa Capture, Compare and PWM.
CCP1 → geralmente associado ao pino RC2
CCP2 → segundo canal PWM, quando disponível
6. Registradores envolvidos
| Registrador | Função |
|---|---|
| CCP1CON | Configura o módulo CCP1 em modo PWM |
| PR2 | Define o período do PWM |
| T2CON | Configura e liga o Timer2 |
| CCPR1L | Define parte do duty cycle |
7. Relação entre PWM e Timer2
O PWM do PIC normalmente utiliza o Timer2 como base de tempo. Por isso, a Aula 13 sobre temporizadores é fundamental para entender PWM.
PWM depende de:
Clock do PIC
Timer2
PR2
Prescaler
Duty Cycle
8. Configurando CCP1 em modo PWM
Para usar PWM no CCP1, configuramos o registrador CCP1CON.
CCP1CON = 0b00001100; // CCP1 em modo PWM
9. Configurando o Timer2
T2CON = 0b00000100; // Liga Timer2 com prescaler 1:1
10. Definindo o período com PR2
O registrador PR2 define o período do PWM.
PR2 = 255;
11. Definindo o Duty Cycle
O duty cycle pode ser ajustado alterando o valor de CCPR1L.
CCPR1L = 128; // Aproximadamente 50%
12. Código básico de PWM no PIC
#include <xc.h>
void main()
{
TRISCbits.TRISC2 = 0; // RC2 como saída PWM
PR2 = 255;
CCP1CON = 0b00001100; // Modo PWM
CCPR1L = 128; // Duty em torno de 50%
T2CON = 0b00000100; // Liga Timer2
while(1)
{
// PWM gerado automaticamente pelo hardware
}
}
13. Controle de brilho de LED
Se ligarmos um LED ao pino PWM, podemos controlar seu brilho variando o duty cycle.
CCPR1L = 0; // LED apagado
CCPR1L = 64; // brilho baixo
CCPR1L = 128; // brilho médio
CCPR1L = 255; // brilho máximo
14. Integração ADC + PWM
Podemos usar um potenciômetro no ADC para controlar o duty cycle do PWM. Esse é um exemplo clássico de controle proporcional.
valor_adc = ler_adc(); // 0 até 1023
CCPR1L = valor_adc / 4; // converte para 0 até 255
15. Exemplo: potenciômetro controlando brilho do LED
#include <xc.h>
unsigned int ler_adc()
{
GO_nDONE = 1;
while(GO_nDONE);
return ((ADRESH << 8) + ADRESL);
}
void main()
{
unsigned int valor_adc;
TRISAbits.TRISA0 = 1; // AN0 entrada analógica
TRISCbits.TRISC2 = 0; // RC2 saída PWM
ADCON1 = 0x80;
ADCON0 = 0x41;
PR2 = 255;
CCP1CON = 0b00001100;
T2CON = 0b00000100;
while(1)
{
valor_adc = ler_adc();
CCPR1L = valor_adc / 4;
}
}
16. Controle de motor DC
Para controlar motor com PWM, o PIC não deve ser ligado diretamente ao motor. É necessário usar um transistor, MOSFET, driver ou ponte H.
PIC PWM → Driver/MOSFET → Motor
17. Cuidados importantes
- Não ligue motor diretamente no pino do PIC.
- Use transistor, MOSFET ou driver apropriado.
- Use diodo de proteção em cargas indutivas.
- Escolha frequência PWM adequada para a aplicação.
- Verifique o datasheet do PIC utilizado.
18. Aplicações industriais
O PWM é usado em controle de motores, inversores, controle de potência, controle de iluminação, válvulas proporcionais, aquecimento e automação de processos.
19. Exercícios
Exercício 1: O que significa PWM?
Pulse Width Modulation
Modulação por Largura de Pulso
Exercício 2: O que significa duty cycle de 50%?
A saída fica ligada metade do tempo e desligada metade do tempo.
Exercício 3: Qual timer normalmente é usado pelo PWM do PIC?
Timer2
Exercício 4: Por que não devemos ligar um motor diretamente no PIC?
Porque o pino do PIC não suporta a corrente exigida pelo motor.
20. Laboratório prático
Monte um potenciômetro no AN0 e um LED no pino RC2/CCP1. O objetivo é controlar o brilho do LED conforme a posição do potenciômetro.
Potenciômetro → AN0
PWM CCP1/RC2 → Resistor 330Ω → LED → GND
21. Resumo da Aula
- PWM controla potência por largura de pulso.
- Duty cycle define o tempo ligado do sinal.
- Timer2 é a base do PWM em muitos PICs.
- CCP1 pode gerar PWM por hardware.
- ADC pode controlar o duty cycle.
- PWM é muito usado em automação e controle.
Próxima Aula – Aula 17
Na próxima aula vamos estudar Comunicação Serial UART, utilizada para comunicação entre PIC, computador, módulos RS-232, RS-485, Bluetooth, GSM e outros dispositivos.