5 – Controlando o sinal PWM do Fan Cooler com CLP

Bancada de testes

Aplicando na prática

No artigo 4- Parte 1 – Controlando o sinal PWM do Fan Cooler com CLP foram abordados alguns aspectos que deve se levado em consideração quando configurando o CLP para acionar um sinal PWM. Dentre os tópicos abordados, conforme diagrama em blocos da figura 1 abaixo, falou-se da conversão ADC de um sinal de controle, da memória intermediária, do bloco de função fazendo a conversão ADC X PWM e do acionamento do ventilador.

Se você curtir esse artigo, não esqueça de dar uns cliques nos anúncios para ver o que os anunciantes tem para te oferecer. Vou ficar muito contente.

Figura 1 – Diagrama em blocos

Esta página descreve como implementar a proposta da parte 1 em um CLP Unitronics Vision V350. Como de praxe, se tiver algo à melhorar, comentários construtivos serão muito apreciados.

Aplicação descrita pode ser baixada clicando ->aqui<- e a plataforma de desenvolvimento da Unitronics pode ser baixada direto do site do fabricante clicando ->aqui<-.

Segue abaixo o vídeo da aplicação funcionando, para referência:

Configuração de Hardware

Configuração da Entrada ADC do CLP:

Na figura 2 podemos ver a configuração da entrada analógica ‘I0’. Note que o operando ‘MI4’ recebe o valor do conversor analógico – digital (ADC).

Como o ADC tem uma precisão de 10 bits (210), o valor da conversão ADC é um número que pode variar de 0 à 1024 sendo que ‘0’ corresponde a zero volts, ‘1023’ corresponde a 10 Volts e ‘1024’ significa que a tensão de entrada em ‘I0’ é maior que 10 Volts. A precisão dessa conversão ADC não é objeto de análise neste artigo.

Processo da conversão ADC: Uma fonte de alimentação variável de 0 à 10 volts injeta uma tensão na entrada ‘I0’. A tensão injetada em ‘Io’ é convertida para digital no conversor ADC. O valor da conversão ADC é armazenado na variável ‘MI4’. O valor de ‘MI4’ será utilizado para controlar o pulso PWM.

Figura 2- Configurando a entrada analógica 0-10V

Em tempo: A variável ‘MI5’ não será utilizada neste projeto e maiores detalhes acerca da configuração do CLP podem ser encontrados no manual do produto.

Configuração da saída PWM Do CLP:

Segue abaixo a configuração da saída ‘O0’ para operar no modo de alta velocidade. De acordo com a figura 3, temos os seguintes operandos para controlar o ciclo de trabalho (duty cycle) do PWM:

‘MI31’: Pré – ajustado para operar em 1KHz

‘MI32’: Controla o duty cycle do PWM em incrementos de 0,1% (0-1000)

‘MI23’: Sempre ligado. Ativa a saída PWM

Figura 3- Configuração da saída de alta velocidade

CLP X PWM – Interface externa:

O sinal ‘O0’ do CLP varia de 0 à 24Volts, podendo suprir até 500mA de corrente (equivale a 12W em carga resistiva).

Conforme já falado no artigo ‘Debugando um cooler de 4 fios‘, o sinal PWM do ventilador varia de 0 à 3,3Volts e seu controle é feito pelo chaveamento desse sinal à terra por um transistor externo, consumindo cerca de 3mA de corrente (equivale a cerca de 0,009W em carga resistiva).

Por causa das características dos sinais ‘O0’ e PWM descritas acima, não se pode ligar o sinal ‘O0’ direto no sinal PWM, pois isso pode provocar a queima do ventilador. Portanto é necessário colocar um conversor para adequar o sinal ‘O0’ do CLP à entrada PWM do ventilador.

Esse conversor para adequar o sinal do CLP à entrada PWM do ventilador nada mais é que um transistor de chaveamento externo, cuja polarização é calculada na figura 4:

Item ‘A’

1- Define a corrente máxima de coletor (1mA) e o hfe do transistor (100).

2- Calcula o valor de ib (0,01mA).

3- Define a queda de tensão em cima de R2 (0,4V para ficar redonda a conta).

4- Define a corrente em R1. R1 = 1K/0,001A = 1K.

5- Calcula R2. R2 = 0,4/1.10-5 = 40K.

No item ‘B’ é calculado o valor de R3. R3 = 23/1,01.10-3 = 22,7K.

Finalmente item ‘C’ da figura 4 mostra o circuito com resistores comerciais.

Figura 4- Polarizando transistor do PWM

Conforme figura 5 abaixo, a forma de onda amarela é o sinal PWM do CLP com 24Volts de pico sendo injetado em R3. A forma de onda azul é o sinal PWM do ventilador no coletor do transistor. Note que o sinal do ventilador tem 3,3Volts de pico.

Figura 5- Conversão de sinal CLP X Ventilador

Não quero falar nada não… mas você viu o tempo de subida da forma de onda do CLP, quando comparado ao meu circuito feito na unha, sem simulador? Sabe como é né? … Nada contra o CLP, mas parece que o meu está chaveando um pouquinho mais rápido. Comentários são bem vindos 🙂

CLP X RPM – Interface externa:

A leitura do RPM do ventilador pelo CLP está documentada nos artigos ‘Debugando um cooler de 3 fios‘ e ‘CLP – Lendo o RPM de um cooler‘.

Diagrama Ladder

Configurando o teclado:

Neste diagrama são configuradas as teclas de função do CLP.

‘F1’ Vai para a tela ADC_X_PWM

‘F2’ Vai para a tela de histórico

‘Esc’ Vai para a tela inicial

‘F3’ troca o tipo de fórmula: ‘Regra de 3’ ou ‘equação da reta’

Figura 6- Configuração do teclado

Regra de 3:

‘MB7’ habilita a net 3.

A net 3 processa o valor do sinal ADC que vem de ‘MI4’, utilizando a regra de 3 armazenada no bloco Ladder, de acordo com a figura 7.

O bloco Ladder store, quando carregado com o valor ‘2’,faz a apresentação do título ‘ADC to PWM – Rule of 3’ na HMI ‘ADC_X_PWM’.

O valor de ‘MB7’ é alterado pela tecla ‘F3’

Figura 7- Regra de 3

Equação da reta:

A net 4 processa o valor do sinal ADC que vem de ‘MI4’, utilizando a equação da reta armazenada no bloco Ladder, de acordo com a figura 8.

O bloco Ladder store, quando carregado com o valor ‘3’,faz a apresentação do título ‘ADC to PWM – line equation’ na HMI ‘ADC_X_PWM’.

Figura8- Equação da reta

Ajuste fino no valor do PWM:

Ambas as nets 3 e 4 armazenam o resultado da conversão do valor ‘ADC’ de ‘MI4’ na variável float ‘MF2’, que possui suporte a ponto decimal flutuante.

Figura 9- Aj fino
Figura 9- Extraindo a parte inteira do sinal PWM

‘MI32’ só trabalha com valores inteiros, portanto precisa extrair a parte inteira de ‘MF2’ para armazenar em ‘MI32’.

O bloco da net 5, figura 9, faz essa função. Ele extrai a parte inteira de ‘MF2’ e armazena na variável ‘MF32’, que faz o controle do duty cycle do sinal PWM.

Nets 3, 4 e 5 aplicam o conceito explanado no artigo 4- Parte 1 – Controlando o sinal PWM do Fan Cooler com CLP. As demais nets resolvem outros problemas, não menos interessantes, contornando limitações do CLP e permitindo uma melhor visualização dos conceitos apresentados. Acompanhe o artigo.

Vision 350 não tem cursor:

O CLP Vision 350 não tem, pelo menos não vi, um bloco Ladder específico para cuidar da movimentação de um cursor na HMI.

A menos que eu esteja equivocado, embora tenha a HMI, o CLP Vision possui suporte nativo apenas para apresentar gráficos em função do tempo (as trend lines). Ele não possui suporte nativo para apresentar um gráficos y=f(x). Na verdade essa funcionalidade nem faz muito sentido porque estamos falando de um display de 320×240 pontos que é minúsculo =P. De qualquer forma não dá para se criar uma área, definir os eixos e suas escalas e falar “plot o cursor na posição x,y” por exemplo. Se quiser fazer, isso tem que ser feito na mão conforme apresentado na figura 10 abaixo e a seguir.

Como não existe um objeto ‘cursor’, a ideia aqui é criar duas linhas utilizando o bloco de função ‘Draw AX’.

Esse bloco desenha um eixo na posição horizontal ou vertical, conforme sua configuração.

Neste caso serão desenhados dois eixos (duas linhas), um na posição horizontal e outro na posição vertical, um cruzando sobre o outro, criando um cursor em forma de cruz (+).

Note que cada uma das linhas terá sua coordenada ‘x,y’ independente.

Figura 10- Cursor manual

Como o cursor é composto por duas linhas, temos duas coordenadas sendo uma para o eixo horizontal do cursor e uma para o eixo vertical do cursor.

