11
Robótica
UMG
15
Robótica
UMG
52
Robótica
UMG
6
Robótica
UMG
3
Robótica
UMG
1
Robótica
UMG
1
Robótica
UMG
27
Robótica
UMG
5
Robótica
UMG
1
Robótica
UMG
Texto de pré-visualização
Autor Édilus de Carvalho Castro Penido Pág 1 PWM A sigla PWM é um acrônimo para Pulse Width Modulation Modulação por Largura de Pulso representando um modo de variar o valor médio da tensão de sinais periódi cos em sistemas digitais Essa técnica consiste em manter a frequência de um sinal digital fixa e alterar a proporção entre o tempo em que ele fica em nível alto 1 e nível baixo 0 O tempo em que o sinal fica em nível alto em porcentagem é cha mado de duty cycle ou seja o ciclo ativo de trabalho na forma de onda A Figura 1 mostra sinais com diferentes modulações PWM Figura 1 Sinais digitais com diferentes modulações PWM Se analisarmos os sinais notaremos que a diferença entre eles é a proporção entre os tempos em 1 e 0 OBS Os três sinais no centro da Figura 1 tem a mesma fre quência Por exemplo se o duty cicle for 0 o valor médio da tensão do sinal é 0 V Já se o duty cicle for 75 o valor médio da tensão do sinal é 375 V 75 de 5 V Arduíno Teoria Prática Área Computação Prof Édilus de Carvalho Castro Penido Sinal sempre em nível baixo 0 Sinal pulso com mais tempo em nível baixo Sinal pulso com tem pos em nível baixo e em nível alto iguais Sinal sempre em nível alto 1 Sinal pulso com mais tempo em nível alto Autor Édilus de Carvalho Castro Penido Pág 2 A técnica de PWM pode ser usada em várias aplicações como por exemplo con trole da velocidade de motores variação da luminosidade de LEDs geração de sinais analógicos etc O Arduino MEGA possui quinze pinos específicos para gerar sinas PWM 2 3 4 5 6 7 8 9 10 11 12 13 44 45 e 46 Para utilizálos mais facilmente com esse objetivo é possível utilizar a função analogWritevalor numérico de 0 a 255 que gera um sinal PWM com frequência fixa normalmente 490 Hz e duty cicle variável 0 0 255 100 É importante salientar que o pino deve ser configurado como saída digital não se comportando como um conversor digitalanalógico DA como o nome da função pode sugerir Com o sketch apresentado no Código 1 é possível controlar sinal PWM no pino 12 a partir da tensão fornecida por um potenciômetro deslizante ligado na entrada ana lógica A0 do Arduino O valor da conversão AD gerado pela função analogRead 0 a 1023 foi dividido por 4 para ajustálo ao valor máximo que pode ser utilizado na função analogWrite 0 a 255 Para abrir a janela de visualização da forma de onda num pino devemos clicar duas vezes sobre ele na janela do simulador A Figura 2 mostra essa janela e o ponto onde devemos clicar para visualizar a forma de onda do pino 12 define PWMpino 12 define EA1 A0 define LRS 44 define LEN 45 define LRW 46 define LD4 40 define LD5 41 define LD6 42 define LD7 43 include NativeLiquidCrystalh NativeLiquidCrystal lcdLRS LRW LEN LD4 LD5 LD6 LD7 unsigned int PWMnovo 0 PWMantigo 0 AD 0 void setup pinModePWMpino OUTPUT lcdbegin20 4 lcdsetCursor0 0 lcdprintAD 0 lcdsetCursor0 1 lcdprintPWM 0 Autor Édilus de Carvalho Castro Penido Pág 3 void loop AD analogReadEA1 PWMnovo AD 4 analogWritePWMpino PWMnovo if PWMnovo PWMantigo lcdclear lcdsetCursor0 0 lcdprintAD lcdprintAD lcdsetCursor0 1 lcdprintPWM lcdprintPWMnovo PWMantigo PWMnovo Código 1 Controle de um sinal PWM a partir de uma tensão analógica Figura 2 Visualização do sinal PWM no pino 12 do Arduíno MEGA Autor Édilus de Carvalho Castro Penido Pág 4 A mudança da escala de tempo na janela de visualização da forma de onda num pino pode ser feita através do botão central de rolar do mouse ou através dos comandos CTRL Seta para Cima ou CTRL Seta para Baixo O sketch do Código 2 mostra uma forma de controlar o sinal PWM no pino 12 através de dois botões com BT1 é possível aumentar a largura do pulso mais tempo em nível alto e com BT2 é possível diminuíla mais tempo em nível baixo define PWMpino 12 define BT1 2 define BT2 3 define LRS 44 define LEN 45 define LRW 46 define LD4 40 define LD5 41 define LD6 42 define LD7 43 include NativeLiquidCrystalh NativeLiquidCrystal lcdLRS LRW LEN LD4 LD5 LD6 LD7 unsigned int PWMnovo 0 PWMantigo 0 void setup pinModeBT1 INPUT pinModeBT2 INPUT pinModePWMpino OUTPUT lcdbegin20 4 void loop analogWritePWMpino PWMnovo if digitalReadBT1 1 PWMnovo 255 PWMnovo delay100 if digitalReadBT2 1 PWMnovo 0 PWMnovo delay100 if PWMnovo PWMantigo lcdclear lcdsetCursor0 0 lcdprintPWM lcdprintPWMnovo PWMantigo PWMnovo Código 2 Controle de um sinal PWM a partir de dois botões Autor Édilus de Carvalho Castro Penido Pág 5 Figura 3 Visualização do resultado do Código 2
11
Robótica
UMG
15
Robótica
UMG
52
Robótica
UMG
6
Robótica
UMG
3
Robótica
UMG
1
Robótica
UMG
1
Robótica
UMG
27
Robótica
UMG
5
Robótica
UMG
1
Robótica
UMG
Texto de pré-visualização
Autor Édilus de Carvalho Castro Penido Pág 1 PWM A sigla PWM é um acrônimo para Pulse Width Modulation Modulação por Largura de Pulso representando um modo de variar o valor médio da tensão de sinais periódi cos em sistemas digitais Essa técnica consiste em manter a frequência de um sinal digital fixa e alterar a proporção entre o tempo em que ele fica em nível alto 1 e nível baixo 0 O tempo em que o sinal fica em nível alto em porcentagem é cha mado de duty cycle ou seja o ciclo ativo de trabalho na forma de onda A Figura 1 mostra sinais com diferentes modulações PWM Figura 1 Sinais digitais com diferentes modulações PWM Se analisarmos os sinais notaremos que a diferença entre eles é a proporção entre os tempos em 1 e 0 OBS Os três sinais no centro da Figura 1 tem a mesma fre quência Por exemplo se o duty cicle for 0 o valor médio da tensão do sinal é 0 V Já se o duty cicle for 75 o valor médio da tensão do sinal é 375 V 75 de 5 V Arduíno Teoria Prática Área Computação Prof Édilus de Carvalho Castro Penido Sinal sempre em nível baixo 0 Sinal pulso com mais tempo em nível baixo Sinal pulso com tem pos em nível baixo e em nível alto iguais Sinal sempre em nível alto 1 Sinal pulso com mais tempo em nível alto Autor Édilus de Carvalho Castro Penido Pág 2 A técnica de PWM pode ser usada em várias aplicações como por exemplo con trole da velocidade de motores variação da luminosidade de LEDs geração de sinais analógicos etc O Arduino MEGA possui quinze pinos específicos para gerar sinas PWM 2 3 4 5 6 7 8 9 10 11 12 13 44 45 e 46 Para utilizálos mais facilmente com esse objetivo é possível utilizar a função analogWritevalor numérico de 0 a 255 que gera um sinal PWM com frequência fixa normalmente 490 Hz e duty cicle variável 0 0 255 100 É importante salientar que o pino deve ser configurado como saída digital não se comportando como um conversor digitalanalógico DA como o nome da função pode sugerir Com o sketch apresentado no Código 1 é possível controlar sinal PWM no pino 12 a partir da tensão fornecida por um potenciômetro deslizante ligado na entrada ana lógica A0 do Arduino O valor da conversão AD gerado pela função analogRead 0 a 1023 foi dividido por 4 para ajustálo ao valor máximo que pode ser utilizado na função analogWrite 0 a 255 Para abrir a janela de visualização da forma de onda num pino devemos clicar duas vezes sobre ele na janela do simulador A Figura 2 mostra essa janela e o ponto onde devemos clicar para visualizar a forma de onda do pino 12 define PWMpino 12 define EA1 A0 define LRS 44 define LEN 45 define LRW 46 define LD4 40 define LD5 41 define LD6 42 define LD7 43 include NativeLiquidCrystalh NativeLiquidCrystal lcdLRS LRW LEN LD4 LD5 LD6 LD7 unsigned int PWMnovo 0 PWMantigo 0 AD 0 void setup pinModePWMpino OUTPUT lcdbegin20 4 lcdsetCursor0 0 lcdprintAD 0 lcdsetCursor0 1 lcdprintPWM 0 Autor Édilus de Carvalho Castro Penido Pág 3 void loop AD analogReadEA1 PWMnovo AD 4 analogWritePWMpino PWMnovo if PWMnovo PWMantigo lcdclear lcdsetCursor0 0 lcdprintAD lcdprintAD lcdsetCursor0 1 lcdprintPWM lcdprintPWMnovo PWMantigo PWMnovo Código 1 Controle de um sinal PWM a partir de uma tensão analógica Figura 2 Visualização do sinal PWM no pino 12 do Arduíno MEGA Autor Édilus de Carvalho Castro Penido Pág 4 A mudança da escala de tempo na janela de visualização da forma de onda num pino pode ser feita através do botão central de rolar do mouse ou através dos comandos CTRL Seta para Cima ou CTRL Seta para Baixo O sketch do Código 2 mostra uma forma de controlar o sinal PWM no pino 12 através de dois botões com BT1 é possível aumentar a largura do pulso mais tempo em nível alto e com BT2 é possível diminuíla mais tempo em nível baixo define PWMpino 12 define BT1 2 define BT2 3 define LRS 44 define LEN 45 define LRW 46 define LD4 40 define LD5 41 define LD6 42 define LD7 43 include NativeLiquidCrystalh NativeLiquidCrystal lcdLRS LRW LEN LD4 LD5 LD6 LD7 unsigned int PWMnovo 0 PWMantigo 0 void setup pinModeBT1 INPUT pinModeBT2 INPUT pinModePWMpino OUTPUT lcdbegin20 4 void loop analogWritePWMpino PWMnovo if digitalReadBT1 1 PWMnovo 255 PWMnovo delay100 if digitalReadBT2 1 PWMnovo 0 PWMnovo delay100 if PWMnovo PWMantigo lcdclear lcdsetCursor0 0 lcdprintPWM lcdprintPWMnovo PWMantigo PWMnovo Código 2 Controle de um sinal PWM a partir de dois botões Autor Édilus de Carvalho Castro Penido Pág 5 Figura 3 Visualização do resultado do Código 2