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: 2651

Responder esta

Respostas a este tópico

Diego,

não acredito. Estamos trabalhando no mesmo caso.

Estou com o ACS712 na mão e o scadabr na cubieboard.

Então, vamos resolver o problema.

Vc adaptou o código acima do exemplo do acs?

Engraçado, pq vc tem um aux? O seu valor de vols por unidade ta diferente do meu.

Vc pode me explicar o por que usou esse "for"?

Qual o protocolo está usando? MODBUS? Estou com o modbus rodando no RS485.

Vou confrontar o seu com o meu e veremos as diferenças.

Sidney,

Poxa que coincidência???!!!!!!. Então Sidney, estou desenvolvendo o TCC com mais duas pessoas e a parte de programação no arduino não fui eu quem fiz!!!!!! O mais engraçado é que estamos utilizando um arduino com LCD também e esta mesma lógica está funcionando e dando os valores de corrente corretamente.

Por exemplo, comparando os dois arduinos: No arduino com LCD a corrente aparece como 1,45A.  No scada indica 1. Ao aumentar a carga, o arduino com LCD passa a indicar 3,65A e no scada indica 3.

O protocolo que estou utilizando é o ModBus serial.

vc está usando qual tipo de comunicação com o scadabr??

RS485?

USB?

ethernet??

ai moço, não sei se estou certo,mas vc pode testar

se for configuração modbus tem uma parte chamada teste de localizador de ponto e lá tem um campo chamado tipo de dados modbus que normalmente se encontra em inteiro, mas vc pode mudar para float,talves isso resolva

mas é somente uma ideia.

E aí adriano

Estou usando o Modbus Serial....Vou verificar este campo e fazer um teste...Posto o resuktado depois..

VLW

Diego,

mais um detalhe, ao criar o datapoint, vc escolhe o registrador de holding, certo? E no próximo campo, vc coloca float?

Sabe onde estou falando?

Fiquei curioso, mostra sua ideia. O que vc está planejando?

Sidney,

Quando crio o datapoint, estou escolhendo o registrador holding.  No campo tipo de dados Modbus, a primeira opção foi colocar "Float de 4 bytes". Porém, o datapoint fica zerado. Quando escolho "Inteiro de 2 bytes sem sinal", ele fica marcando os valores conforme citado acima. É necessário mais alguma configuração no scada para ler valores do tipo float do arduino?

Meu TCC é um sistema supervisório para monitorar o consumo de água e energia elétrica em residências. Para a medição de corrente estamos usando a placa ACS712, para a medição de tensão estamos usando um circuito com acoplador óptico e para medir a vazão de água estamos usando um hidrômetro com saída de pulso.

Diego,

perfeito seu trabalho. Depois quero ver.

Então, bem nesse lugar onde vc escolheu, se seguir para baixo vai encontrar o float. (versão 1.0 do scadabr)

Fazendo isso acho que vai resolver seu problema.

Sidney,

O meu também é versão 1.0. Tô mandando um print das opções que eu tenho aqui

Anexos

Exatamente,

segue abaixo que vai ver float de 4 bytes.

Usa esse.

O float de 4 bytes é o que o c usa,o float de 8 bytes seria já um double,o que não deve ser o caso. O mais lógico seria  o float de 4 bytes

Então...Já configurei o datapoint com o float 4 bytes. Porém, a leitura dele fica sempre 0. Será algum problema de renderização no scada?

Ao usar o float de 8 bytes, o valor lido é muito pequeno.....(E-40)!!!!!!

Porque que com o datapoint tipo inteiro ele lê os valores e com o datapoint float ele não lê?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço