Sensor de corrente(programação)

Estive a fazer a medição e estão 2Volts antes de entrar no arduino

Estava a pôr só um gnd enquanto que tinha de interligar os 2, Como mudo o valor 2=0 para 1.96=0??
Estou farto de tentar e dar voltas e não consigo perceber como mudar esse valor

E mais outra questão bubulindo é que não consegui perceber se foi engano seu ou não quando fez esta conta //5V = 1024 1V = (1*1024)/5 = 204.8 ~ 209 >Arredondou para 209 porquê para 209 e não 205???
Cumprimentos e desculpe estar a ser chato

Foi engano. São 205.

Como disse, tens de verificar as leituras e ajustar os parâmetros do map() para dar a leitura correcta. O 1,96V será do facto de não teres um divisor de corrente perfeito. As contas que fiz em cima servem para fazer este ajuste. Em vez de usares 1 e 3, usas valores mais precisos. Ou seja, 1,96 + (1009,4mV) e 1,96 - (1009,4mV) e aplicas as mesmas fórmulas que usei antes.

E mais outra questão bubulindo é que não consegui perceber se foi engano seu ou não quando fez esta conta //5V = 1024 1V = (1*1024)/5 = 204.8 ~ 209 >Arredondou para 209 porquê para 209 e não 205???

Não li o tópico inteiro, mas acredito que ele simplesmente se enganou amigo, põe 205 lá e vê se é isso mesmo, a capacidade de fazer upload via usb é boa justamente para estes casos,
não está dando certo? Altera o que você acha que possa interferir e vê o resultado instantaneamente. Piorou? Desfaz a alteração e vai para a próxima linha :wink:

Como mudo o valor 2=0 para 1.96=0??

Não entendi direito sua dúvida, mas talvez só arrumando o trecho:

corrente = map(valor, 209, 614, -100, 100);
para:
corrente = map(valor, 205, 614, -100, 100);

pode ser que resolva o problema. Se não, o caminho é por aí, percebe que seu problema maior é matemática, não programação/eletrônica?

Já consegui pôr o sensor a dar certinho está optimo agora estou a implementar o de 45A-Safety and Productivity Solutions | Honeywell
A questão é o output do sensor em ves de ser tensão é Sink/Source existe algum problema na medição o código é basicamente como o Anterior mas com valores alterados???
Quem souber que me dê uma ajuda na implementação deste sensor sff

Cumprimentos

Uma resistência?? Corrente a passar numa resistência causa uma diferença de potencial. Ligas lá o teu AD e pronto. Já está.

No código tens apenas de refazer a matemática que expliquei anteriormente para chegares aos novos parâmetros.

Qual a idêia de pôr uma resistência ?
Não bastam as resistências do divisor de tensão??
Voltei a não conseguir que os sensores não dessem valores certos no caso do de (AC)45 A está a 0 tudo bem mas eu ponho 5 Amperes a passar e ele só mede 3.
O de 235(Bat)está a -3 quando não passa nada e quando lhe ponho 5 Amper fica a -8.
E o de 100A(RC) ontem antes de desligar tudo verifiquei estava tudo bem a medir corretamente fiz save hoje quando voltei estava a -2 e quando lhe ponho 5 amper fica 3.

Não consigo perceber o que estou a fazer mal na formula
Cumpts

Temperatura?

Qual é a estabilidade do sensor e resistências?

Bom dia sem ter corrente a passar nos sensores eles estão sempre a dar medições na ordem dos 0,1,2 e assim sucessivamente poderá ser ruído ou algo do género então pensei em fazer a média de vários valores e julgo ter o problema resolvido o que acham??
Agora como faço eu a média neste bocado de código:
valor235 = analogRead(A5); //Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.80851024)/5 = 165.5808 //1.96-(0.2354.9)=0.8085
//5V=1024 2.45mV = (3.1151024)/5 = 638,952 ~639 //1.96+(0.2354.9)=3.115
minimo235=((2.02-(0.235*4.9))1024/5); //Calculo do valor minimo
maximo235=((2.02+(0.235
4.9))*1024/5); //Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -235, 235); //Calculo da corrente
Serial.print("BAT:");
Serial.print(corrente235); //Apresentação dos resultados da corrente no serial monitor
Serial.println("A");
lcd.setCursor(3, 2);
lcd.print(corrente235); //Apresentação do resultado/temperatura no LCD
delay(1000); //Actualização dos dados a cada 2 segundo

Cumprimentos

unsigned int leituras[10];
unsigned int media = 0; 


for(unsigned char i = 0; i <10; i++) {
   leituras[i] = analogRead(pino);
   media += leituras[i];
}//leituras terminadas... 

media/=10;

Assim...

Acabei de por cabos blindados do sensor até ao arduino para ver se conseguia com que os valores estabelizassem e se ficavam certos nenhuma das duas se verificou já não sei mais o que fazer para conseguir com que o arduino dê os valores certinhos!!
Alguem tém alguma sugestão.
Cumprimentos

Condensador na entrada do AD?

Já meteste um osciloscópio?

Sim pus um condensador na entrada do AD não tenho é nenhum osciloscópio.
E agora existe outra situação o meu sensor de 100 A está a enviar qualquer coisa como 3.50 V enquanto que deveria enviar tipo 1.95 V +/-.

Como tens o circuito ligado?

As tensões antes desses 3,5 estão todas correctas?

No caso da média como faço para mostrar no lcd a média dacorrente é que me estão a aparecer os valores que está ler todos seguidos eu fiz assim

 unsigned long antes100 = 0;
 int valor100 = 0; 
 float corrente100 = 0; 
 float minimo100 =0;                                             //Valor minimo do map()
 float maximo100 =0;                                             //Valor máximo do map()
unsigned int leituras[10];
unsigned int media100 = 0; 


//--------------------------------------------------------Sensor de 100A----------------------------------------------------------------
 lcd.setCursor(14,1);                                            // Local no Lcd onde vai der apresentada a tensão do regulador
  lcd.print(12);                                                  // Valor da Tensão no regulador de carga

  valor100 = analogRead(A4);                                      // Valor do pino Analógico 4
  //Sinal entre 1V e 3V
  //5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199                    // 1.95-(0.1*9.4)=0.97   
  //5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584                     // 1.95+(0.1*9.4)=2.85 
  minimo100=((1.922-(0.1*9.7515))*1024/5);                            // Calculo do valor minimo
  maximo100=((1.922+(0.1*9.7515))*1024/5);                            // Calculo do valor máximo
  corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);   // Calculo da corrente 
  corrente100 = corrente100/100; 
  
  for(unsigned char i = 0; i <10; i++) {
  leituras[i] = analogRead(corrente100);
  media100 += leituras[i];                                        //leituras terminadas... 
  media100/=10;                                                   //média um conjunto de 10 amostras  
 
  Serial.print("RC:");                                            // Apresentação da sigla do regulador de carga no Serial Monitor
  Serial.print(media100);                                         // Apresentação dos resultados da corrente no serial monitor
  Serial.println("A");                                            // Grandeza fisica(A) declarada no serial monitor
  lcd.setCursor(14,2);                                            // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
  lcd.print("    ");                                              // Limpeza do LCD dos resultados anteriores
  lcd.setCursor(14, 2);                                           // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
  lcd.print(media100);                                            // Apresentação da corrente do regulador de carga no LCD 
 
  PRC=TRC*media100;                                               // Calculo da potência de RC
  lcd.setCursor(14,3);                                            // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
  lcd.print("    ");                                              // Limpeza do resultado anterior da potência do regulador de carga
  lcd.setCursor(14,3);                                            // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga                         
  lcd.print(PRC);                                                 // Aprsentação do resultado da potência do regulador de carga no LCD
  delay(500);                                                    
}

E no caso do sensor a dar 3.5 já está resolvido
Cumprimentos

Eu não consigo perceber porque é que não consigo estabilizar o 0 dos sensores e já se me acabaram as ideias todas tenho o regulador de carga onde entram 12Volts e saem 7.87volts no regulador tenho dois condensadores daqueles pequeninos (grd/out e grd/in) ainda tenho um condensador electrolitico entre o grd/positivo. para os sensores tenho os divisores de tensão e no divisor de tensão tenho ainda tenho mais um condnsador entre o grd e out. Agora digam-me porque é que esta porcaria não tem os valores estáveis. =(
Às vezes está no depois passa para 2 A depois passa logo para -2A não consigo mesmo perceber porque é que isto acontece já revi tudo. Não sei realmente o que fazer.
obrigado

Algures atrás eu referi que a maneira de fazer isto seria com um amplificador operacional para poderes usar a gama toda ajustando os ganhos.

Um dos motivos que listei foi precisamente o facto que um bit de ruído teria um impacto grande na tua leitura...

Tu e o teu superior sabem mais que eu e decidiram que um divisor resistivo é suficiente, agora estão a ter problemas.

Já experimentaste ver qual a influência que um bit faz nas tuas leituras?
As médias não funcionam? Como arredondas o valor?

Pessoal alguém sabe como se faz um totalizador de corrente do tipo hoje consumi um numero de corrente e de potência, é necessário criar uma rotina ou algo do género não é??
Não faço a mais pequena ideia de como resolver esta situação!!!