CONDICIONAMENTO DE SINAIS ANALÓGICOS PARA APLICAÇÕES INDUSTRIAIS Lucas da Silva Candido1, Leandro Zeidan Toquetti2 1 2 Tecnologia em Automação Industrial, FATEC-SBC, São Bernardo do Campo, Brasil Professor do Departamento de Ensino Geral da FATEC São Paulo e Diretor da FATEC São Bernardo do Campo [email protected], [email protected] Resumo A tendência da tecnologia de aperfeiçoar métodos, com intuito de reduzir custos e tempos de cíclo gastos em processos, tem estimulado a interconexão entre dispositivos de automação. Esta interconexão representa a confiabilidade do processo, uma vez que os padrões aceitos são comparados com os valores monitorados em tempo real. Visando proporcionar um controle integrado, os conceitos aqui propostos, permitem a interação de sinais analógicos entre dispositivos de um determinado processo. 1. Introdução Dados os avanços tecnológicos, a cada dia torna-se mais inaceitável que qualquer processo tenha sua confiabilidade ameaçada pela falta de monitoramento das variáveis inerentes a ele. Tomemos como exemplo o funcionamento de uma caldeira, representado na Figura 1: Figura 1 - Caldeira [1] A queima de combustível aquece a água que é continuamente depositada no interior da caldeira. Conforme a temperatura aumenta, a água passa do estado sólido para o gasoso, e a pressão interna começa a subir [2]. Com isso, para garantir condições seguras de operação, um sistema de controle deve ser capaz de monitorar a pressão interna da caldeira, e estar apto para interferir no processo – abrindo, fechando válvulas, de maneira proporcional (analógica), ou digital. Para isso, um elemento sensor de pressão, capaz de transmitir um sinal equivalente em grandeza elétrica – geralmente miliampere[mA], ou volt[V] – deve ser integrado ao processo. Um CLP com capacidade de ler grandezas elétricas analógicas, deve interpretar, por intermédio de interpolação, qual a pressão no interior da caldeira. Em muitos casos, é comum possuir um elemento sensor que transmite sinal elétrico diferente do que o CLP está preparado para ler. Nesta situação, o integrador do sistema geralmente opta por uma das opções citadas na Tabela I: Tabela I - Opções para integração de sinais. Opção Vantagem Desvantagem Adquirir um novo Alto custo, prazo de Precisão sensor entrega Adquirir módulo que leia o sinal adequado ao sensor (CLP modular) Condicionar o sinal do sensor, para interligá-lo ao CLP Precisão Alto custo, prazo de entrega, adequação do hardware e software Baixo custo Precisão depende dos componentes empregados, e do projeto eletrônico Para início da análise, consideremos um sensor de pressão com transmissão de sinal 4-20mA que deve permitir o controle da variável física em um determinado processo, e sabendo que o CLP, ou microcontrolador, possui entradas analógicas capazes de ler tensão, na faixa de 0-5Vcc apenas, este artigo tem como objetivo proporcionar uma condição de interconexão entre os dois dispositivos. Essa análise se inicia na saída do sinal do transmissor, e se encerra na interpretação dos dados dentro do software de programação. 2. O sensor existente Para integração correta entre os sinais analógicos, faz-se necessário uma análise das características técnicas de cada um dos dispositivos em questão. A Figura 2, é uma foto da etiqueta de identificação do sensor de pressão existente. Nela podemos verificar alguns dados importantes para a execução da nossa análise. Outros dados, podem ser rastreados junto ao fabricante, por intermédio do número de série (Serial No). 3.1. Entrada analógica Figura 2 - Sensor pressão SMAR Modelo: LD301M – transmissor indicador de pressão manométrica com controle de PID incorporado – HART. Faixa de medição de pressão: A faixa de medição de pressão do sensor existente, Figura 2, foi representada na tabela II. A faixa de pressão nas unidades, psi e mbar, também foram calculadas, pois são unidades mais comuns nos processos industriais brasileiros. Precisão: 0,04% Sinal de saída analógico: 4-20mA Alimentação: 24Vcc (2 fios) Tabela II - Faixa de medição do sensor de pressão, e sua equivalência psi e mbar. inH2O 8,33 – 1000 psi 0,30 – 36,13 mbar 20,75 – 2490,89 O sinal de saída provido pelo sensor, de 4-20mA, varia conforme a pressão na conexão de entrada de ar do sensor. Assim, podemos implementar a Tabela 2, com o sinal de corrente (ver Tabela 3), onde é mostrada a variação da corrente em função da pressão: As 16 entradas analógicas do Arduino Mega 2560 têm resolução de 10bits. Por padrão, o fundo de escala da entrada analógica é 5Vcc, medidos com referência ao terra (0Vcc) da placa. O conversor ADC (Analog Digital Converter) do microcontrolador ATmega2560, através de comparações e aproximações, providencia em registros específicos os valores correspondentes as tensões aplicadas em cada entrada analógica, conforme Equação 1 [4]. ADC = V I N .1024 V REF (1) Onde V I N é a tensão aplicada na entrada analógica em questão e V REF a tensão de referência selecionada – neste caso, 5Vcc. Note que o resulta ADC é adimensional, e todo processo de conversão, para a unidade desejada, deve ser desenvolvido pelo integrador via software de programação. 3.2. Interpretação dos dados analógicos Podemos, por intermédio de interpolação linear, relacionar o valor que o conversor ADC provê (0-1023 admensional) com cada um dos valores de processo que desejamos, nas grandezas correspondentes (corrente, pressão). O Gráfico 1, ilustra o processo de interpolação de duas grandezas distintas. Tabela III - Faixa de medição do sensor de pressão, e sua equivalência psi e mbar. Mínimo Médio Máximo mA 4 12 20 inH2O 8,33 504,165 1000 psi 0,30 18,215 36,13 mbar 20,75 1255,82 2490,89 3. O controlador O dispositivo receptor do sinal analógico utilizado nesta análise, tem sido muito utilizado alvo de estudantes de graduação em diversos setores da indústria. Isso devido seu custo, flexibilidade, e capacidade de integração com outros dispositivos. O Arduino Mega 2560 é uma placa microcontrolada baseada no ATmega2560. Ele tem 54 pontos digitais de I/O (dos quais 15 podem ser usados como saídas PWM), 16 entradas analógicas, 4 UARTs (porta serial), 1 cristal de 16MHz, uma conexão USB, um conector de alimentação, leitor ICSP, e um botão de reset [3]. Gráfico 1 - Processo de interpolação linear Do Gráfico 1, podemos extrair a seguinte equação (Equação 2): y− y 0 y1− y 0 = x−x 0 x1− x0 (2) Da Equação 2, podemos extrair a equação para encontrar os valores de y, em função de x (Equação 3): y= y 1− y 0 . ( x− x 0 )+ y 0 x 1−x 0 (3) Na Equação 3, substituindo os valores nos eixos das abscissas e ordenadas, conforme as unidades em análise, é possível determinar os valores analógicos envolvidos no processo (tensão, corrente, pressão), como veremos mais adiante. 4. Condicionamento do sinal analógico Como proposto inicialmente em nossa análise, o sensor de pressão LD301M, possui saída de sinal analógico de 4-20mA. O microcontrolador ATmega2560, montado na placa do Arduino Mega2560, possui entrada analógica de 0-5Vcc. O condicionamento do sinal pode ser feito através de um divisor de tensão (Figura 3). (Circuito Integrado) a tensão de saída varie de diversas formas em função da tensão de entrada, ajuste de ganho, casamento de impedâncias, custo relativamente baixo, entre outros benefícios. Devido a alimentação do sensor ser de 24Vcc, utilizaremos o amplificador operacional LM358 (Figura 4) [5] da Texas Instruments - que possui dois amplificadores operacionais - que pode ser alimentado por uma fonte de tensão não simétrica, na faixa de 332Vcc. Figura 4 - LM 358 As principais características destes amplificadores operacionais são: Tensão de alimentação, V CC : ± 16 ou 32V Tensão de entrada diferencial, V ID : ± 32V Tensão de entrada, V I (uma das): -0,3 a 32V Tensão offset de entrada: 3mV (típico) Taixa de variação no ganho unitário: 3V/μs (típico) Simbologia: A simbologia, para cada amplificador operacional, está ilustrada na Figura 5. Figura 3 - Divisor de tensão A queda de tensão no resistor R2, é calculada pela Equação 4. V =R . I (4) Substituindo, o mínimo e o máximo valor de tensão que podemos medir neste circuito está expresso nas Equações 5 e 6, respectivamente. V min=250 [Ω]. 4[ mA]=1[V ] (5) V máx=250[Ω].20 [ mA]=5[V ] (6) Apesar de os valores já estarem condicionados para a faixa de tensão aceitável pelo microcontrolador, implementaremos este circuito básico inserindo um amplificador operacional. Circuitos condicionadores de sinais implementados com amplificadores operacionais são os mais comuns, pois são flexíveis, possibilitam que, com um único CI Figura 5-Simbologia amplificador operacional O amplificador operacional será inserido no circuito, de maneira que, a tensão de entrada seja igual a tensão de saída (ganho unitário). Devido a alta impedância da entrada não-inversora e a possibilidade de obtenção do ganho unitário ao curto-circuitar a entrada inversora à saída do amplificador. A implementação será da seguinte maneira (Figura 6): Figura 6-Amplificador operacional em ganho unitário O ganho do amplificador operacional na configuração não inversora (Figura 6), é unitário, ou seja, V out =V i n . O esquema eletrônico final, com o divisor de tensão e a implementação do amplificador operacional, fica conforme mostrado na Figura 7. Figura 8 - Modelo de teste em laboratório Nos testes realizados em laboratório, para uma tensão de entrada V i n=4,985[V ] (Figura 9), é medido uma tensão de saída (Figura 10). V out =4,984 [V ] Figura 7 - Circuito eletrônico, com divisor de tensão e amplificador operacional Testes realizados com auxílio do software ISIS Professional, resultaram em um erro de +0,01V na saída do LM358, devido desbalanceamento das entradas inversora e não-inversora. Este valor é característico, e esperado. O erro de +0,01V representa 0,2% do fundo de escala de saída, FSO (Full Scale Output), e pode ser calculado conforme Equação 7. (V out −V i n )[V ] .100[ %] FSO [V ] (7) Figura 9 - Medição da V i n no circuito eletrônico Substituindo na Equação 7 os valores obtidos via software, encontraremos o erro previsto (Equação 8). (5,08−5,07)[V ] .100 [%]=0,2 [ %] 5 [V ] (8) 4.1. Teste em laboratório Após equacionamento e testes via software – quando possível - o condicionador de sinal foi levado a um laboratório com o intuito de obter resultados que pudessem comprovar a sua qualidade. Os testes práticos possibilitaram qualificar o projeto como satisfatório. Caso o resultado obtido fosse insatisfatório, seria necessário buscar outras alternativas que agregassem maior precisão ao projeto, como outros CIs ou outros circuitos eletrônicos. O circuito testado em laboratório, foi montado conforme Figura 8. Figura 10 - Medição da V out no circuito eletrônico Substituindo na Equação 7 os valores medidos em laboratório, encontramos o erro obtido (Equação 9). (4,985−4,984)[V ] .100 [ %]=0,02[ %] 5[V ] (9) Após a validação do circuito condicionador de sinal, foi conectado à sua entrada o sinal de 4-20mA proveniente do sensor de pressão, e a saída do condicionador de sinal foi conectada à entrada analógica do Arduino, e desenvolvida a programação. 5. O programa Algumas técnicas de programação um pouco mais especificas foram utilizadas com intuito de minimizar o programa. A função Interp_ClpToEng, é responsável por interpolar todas as unidades de engenharia, conforme equações a seguir. Tensão em V conforme Equação 10. y[V ]= 5−0 .(x−0)+0 1023−0 (10) Corrente em mA conforme Equação 11. y[mA ]= 20−4 .(x−204,6)+4 1023−204,6 (11) Pressão em inH2O conforme Equação 12. y[inH 2 O ]= 1000−8,33 .( x−204,6)+8,33 1023−204,6 (12) Pressão em psi conforme Equação 13. y[ psi ]= 36,13−0,3 .( x−204,6)+0,3 1023−204,6 (13) Pressão em mbar conforme Equação 14. y[mbar ]= 2490,89−20,75 .( x−204,6)+20,75 1023−204,6 (14) O valor da entrada analógica A0, não é interpolado (Equação 15). ADC = A0 (15) O valor da variável EA0 (Entrada Analógica 0), é a média de duas mil aquisições da entrada A0. A seguir, pode-se ler o programa utilizado para leitura da entrada analógica do arduino, interpolação com as unidades de engenharia, e exibição dos valores. //---------------------------------------------------- INICIO int EA0; float Corrente, Tensao, Pressao_inH2O, Pressao_psi, Pressao_mbar; const int QtAquisicoes = 2000; long AuxEA0 = 0; int AuxMedia = 0; void setup() { Serial.begin(9600); } void loop() { ENTRADAS(); MEDIA_ENTRADA_ANALOGICA(); } void ENTRADAS(){ EA0 = analogRead(A0); } void MEDIA_ENTRADA_ANALOGICA(){ if (AuxMedia < QtAquisicoes){ AuxEA0 = AuxEA0 + EA0; AuxMedia = AuxMedia + 1; } else{ EA0 = AuxEA0 / QtAquisicoes; Corrente = Interp_ClpToEng(EA0, 204.6, 1023, 4, 20); Tensao = Interp_ClpToEng(EA0, 0, 1023, 0, 5); Pressao_inH2O = Interp_ClpToEng(EA0, 204.6, 1023, 8.33, 1000); Pressao_psi = Interp_ClpToEng(EA0, 204.6, 1023, 0.30, 36.13); Pressao_mbar = Interp_ClpToEng(EA0, 204.6, 1023, 20.75, 2490.89); EXIBE_SERIAL(); AuxEA0 = 0; AuxMedia = 0; } } void EXIBE_SERIAL(){ char FloatValue[40]; String AuxMsg; String Msg; AuxMsg = "ADC EA0(0-1023): "; dtostrf(EA0,1,2,FloatValue); Msg = AuxMsg + FloatValue + "[]"; Serial.println(Msg); AuxMsg = "Tensao(0-5V): "; dtostrf(Tensao,1,2,FloatValue); Msg = AuxMsg + FloatValue + "[V]"; Serial.println(Msg); AuxMsg = "Corrente(4-20mA): "; dtostrf(Corrente,1,2,FloatValue); Msg = AuxMsg + FloatValue + "[mA]"; Serial.println(Msg); AuxMsg = "Pressao: "; dtostrf(Pressao_inH2O,1,2,FloatValue); Msg = AuxMsg + FloatValue + "[inH2O]"; AuxMsg = " = "; dtostrf(Pressao_psi,1,2,FloatValue); Msg = Msg + AuxMsg + FloatValue + "[psi]"; AuxMsg = " = "; dtostrf(Pressao_mbar,1,2,FloatValue); Msg = Msg + AuxMsg + FloatValue + "[mbar]"; Serial.println(Msg); Serial.println("----- Valores atualizados..."); } float Interp_ClpToEng(int EA, float MinClp, float MaxClp, float MinEng, float MaxEng){ float Resultado; return Resultado = (((MaxClp-EA)/(MaxClpMinClp)*(MaxEng-MinEng))-MaxEng)*-1; } //-------------------------------------------------------- FIM Com auxílio de uma das ferramentas disponíveis no software de programação do arduino, chamada Serial Monitor, é possível testar as funções de conversão e controle utilizadas pelo programador. Verificar novamente os valores das grandezas físicas convertidas via software, com auxílio de outros equipamentos de medição que o integrador tenha à mão é de suma importância, pois essa verificação, sendo realizada com critério, auxilia a detecção de erros na instalação, digitação no programa, e comprova a veracidade das informações obtidas a partir dos dados iniciais. Os valores exibidos são atualizados toda vez que o arduino executa a função EXIBE_SERIAL. Esta função é executada após a aquisição, somatória de 2000 valores de A0, e após e execução das funções de interpolação. O resultado do serial monitor pode ser visto na Figura 11. Figura 11: Monitoramento das variáveis via Serial Monitor 6. Conclusões Após a verificação dos resultados satisfatórios sensor de pressão saída 4-20mA, conectado com o controlador entrada 0-5V por intermédio de um circuito eletrônico condicionador de sinal - fica a cargo do programador, através dos conhecimentos que possui a respeito das peculiaridades do processo que está controlando, implementar lógicas de segurança, sinalização, disponibilização e parametrização de setpoints flexíveis, e o que mais for conveniente. 7. Referências Bibliográficas [1] Marcos Sergio de Oliveira Filho, Projeto Academia de Ciência http://www.academiadeciencia.org.br/site/2012/06/28/c aldeira-ou-gerador-de-vapor/ [2] Princípio de funcionamento de uma caldeira http://www.youtube.com/watch?v=DcMqQfcUp1Y [3] Site oficial http://arduino.cc/ [4] Datasheet do microcontrolador ATmel2560 Atmel-2549-8-bit-AVR-Microcontroller-ATmega6401280-1281-2560-2561_datasheet [5] Datasheet do amplificador operacional http://www.ti.com/lit/ds/symlink/lm358.pdf