Criei um novo topico o outro estava meio confuso.

Estou fazendo uma balança usando:
Arduino, celula de carga e o INA125P como amplificador.
Liguei o INA125P da seguinte forma:

 

Esta fazendo a leitura tudo perfeito...
Mais o valor fica variando como louco... gostaria de saber se existe alguma forma de ter uma leitura se essas variações...

Em um peso de 500g hora tenho a leitura de 485 g e hora 516g...  smiley-cry

Estou usando o seguinte codigo no arduino:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);
void setup() {
 
 lcd.begin(16,2);
 
 lcd.setCursor(0,0);
 lcd.print(" iniciando");
  Serial.begin(9600);
  delay(1000);
}
void loop() {
 
  //float samplek = analogRead(1);
  int samplek =  map(analogRead(1), 259, 505, 0, 500);                     //Esta funcao pega nos valores aramzenados
                                                                                                //na var diferença e faz uma adaptaçao de
                                                                                                //escala ou seja casa o valor 259 com 0 g e o
                                                                                               //seu máximo 505 com 500 g
   
   
lcd.setCursor(0,1);
     lcd.print(mediamovelk(samplek),0);
     lcd.setCursor(4,1);
     lcd.print(" g");
    Serial.print(mediamovelk(samplek));
         Serial.print(" g");
     Serial.println("..................");
     
     delay (500);
     
}
float mediamovelk(float xis){
 
 static float media = 0.0;
static int indice = 1;
if(indice ==0 || indice == 50){
 
  indice = 1;
  media = 0 ;
}
media = media + (xis - media) / indice++;
 
}

Exibições: 4682

Responder esta

Respostas a este tópico

Substitua sua função filtro por essa, talvez melhore.

float mediamovelk(float xis){
  
static float media = 0.0;
static  double filtro = 0.0;

filtro =(double) filtro + (xis - media) ;

media =filtro/8 ;// altere o valor para alterar o tamanho do filtro, cuidado para não estourar variáveis.


}

Ola Jucelei usei a função que vc sujeriu mais agora só retorna o valor "0"

coloque no final da funçao

return media;

Que células você utiliza, Fabiano?

Estou usando uma parecida com essa

http://www.mkcontrole.com.br/ficha_cbl_zl.html

De 10 kg max...

Fabiano,

essas células não servem para ficar o tempo todo mendindo, né?

pergunto isso pois tenho uma caixa de abelha que oscila o peso de acordo com o dia e a produção de mel. Então, a titulo de conhecimento gostaria de saber como o peso oscila durante o dia e se a produção está boa.

Então pensei em colocar uma célula de carga debaixo da colméia e monitorar junto com os outros parâmetros que já monitoro, que são iluminação, temperatura externa, interna umidade interna.

Vc acha que é possível, ou eu teria que subir e descer a colmeia nela?

até

Opa seria possivel sim...

Elas são de uso profissional... a que estou testando fica o dia todo ligada sem problema algum...
E de todos amps que testei o que foi mais satisfatorio foi o INA125P (alem de ser o mais barato de todos que testei) e olha que testei varios...

Qual seria o peso max de suas colmeias???

Qualquer coisa que precisar posta ae... estou com alguns problemas aqui mais minha balança ja esta quase totalmente funcional...

Fabiano,

o peso aproximado é de 50 kg. Isso quando elas estão carregadas.

A precisão que acho que seria adequada é de 10 gramas. Será que tem nessa qualidade?

Vou colocar sim, assim que tiver mais materializado a ideia.

Fabiano esses resultados que esta tendo, são satisfatórios para seu circuito, se pretende desenvolver um produto comercial, precisa fazer um circuito dedicado para parte analógica, usar capacitores de acoplamento e usar um filtro passa baixa na entrada do pino de aquisição do uC. Outra coisa que precisa fazer, é fazer mais aquisição e colocar um filtro com constante de tempo maior, esse que te passei era pra funcionar, tente usar inteiro no local de float e double e chame a função mediamovelk() só uma vez a cada ciclo de programa.

void mediamovelk(int xis){
  
int float media = 0;
int  double filtro = 0;

filtro =filtro + xis - media;

media =filtro/8 ;// altere o valor para alterar o tamanho do filtro, cuidado para não estourar variáveis.


}

 

Muito obrigado pelas dicas Jucelei...

O seu filtro realmente melhorou muito as respostas, mas estou tendo de usar um valor muito alto, acho que pra melhorar vou ter que usar o capacitor de acoplamento e o filtro passa baixa mesmo.

O capacitor de desacoplamento ele deve ser ligado entre o positivo e o negativo??? e que valor devo usar???
E o filtro passa baixa  vc tem alguma recomendação????

Muito obrigado mesmo...

Sidney eu acredito que deva ter sim ... Só tem que ver se o custo vai valer a pena....

Sidney olha onde o povo conpra as celulas de carga aqui no meu trampo:
http://www.lojadasbalancas.com.br/default.php?pg=produtos&filtr...

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço