Após consolidar leitura de sensores, controle digital e persistência de dados, o próximo nível em sistemas embarcados é o controle de potência.
Isso é feito com PWM (Pulse Width Modulation) — um dos mecanismos mais importantes para interação eficiente com o mundo físico.
O que é PWM
PWM é uma técnica de controle onde um sinal digital alterna rapidamente entre ligado e desligado, permitindo simular níveis intermediários de potência.
Não há variação analógica real de tensão — apenas controle temporal.
Conceito Fundamental: Duty Cycle
Duty Cycle = TON / T
- 0% → sempre desligado
- 50% → metade do tempo ligado
- 100% → sempre ligado
A potência média entregue ao dispositivo é proporcional ao duty cycle.
PWM no Raspberry Pi Pico
Capacidades relevantes:
- 16 canais PWM
- Controle independente de frequência
- Duty cycle de 16 bits (0–65535)
Estrutura Base
from machine import Pin, PWM
pwm = PWM(Pin(0))
pwm.freq(1000)
pwm.duty_u16(32767)
Projeto 1: Sinal PWM Básico
from machine import Pin, PWM
ch = PWM(Pin(0))
ch.freq(1000)
ch.duty_u16(32767)
while True:
pass
Resultado:
- Frequência estável (1 kHz)
- Duty cycle fixo (50%)
Projeto 2: Controle de Brilho (LED)
from machine import Pin, PWM
import utime
ch = PWM(Pin(0))
ch.freq(1000)
i = 0
while True:
ch.duty_u16(i)
utime.sleep_ms(300)
i += 5000
if i > 65535:
i = 0
Comportamento:
- Incremento gradual de duty cycle
- Variação perceptível de brilho
- Reinício cíclico
Projeto 3: Controle de Motor via ADC
from machine import Pin, PWM, ADC
pot = ADC(0)
ch = PWM(Pin(17))
ch.freq(1000)
while True:
duty = pot.read_u16()
ch.duty_u16(duty)
Arquitetura:
- Entrada: potenciômetro (ADC)
- Processamento: leitura direta
- Saída: PWM proporcional
Projeto 4: Controle de Frequência
from machine import Pin, PWM, ADC
import utime
pot = ADC(0)
ch = PWM(Pin(16))
while True:
freq = pot.read_u16()
ch.freq(freq)
ch.duty_u16(32767)
utime.sleep(1)
Aplicação:
- Geração de sinais variáveis
- Testes de resposta de dispositivos
Projeto 5: Medição de PWM
from machine import Pin
import utime
pin = Pin(17, Pin.IN)
while True:
while pin.value() == 0:
pass
t1 = utime.ticks_cpu()
while pin.value() == 1:
pass
t2 = utime.ticks_cpu()
while pin.value() == 0:
pass
t3 = utime.ticks_cpu()
mark = utime.ticks_diff(t2, t1)
space = utime.ticks_diff(t3, t2)
duty = 100 * mark / (mark + space)
freq = 1000 / (mark + space)
print("Duty:", duty)
print("Freq:", freq)
Importância:
- Permite análise de sinais externos
- Base para diagnóstico e validação
Projeto 6: Geração de Áudio (PWM)
from machine import Pin, PWM
import utime
ch = PWM(Pin(0))
notes = [262, 294, 330, 349]
durations = [400, 400, 400, 400]
while True:
for i in range(len(notes)):
ch.freq(notes[i])
ch.duty_u16(32767)
utime.sleep_ms(durations[i])
ch.duty_u16(0)
utime.sleep_ms(100)
Interpretação:
- Frequência → nota musical
- PWM → geração de onda sonora
- Duty cycle → intensidade
Aplicação em Engenharia
PWM é aplicado diretamente em:
Controle de potência
- Motores DC
- Ventiladores
- Resistências de aquecimento
Controle de sinal
- Áudio (buzzers)
- Modulação digital
- Interfaces analógicas simuladas
Direcionamento Técnico
Uso correto exige atenção:
- Frequência compatível com o dispositivo
- Filtragem (se necessário para saída analógica)
- Proteção elétrica (transistores, drivers)
- Não acionar carga diretamente em GPIO sem estágio intermediário
Arquitetura Completa
Sistema embarcado completo com PWM:
- Entrada: sensores (ADC)
- Processamento: lógica de controle
- Saída: PWM (potência variável)
- Persistência: logs (opcional)
Insight Técnico Final
PWM é o mecanismo que permite ao sistema digital:
- Controlar variáveis contínuas
- Interagir com cargas reais
- Operar com eficiência energética
Sem PWM, o controle embarcado fica limitado ao binário.
Com PWM, o sistema passa a atuar no mundo físico de forma precisa.
Encerramento do Material
Neste ponto, todos os pilares foram cobertos:
- Entrada (ADC, sensores)
- Processamento (lógica)
- Saída (GPIO, PWM)
- Persistência (data logging)
Isso constitui a base completa para desenvolvimento de sistemas embarcados reais com Raspberry Pi Pico.

