Pessoal,

Estou com dificuldades. Estou usando a placa Acs712 para ler a corrente em um circuito. A lógica implementada no arduino é a seguinte:

const int sensorPin = A4;  
float sensorValue_aux = 0;  
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0018500000;

{
  for(int i=500; i>0; i--)
  {
  sensorValue_aux = (analogRead(sensorPin) -511);
  sensorValue += pow(sensorValue_aux,2);
  }

  sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade;
  currentValue = (sensorValue/66)*1000;

Para o ScadaBr estou lendo o valor "currentValue. Aí é que está o problema. Não estou conseguindo configurar o DataPoint para ler o valor "float". Ele só está lendo o valor Inteiro.

Alguém pode me ajudar

Exibições: 2657

Responder esta

Respostas a este tópico

Envia parte parte inteira num endereço e decimal em outro. Depois é só unir no scababr com um meta data source.

Jucelei,

eu sei que o que vc está falando é certo. Como procuramos fazer a coisa mais tecnica possível to tentando explicar ao Diego o que acontece.

Pode ajudar? Vamos nos deparar com isso sempre e é um bom tema para fazermos um tutorialzinho.

Legal, jucilei....Mas como devo fazar isso? Eu faria essa separação no arduino ou no scada?

Na verdade pela precisão que esse seu circuito tem, nem vale a pena trabalhar com float, não ha necessidade.

Faz assim, multiplique o valor da corrente pelo um ganho X de maneira que no máxima corrente não ultrapasse os  65535. Ai la no scada BR onde  configura o datasource, tem a opção de offset e gain. No offset deixa zerado e no ganho coloca o valor de 1/X.. simples assim.

Jucelei,

que fantástico. Não tinha pensado nisso. Muito obrigado pela contribuição.

Você usa o ScadaBR também? Tem alguma aplicação?

Um cara no forum scadabr resolveu esse problema estou te rapassando o link, pois não entendi bem o que ele fez.

http://www.scadabr.com.br/?q=node/669

acho que o problema está na leitura da faixa de valores:

o float de 4 bytes é 2^32 = 4294967296

e scadabr com registrador holding só lê 2^16 = 65536

logo vc precisa colocar a variavel dentro dessa faixa de leitura para o scadabr lê tranquilamente

Então vamos resumir:

No arduino geramos um valor de corrente que tenha umas 4 unidades, ou seja, fazemos o valor da corrente de 7,5A aparecer no registrador como 7500.

A partir dai quando o scadabr ler o valor como inteiro, basta multiplicar por 0,001 e teremos o valor que precisamos.

Correto?

Seria multiplicar por 0,01. Mais é isso ai mesmo, é muito usado esse artificio, ja que é  complexo de se trabalhar com float em microcontrolador.

Sidney, até fiz o curso do scadaBR em curitiba, estávamos empolgado com ele pra usar em automação de CGh's. Mais ele se mostrou muito instável/problemas diversos e o pior deles é a parte de backup de projetos e revisões, ai continuamos com elipse mesmo. Mais acredito que ja tenha versão mais estável e com esses problemas resolvidos, mais ai entra em outros detalhes que não vem ao caso...

Reconheço que o scadabr tem lá seus problemas, mas estamos trabalhando para melhorar essas diversas instabilidades...

Jucelei se uma hora vc puder descrever quais foram as instabilidade que afetaram o seu projeto ajuda para melhorarmos este sistema

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço