Olá galera...

Estou estudando o Arduíno para desenvolver um projeto de automação industrial. Que inclusive estou com planos de ser o assunto do meu TCC que será daqui a 1 ano. Apesar de ter apenas 2 meses de contato com a plataforma Arduíno, já fiz algumas experiências como, acionar motores trifásicos com contatoras, acionar válvulas elétricas trifásicas com retorno de fim-de-curso (status aberta/movimento/fechada), leitura de tensão e etc. Porém estou com um problema bem chato que gostaria de saber se algum de vocês pode me dar uma ajuda.

Na empresa onde trabalho existem vários sensores, sendo eles de nível, vazão, entre outros. Todos com os mesmos padrões de funcionamento, por serem sensores industriais, pois preciso monitorar o sistema para poder acionar os equipamentos. As caracteristicas são, tensão de alimentação de 24Vcc e manda a resposta em uma faixa de 4..20mA (4 a 20 miliamperes). Porém nos pinos do arduino a tensão máxima de entrada é 5V, então preciso de um conversor que receba a resposta do sensor que será de 4..20mA, 24V e mande para o arduino o valor correspondente ao da corrente do sensor, só que dentro da tensão máxima do pino (5V), onde a função analogRead() o converterá em 0..1023.


Contudo, eu já havia comprado três conversores no site do ML que prometiam tudo isso, só que na prática não fizeram o que deveriam (NENHUM DOS 3). Gostaria de saber se alguém já se deparou com essa situação e resolveu ou sabe como resolver...

De já agradeço a ajuda, e até mais...


Link do conversor que eu comprei...
http://produto.mercadolivre.com.br/MLB-719256389-brick-sensor-de-co...

Exibições: 6996

Responder esta

Respostas a este tópico

Muitas pessoas usam simplesmente um resistor! tensão/corrente ... 5V/0.02A = 250 Ohms! Como provavelmente são equipamentos industriais o ideal é você ter um nível melhor de segurança!! Qual foi o problema com os módulos que você comprou?

Fiz toda a ligação e programação adequada porém os valores não batem com os valores reais...

Por exemplo:

Tenho 3 CMB (Conjunto Motor Bomba), onde quando dois CMB estão acionados a vazão fica por volta de 2200m³/h quando estou utilizando os conversores a resposta está por volta de 1900m³/h, quando desligo um dos CMB a vazão em uma medição normal cai para um valor próximo a 1500m³/h, mas quando estou usando os conversores, o valor continua a mesma coisa. E todos os sensores que testei estão em bom estado de funcionamento...

O que será???

Rômulo boa tarde , 

Esse é seu sensor de corrente 4-20mA :

http://wiki.iteadstudio.com/4-20mA_Sensor_Brick

No site tem três tipos de conexões do sensor com os dispositivos. 

Qual tipo de montagem fez ? tipo 2, 3 ou 4 ?

Como configurou os jumpers JP1 e JP2 ?

Esse módulo me parece ser muito bom !

http://wiki.iteadstudio.com/images/4/4a/IM140819001-4~20mA_Sensor_B...

Conectores com Arduino :

Modulo  >>  Arduino 

VCC     >>  +5V  ( não sei se o regulador do Arduino aguenta o consumo do módulo )

GND    >>   GND 

S1      >>   Pino A4 

S2     >>    Pino A5 

Conecte +24V nos sensores em teste.

Muita atenção nas polaridades das conexões !  Veja os diagramas no link abaixo .

Tipo 2 e 3 Loop ( conecte os dois jumpers JP1 e JP2 ) :

conecte 1In- e 2In- nos terras 

1In+ e 2In+ conecte nos sensores

Tipo 4 Loop ( desconecte os dois jumpers JP1 e JP2 ) :

conecte  Entradas do sensores em 1In+ ou  2In+

conecte  Saídas  do sensores em 1In- ou  2In-

Programa para teste com Arduino File:4_20mA_demo.zip

Referências :

http://wiki.iteadstudio.com/4-20mA_Sensor_Brick

Envie os links dos seus sensores que conectou nos Modulos sensores de corrente 4-20mA. 

Rômulo, encontrei  o manual de uso do sensor 

Medidor de Vazão tipo Eletromagnético
Série 2552 - Linha GF Signet

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&...

http://www.gfps.com/appgate/ecat/common_flow/10002N/INT/en/109068/1...

Esse sensor de vazão pode ter três tipos de interface :

- saída de frequência 

- saída digital S3L 

- Saída do Circuito de 4-20 mA

Todo sensor tem esses sáidas ou dependo do modelo ? 

=============================================================

Para saída do Circuito  4-20mA :

O Medidor Magnético de Vazão 2552 é um transmissor de circuito 4-20 mA passivo tradicional de 2 fios.


• Alimentação do circuito externo (21,6 a 26,4 VCC, 22,1 mA no máximo) é necessária. 


A resistência máxima do circuito que o Medidor Magnético de Vazão pode acomodar é de 300 Ω.


O tamanho do cabo do Medidor Magnético de Vazão ao monitor do circuito não pode exceder 300 m 

