Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Automação - pwm, Notas de estudo de Engenharia Física

Automação Industrial

Tipologia: Notas de estudo

2012

Compartilhado em 20/06/2012

rodrigo-davi-8
rodrigo-davi-8 🇧🇷

4.8

(22)

81 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
PWM – Pulse Wide Modulation (modulação por largura de pulso)
Os microcontroladores são dispositivos que comandados por programas podem facilmente realizar
o acionamento ou o desligamento de uma saída digital. Mas e se o dispositivo a ser controlado necessita
de um controle analógico ?
Por exemplo, ligar e desligar um motor conectado indiretamente (via transistores ou reles) a um
pino do microcontrolador não é complicado se usarmos as instruções de acionar (output_high) e desativa
(output_low) a saída. Mas se além de ligar e desligar este motor, for necessário “dosar” a tensão a ele
fornecida, de forma a controlar também a velocidade ou torque deste motor ?
Para isso, seria necessária uma saída analógica. Mas como realizar este controle, se tal saída não
existe em um dispositivo de controle discreto, como um microcontrolador ?
A saída é pulsar (ativar e desativar) uma saída, filtrando-a e gerando, com estes pulsos filtrados,
o efeito desejado.
Por exemplo, vamos imaginar um ventilador de uma única velocidade conectado a uma chave liga/
desliga. Se você manter a chave ligada, o ventilador acelera até obter 200 RPM. Se você desligar a chave,
o ventilador irá desacelerar até parar. Mas e se você ficar ligando e desligando a chave, em intervalos de
1 segundo, perceberá que o ventilador irá girar a uma velocidade inferior que 200 RPM. E se você exercer
pulsos ligados mais largos, e pulsos desligados mais curtos, o ventilador irá acelerar.
É dessa forma que vamos proceder, trabalhando com freqüências bem elevada, com vários
acionamentos por segundo.
Desta forma, obtemos uma saída que poderá ser adequada, usando-se um filtro RC adequado,
para a tensão necessária.
É comum também utilizar a saída pulsante diretamente no dispositivo de amplificação (transistor
ou circuito integrado de potência) para gerar a mesma saída pulsante em níveis de tensão e corrente mais
elevados. Desta forma, é possível se controlar intensidade de luminosidade, temperatura, velocidade e
torque de motores, som, etc...
E quais são as características de uma saída PWM ?
Podemos citar três características : O nível de tensão, o tempo de ciclo e o tamanho do pulso .
Quanto ao nível de tensão, ficará restrito ao nível de trabalho do microcontrolador. No caso do PIC16F877,
que funciona a 5V, o nível dos pulsos também será de 5V. Caso haja interessem aumentar este valor, ou
de aumentar a corrente (que é só de sinal), será necessária a amplificação com transistores ou outro
circuito integrado (veja exemplo ao lado).
Já o tempo de ciclo e o tamanho do pulso podem ser controlados por software.
Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo
Disciplina PROGRAMAÇÃO
Instrutor DANIEL CORTELETTI
Impresso em – Página 1
pf2

Pré-visualização parcial do texto

Baixe Automação - pwm e outras Notas de estudo em PDF para Engenharia Física, somente na Docsity!

PWM – Pulse Wide Modulation (modulação por largura de pulso)

Os microcontroladores são dispositivos que comandados por programas podem facilmente realizar

o acionamento ou o desligamento de uma saída digital. Mas e se o dispositivo a ser controlado necessita

de um controle analógico?

Por exemplo, ligar e desligar um motor conectado indiretamente (via transistores ou reles) a um

pino do microcontrolador não é complicado se usarmos as instruções de acionar (output_high) e desativa

(output_low) a saída. Mas se além de ligar e desligar este motor, for necessário “dosar” a tensão a ele

fornecida, de forma a controlar também a velocidade ou torque deste motor?

Para isso, seria necessária uma saída analógica. Mas como realizar este controle, se tal saída não

existe em um dispositivo de controle discreto, como um microcontrolador?

A saída é pulsar (ativar e desativar) uma saída, filtrando-a e gerando, com estes pulsos filtrados,

o efeito desejado.

Por exemplo, vamos imaginar um ventilador de uma única velocidade conectado a uma chave liga/

desliga. Se você manter a chave ligada, o ventilador acelera até obter 200 RPM. Se você desligar a chave,

o ventilador irá desacelerar até parar. Mas e se você ficar ligando e desligando a chave, em intervalos de

1 segundo, perceberá que o ventilador irá girar a uma velocidade inferior que 200 RPM. E se você exercer

pulsos ligados mais largos, e pulsos desligados mais curtos, o ventilador irá acelerar.

