Control de servomotores con Arduino y WPF
Los servomotores son motores que integran una circuitería de control que permiten posicionar su eje dentro de un rango. Típicamente los servomotores permiten posicionar el eje con precisión dentro de un rango angular de 0 a 180 grados aproximadamente.
Constan de tres señales de entrada: alimentación, referencia, y señal de control. Utilizando la señal de control se puede posicionar el motor dentro del rango. El control se realiza a través de pulsos de duración determinada de la señal de control. Por ejemplo, para posicionar un servomotor controlado con pulsos de 1msg a 2msg de rango 0-180 grados a 90 grados necesitaríamos suministrar a la señal de control un pulso de 1.5msg de duración.
Se conecta el control del servomotor a la salida digital número 9 del Arduino que programaremos para recibir mensajes de posicionamiento a través del puerto serie, interpretarles y posicionar el servomotor. Para ello utilizaremos las librerías de control de servos (Servo) y de delimitación de mensajes del puerto serie (Messenger).
La inicialización del programa del Arduino se muestra en la siguiente figura donde simplemente indicamos a la librería de control de servos que se utilizará el pin 9 para el control, inicializamos el puerto serie a 115200 baudios e inicializamos la librería de procesado de mensajes.
Dentro del bucle principal simplemente se leerá el puerto serie esperando mensajes de la forma ‘SERVO n’ donde n es un número de 0 a 178 que indica el ángulo en grados donde se desea posicionar el motor. Una vez interpretado el mensaje satisfactoriamente se posicionara el servomotor y se añadirá un pequeño retraso de 15msg que permita al servomotor posicionarse antes de recibir otra orden.
Para la aplicación WPF diseñaremos una clase con una única propiedad que permita establecer la posición del servo. Haremos que dicha propiedad sea ‘Bindable’ para poderla enlazar de forma natural con los controles de interface gráfico.
La parte principal de dicha clase se muestra en la figura siguiente:
y se creará un interface gráfico para el control en XAML enlazando a dicha propiedad de la siguiente manera:
El resultado se puede ver en el siguiente video. El código fuente de ambos programas se adjunta en el artículo:
BigDog
Robot cuadrúpedo que anda y corre en terrenos difíciles llevando pesadas cargas. Financiado por DARPA, BigDog se mueve gracias a un conjunto de actuadores hidráulicos alimentados a través de un motor de gasolina. Todo el sistema esta controlado por un ordenador de a bordo que recibe información de numerosos sensores y regula su comportamiento.
Con unas piernas articuladas como las de un animal y construidas con elementos que absorben y reciclan la energía de un paso al siguiente, BigDog es del tamaño de un perro grande o una mula pequeña, midiendo 1 metro de largo, 0.7 metros de alto y pesando 75 Kg.
Manufactura personal
La impresión 3D es una realidad. Shapeways nos permite diseñar e imprimir nuestros propios modelos tridimensionales a un coste razonable al más puro estilo de la web 2.0. Recientemente Madox narraba como en aproximadamente dos horas y utilizando herramientas gratuitas había diseñado completamente una replica del stargate con un ‘iris’ funcional incluyendo en dicho tiempo el proceso de envío para la impresión.
Las siguientes imágenes muestran el resultado (se pueden ver más en el sitio original).
En el siguiente video se pueden ver algunos de los objetos que se pueden realizar mediante impresión tridimensional.
Y el siguiente muestra el proceso completo de producción desde el diseño hasta la impresión.
¿Qué nos deparará el futuro? la siguiente analogía de Phun Yan Yan es cuanto menos interesante.
Esta secuencia predefinida de aminoácidos conocida como la formula química de una proteína es definida (codificada) en una molécula llamada ADN. Las células humanas ordinarias tienen 46 moléculas enormes de ADN llamadas cromosomas. Cada célula humana literalmente ‘lee’ esas moléculas como un procesador leyendo instrucciones y literalmente ‘imprime’ las proteínas en una nano impresora tridimensional llamada ribosoma.
Vía FABBALOO