Pages: [1] 2   Go Down
Author Topic: Hackeando una báscula de baño para obtener más resolución [INFO]  (Read 5209 times)
0 Members and 1 Guest are viewing this topic.
Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
dentro de mi proyecto de data logger para una colmena, he conseguido destripar una báscula de baño, comprada en ebay por 10€, y conectarla a Arduino a través de un ADC de 18 bits. Las medidas de peso parecen coherentes, pero la señal que da es muy pequeña. Si alguien tiene experiencia con este tema, le agradeceré que me dé su opinión.
Pongo aquí mi "investigación", por si le puede servir a alguien.

* adc_MCP3424.pde (5.39 KB - downloaded 68 times.)
* Hackeando báscula de baño.pdf (187.01 KB - downloaded 208 times.)
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Desde luego que sale mas barato conseguir sensores destrozando cosas smiley un dia de estos me echan de casa smiley-grin

Para amplificar necesitas amplificar si, con el 741 es el mas famoso y general pero lo que se suele utilizar con sensores y medidas y demás son los amplificadores de instrumentación, hay chips con un AO de instrumentacion integrado y que se programa la amplificacion desde fuera con una resistencia.
mirate por ejemplo el INA146

un saludo
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@curro92, antes del ADC es necesario montar un amplificador porque los niveles de tensión son muy bajos a la salida de la celula de carga. Puedes usar por ejemplo un ina125p o un operacional de baja figura de ruido como un op71



Tambien existen ADC con amplificador integrado, como el CS5532



Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Asi seria un amplificador de celula de carga con un CS5532, lo vi en una bascula y me llamo la atención que no usaran operacionales.


* IMAG0225.jpg (412.12 KB, 1430x1331 - viewed 132 times.)
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por vuestra ayuda.
Creo que voy a decidirme por el INA125, me interesa también para otras cosas, he visto en ebay cuatro por 15€
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 688
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Alguien me puede comentar como hacer el ajuste a cero usando el cs5532 o el INA125? quiero hacer un sistema de pesado en bascula que la mismaestructura cuelga de la celulas/celdas de carga y la exita por lo que el peso en Cero lo tengo que ajustar para empezar a medir.
Logged

El que pregunta aprende, el que responde aprende a responder.

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Alguien me puede comentar como hacer el ajuste a cero usando el cs5532 o el INA125? quiero hacer un sistema de pesado en bascula que la mismaestructura cuelga de la celulas/celdas de carga y la exita por lo que el peso en Cero lo tengo que ajustar para empezar a medir.

La salida del INA125P la llevas a una entrada analógica del ADC que vas a usar, luego lees 10-20 veces la entrada y haces la media, asi sera mas fiable la medida. Luego coges un peso que conoces por ejemplo 1 kilo y luego con un poco de matematicas .... voila

1 kg ---------------------2,542V
x Kg ---------------------lectura analogica


También puedes usar la función map
http://arduino.cc/es/Reference/Map
« Last Edit: September 26, 2012, 09:23:57 am by flico » Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 688
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Eso si lo entiendo, lo que no se en la parte electronica como hago para calibrar el 0 (cero), me explico mejor.
Tengo 2 celdas que soportan una mezcladora, donde van a ir cayendo los materiales a mezclar, esta estructura puede pesar 200kg, si la celda es de 1000kg ya tengo una exitacion del 20%, para que en mi salida del amplificador tenga cero(0) voltios, tengo que hacer un ajuste en el ofsset o como se llame,sino mi resolucion se reduce en 20%, y de esta forma tengo mi pesaje entre 0 y 5v.
Con el cs5532, imagino que toman el valor del momento y lo restan a la lectura, pero imagino que se puede agregar un preset para calibrar a mano esto.
Logged

El que pregunta aprende, el que responde aprende a responder.

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aqui ya me pierdo, las pocas basculas que he visto la tension de excitacion era fija. 5 o 15V. El rango era 15Kg.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
realmente yo no conseguí un reset perfecto, siempre me quedó un valor residual en vacío, en detrimento de la resolución final (usaba INA125). Y el caso es que la báscula de baño funcionaba bien cuando la compré. Pero las células (half-bridges) tenían una pequeña diferencia de resistencia interna de 1 o 2 ohmios. Seguramente estarían conectadas astutamente por los chinos de suerte que las diferencias se compensaran. Pero al desmontar, no me fijé en el orden.
Busqué expresiones como "bridge balancing" en Google y encontré esto
http://soliton.ae.gatech.edu/people/jcraig/classes/ae3145/Lab2/strain-gages.pdf
Intenté con la fórmula (d)General de la página 17. NO tenía a mano las resistencias adecuadas, y el asunto quedó para más tarde. Este otoño retomaré el tema.
La conclusión que saqué es que no es tan sencillo conseguir el offset.