É dessa forma que vamos proceder, trabalhando com freqüências bem elevada, com vários

acionamentos por segundo.

Desta forma, obtemos uma saída que poderá ser adequada, usando-se um filtro RC adequado,

para a tensão necessária.

É comum também utilizar a saída pulsante diretamente no dispositivo de amplificação (transistor

ou circuito integrado de potência) para gerar a mesma saída pulsante em níveis de tensão e corrente mais

elevados. Desta forma, é possível se controlar intensidade de luminosidade, temperatura, velocidade e

torque de motores, som, etc...

E quais são as características de uma saída PWM?

Podemos citar três características : O nível de tensão, o tempo de ciclo e o tamanho do pulso.

Quanto ao nível de tensão, ficará restrito ao nível de trabalho do microcontrolador. No caso do PIC16F877,

que funciona a 5V, o nível dos pulsos também será de 5V. Caso haja interessem aumentar este valor, ou

de aumentar a corrente (que é só de sinal), será necessária a amplificação com transistores ou outro

circuito integrado (veja exemplo ao lado).

Já o tempo de ciclo e o tamanho do pulso podem ser controlados por software.

Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo

Disciplina PROGRAMAÇÃO

Instrutor DANIEL CORTELETTI

Impresso em – Página 1

Veja o exemplo abaixo :

#include <16f877.h> // porque vamos usar um PIC16F877 ou PIC16F877A #use delay (clock=4000000) // Importante que o valor do CLOCK esteja correto #define use_portb_lcd true #include <lcd.c>

void main() { long TEMPO_PULSO = 0; // variável que determina tamanho do pulso ligado setup_ccp1(CCP_PWM); // ativa PWM 1 (pino C2) setup_ccp2(CCP_PWM); // ativa PWM 2 (pino C1) setup_timer_2(T2_DIV_BY_4, 250, 1); // O tamanho do ciclo é 4(4/CLOCK)250. lcd_init(); while(1) // laço infinito { set_pwm1_duty(TEMPO_PULSO); // Configura tamanho do pulso set_pwm2_duty(1023 – TEMPO_PULSO); // Configura tamanho do pulso (inversamente proporcional) delay_ms(50); // Tempo de 50 milésimos de segundo if (input(PIN_D0)&&TEMPO_PULSO>0) // Se sinal em D0 e TEMPO_PULSO for superior a ZERO { TEMPO_PULSO --; // Diminui uma unidade da variável TEMPO_PULSO } if (input(PIN_D7)&&TEMPO_PULSO<1023) // Se sinal em D7 e TEMPO_PULSO menor que 1023 { TEMPO_PULSO ++; // Incrementa TEMPO_PULSO em uma unidade } printf(lcd_putc,"\fPWM: %lu", TEMPO_PULSO); // mostra no display o valor de TEMPO_PULSO } }

Obs importante : O exemplo acima terá efeito sobre os pinos do PWM físico, ou seja, pinos C2 (PWM1) e C1 (PWM2). Em outros casos, e para outros pinos, será necessário gerar um PWM via software. Isso quer dizer que seu programa deve ficar ligando e desligando o pino em questão. Veja como seria no exemplo abaixo :

#include <16f877.h> // porque vamos usar um PIC16F877 ou PIC16F877A #use delay (clock=4000000) // Importante que o valor do CLOCK esteja correto #define use_portb_lcd true #include <lcd.c>

void main() { long TEMPO_PULSO = 0; // variável que determina tamanho do pulso ligado while(1) // laço infinito { output_high(PIN_D0); delay_us(TEMPO_PULSO); output_low(PIN_D0); delay_us(1024 – TEMPO_PULSO); if (input(PIN_A1)) TEMPO_PULSO = 0; // Se A1 acionado, tamanho do pulso é zero if (input(PIN_A2)) TEMPO_PULSO = 200; // Se A2 acionado, tamanho do pulso é 200 if (input(PIN_A3)) TEMPO_PULSO = 400; // Se A2 acionado, tamanho do pulso é 400 if (input(PIN_A4)) TEMPO_PULSO = 800; // Se A2 acionado, tamanho do pulso é 800 if (input(PIN_A5)) TEMPO_PULSO = 1023; // Se A2 acionado, tamanho do pulso é 1023 } }

Exercício:

1) Com base nos exemplos aqui vistos, crie um programa que realize a aceleração gradual de um motor ligado à saída

PWM1.

2) Com base no segundo exemplo (PWM por software), crie um programa que realize o acionamento de um buzzer ou

autofalante, conforme gráfico ao lado.

Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo

Disciplina PROGRAMAÇÃO

Instrutor DANIEL CORTELETTI

Impresso em – Página 2