• Todos os Medidores Magnéticos de Vazão 2552 são despachados de fábrica com a saída de 4-20 mA
escalonada para 0 a 5 m/s (0 a 16,4 pés/s). Se esta faixa de operação for adequada, não são necessárias quaisquer ajustes.


As tabelas de calibragem neste manual listam o ponto de ajuste de 20 mA para cada tamanho de canalização. Use esta informação para programar a faixa de 4-20 mA do dispositivo do circuito (CLP, Datalogger, registrador, etc.)

Rômulo , veja se fez esse tipo de montagem . 

Meu intuito é ajuda-lo. Fiz esse diagrama baseado no manual do sensor 2552. 

Certifique-se antes com os fornecedores do seus dispositivos, antes de conectá-los. 

Não me responsabilizo por qualquer dano que venha a ocorrer decorrente das informações postadas por mim. 

O risco é seu. Boa sorte . 

Clique no diagrama, para amplia-lo. Jumpers JP1 e JP2 devem estar conectados. 

Esse é o programa de teste do módulo Brick sensor 4-20mA : 

Programa para teste com Arduino File:4_20mA_demo.zip

void setup() {
    Serial.begin(9600);
}

void loop()
{
// read the input on analog pin 0:
int sensorValue1 = analogRead(0);

// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage1 = sensorValue1 * (5.0 / 1023.0) /0.2;

// read the input on analog pin 1:
int sensorValue2 = analogRead(1);

// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage2 = sensorValue2 * (5.0 / 1023.0)/0.2;

// print out the value you read:
Serial.print("S1: ");
Serial.print(voltage1);
Serial.print(" mA S2: ");
Serial.print(voltage2);
Serial.println(" mA");
}

Olá Jose Gustavo...

Muito obrigado pelas respostas, agora tenho algo concreto para evoluir os estudos...

Infelizmente só terei contato com os sensores na próxima segunda, mas já estou empolgado...

Gostaria de tirar uma dúvida. Como o sensor 2552 é de 24V e o sensor brick 4..20mA  é alimentado com 5V, esse valor é transformado pelo brick para 24V???

De já agradeço atenção...

Romulo, veja que no diagrama do Modulo Brick 4-20mA , ele tem um regulador Step Up que gera o 24V a partir dos 5V . Eu te falei, esse módulo parece ser muito bom !

Mas vá com atenção e calma ! Seus dispositivos são caros. E um erro poderá queimá-los. 

Consulte um colega mais experiente aí da sua empresa. 

Quando fizer os testes, meça essa tensão de 24V !

http://wiki.iteadstudio.com/images/4/4a/IM140819001-4~20mA_Sensor_B...

Jose Gustavo, eu já havia testado este código anteriormente quando comecei fazer simulações usando um potenciômetro. Este código não me dá o resultado esperado. Pois a resposta deste é a faixa "4..20mA" pelo menos é o que promete, quando o retorno é 4mA no sensor, o que o arduino recebe é 0mA, quando o mínimo é 4mA...

Eu substituí este código: float voltage2 sensorValue2 (5.0 1023.0 0.2;

Por: float corrente = map(sensor, 0, 1023, 4, 20);

Mas também não deu certo, pois o valor que é retornado na variável corrente sempre vem INTEIRO, apesar de ser declarado como float...

Lendo a literatura, encontrei o código da biblioteca do arduino, onde a função map() é:

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Com isto, fiz a adaptação da função para que tivesse como retorno um valor REAL, e fiz assim:

/*
A funcao mapFloat faz o mapeamento de um valor de um intervalo para o outro,
assim como a função map, porém,retorna um valor real (float)...
*/
float mapFloat(float x, float inMin, float inMax, float outMin, float outMax)

{
return((x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin);
}

Assim pude ter  valores próximos da exatidão com as seguintes funções:

/*
A funcao correnteSensor retorna a corrente em "mA"
de qualquer sensor de 4..20mA.
*/
float correnteSensor(float sensor)

{
float corrente = mapFloat(sensor, 0, 1023, 4, 20);
return corrente;
}


/*
A funcao medicaoSensor retorna o valor de medicao desejado
seja Vazao, Pressao, Nivel, ou outro valor.
*/

float medicaoSensor(int sensor, int range)

{
float medicao = mapFloat(sensor, 0, 1023, 0, range);
return medicao;
}

Até mais, e obrigado por tudo...

Romulo , testou o módulo Brick 4-20mA com um potênciometro ? 

Como fez esse teste ?? Acho que não é o mais adequado. 

Recomendo fortemente que leia ( e releia) o data sheet e o manual do sensor 2552 !

Tem que entender tudo ! Se tiver dúvida, posso tenatr ajuda-lo. 

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&...

http://www.nivetec.com.br/docs/catalogo/sensor_de_vaz%C3%A3o_Signet...

Viu que pode ser que tenha de calibrar o sensor ??

Viu as especificações do sensor 2522 ?

vazão = 0,05 m/s até 10 m/s 

Qual é a vazão do cano que esta medindo ? 

Anote os valores mínimos e máximos e me infome. 

Qual é o diâmetro do cano ?  deve ser entre 5 cm e 259 cm (me informe) 

Pressão no cano = máximo 20.7 bar ou 300 psi

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço