Balanza Electrónica


Diseñar una Balanza para LEGO Mindstorm NXT


down-verde-flecha

INTRODUCCION


Esta sección consta de 2 proyectos. Ambos son de los pocos que no precisan ningún elemento ajeno a LEGO, es decir, los puedes construir completamente sin electrónica adicional.


El primero usa un sensor de ultrasonidos y el segundo aprovecha el set de neumática de LEGO.





Hay muchas formas de construir una balanza, es cuestión de echarle imaginación. En el primer caso primer caso se podría haber hecho también con un sensor de luz, tanto con el original como el construido aquí en plan casero.


Para no mentir, no es que sea ni muy precisa ni muy exacta (que no es lo mismo). Pero, como diría un político, funciona razonablemente bien. Y tiene una cualidad importante: el valor medido se puede almacenar en una variable en el NXT para luego procesarla. Así, podremos comprobar si se ha excedido un peso concreto y actuar luego en consecuencia.


Puedes inventar muchos otras balanzas con este mismo principio o jugara a mejorar su precisión y exactitud con mejores programas.


BALANZA CON SENSOR DE ULTRASONIDOS


Bueno, viendo las fotos no hay mucho que comentar. Y ya digo que puedes hacer muchos modelos posibles. Este es uno de ellos. Eso sí, el ultrasonidos debe quedar justo debajo del plato a lo largo de todo el recorrido. Si usas un detector de luz, mejor hacer un plato con fondo de color blanco que negro como en la foto, ya que refleja mejor la luz.


Balanza para LEGO Mindstorm NXT 1

El brazo de la balanza se equilibra con 2 gomas elásticas de oficina.


Balanza para LEGO Mindstorm NXT 2

Un detalle del final del brazo, cuando se une al plato.


Balanza para LEGO Mindstorm NXT 3

El motor que sujeta la aguja.


Balanza para LEGO Mindstorm NXT 4

Subiendo o bajando el pin situado en la parte trasera, podemos regular un poco los pesos que puede soportar la balanza. Si la has calibrado, no debes moverlo, ya que perderás la calibración.


Balanza para LEGO Mindstorm NXT 5

PROGRAMACION


La programaciónes muy simple. Excluyo de la programación el motor que aparece en las fotos porque lo explicado: no hay forma de que coincida tu construcción con la que ves aquí, especialmente por la fuerza de las gomas. Por tanto, las matemáticas tampoco coincidirían.


Configuración Balanza para LEGO Mindstorm NXT

No creo que valga la pena avanzar más en el programa por el motivo explicado, los valores de ajuste no coincidirían. Así que de momento, nos conformamos con ese "escalado" de valores en función del peso del objeto.


NOTAS:


El icono "Text", el penúltimo, tiene 4 o 5 espacios en la línea "B" para evitar que los resultados en pantalla se pisen unos a otros.


El bucle es "Forever" en su panel de configuración.


En lugar (o a la vez) de presentar el valor en pantalla, puedes meterlo en una segunda variable para luego usarla en una calibración. Recuerda que tienes un tutorial de variables.


Hasta aquí una balanza sencilla. Si quieres meterte en un poco de matemáticas, vamos a intentar una calibración. Con ello podrás ver valores más o menos reales en pantalla en lugar de ver unos valores relativos (una escala de números), tal como presenta el programa anterior.


He de decirte que esta puede ser la parte más satisfactoria, ya que al final tendrás una auténtica balanza electrónica y explicaré todos los pasos. Para la calibración, es necesario que dispongas de una balanza de verdad. Una de cocina sirve. Y si es digital, mejor que mejor.


CALIBRACION


OBTENER LOS RESULTADOS


Si queremos sacarle más partido al sensor (vamos, que "pese" algo y nos diga tantos gramos), será necesario una calibración. Por cierto, una contribución a la ciencia: la abreviatura de gramos es "g". Ni G, ni gr, ni gram. ni nada por el estilo. Otro debate distinto sería la abreviatura de teléfono.


Para esto, y con la balanza de referencia al lado, elegimos una serie de objetos que abarquen toda la extensión de las gomas elásticas de nuestra balanza. O sea, desde el máximo al mínimo, para poder cubrir toda la escala. El mínimo sería el peso que consigue mover a 1 el valor de la pantalla.


