Archivo de la categoría: Raspberry Pi

EasyDriver – Controladora de motor paso a paso con modos de micropaso

La EasyDriver nos da la capacidad de manejar motores paso a paso bipolares con consumos entre 150 mA a 700 mA por fase. Permite el control motores bipolares con mucha facilidad de programación en modo estándar de paso directo, y en modos de micropaso de 1/2, 1/4 y 1/8 de paso.

Con respecto a cuestiones de hardware, se pueden soldar cables directamente al EasyDriver, o utilizar conectores en la alimentación, motores y señales de control para poder realizar cableados de prueba. La mejor opción para usted dependerá de su aplicación.

Lecturas sugeridas

Si usted no está familiarizado con los siguientes conceptos, se recomienda revisarlos antes de empezar a trabajar con la EasyDriver.

Instalar el entorno de desarrollo integrado de Arduino (IDE)
Motores paso a paso
Video motor paso a paso

Descripción general del hardware

La placa EasyDriver fue diseñada por Brian Schmalz, y su núcleo principal es el circuito integrado A3967. Este integrado permite manejar motores paso a paso bipolares con configuraciones de 4, 6 u 8 cables. La placa puede trabajar controlado desde sistemas de 3,3 V o 5V, por lo que es extremadamente versátil. Dos agujeros de montaje en la placa le dan al usuario la opción de sostener la EasyDriver con tornillos o postes de sujeción.

Descripción de las entradas y salidas de la placa

Vamos a echar un vistazo a todos los pines perforados que conectan hacia el exterior el circuito integrado A3967 en la EasyDriver.

Conexiones de la parte superior de la placa

Si se observa a lo largo de la parte superior de la placa, podrá ver varias perforaciones de conexión.

Funcionan de la siguiente manera:

Coil A+ : Salida del puente-H, polo + de la conexión para la bobina A del motor bipolar.
Coil A- : Salida del puente-H, polo – de la conexión para la bobina A del motor bipolar.
Coil B+ : Salida del puente-H, polo + de la conexión para la bobina B del motor bipolar.
Coil B- : Salida del puente-H, polo – de la conexión para la bobina B del motor bipolar.
PFD : Voltaje de entrada que selecciona el modo de descenso de la corriente de la salida. Si PFD > 0,6 Vcc, activa el modo de descenso de corriente lento. Si PFD < 0,21 Vcc, activa el modo de descenso rápido. Si el valor está en 0,21 Vcc < PFD < 0,6 Vcc se produce un descenso intermedio de la corriente. RST : Entrada lógica. Cuando está en BAJO, todos los comandos son ignorados y todos los transistores de salida se desactivan. Debe ser puesto en ALTO para habilitar el control de los pasos.
ENABLE : Entrada lógica. Permite que funcionen los transistores de salida dentro del puente H que maneja el motor. Si se pone en ALTO, desactiva los transistores, y el chip no manejará el motor. Si se pone en BAJO, los transistores de salida son habilitados, lo que permite el control del motor.
MS2 : Entrada Lógica. Ver tabla de verdad de abajo para los ALTOS y BAJOS que definen la funcionalidad.
GND : Tierra.
M+ : Fuente de alimentación. 6-30V, corriente 2A.

Conexiones de la parte inferior de la placa

También hay conexiones en la parte inferior de la placa. Sus funciones son:

GND : Tierra.
5V : Salida. Este pin puede ser utilizado para alimentar un circuito externo. Se pueden utilizar como máximo 70 mA para asegurar la funcionalidad del controlador.
SLP : Entrada lógica. Cuando pone a BAJO, las salidas están desactivadas y el consumo de energía se reduce al mínimo.
MS1 : Entrada lógica. Ver tabla de verdad de abajo para los ALTOS y BAJOS que definen la funcionalidad.
GND : Tierra.
STEP : Entrada lógica. Cualquier transición en este pin de BAJO a ALTO activa el motor para que avance un paso. La dirección y la extensión de los pasos se controla por la configuración de los pines DIR y MSx. Esta podrá ser de 0 a 5 V, o de 0 a 3 V en base al nivel lógico que se ha seleccionado.
DIR : Entrada lógica. Esta línea determina la dirección de rotación del motor. Los cambios en el estado de ALTO a BAJO, o BAJO a ALTO solo tienen efecto en el siguiente flanco de subida de la línea de comando STEP. Esta podrá ser de 0 a 5 V, o de 0 a 3 V en base al nivel lógico que se ha seleccionado.

Puentes de soldadura

Hay dos conjuntos de puntos de soldadura para soldar puentes de configuración en la placa. Estos proporcionan las siguientes elecciones para el usuario:

3/5 V – Este puente permite que el usuario defina la configuración de VCC entre 3,3 V o 5 V. Con el puente abierto, VCC será de 5 V. Si el puente está cerrado, VCC es de 3,3 V. El valor de VCC define los niveles lógicos que aceptará la placa en sus entradas.

APWR – Este puente habilita que la fuente VCC entregue + y GND en los pines de alimentación de hardware externo.

Potenciómetro de ajuste de corriente

El potenciómetro que se incluye en la placa permite que los usuarios puedan ajustar la corriente máxima que se suministra al motor. El rango de ajuste va de 150 mA a 750 mA. Esto requerirá saber qué valores de corriente puede manejar su motor. Revise la hoja de datos del motor para una calibración correcta.

Si usted no puede encontrar esta información, no se preocupe: todavía puede encontrar el ajuste adecuado de este potenciómetro. En primer lugar, establezca el potenciómetro en su valor mínimo. Tenga en cuenta que el potenciómetro es delicado, así que no fuerce el potenciómetro más allá de los topes mecánicos que lo detienen en ambos extremos de su giro. Aumente lentamente la corriente observando el movimiento del motor. Una vez que el motor se mueva a una velocidad lenta pero constante, gire poco a poco el potenciómetro y preste atención al comportamiento del motor. Usted debe encontrar un punto justo en el que el motor no salte o se observen tirones entre los pasos.

Conectar los cables de las bobinas del motor

Usted tendrá que determinar cuáles son los pares de cables de cada bobina del motor que va a utilizar. El método más fiable para hacerlo es observar la hoja de datos del motor, donde indicará los colores de los cables o la posición de los puntos de conexión.

Diagrama de bobinas de un motor paso a paso NEMA 16 con cables


Sin embargo, si usted va a utilizar cualquier otro motor paso a paso de 4 o 6 cables, es posible determinar los pares correctos de cables de cada bobina a conectar sin tener la hoja de datos.

Determinación de los cables de un motor paso a paso

En un motor de 4 cables, tome uno de los cables y compruebe con un multímetro su resistencia contra cada uno de los tres cables restantes. Aquel cable que muestre el menor valor de resistencia contra el primer cable es el que está apareado con él. Los otros dos cables deben mostrar resistencia similar entre ellos.

Para un motor de 6 cables, usted tendrá que determinar cuáles son los tres cables que están unidos a una bobina. Escoja un cable y pruebe su valor de resistencia contra todos los otros cables. Dos de los cables deben mostrar algún valor de resistencia entre ellos y el primer cable escogido, mientras que los otros tres no mostrarán conexión en absoluto. Una vez que se han determinado cuáles son los tres cables de una bobina, busque a dos entre estos tres que muestren la mayor resistencia entre sí. Estos serán los cables a usar de esta bobina. Repita el procedimiento para el segundo grupo de tres cables.




Una vez que haya determinado los pares de cables de la bobina, debe unirlos a la placa EasyDriver. El par de cables de la primera bobina debe ser conectado a la conexión Coil A+ y el otro a Coil A-. El par de cables de la segunda bobina se conecta a Coil B+ y a Coil B-. Las bobinas no tienen polaridad, así que usted no debe preocuparse de conectar una bobina al revés en la placa. En nuestro ejemplo, estamos usando un motor de 4 cables. Las conexiones entre la EasyDriver y el motor son como sigue.

Conexión EasyDriver al motor (Nema 14, 16 o similar)

Conecte una fuente de alimentación

Una vez que el motor está cableado, puede conectar una fuente de alimentación para la EasyDriver. Se puede utilizar cualquier tipo de fuente de alimentación (de escritorio, adaptador de pared, una batería, etc.), pero compruebe que cualquiera sea la opción que se utilice debe ser capaz de entregar hasta 2 A y estar en el rango de 6 V a 30 V.

Conecte la fuente de alimentación a M+ y GND. Recuerde desconectar la alimentación antes de conectar o desconectar el motor.

Conectar a un microcontrolador

Necesitaremos:

Cables

Arduino UNO R3

Conectores

Motor paso a paso bipolar con corriente de bobina hasta un máximo de 700 mA

Para este ejemplo, vamos a utilizar un Arduino UNO. Sin embargo, cualquier microcontrolador que funcione con una lógica de 3,3 V o 5 V, y que posea entradas / salidas digitales con capacidad de trabajar en modo PWM sirve para utilizar con este ejemplo de circuito.

Aquí están las conexiones para nuestro ejemplo:

Circuito final

Una vez que está todo conectado, el circuito debe tener el siguiente aspecto:

Ejemplo de código básico para el Arduino

Ahora que usted tiene el hardware conectado y listo para funcionar, es el momento de obtener el código y cargarlo. En primer lugar, descargue el programa de ejemplo.

DESCARGAR EL PROGRAMA DE DEMOSTRACIÓN DE LA PLACA EASYDRIVER
DESCARGAR PROGRAMA COMPLETO CON COMENTARIOS Y NOMBRES EN ESPAÑOL

Para obtener el código más actualizado que esté disponible, se puede consultar el repositorio de GitHub. Si usted necesita un recordatorio en cuanto a cómo se instala una biblioteca en el IDE de Arduino, por favor vea este tutorial aquí.

La primera sección del programa define todas las conexiones entre el Arduino y la EasyDriver. También establece estos pines como salidas, y los pone a los niveles lógicos adecuados para comenzar a manejar el motor.

Una cosa que debemos señalar es que el código también inicializa la conexión serie a 9600 bps. Esto permite que el usuario dé las indicaciones para controlar la funcionalidad del motor y depurar las conexiones, si es necesario.

El bucle principal del código es bastante simple. Arduino comprueba el puerto serie para ver si hay una orden ingresada por el usuario. Cuando lo recibe, compara con las cuatro posibles funciones para el motor, que inicia su funcionamiento cuando llega la entrada del usuario. Si se escribe una entrada que no sea una de las opciones posibles, Arduino imprime una indicación de error en el puerto serie.

Después de que la solicitud de una función se ha completado, la EasyDriver se restablece a los valores predeterminados.

La primera de las cuatro funciones que se habilita en este programa de demostración es un ejemplo básico que muestra el motor girando en un sentido. El pin de dirección (DIR) se coloca en BAJO (LOW), que para nuestro programa se define como la dirección «Adelante». A continuación, pone el pin STEP a ALTO (HIGH), hace una pausa y, a continuación, lo coloca en BAJO.

Recuerde: el motor da pasos cuando hay transiciones en el pin STEP de BAJO a ALTO, por lo que hay que cambiar el estado del pin una y otra vez. Esto se repite 1000 veces y, a continuación, Arduino solicita una entrada de usuario para determinar la siguiente actividad del motor.

La función de giro inverso funciona exactamente de la misma forma que la anterior, la única diferencia es que en lugar de poner el pin de dirección a BAJO, lo establecemos en ALTO, por lo tanto cambiará la dirección de giro del motor.

Una cosa que usted puede probar en cualquiera de estas dos funciones es modificar la velocidad del motor al cambiar el valor pasado a delay(). Está establecido en 1 microsegundo, haciendo que el pulso para cada paso sea de 2 microsegundos. El aumento de la demora reduce la velocidad del motor, mientras que al disminuir el retardo aumenta la velocidad del motor.

La tercera función demuestra las diferentes opciones de micropasos (microstepping) que proporciona la EasyDriver. Para habilitar el motor paso a paso a 1/8 de paso, debemos establecer MS1 y MS2 en ALTO. Esto establece la lógica de la placa al modo de 1/8 de paso.

Si usted quiere probar el motor paso a paso con diferentes modos de paso, cambie la configuración de uno de los pines MS#. Compruebe la tabla en la sección de Descripción de Hardware, si usted necesita recordar qué modo se habilita al configurar los diversos estados de las entradas.

La última función de movimiento disponible muestra cómo el motor puede cambiar de dirección en un instante. La función trabaja como en el avance y retroceso de las funciones anteriores, pero cambia entre los estados con rapidez. Este ejemplo de prueba del motor paso a paso le hace dar 1000 pasos hacia adelante y, a continuación, invertir 1000 pasos. Esto permite, precisamente, mover algo con el motor en una dirección, y volver exactamente a la posición inicial.

El control preciso de posición es una gran ventaja de los motores paso a paso.

Una vez que la acción concluye, los pines de entrada se deben volver a establecer en el estado predeterminado para evitar comportamientos inesperados del motor, o no deseados. Hacemos uso de la función resetEDPins() para lograr esto.

Programa completo

Ejemplos adicionales

Además el ejemplo presentado aquí, también se puede instalar la biblioteca AccelStepper. Hay algunos ejemplos adicionales en esta biblioteca que pueden ser beneficiosos para utilizar con su EasyDriver. Descargue e instale la biblioteca en su carpeta de bibliotecas Arduino.

Usted también puede encontrar algunos ejemplos adicionales sobre la EasyDriver en la página aquí.

Recursos Adicionales

Eche un vistazo a estos recursos adicionales para obtener más información y otras ideas para sus proyectos.

Página de Schmalz Haus sobre el Easy Driver
Repositorio de GitHub
Hoja de datos del integrado A3967



Unidad de Medición Inercial Multipropósito – IMU Razor M0 de 9DoF (parte 1)

La IMU Razor M0 de 9DoF (Unidad de Medición Inercial Multipropósito: Multi-purpose Inertial Measurement Unit = IMU) combina un microprocesador SAMD21 con un sensor MPU-9250 de 9DoF (nueve grados de libertad), creando una unidad compacta y reprogramable. Se puede programar para monitorear y registrar movimiento, transmitir ángulos de Euler por un puerto serie, o incluso para funcionar como un podómetro que cuente los pasos.

Una unidad de medición inercial o IMU (del inglés inertial measurement unit), es un dispositivo electrónico que mide e informa acerca de la velocidad, orientación y fuerzas gravitacionales de un aparato, usando una combinación de acelerómetros y giróscopos. En este caso se agrega un nivel más: un magnetómetro, que permite conocer la ubicación respecto al campo magnético terrestre. Las unidades de medición inercial se usan para maniobrar aviones, incluyendo vehículos aéreos no tripulados, entre muchos otros usos, y además naves espaciales, incluyendo transbordadores, satélites y aterrizadores. La IMU es el componente principal de los sistemas de navegación inercial usados en buques y misiles guiados entre otros. En este uso, los datos recolectados por los sensores de una IMU permiten a un computador seguir la posición del aparato, usando un método conocido como navegación por estima.

El chip MPU-9250 de 9DoF de la Razor posee tres sensores cada uno de tres ejes –un acelerómetro, un giroscopio y un magnetómetro– que le dan la capacidad de detectar aceleración lineal, velocidad de rotación angular, y vectores de campo magnético.

El microprocesador que contiene –el SAMD21G18A de Atmel–, es un microcontrolador ARM de 32-bit Cortex-M0+ compatible con Arduino, que se utiliza también en los Arduino Zero y el SAMD21 de la nueva línea MKR de mini plaquetas de Arduino.

Además del par principal de circuitos integrados, la IMU Razor de 9DoF posee un zócalo para trajeta µSD, un cargador para baterías LiPo, llave de encendido y un conector de E/S para proyectos de expansión. Viene pre-programada con un firmware de ejemplo y un bootloader compatible con el IDE de Arduino, de modo que se puede modificar el firmware según las necesidades y grabarle nuevo código a través de una conexión USB.

Este artículo provee una fuente de información para comenzar, y una guía de inicio para trabajar con la IMU de SparkFun de 9DoF Razor M0. Documentaré primero las características de hardware y firmware de la plaqueta, y a continuación, mostraré cómo usar el IDE de Arduino con la biblioteca MPU-9250 de Sparkfun para Arduino para reprogramar la IMU Razor a las necesidades de nuestros proyectos.

Materiales necesarios

La IMU Razor M0 de 9DoF está provista de todo lo que se necesita para aprovechar el sensor MPU-9250 de 9DoF. Solo harán falta unos pocos elementos –la mayoría son de esos que uno ya tiene entre sus componentes– además de la plaqueta.




Se puede utilizar un cable micro-B USB para alimentar y también para reprogramar la Razor. Si usted desea tener una placa independiente para que sea móvil, va a necesitar una batería de polímero de Litio de celda única (Lithium-polymer, o LiPo), que se puede recargar conectando la Razor 9DoF en un cargador USB o en un puerto de su PC. Además, si usted necesita registrar los datos, se debe colocar una tarjetita µSD en el zócalo de la IMU Razor. Acepta µSD de cualquier tipo.

Finalmente, puede ser necesario soldar algunos conectores si se desea aprovechar las capacidades de Entrada/Salida y de alimentación de la IMU.

Lecturas sugeridas

El fabricante ha tratado de hacer que la placa sea fácil de usar independientemente del nivel de experiencia en electrónica del usuario. Sin embargo, si desea realizar una lectura previa antes de utilizar y desarrollar programas para el el 9DoF Razor IMU M0, aquí hay algunos tutoriales que ellos recomiendan (inglés):

Giroscopio
Los giroscopios miden la velocidad de rotación alrededor de un eje y son una parte esencial para determinar la orientación en el espacio.

Acelerómetro (Bases)
Una introducción rápida a los acelerómetros, cómo funcionan y por qué se utilizan.

SAMD21
Una introducción al microprocesador Atmel ATSAMD21G18 y las placas de distribución Mini y Pro R3. Mejore sus habilidades Arduino con el potente procesador ARM Cortex M0 +.

MPU-9250
Iníciese y ponga en marcha el sensor MEMS de 9 ejes MPU-9250.

El hardware

Esta placa IMU tiene montados una cantidad de componentes sobre ambas caras del circuito impreso. La imagen muestra el lado que se define como cara superior.

El reverso de la plaqueta posee diversos conectores, además del zócalo de la microSD, la llave de encendido y LEDs para indicar diversas funciones.

Esta IMU es un diseño de hardware abierto. Se puede descargar el diagrama esquemático (en PDF), los archivos Eagle (con el diseño del circuito impreso), y ver la historia del diseño en el reservorio GitHub de Sparkfun.

Alimentando la IMU Razor M0

Esta plaqueta está diseñada para trabajar tanto alimentada desde el cable USB, o con una batería LiPo en el conector adecuado. Sólo hay que asegurarse de que la batería sea de celda simple, con un voltaje nominal de 3,7V a 4,2V.

Conecte tanto el USB como una LiPo para cargar la batería


Si se conectan ambos, el USB y la batería LiPo en la plaqueta, ésta se cargará con una corriente de hasta 450 mA. El estado de la carga lo indica el led amarillo de carga, que se apaga cuando la batería queda cargada a pleno.

Corriente de carga 450mA: La corriente máxima de carga está fijada por un resistor externo y no es modificable, al menos no con facilidad. La práctica nos dice que no es seguro cargar una batería LiPo con una corriente mayor a sus mA/h, lo que significa que no se recomienta utilizar baterías LiPo con capacidades menores a 450mAh para esta plaqueta.

Sea alimentada desde la fuente de USB, o con la batería LiPo, el voltaje es regulado a 3,3 V y se utiliza para alimentar tanto el SAMD21 como el MPU-9250. El regulador tiene una capacidad de aproximadamente 600 mA, lo que significa que debería tener suficiente resto para entregar corriente. Si lo desea puede alimentar otros dispositivos desde los pines marcados con 3V3.

Los pines VIN, VBAT y GND se pueden usar para alimentar el regulador de 3,3V de la IMU Razor en lugar de utilizar las entradas USB o el conector para la LiPo (JST). El voltaje en el pin VIN no debe exceder los 6V, y el pin VBAT solo debe conectarse a una batería LiPo de una celda.

Finalmente, el interruptor de ENCENDIDO/APAGADO en la parte inferior de la placa controla la alimentación entre ambas fuentes de entrada y el resto de los componentes de la placa. Mientras está en la posición «OFF» (Apagado), la batería LiPo seguirá en carga, pero no se debe aportar energía a ningún otro componente.

Perforaciones de pines para el SAMD21 y la alimentación

La placa tiene perforaciones preparadas para soldar conectores con tantos pines de Entrada/Salida del microcontrolador SAMD21 como se pudieron acomodar en el pequeño tamaño de la IMU Razor. Eso incluye los pines 08-13, las entradas del convertidor analógico a digital A0-A4, RX, TX, y los pines I2C, SDA y SCL.

Los pines SDA y SCL están en el mismo bus I2C que el MPU-9250, pero eso no debería ser un problema siempre que los dispositivos I2C adicionales no compartan las direcciones de 7 bits de la IMU (0x68 y 0x0C).

Usted puede soldar conectores hembra como los que tienen los Arduinos UNO y Mega, o hileras de pines macho, o directamente cablear a esos puntos de soldadura para expandir las funciones de la plaqueta. Por ejemplo, usted puede conectar un sensor BME280 directamente en el puerto I2C, y agregar detección de altitud y temperatura a su IMU.

Algunos módulos de la misma marca basados en I2C utilizan la misma
distribución de 4 pines, así que se pueden conectar directamente


El puerto de depuración single-wire = SWD (de un solo cable) del SAMD21 también está perforado en la parte superior de la placa, en caso de que se quiera programar el chip con un depurador JTAG. El pinout de este puerto coincide con el estándar del conector de depuración Cortex de 10 pines. Una «muesca» blanca indica el pin 1 de este puerto.

MPU-9250 Orientación de Acelerómetro / Giroscopio / Magnetómetro

La orientación del acelerómetro, el giroscopio y los ejes X, Y y Z del magnetómetro es determinada por la posición del MPU-9250. Para facilitar la referencia, estos vectores se han documentado con una impresión en la parte superior de la placa.

Tenga en cuenta que los ejes X e Y del magnetómetro están invertidos respecto a los del acelerómetro y el giroscopio, y que el eje Z también está invertido.

Trabajando con el firmware de ejemplo

Además de un gestor de arranque de Arduino (bootloader), el IMU también tiene cargado un ejemplo de firmware que es suficiente para demostrar, al menos, que funciona el seguimiento de movimiento del sensor, e incluso hacer un pequeño registro en una tarjeta µSD. Para comenzar a usar el firmware de ejemplo, simplemente conecte la IMU a una computadora.