Ao movimentar o cursor, as duas coordenadas tem que ser atualizadas em conjunto e proporcionalmente.

O eixo horizontal do cursor possui a coordenada ‘Xx,Xy’ (MI25, MI23).

O eixo vertical do cursor possui a coordenada ‘Yx,Yy’ (MI30, MI29).

Movimentando o cursor:

A lógica ladder ao lado, na figura 11, faz a movimentação do cursor no gráfico.

‘MB3’ habilita a movimentação do cursor no gráfico somente se a tela do gráfico estiver visível.

O gráfico possui uma área de 200 pixels na vertical por 250 pixels na horizontal, com um offset de 24 pixels no eixo ‘y’ e 30 pixels no eixo ‘x’. Figura 12 mostra o mapa da área de plotagem. Quando der tempo eu faço um desenho melhor.

Figura 11- Movimentação do cursor

As nets 7 e 8 movimentam o cursor ao longo do eixo ‘X’. Para que o cursor se mova ao longo do eixo X, basta mudar o valor de ‘MI32’

As nets 9 e 10 movimentam o cursor ao longo do eixo ‘Y’. Para que o cursor se mova ao longo do eixo Y, basta mudar o valor de ‘MI4’

Figura 12- Mapa da área de plotagem

Finalizando, os valores do PWM ‘MI32’ e do ADC ou Pot ‘MI4’ são as coordenadas ‘x,y’. O bloco de fórmula das nets 7, 8 ,9 e 10 processam as coordenadas e posicionam o cursor adequadamente, mas isso não é tudo como veremos a seguir 🙂

Atualizando o cursor:

As nets 11, 12, 13, 14 e 15 da figura 13 fazem esse trabalho.

‘MB3’ permite que o cursor seja desenhado no gráfico somente quando a tela do gráfico estiver visível.

Figura 13- Lógica de atualização do cursor

Para evitar que a tela pisque constantemente, a cada alteração do valor do sinal do Pot (ADC), as nets 11 e 12 garantem que a posição do cursor seja atualizada, somente se a variação do valor ADC for maior que | 1 |.

Quando a variação de Pot for maior que | 1 |,  ‘MI28’ é atualizado com o valor de ‘MI4’ e a bobina ‘MB6’ é ativada, provocando o disparo do temporizador de retardo ‘TD0’ (net 14).

Quando a bobina ‘MB6’ ativa, ela desabilita o contato NF de ‘MB6’ na net 11. Isso impede novas comparações, até que o cursor seja desenhado em sua nova posição.

Ao mesmo tempo ‘MB6’ gera um pulso na net 13, provocando a limpeza do cursor e o refresh completo da tela. Esta operação faz a limpeza de todos os pixels acesos indevidamente na tela.

Net 14: O fechamento do contato NA de ‘MB6’ aciona ‘TD0’. ‘TD0’ retarda o acionamento de seu contato na net 15 por 0,01s, tempo suficiente para que a limpeza da tela termine.

Assim que o tempo de ‘TD0’ expira, o contato de ‘TD0’ na net 15 se fecha, habilitando a escrita do cursor em sua nova posição. Ao mesmo tempo a bobina ‘MB6’ desliga, liberando a net 11 para iniciar novo ciclo de comparação.

Interface gráfica:

Seguem nas figuras 14, 15, 16 e 17 abaixo o print de algumas telas da IHM, para referência

Figura 14- Pot X PWM
Figura 15- Pot X PWM funcionando
Figura 16- Tela da trend line
Figura 17- Painel trend line

Considerações finais:

Textão compridão.

Aplicando o estudo da reta no plano cartesiano, foi apresentado em lógica Ladder, uma solução possível  para se controlar a rotação de um ventilador, utilizando o controle de largura de pulso PWM.

O conceito da equação da reta, foi aplicado tanto na conversão do sinal do ADC no sinal PWM equivalente, como na conversão do sinal do potenciômetro ‘MI4’, em um valor compatível com a movimentação do cursor ao longo do eixo vertical do gráfico.

Observando os posts anteriores, podemos notar que os tópicos se iniciam na leitura do RPM, caminham pelo controle PWM. No próximo artigo veja a apresentação do conceito ‘malha aberta – malha fechada’ bem como a descrição de um sistema PID (proporcional, integral e derivativo) aplicado ao controle do ventilador, fechando esse ciclo e me liberando para falar de outra coisa que não de cooler de cpu.

Grande abraço e até a próxima!

By Renato de Pierri

16/Janeiro/2016


Last updated by at .

Deixe um comentário