Ahora elige más objetos que pesen valores en medio de esos dos anteriores. Cuantos más datos, mejor (y más largo será el proceso). Por cierto, no olvide seleccionar "centímetros" en el ultrasonidos.


Ahora abres una hoja de cálculo y escribes lo siguiente:


Configuración Balanza para LEGO Mindstorm NXT

Verás que la tabla es un poco rara. He puesto la columna "Valor medio" al principio. Cuando hagamos la gráfica, será mucho más fácil señalar esas 2 columnas y decirle que dibuje que si estuvieran separadas. Eso es todo.


Y ahora a completar la tabla. Pesas el primer objeto (un destornillador por ejemplo) en la balanza de cocina, esperas a que se estabilice el valor y lo anotas en la primera columna raw. Ahora, espera a que el plato del NXT se quede inmóvil y le das al botón naranja del NXT para resetear la distancia y por tanto el cero.


Pesa ese mismo objeto en el NXT, esperas a que el valor en pantalla se estabilice y anotas el valor en la columna correspondiente. Quitas el destornillador y repites el proceso un par de veces más.


Ahora un segundo objeto. Lo pesas primero en la balanza de cocina y luego 3 veces en la casera. No olvides resetear al inicio de cada medida.


Cuantas más medidas tengas, más fina será la calibración. Elige los objetos de forma que los pesos queden repartidos desde el máximo hasta el mínimo.


Por ejemplo, si la balanza casera, la del NXT, es capaz de pesar 100g (según las gomas que hayas puesto), elige objetos que pesen aproximadamente de 5 en 5g hasta llegar a los 100g.


No es necesario, que pesen esas cantidades exactamente. Lo importante es que anotes exactamente los valores que obtienes en ambas balanzas y que estén bien repartidos. O sea, puedes tener un objeto de 32g, otro de 6g (y si pones los 2 juntos, tendrás 38g). Con esto ya tienes 3 medidas cubiertas.


Y así, hasta completar la tabla. La mía ha quedado así (ahora explicamos la gráfica):


Configuración Balanza para LEGO Mindstorm NXT

Como puedes ver, el mismo objeto "pesa" cada vez una cosa distinta. Anota el valor que obtengas, no el que quieres obtener. Todo lo más, si hay mucha diferencia en el peso, repite la medida y descarta la incorrecta, quitando todos los trastos del plato, esperando a que se quede quieta y reseteando cada vez. Un rollo, pero más rollo es hacer la faena mal y que luego no pese bien.


De entrada, como puedes ver, la balanza pesa desde 16g hasta 86g. Más allá, se vuelve loca. Y más acá, no se entera. Otra cosa que puedes observar es que los valores reales, los que he obtenido con la balanza de cocina, no son multiplos de 5. Basta con que aumenten poco a poco y anotes su valor exacto.


OBTENER LA GRAFICA


Lo primero es obtener la columna del valor promedio. Escribe en la primera casilla =(C1+C2+C3)/3. Adapta esos valores a tu caso.


Ahora copia esa primera casilla y la pegas en todas las casillas de la columna del valor promedio. Saldrá el resultado directamente. Quizás tengas que ajustar el número de decimales que se visualizan. Ya tenemos el promedio.


Ahora seleccionas esas dos columnas de valores, te vas a insertar gráfico y le das a DISPERSION/LINEAS RECTAS. Debería aparecer directamente la gráfica.


OBTENER LA ECUACION


Ahora necesitamos la ecuación para introducirla en el NXT. Con el ratón, te pones sobre la gráfica y pulsas el botón derecho. Te aparecerá lo siguiente, al menos con mi hoja de cálculo:


Configuración Balanza para LEGO Mindstorm NXT

Cuando le des a cerrar, te aparecerá el ajuste de la recta sobre la gráfica:


Configuración Balanza para LEGO Mindstorm NXT

Aquí puedes ver varias cosas. R2 es un parámetro estadístico que te dice lo bien o mal ajustada que está la recta a la gráfica. Cuanto más cerca del 1, mejor es el ajuste. Este mismo valor es el que se obtiene en algunas calculadoras. En este caso sale 0,96 que no es muy bueno que digamos.