Después de conectar la placa, debe aparecer como un puerto serie. En Windows, aparece como COMx y en Mac, debería verse como /dev/tty.usbserial-ABCD12.

Instalación del controlador

Usuarios de Windows 10: la primera vez que conecte el IMU Razor a su computadora, es posible que deba instalar controladores para habilitar el perfil USB de la clase de dispositivo de comunicación (CDC) de la placa.
Si su placa no aparece como un puerto COM, haga clic en el botón de abajo para descargar los controladores.

DESCARGAR DRIVERS DE WINDOWS PARA SAMD21

Para obtener ayuda para instalar los controladores, consulte las instrucciones del fabricante en la guía de conexión de Breakout SAMD21.

Después de ubicar el puerto de la placa, abra el Terminal Serie y establezca la velocidad en baudios a 115200 bps. El Monitor Serie del Arduino funciona bien para este propósito, o puede descargar alguno diferente desde aquí: programas de terminal.

Al abrir el puerto, el IMU Razor 9DoF debe comenzar inmediatamente a enviar las lecturas del acelerómetro, el giroscopio y el magnetómetro.

El formato estándar de la línea de texto es:

<timeMS>, <accelX>, <accelY>, <accelZ>, <gyroX>, <gyroY>, <gyroZ>, <magX>, <magY>, <magZ>

Esta línea se puede modificar enviando cualquiera de los siguientes comandos:

  • ESPACIADOR – Pausa/reinicio de impresión de puerto serie
  • t – Habilitar/deshabilitar las lecturas de tiempo
  • a – Habilitar/deshabilitar las lecturas del acelerómetro
  • g – Habilitar/deshabilitar las lecturas del giróscopo
  • m – Habilitar/deshabilitar las lecturas del magnetómetro
  • c – Alternar entre valores calculados o sin procesar de las lecturas
  • q – Habilitar/deshabilitar lecturas cuaternianas (qw, qx, qy y qz se muestran luego de las lecturas magnéticas)
  • e – Habilitar/deshabilitar cálculos Euler de ángulo (pitch, roll, yaw) (se muestran luego del procesamiento cuaterniano)
  • h – Habilitar/deshabililar las lecturas de encabezado
  • r – Ajustar el ritmo de registro en incrementos de 10Hz entre 1-100Hz (1, 10, 20, … 100)
  • A – Ajustar el rango de escala máxima del acelerómetro. Cicla entre ± 2, 4, 8, and 16 g.
  • G – Ajustar el rango de escala máxima del giroscopio. Cicla entre ± 250, 500, 1000, 2000 dps.
  • s – Habilitar/deshabililar el registro en tarjeta SD

Todas las configuraciones se almacenan en una memoria no volátil, por lo que al iniciar su IMU Razor 9DoF deberá tener la misma información con que la configuró anteriormente.

Además de iniciar sesión en su puerto serie, el firmware también está diseñado para registrar los datos en una tarjeta µSD, si hay una presente. Coloque una y debería tener los archivos de registro de IMU la próxima vez que conecte la tarjeta SD a su lector.

El firmware del 9DoF Razor IMU está disponible en el repositorio GitHub del producto. Para cargar el firmware, necesitará las definiciones de la placa SparkFun SAMD21 y la biblioteca SparkFun MPU-9250 DMP Arduino instalada en su máquina. Que es exactamente lo que vamos a documentar a continuación…

El IMU Razor 9DoF M0 está diseñado en base al SAMD21, el mismo procesador del Arduino Zero, lo que significa que agregar el soporte de Arduino para la placa está a solo unos clics. Esta sección describe los pasos que deberá seguir para instalar los núcleos SAMD en su biblioteca Arduino (eso suena más atemorizante de lo que realmente es).

¡Actualizar Arduino! Esta configuración requiere al menos la versión 1.6.4 o posterior e Arduino. Lo he probado en 1.8.8 y recomendaría esa versión del IDE o superior. Si está ejecutando una versión anterior de Arduino, visite arduino.cc para obtener la última y mejor versión.

Instale las placas de Arduino SAMD

Primero, deberá instalar una variedad de herramientas, que incluyen bibliotecas ARM Cortex de bajo nivel llenas de código genérico, arm-gcc para compilar su código y bossa para cargar código a través del bootloader. Estas herramientas vienen empaquetadas junto con las definiciones de la placa SAMD de Arduino para el Arduino Zero.

Para instalar las definiciones de la placa Arduino SAMD, vaya a su administrador de la placa ( Herramientas > Placa > Gestor de tarjetas … ), luego busque una entrada “Arduino SAMD Boards (32-bits ARM Cortex-M0+)”. Selecciónela e instale la última versión (actualizada recientemente a 1.6.20).

La descarga e instalación de las herramientas puede demorar un par de minutos; en particular, arm-gcc llevará más tiempo, se trata de 250 MB sin comprimir.

Una vez instalado, el texto azul «INSTALLED» debe aparecer dentro de la entrada de la lista de placas SAMD.

Instalar la definición de la placa SparkFun

Ahora que sus herramientas ARM están instaladas, se requiere un último paso de configuración para agregar soporte para las placas SparkFun SAMD. Primero, abra sus preferencias de Arduino ( Archivo > Preferencias ). A continuación, busque el cuadro de texto Gestor de URLs adicionales de Tarjetas y pegue allí el siguiente enlace:

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_spark fun_index.json

Luego presione «OK«, y regrese al menú del Gestor de tarjetas. Debería encontrar una nueva entrada para las placas SAMD de SparkFun.

Esta instalación debería ser mucho más rápida; el trabajo pesado fue realizado en la sección anterior.

Seleccione la placa y el puerto serie

Una vez que se haya instalado la placa, debería ver algunas entradas nuevas en la lista Herramientas > Placa, incluida la Razor IMU M0 de SparkFun 9Do, en el menú «Placas SparkFun SAMD (ARM Cortex-M0 +) de 32 bits». Y finalmente, seleccione el puerto del IMI 9DoF Razor yendo al menú Herramientas > Puerto.

La plaqueta ya funcionará con el programa de ejemplo. En un próximo artículo cargaremos este programa de ejemplo, para comprobar el funcionamiento del bootloader, y podremos comenzar a realizar pruebas, cambiando el programa a gusto y escribir nuevos programas a medida de nuestro propio proyecto de detección de movimientos.

[ Continúa en la parte 2 ]



Chips de potencia ultra baja ayudan a hacer robots pequeños más capaces

Se muestra un automóvil robótico controlado por un chip híbrido de potencia ultra baja en una pista creada para demostrar su capacidad para aprender y colaborar con otro robot. Crédito: Allison Carter, Georgia Tech

Un chip híbrido de potencia ultra baja inspirado en el cerebro podría ayudar a que robots de tamaño pequeño puedan colaborar y aprender de sus experiencias. Combinado con las nuevas generaciones de motores y sensores de baja potencia, el nuevo Circuito Integrado de Aplicación Específica (ASIC = Application-Specific Integrated Circuit), que funciona con milivatios de potencia, podría ser de ayuda para que los enjambres de robots inteligentes operen durante horas en lugar de minutos.

Para ahorrar energía, los chips utilizan un procesador híbrido digital/analógico basado en dominio de tiempo (time domain), en el que la información se codifica en el ancho de pulso de las señales. El circuito integrado de red neuronal se adapta tanto a la programación basada en modelos como al aprendizaje reforzado por colaboración, lo que podría proporcionar a estos pequeños robots mayores capacidades de reconocimiento, búsqueda y rescate, y otras misiones.

Investigadores del Instituto de Tecnología de Georgia demostraron autos robóticos conducidos por ASIC únicos en la Conferencia Internacional de Circuitos de Estado Sólido (ISSCC) IEEE 2019. La investigación fue patrocinada por la Agencia de Proyectos de Investigación Avanzada de Defensa (DARPA) y la Corporación de Investigación de Semiconductores (SRC) a través del Centro para la Habilitación de Inteligencia Autónoma Inspirada en el Cerebro (CBRIC).

«Estamos tratando de poner inteligencia en estos robots tan pequeños para que puedan aprender sobre su entorno y moverse de forma autónoma, sin infraestructura», dijo Arijit Raychowdhury, profesor asociado de la Escuela de Ingeniería Eléctrica e Informática de Georgia Tech. «Para lograrlo, queremos incorporar diseños de circuitos de baja potencia a estos dispositivos tan pequeños para que puedan tomar decisiones por su cuenta. Existe una gran demanda de robots muy pequeños pero capaces, que no requieren infraestructura».

Los autos demostrados por Raychowdhury junto a los estudiantes de posgrado Ningyuan Cao, Muya Chang y Anupam Golder navegan a través de una pista rodeada de almohadillas de goma y paredes de bloques de cartón. Mientras buscan un objetivo, los robots deben esquivar conos de tráfico y evitarse entre ellos, aprendiendo del entorno a medida que avanzan y se comunican continuamente.

Los autos utilizan sensores de inercia y ultrasonido para determinar su ubicación y detectar objetos a su alrededor. La información de los sensores va al ASIC híbrido, que sirve como el «cerebro» de los vehículos. Luego, las instrucciones van a un controlador Raspberry Pi, que es el que envía instrucciones a los motores eléctricos.


