23
Instituto Centro de Ensino Tecnológico 10/04/2013 1 Instituto Centro de Ensino Tecnológico Eletroeletrônica – Microcontroladores– Módulo IV Aula 09 Microcontroladores: Programação em C Prof. Tecgº Flávio Murilo

Microcontroladores: Programação em C · do PWM fosse usado um potenciômetro para limitar a tensão do motor, a velocidade diminuiria, mas com perda de torque

Embed Size (px)

Citation preview

Instituto Centro de Ensino Tecnológico

10/04/2013 1 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

Aula 09

Microcontroladores:

Programação em C

Prof. Tecgº Flávio Murilo

PWM – Conceitos – Definição

10/04/2013 2 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• PWM é a sigla para Pulse Width Modulation (Modulação por Largura de Pulso).

É uma técnica utilizada para controle de intensidade de funcionamento de

cargas de corrente contínua. Exemplo: Controle de velocidade de um motor DC.

PWM – Conceitos – Vantagens

10/04/2013 3 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• O controle PWM permite que as cargas tenham a intensidade de funcionamento

variada através do aumento ou diminuição no tempo de ciclo ativo. No exemplo

do motor, pode-se observar as seguintes vantagens:

Variação na velocidade de giro do motor sem perca do torque, já que a

tensão aplicada continua a mesma, porém a ciclos variados. Se ao invés

do PWM fosse usado um potenciômetro para limitar a tensão do motor, a

velocidade diminuiria, mas com perda de torque.

Essa variação na velocidade permite partidas suaves quando os motores

tiverem que trabalhar com uma carga elevada.

Se o ciclo ativo for de 50%, há uma economia de 50% no consumo de

energia e a velocidade de giro do motor vai ser a metade. Exemplo: Motor

ligado o tempo todo = 1000rpm e motor 50% ligado e 50% desligado =

500rpm.

PWM – Circuito exemplo

10/04/2013 4 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Observe o circuito abaixo. Enquanto o botão não estiver o botão pressionado, o

motor estará obviamente desligado. Enquanto o botão estiver pressionado, o

motor estará girando.

PWM – Circuito exemplo

10/04/2013 5 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Suponha que você consiga pressionar o botão e soltar uma quantidade elevada

de vezes por segundo, passando metade do tempo ligado e metade desligado.

O sinal aplicado ao motor está descrito no gráfico abaixo:

PWM – Circuito exemplo

10/04/2013 6 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Embora seja praticamente impossível, se o tempo ligado for exatamente o

mesmo do tempo desligado, então teremos uma tensão média de 3V no caso

do motor, já que o tempo ligado é o mesmo desligado.

PWM – Circuito exemplo

10/04/2013 7 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Para diminuir a velocidade do motor, diminuímos a largura do pulso, fazendo

com que o motor passe menos tempo ligado. Da mesma forma, para aumentar

a velocidade do motor, aumentamos a largura do pulso.

PWM – Cálculo de rotação

10/04/2013 8 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Podemos generalizar da seguinte forma. Suponha um circuito com um motor

que quando ligado 100% do tempo tenha uma rotação de 3100rpm com uma

tensão de 12V, potência de 218W e 3,44Nm. Calcule a rotação (rpm), a tensão

(V), a tensão média (Vm), a potência (W) e o torque (Nm) nos casos a seguir.

50% do tempo ligado e 50% do tempo desligado.

75% do tempo ligado e 25% do tempo desligado.

25% do tempo ligado e 75% do tempo desligado.

rpm(pwm)=rpm.porcentagem(ligado)

P=U.I

I=P/U

PWM – Configuração no compilador

10/04/2013 9 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Crie um novo projeto pelo PIC Wizard.

PWM – Configuração no compilador

10/04/2013 10 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Crie um novo projeto pelo PIC Wizard.

PWM – Configuração no compilador

10/04/2013 11 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Em “Device” selecione o PIC utilizado. Desative o “Master Clear”, caso seja

necessário e configure o clock. Depois na aba “Other”, em CCPX Settings,

seleciona PWM.

PWM – Configuração no compilador

10/04/2013 12 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Ainda na aba “Other”, em “CCPX” (módulo CCP significa Capture, Compare e

PWM) selecione “CCP1”.

PWM – Configuração no compilador

10/04/2013 13 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Em “More Options”, configure a frequência do pulso de saída do PWM.

PWM – Configuração no compilador

10/04/2013 14 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Em “Options”, selecione a opção que mais se adequa a opção de frequência

que você escolheu.

PWM – Configuração no compilador

10/04/2013 15 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Em “Options”, selecione a opção que mais se adequa a opção de frequência

que você escolheu.

