Balanza de contrapeso móvil

Las balanzas de contrapeso móvil se basan en el principio de palanca; consta de dos brazos donde uno de ellos es de longitud variable.

67265_proportions_lg.gif

Puedes utilizar a Thymio II como contrapeso móvil. Gracias a su acelerómetro, el puede medir la inclinación la barra y posicionarse correctamente (horizontalmente). Este es un ejemplo en el que se utiliza un sistema de piñón cremallera:

balance-desequilibree.jpg
balance-global2.jpg

La balanza consta de un soporte central y un brazo (palanca) equilibrado. Aunque la longitud hacia la izquierda es diferente que hacia la derecha, el brazo se equilibra utilizando las piezas negras suplementarias. A la derecha se encuentra una plataforma para ubicar los objetos (un carrito de madera en este ejemplo). La plataforma tiene un peso de 47 gramos y está ubicada a una distancia de 24 unidades desde el pivote de la balanza. Al lado izquierdo se encuentra el contrapeso, es decir, Thymio II. Su peso es de 317 gramos. El contrapeso puede desplazarse a lo largo del brazo gracias a una cremallera y la rotación de una de las ruedas del robot. Estos son los detalles:

detail-balance.jpg

El acelerómetro de Thymio II le permite medir su inclinación con respecto a la gravedad. De este modo, puede saber hacia que tan inclinado se encuentra y mover sus ruedas para buscar el punto de equilibrio (brazo en posición horizontal).

El siguiente programa hace que el robot comience a buscar la posición de equilibrio una vez presionado el botón central. El robot se ilumina en color verde una vez encontrada la posición de equilibrio:

var mesure         # indica si se encuentra en modo medición.
var vieuxacc0      # aquí se almacenan mediciones anteriores del acelerómetro.
var vieuxacc1
var vieuxacc2
var vieuxacc3
var sumacc         # aquí se suman los valores anteriores del acelerómetro.
mesure = 0

onevent buttons 
  when  button.center==1 do   # se inicia/detiene la medición con el botón central.
      if mesure == 0 then 
          mesure = 1
      call leds.top(255,0,0)      # se ilumina de color rojo para indicar que está midiendo.
      else
          mesure = 0
      end
  end

onevent acc
  if mesure==1 then               # acciones que se ejecutan solo si está midiendo
      vieuxacc0 = vieuxacc1
      vieuxacc1 = vieuxacc2
      vieuxacc2 = vieuxacc3
      vieuxacc3 = acc[1]-2        # se toma la última medición. "2" es el punto de equilibrio (posiión horizontal).
      sumacc = vieuxacc0+vieuxacc1+vieuxacc2+vieuxacc3
      motor.left.target=-60*sumacc  # avanzar en función del grado de inclinación.
  else
      motor.left.target=0
  end

  if sumacc==0 then               # detenerse si todas las medidas son cero.
      mesure=0
      call leds.top(0,255,0)      # iluminación verde.
  end

Este código se puede simplificar utilizando un buffer circular:

var accTampon[4] = 0,0,0,0
var accTamponPos = 0

...

accTampon[accTamponPos] = acc[1]-2
accTamponPos = (accTamponPos + 1) % 4
sumacc = accTampon[0] + accTampon[1] + accTampon[2] + accTampon[3]

Así funciona la balanza:

En este caso particular, el carrito verde pesa 191 gramos y Thymio encuentra el equilibrio a cerca de 19 unidades del pivote. Te dejamos hacer los cálculos ;-)

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License