« Last Edit: September 26, 2012, 11:05:10 pm by curro92 » Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es que una célula de carga es cosa fina. Una vez vi en un documental como se fabricaban y me quede alucinado. Con un microscopio alineaban las galgas extensiometricas con las marcas.

Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 688
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bueno finalmente ayer me llegaron mustras de cs5534 en 24bits y cs5523 en 16 bits, lo malo es que son muy peueños en ssop24, asique no me queda otra que hacer un pcb.
Encontre entre las notas de aplicacion un faq que explica mucho incluso del calibrado. Y el modulo de evaluacion estan los planos para ver como conectar correctamente el AD para no tener perdidas.
Los INA125 me resultan utiles y como son DIP los puedo probar mas rapido, asique contare en breve sino abro un hilo nuevo.
Agrego una pregunta para los mas entendidos que yo, en la imagen que adjunto explicam como hacer el ajuste de offset pero no encuentro el ref200 aca en argentina y no se como se puede reemplazar por otro circuito. ¿Alguien me explica que se puede usar?


* ref200.png (21.05 KB, 520x403 - viewed 91 times.)
Logged

El que pregunta aprende, el que responde aprende a responder.

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
Me interesa el tema del offset para el INA125: alguien podría resumir qué es el REF200, y si se puede sustituir por otro componente? El precio ronda los 8-10€

Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 688
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

en texas dice Dual Current Source/Current Sink, busque por todos lados como reemplazarlo pero no encuentro, lo unico que se me ocurre es usar un LM317 y LM337 como generador de corriente, pero no creo que pueda manejar tan poca corriente, porque se la consumiria el mismo.
Alguien mas estudiado en la materia nos daria una mano?

En ti.com envian muestras
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 1
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola chicos, a ver si me pueden ayudar.

Compre una balanza de baño por 5€ en un mercadillo y la balanza funcionaba bien. Le quite las células de carga y tras recibir el INA125P estoy tratando de obtener los resultados y no veo luz. Queria ver si me podían ayudar.

Conecciones: 1) y 2) a 5V, 3) a GND, 4) a 15), 5) a GND, 6) cable rojo de célula #1, 7) cable rojo de célula #2, smiley-cool y 9) conectados a través de una resistencia de 1K, 10) y 11) conectados a A3, 12) a GND, 13) 14) y 16) N.C. (libres).

Parecido al de este abajo, pero en vez de usar una celda de 4 cables, uso 2 de tres cables. los cables blancos van a 5V y los negros van a GND


Estoy probando este código:
Code:
// Arduino as load cell amplifier
// by Christian Liljedahl
// christian.liljedahl.dk

// Load cells are linear. So once you have established two data pairs, you can interpolate the rest.

// Step 1: Upload this sketch to your arduino board

// You need two loads of well know weight. In this example A = 10 kg. B = 30 kg
// Put on load A
// read the analog value showing (this is analogvalA)
// put on load B
// read the analog value B

// Enter you own analog values here
float loadA = 0; // kg
int analogvalA = 70; // analog reading taken with load A on the load cell

float loadB = 10; // kg
int analogvalB = 600; // analog reading taken with load B on the load cell

// Upload the sketch again, and confirm, that the kilo-reading from the serial output now is correct, using your known loads

float analogValueAverage = 0;

// How often do we do readings?
long time = 0; //
int timeBetweenReadings = 200; // We want a reading every 200 ms;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int analogValue = analogRead(0);

  // running average - We smooth the readings a little bit
  analogValueAverage = 0.99*analogValueAverage + 0.01*analogValue;

  // Is it time to print?
  if(millis() > time + timeBetweenReadings){
    float load = analogToLoad(analogValueAverage);

    Serial.print("analogValue: ");Serial.println(analogValueAverage);
    Serial.print("             load: ");Serial.println(load,5);
    time = millis();
  }
}

float analogToLoad(float analogval){

  // using a custom map-function, because the standard arduino map function only uses int
  float load = mapfloat(analogval, analogvalA, analogvalB, loadA, loadB);
  return load;
}

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Resultados:
Code:
analogValue: 73.83
             load: 0.07219
analogValue: 78.28
             load: 0.15627
analogValue: 80.07
             load: 0.19009

Tengo varias dudas, la primera es si tengo bien conectado el circuito. (estoy siguiendo lo visto aqui: http://cerulean.dk/words/?page_id=42). Después, si bien entiendo como funciona la función MAP y sé que al principio tengo declaradas dos variables que se deben ajustar para calibrar la balanza, cómo puedo asegurarme que la léctura tiene sentido?

Gracias de antemano!!!
Logged

Pages: [1] 2   Go Up
Jump to: