O que é PWM e Como Utilizá-lo no Raspberry Pi?
PWM significa Pulse Width Modulation (Modulação por Largura de Pulso) onde a frequência de trabalho se mantém constante, mas a largura de pulso ou o ciclo ativo também conhecido como duty cycle pode variar, sendo assim é possível controlar a potência de cargas de tensão contínua.
O valor de duty cycle é dado em porcentagem, desta forma podemos determinar o valor médio da tensão fornecida à carga, por exemplo, se o valor máximo da onda for 5 volts e o duty cycle for de 50%, a tensão média será de 2,5V, caso o duty cycle seja de 75% a tensão média será de 3,75V.
Acima podemos ver as variações de ciclo ativo (nível lógico alto) e nível lógico baixo e as suas respectivas tensões médias. Quanto maior o duty cycle maior a tensão média fornecida à carga.
PWM no Raspberry Pi
Para utilizar PWM no Raspberry vamos acionar um motor DC conforme o circuito abaixo:
O controle da potência do motor será feito através do valor de tensão média enviado do pino 12 da Raspberry para a base do transistor. Como já foi mencionado, o valor desta tensão está ligada à largura de pulso da onda quadrada.
Para gerar este sinal é necessário criar um código conforme podemos ver abaixo:
Código
O programa abaixo tem a finalidade de ajustar o sinal para um duty cicle de 50% em uma frequência de 50Hz.
1 2 3 4 5 6 | import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(12,GPIO.OUT) sign=GPIO.PWM(12,50) sign.start(50) |
Primeiramente foram importadas as bibliotecas da GPIO import RPi.GPIO as GPIO e em seguida foi configurado o modo de definição dos pinos GPIO. Se configurarmos como .BCM o pino 12 seria definido como GPIO18 (Veja no post Introdução ao Raspberry Pi – Hardware).
A porta 12 foi configurada como saída GPIO.setup(12,GPIO.OUT) e neste pino é gerado o sinal PWM em 50Hz e enviado para a variável sign=GPIO.PWM(12,50). O duty cycle é definido em 50% sign.start(10).
Entre os pontos A e B foi conectado um osciloscópio para que fosse feita a aquisição da forma de onda que está sendo enviada para a base do transistor. Veja abaixo a medida feita:
Podemos ver que foram feitas as medidas da tensão média (Médio), período e frequência.
Abaixo temos o programa onde o duty cycle foi alterado para 20%:
1 2 3 4 5 6 | import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(12,GPIO.OUT) sign=GPIO.PWM(12,50) sign.start(20) |
Podemos notar que devido a alteração do duty cicle para 20% o valor da tensão média também foi alterado.
Esperamos que tenham gostado deste tutorial. Para tirar dúvidas e sugestões, deixe um comentário abaixo.
Obrigado e confira outros produtos em nossa loja!
Muito bom seusconteudo referente ao mundo da eletronica agregou muito para nossos conhecimentos obrigado pelo seus compartilhamento top https://www.gruposeteg.com.br/
Olá Claudio, tudo bem?
Obrigado por acompanhar nosso blog!
Ficamos felizes em ter agregado no seu desenvolvimento técnico.
Fique atento aos próximos posts!
Baú da Eletrônica.