PWM – Configuração no compilador

10/04/2013 16 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Na aba “I/O Pins”, certifique-se de que existe algum pino configurado como

saída (Output) e com o PWM habilitado.

PWM – Configuração no compilador

10/04/2013 17 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• O período de estouro (Overflow Period) é o período do PWM (1/f, calculado

automaticamente pelo compilador juntamente com a carga do Timer2).

• Depois de feitas as configurações, clique em OK. Irá aparecer o seguinte código

no escopo principal:

• setup_adc_ports(NO_ANALOGS);

• setup_adc(ADC_OFF);

• setup_psp(PSP_DISABLED);

• setup_spi(FALSE);

• setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

• setup_timer_1(T1_DISABLED);

• setup_timer_2(T2_DIV_BY_16,155,1); //Seta o Timer2

• setup_ccp1(CCP_PWM);

• setup_comparator(NC_NC_NC_NC);

PWM – Cálculo de freq. máx. e mín.

10/04/2013 18 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• O timer específico para o PWM (Timer 2) é um timer de 8 bits e é tomado como

base para o cálculo de frequência máxima e frequência mínima do PWM. Tendo

8 bits, a carga do Timer 2 (ou período) pode variar de 0 (00000000) até 255

(11111111) e o prescaler pode ser 1, 4 ou 16. Leva-se em consideração também

o clock interno do microcontrolador Ex: 4000000Hz (PIC 16F628A) A fórmula

para o cálculo da frequência do PWM é:

• f(PWM) = 𝐹𝑟𝑒𝑞𝑢ê𝑛𝑐𝑖𝑎 𝑑𝑜 𝑐𝑟𝑖𝑠𝑡𝑎𝑙

(𝐶𝑎𝑟𝑔𝑎 𝑑𝑜 𝑡𝑖𝑚𝑒𝑟2 + 1) ∗ (𝑇𝑖𝑚𝑒𝑟2 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟) ∗ 4

PWM – Cálculo de freq. máx. e mín.

10/04/2013 19 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Vamos calcular a frequência máxima e mínima do PWM em um

microcontrolador PIC 16F628A)

• Frequência do Cristal - 4000000Hz

• Carga do timer2 (Frequência máxima) – 1;

• Carga do timer2 (Frequência mínima) – 16;

• Prescaler do timer2 (Frequência máxima) – 1;

• Prescaler do timer2 (Frequência mínima) – 255; Então:

• fmín(PWM) = 4000000

(255 + 1) ∗ (16) ∗ 4 =

4000000

16384 = 244Hz

• fmáx(PWM) = 4000000

(1 + 1) ∗ (1) ∗ 4 =

4000000

8 = 500000Hz

PWM – Cálculo de ciclo ativo

10/04/2013 20 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• O ciclo ativo (Duty Cicle) é a proporção de tempo em que o pulso está em nível

alto. Na linguagem C, definimos o duty cicle com o comando:

set_pwm1_duty(valor);

• Este valor não pode exceder o período. Sendo que podemos atribuir valores de

8 ou de 16 bits para o duty cicle.

• Exemplo para 8 bits:

• set_pwm1_duty(150);

• Duty Cicle= 8−𝑏𝑖𝑡 𝐷𝑢𝑡𝑦 𝑐𝑦𝑐𝑙𝑒

(𝐶𝑎𝑟𝑔𝑎 𝑑𝑜 𝑡𝑖𝑚𝑒𝑟2 + 1) =

150

(155 + 1) = 96,2%

PWM – Cálculo de ciclo ativo

10/04/2013 21 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Exemplo para 16 bits:

• set_pwm1_duty(150L);

• Duty Cicle= 16−𝑏𝑖𝑡 𝐷𝑢𝑡𝑦 𝑐𝑦𝑐𝑙𝑒

𝐶𝑎𝑟𝑔𝑎 𝑑𝑜 𝑡𝑖𝑚𝑒𝑟2 + 1 ∗4 =

150

155 + 1 ∗4 = 24%

• Além do L depois do valor, podemos declarar a variável “valor” como int8 ou

int16 para diferenciar.

PWM – No Proteus

10/04/2013 22 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Monte o circuito no Proteus usando o PIC 18F2550 e um osciloscópio de

“Virtual Instrument Modes”, um “Counter Timer” e dois buttons.

PWM – Exemplos

11/04/2013 23 Instituto Centro de

Ensino Tecnológico

Eletroeletrônica – Microcontroladores– Módulo IV

• Exemplo 01: Programa, usando PWM, uma partida suave para um motor DC

onde inicialmente o motor está parado e vai aumentando a sua velocidade até

chegar na sua rotação máxima.