Go Down

Topic: Sensor de corrente(programação) (Read 9891 times) previous topic - next topic

wilsonalves

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


wilsonalves

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 + (100*9,4mV) e 1,96 - (100*9,4mV) e aplicas as mesmas fórmulas que usei antes.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Osias Neto

Quote
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 ;)

Quote
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?

wilsonalves

Já consegui pôr o sensor a dar certinho está optimo agora estou a implementar o de 45A-http://sensing.honeywell.com/index.php?ci_id=3108&la_id=1&pr_id=54672
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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

wilsonalves

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?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

wilsonalves

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.8085*1024)/5 = 165.5808                    //1.96-(0.235*4.9)=0.8085   
  //5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639                 //1.96+(0.235*4.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

Code: [Select]

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...
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

wilsonalves

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?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

wilsonalves

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?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

wilsonalves

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

Code: [Select]


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

Go Up