Aula 09 Microcontroladores: Programação em C Prof. Tecgº Flávio Murilo 10/04/2013 1
PWM Conceitos Definição 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. 10/04/2013 2
PWM Conceitos Vantagens 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. 10/04/2013 3
PWM Circuito exemplo 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. 10/04/2013 4
PWM Circuito exemplo 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: 10/04/2013 5
PWM Circuito exemplo 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. 10/04/2013 6
PWM Circuito exemplo 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. 10/04/2013 7
PWM Cálculo de rotação 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 10/04/2013 8
PWM Configuração no compilador Crie um novo projeto pelo PIC Wizard. 10/04/2013 9
PWM Configuração no compilador Crie um novo projeto pelo PIC Wizard. 10/04/2013 10
PWM Configuração no compilador 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. 10/04/2013 11
PWM Configuração no compilador Ainda na aba Other, em CCPX (módulo CCP significa Capture, Compare e PWM) selecione CCP1. 10/04/2013 12
PWM Configuração no compilador Em More Options, configure a frequência do pulso de saída do PWM. 10/04/2013 13
PWM Configuração no compilador Em Options, selecione a opção que mais se adequa a opção de frequência que você escolheu. 10/04/2013 14
PWM Configuração no compilador Em Options, selecione a opção que mais se adequa a opção de frequência que você escolheu. 10/04/2013 15
PWM Configuração no compilador Na aba I/O Pins, certifique-se de que existe algum pino configurado como saída (Output) e com o PWM habilitado. 10/04/2013 16
PWM Configuração no compilador 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); 10/04/2013 17
PWM Cálculo de freq. máx. e mín. 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) = Frequência do cristal (Carga do timer2 + 1) (Timer2 Prescaler) 4 10/04/2013 18
PWM Cálculo de freq. máx. e mín. 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) = fmáx(pwm) = 4000000 = 4000000 = 244Hz (255 + 1) (16) 4 16384 4000000 = 4000000 (1 + 1) (1) 4 8 = 500000Hz 10/04/2013 19
PWM Cálculo de ciclo ativo 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 bit Duty cycle (Carga do timer2 + 1) = 150 (155 + 1) = 96,2% 10/04/2013 20
PWM Cálculo de ciclo ativo Exemplo para 16 bits: set_pwm1_duty(150l); Duty Cicle= 16 bit Duty cycle = 150 = 24% Carga do timer2 + 1 4 155 + 1 4 Além do L depois do valor, podemos declarar a variável valor como int8 ou int16 para diferenciar. 10/04/2013 21
PWM No Proteus Monte o circuito no Proteus usando o PIC 18F2550 e um osciloscópio de Virtual Instrument Modes, um Counter Timer e dois buttons. 10/04/2013 22
PWM Exemplos 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. 11/04/2013 23