En los pequeños robot, tres sistemas principales consumen energía: los motores y controladores utilizados para conducir y dirigir las ruedas, el procesador y el sistema de detección. En los autos construidos por el equipo de Raychowdhury, que el ASIC sea de baja potencia significa que los motores consumen la mayor parte de ésta. «Hemos podido reducir la potencia de cómputo a un nivel en el que el cálculo está dominado por las necesidades de los motores», dijo.

El equipo está trabajando con colaboradores en motores que utilizan tecnología microelectromecánica (MEMS) capaz de operar con mucha menos potencia que los motores convencionales.

«Quisiéramos construir un sistema en el que la potencia de detección, las comunicaciones y la potencia de la computadora y la actuación estén aproximadamente al mismo nivel, del orden de cientos de milivatios», dijo Raychowdhury, quien es profesor adjunto de Semiconductores ON en la Escuela de Ingeniería Eléctrica y Computación. «Si podemos construir estos robots del tamaño de la palma de la mano con motores y controladores eficientes, deberíamos poder obtener tiempos de operación de varias horas con un par de baterías AA. Ahora tenemos una buena idea de qué tipo de plataformas informáticas necesitamos para ofrecer esto, pero todavía necesitamos los otros componentes para ponernos al día».

ASIC


En la computación basada en time-domain, la información se transporta en dos voltajes diferentes, codificados en el ancho de los pulsos. Eso le da a los circuitos las ventajas de eficiencia energética de los circuitos analógicos con la robustez de los dispositivos digitales.

«El tamaño del chip se reduce a la mitad, y el consumo de energía es un tercio de lo que necesitaría un chip digital tradicional», dijo Raychowdhury. «Usamos varias técnicas en los diseños de lógica y memoria para reducir el consumo de energía al rango de milivatios (un milivatio es una milésima de vatio), y al mismo tiempo cumplir con el objetivo de rendimiento».

Con cada ancho de pulso representando un valor diferente, el sistema es más lento que los dispositivos digitales o analógicos, pero Raychowdhury dice que la velocidad es suficiente para estos robots pequeños.

«Para estos sistemas de control, no necesitamos circuitos que operen a múltiples gigahercios porque los dispositivos no se mueven tan rápido», dijo. «Estamos sacrificando un poco de rendimiento para obtener eficiencias energéticas extremas. Incluso si la computadora funciona a 10 o 100 megahercios, eso será suficiente para las aplicaciones que se buscan».





Los chips CMOS de 65 nanómetros se adaptan a los dos tipos de aprendizaje apropiados para un robot. El sistema puede programarse para seguir algoritmos basados en modelos, y puede aprender de su entorno utilizando un sistema de fortalecimiento que fomenta un mejor y mejor desempeño a lo largo del tiempo, como un niño que aprende a caminar tropezando con cosas.

«Se inicia el sistema con un conjunto predeterminado de “pesos” en la red neuronal para que el robot pueda comenzar desde un buen lugar y no se bloquee de inmediato ni proporcione información errónea», dijo Raychowdhury. «Cuando usted lo ubica en un nuevo sitio, el entorno tendrá algunas estructuras que reconocerá y otras que el sistema tendrá que aprender. Luego, el sistema tomará las decisiones por su cuenta y evaluará la efectividad de cada decisión para optimizar sus movimientos».

La comunicación entre los robots les permite colaborar para buscar un objetivo.

«En un entorno de colaboración, el robot no solo necesita entender lo que está haciendo, sino también lo que están haciendo los demás en el mismo grupo», dijo. «Trabajarán para maximizar logros totales del grupo en lugar de una recompensa individual».

Con su demostración en la Conferencia Internacional de Circuitos de Estado Sólido, que les aportó una prueba del diseño, el equipo continúa optimizando el desarrollo y está trabajando en un sistema en chip para integrar los circuitos de computación y control.

«Queremos habilitar más y más funcionalidad en estos pequeños robots», agregó Raychowdhury. «Hemos demostrado lo que es posible, y lo que hemos hecho ahora tendrá que ser aumentado por otras innovaciones».

Fuente: Instituto de Tecnología de Georgia

Artículos Relacionados:
Walbi, el bípedo que aprende a caminar
Usando electricidad y agua, un nuevo tipo de motor puede poner microrobots en movimiento
Un robot que procura moverse tan bien como una hormiga
LSM6DSOX: acelerómetro y giroscopio con aprendizaje automático incorporado
Logran que los robots rastreen objetos en movimiento con una precisión sin precedentes
Nuevos micro robots de tamaño celular podrían hacer viajes increíbles