Por eso es bueno mirar también la gráfica. A veces se obtienen buenos R2 y no por eso hemos hecho un buen ajuste por mínimos cuadrados, que así se llama esto. Por ejemplo, un círculo (creo) da un R2 de 1. Compruebalo y nos dices. Y es evidente que un círculo no es una recta.


Otra cosa que puedes ver, al menos en este ajuste que he hecho, es que hay más discrepancia con la recta en la parte izquierda de la gráfica, es decir, para pesos pequeños. Por eso es importante ver el R2 y la gráfica a la vez.


Esto es común a todas las balanzas, que lo sepas: para valores bajitos, hay más error.


Sabiendo esto, podemos mejorar la exactitud de nuestra balanza, es decir, que lo que pesemos se parezca más al valor real.


MEJORAR LA BALANZA


Aunque este paso es prescindible, lo incluiré con ánimos "pedagógicos". Una vez vistos las gráficas, hemos llegado a la conclusión de que los primeros puntos no son muy buenos. Pues me los cargo. Desde 0 hasta los 38g en mi caso (valores promedio hasta el 3). Directamente eliminados.


Obtenemos la nueva gráfica y su nueva recta de ajuste.


Configuración Balanza para LEGO Mindstorm NXT

Ahora tenemos un R2 de 0,99. ¡Esto ya es otra cosa!. No hay más que ver la gráfica... Se ajustan ambas mucho mejor que antes. Eso sí, hemos pagado un precio. No es que como no me gustan los números me los cargo y ya está: no podré utilizar la balanza por debajo de los 40g aproximadamente.


Por cierto, que no lo he dicho:


Los gramos "reales" se leen a la izquierda (eje Y de ordenadas).


Las distancias del ultrasonidos del NXT se leen abajo (eje X de abcisas).


Así que tras un rollo, ya tenemos nuestra ecuación para poder programar el NXT. El NXT-G 2.0 admite 2 decimales, así que lo aprovecharemos. Para el NXT-G 1.0 habría que hacer alguna modificación. Simplificándo un poco nos queda:


y = 4'01x + 27'90

Recuerda que tus valores serán distintos y por tanto esta ecuación no te servirá. Tienes que obtener la tuya, según como hayas construido la balanza, sus gomas, etc.


PROGRAMA PARA EL NXT


La faena dura ya está hecha. Ahora toca adaptar los resultados al NXT. Sobre algunos iconos hay texto aclaratorio. He recortado un poquito el ancho de la imagen, pero es el mismo programa.


Configuración Balanza para LEGO Mindstorm NXT

PROBANDO...


Para ver qué tal funciona, peso unas cuantas cosillas:


Configuración Balanza para LEGO Mindstorm NXT

Y, después del faenón que me he pegado, el resultado, aunque sólo sea para presumir un poco. Solo se va 2 gramitos de nada cuando peso 2 vasitos iguales:


Configuración Balanza para LEGO Mindstorm NXT

Y cuando vacío el plato:


Configuración Balanza para LEGO Mindstorm NXT

USOS


Ni idea. Pero seguro que se te ocurre alguna aplicación chula y la presentas en el foro.


La segunda aplicación de todo esto, es claramente pedagógica. Se explica paso a paso todo el proceso de calibración de un sensor, cómo hacer ajustes por mínimos cuadrados... Y se introducen conceptos como medir, medida, peso, precisión, exactitud, R2... Igual le acaba sirviendo a algún profe, quién sabe.


Una tercera opción sería programar el artilugio para que detectara cuándo se supera un determinado valor y que diera una alarma. Con margen en la pesada, esta opción funcionaría bien y podría acabar separando 2 (o más) objetos por peso. Podrían ser monedas por ejemplo.



BALANZA NEUMATICA


Esta balanza no la calibraré. Ya tienes el ejemplo de cómo hacerlo más arriba, así que sería repetir. Simplemente mostraré la construcción y el funcionamiento.


Configuración Balanza para LEGO Mindstorm NXT
Configuración Balanza para LEGO Mindstorm NXT

En lugar del manómetro de las imagenes, podrías usar un sensor de presión. El funcionamiento sería el mismo pero controlado por el NXT. Allí puedes encontrar un video de su funcionamiento.


up-verde-flecha
Un inclinómetro
Sensor de ángulos
.