Controle de Potência com Raspberry Pi Pico: PWM na Prática em Sistemas Embarcados

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.