PWM na Raspberry Pi com Python

Screen Capture

Introdução

 

A Raspberry Pi pode ser compreendida como um computador disposto em uma única placa, no tamanho de um cartão de crédito que roda um sistema operacional baseado no Linux e permite, desta forma, implementar diversas soluções tecnológicas em sistemas embarcados. O projeto desta placa foi desenvolvido pela Fundação Raspberry Pi, do Reino Unido. Uma das premissas iniciais deste projeto era a de introduzir o ensino de computação no ensino básico, podendo ser uma das ferramentas para o estudo de robótica educacional. Mais detalhes sobre o projeto podem ser obtidos através do seu site, onde, inclusive, há também a lista de distribuidores no qual o leitor poderá adquirir a placa Raspberry Pi.

 

Em três posts anteriores foi referenciada a modulação PWM. No artigo de Fabio Souza foi abordado o controle de saídas PWM em um Arduino; no artigo de Rodrigo Almeida, com a colaboração de seus alunos, também foi estudado o controle de motores utilizando PWM; No artigo de Vinicius Maciel foi detalhado o uso da biblioteca wiringPi na Raspberry Pi em C.

 

Para demonstrar o funcionamento do experimento proposto neste artigo foi utilizada a placa Raspberry Pi, modelo B disponível na figura 1.

 

pwm raspberry pi python: Placa Raspberry Pi
Figura 1: Raspberry Pi (Fonte: http://en.wikipedia.org/wiki/Raspberry_Pi)

 

 

PWM (Pulse Width Modulation)

 

O PWM (Pulse Width Modulation – Modulação por Largura de Pulso) é uma forma de operação onde a frequência de funcionamento é constante, porém a largura do pulso, ou seja, o ciclo ativo (duty cycle) pode alterar, permitindo desta forma com que a Raspberry Pi tenha controle de potência de cargas DC, como, por exemplo, motores, lâmpadas, LED, etc, já que a tensão média aplicada à carga pode variar do mínimo ao máximo. É importante frisar que dependendo da carga será necessário utilizar um driver, fazendo uso de um IGBT, MOSFET ou transistor de potência.

 

Observe no gráfico da figura 2 um exemplo de sinal PWM.

 

pwm raspberry pi python: duty cicle 50
Figura 2: Exemplo de sinal de PWM com duty cycle de 50%

 

Neste exemplo a frequência é constante e analisando o período, nota-se que do tempo total, apenas 50% ficam ativos e 50% não. Quando isso ocorre, sabe-se que o ciclo ativo ou duty cycle é de 50%. Caso haja uma carga DC linear conectada a uma destas saídas, pode-se inferir que neste instante, ela estaria na metade de sua potência total se a mesma tiver uma resposta linear.

 

Na figura 3 outra curva a ser analisada.

 

pwm raspberry pi python: duty cicle 20
Figura 3: Exemplo de sinal de PWM com duty cycle de 20%

  

Nota-se outro exemplo em que o duty cycle é diferente, ficando 20% ativo e 80% não. Neste caso, considerando novamente uma carga DC linear, a mesma ficaria com a potência de 1/5 (20%) da total.

 

 

Preparando a giga de testes

 

O esquema elétrico da figura 4 permite testar o PWM para controlar a intensidade luminosa de uma LED.

 

pwm raspberry pi python: giga de testes
Figura 4: Hardware de testes

 

Para acessar a função PWM na Raspberry Pi foi utilizado ao todo 3 funções disponíveis no interpretador que já vem instalado na placa, neste caso o Python, listadas abaixo.

 

Funções de acesso ao PWM no Python:

 

 

A linha pwm=GPIO.PWM(Canal,Frequência) permite criar um objeto chamado pwm que permite o acesso a tais funções, como troca de frequência ou duty cycle (DC). Para isso, é necessário instanciar o objeto, neste caso chamado de pwm, porém outros nomes podem ser utilizados, desde que não sejam palavras reservadas da linguagem Python. O parâmetro Canal define o pino no qual será utilizada a saída de PWM, enquanto que o parâmetro Frequência é relativo à frequência de PWM adotada no projeto.

 

A linha pwm.start(DC Inicial) inicializa o sinal de PWM, com um duty cycle (DC) inicial, que pode variar da faixa de 0% a 100%.

 

A função pwm.ChangeDutyCycle(DC) permite que o duty cycle seja alterado no decorrer da execução do programa, na faixa de 0% a 100%. Como exemplo, observe o código abaixo, que gera uma frequência de 100 Hz com duty cycle de 50%.

 

 

A figura 5 foi obtida de um osciloscópio digital funcionando de acordo com o programa anterior.

 

pwm raspberry pi python: Tela de osciloscópio para frequência de 100 Hz com DC de 50%
Figura 5: Tela de osciloscópio para frequência de 100 Hz com DC de 50%

 

O programa a seguir deixa o ciclo ativo em 20% usando a mesma frequência.

 

 

A figura 6 foi obtida de um osciloscópio digital funcionando de acordo com o programa anterior.

  

pwm raspberry pi python: Tela de osciloscópio para frequência de 100 Hz com DC de 20%
Figura 6: Tela de osciloscópio para frequência de 100 Hz com DC de 20%

 

O programa a seguir permite variar de 0% a 100% a intensidade do LED com intervalo de 100 ms entre cada passo, já que uma variável é utilizada dentro de um loop for para fazer tal contagem.

 

 

 

Conclusão

 

A Raspberry Pi oferece recursos computacionais avançados em uma placa de dimensões de um cartão de crédito. Neste artigo, procurou-se estudar a função PWM, porém inúmeras possibilidades estão disponíveis como porta serial, acesso a I/Os, etc. Este sistema embarcado pode ser utilizado em diversas aplicações, obtendo grande espaço no mercado de automação. Em breve, mostrarei outros recursos desta placa, de modo a deixar o leitor a par desta novidade.

 

 

Saiba mais sobre PWM

 

Gerando PWM com a Raspberry PI

Arduino - Saídas PWM

Ponte H com bootstrap para acionamento de motores DC

 

 

Referências

 

- SOUZA, V.A. Aplicações Eletrônicas na Raspberry Pi. Disponível em: <https://clubedeautores.com.br/>.

Sou Mestre em Instrumentação Científica e Engenheiro da Computação, atuando na área de projetos eletrônicos há vários anos. Desenvolvo projetos de hardware e software voltados para a área industrial, médica e comercial sob demanda. No momento trabalho na Cerne Tecnologia e Treinamento, empresa voltada para desenvolvimento de projetos, comercialização de kits didáticos e educação tecnológica na área de microcontroladores, linguagens de programação e desenvolvimento de projetos e layout. Ao longo dos anos escrevi vasto acervo literário técnico e científico, estando o catálogo completo disponível no Clube de Autores.