
IMPLEMENTACIÓN DE UN ALGORITMO EN ARM PARA EL MOVIMIENTO DE UN ROBOT CUADRÚPEDO UTILIZANDO ARM
Homepage
IMPLEMENTACIÓN DE UN ALGORITMO EN ARM PARA EL MOVIMIENTO DE UN ROBOT CUADRÚPEDO UTILIZANDO LA SMT32F411RE
DESCRIPCIÓN:
En este proyecto se realiza un algoritmo en Mbed para la el movimiento de un robot cuadrúpedo mediante la tarjeta STM32F411RE, el robot cuadrúpedo fue diseñado en el software CAD SolidWord e impreso con la tecnología de las impresoras en 3D, cuenta con micro-servos SG92R en su estructura para el movimiento de sus extremidades. El desafío de la programación en Mbed es demostrar la utilidad de los microprocesadores ARM en la robótica.
MATERIALES:
-STM32 f411re+cable usb.
-8 micro servos SG92R
-Estructura de robot cuadrúpedo impresa en 3D
-Cable Dupont macho - macho 10cm, hembra-hembra 10cm
-Software Mbed Online
-Tarjeta de interfaz de conexión
MARCO TEORICO:
TARJETA STM32F411re
Esta tarjeta STM32 Nucleo-64 proporciona una forma asequible y flexible para que los usuarios prueben nuevos conceptos y construyan prototipos eligiendo entre las diversas combinaciones de características de rendimiento y consumo de energía, proporcionadas por el microcontrolador STM32. Para las placas compatibles, el SMPS externo reduce significativamente el consumo de energía en modo Run.
El soporte de conectividad Arduino ™ Uno V3 y los encabezados morfo ST permiten la fácil expansión de la funcionalidad de la plataforma de desarrollo abierto STM32 Nucleo con una amplia variedad de escudos especializados. No requiere de un "quemador" por separado ya que integra el depurador / programador ST-LINK.
Information
Hoja de datos general:
-Características:
- STM32F411RET6 in LQFP64 package
- ARM®32-bit Cortex®-M4 CPU with FPU
- 100 MHz max CPU frequency
- VDD from 1.7 V to 3.6 V
- 512 KB Flash
- 128 KB SRAM
- GPIO (50) with external interrupt capability
- 12-bit ADC with 16 channels
- RTC
- Timers (8)
- I2C (3)
- USART (3)
- SPI (5)
- USB OTG Full Speed
- SDIO
-Esquematico:
MICRO SERVO SG92R
Un servo-motor es un tipo motor de C.C. que se caracterizan por su capacidad para posicionarse de forma inmediata en cualquier posición dentro de su intervalo de operación. Para ello, el servomotor espera un tren de pulsos que se corresponde con el movimiento a realizar. Están generalmente formados por un amplificador, un motor, un sistema reductor formado por ruedas dentadas y un circuito de realimentación, todo en un misma caja de pequeñas dimensiones. El resultado es un servo de posición con un margen de operación de 180° aproximadamente.
Características del servo SG92R:
-Piñones en fibra de carbono, su electrónica digital le permite un movimiento más controlado, preciso y suave.
-Conector universal tipo “S” que encaja perfectamente en la mayoría de los receptores de radio control incluyendo los Futaba, JR, GWS, Cirrus, Hitec y otros.
-Distribución de cables: Rojo =Alimentación (+), Café = Alimentación (–) o tierra, Naranja= Señal PWM.
-Voltaje de operación: 4.8V
-Velocidad de trabajo: 0.1sec/60 grados (4.8V)
-Torque de salida: 2.5 Kg-cm (4.8V)
-Temperatura de operación: 0 a 55 °C
-Longitud del cable: 25 cm
-Peso: 9 g
Funcionamiento del servo. Control PWM
La modulación por anchura de pulso, PWM (Pulse Width Modulation), es una de los sistemas más empleados para el control de servos. Este sistema consiste en generar una onda cuadrada en la que se varía el tiempo que el pulso está a nivel alto, manteniendo el mismo período (normalmente), con el objetivo de modificar la posición del servo según se desee.
Para la generación de una onda PWM en un microcontrolador, lo más habitual es usar un timer y un comparador (interrupciones asociadas), de modo que el microcontrolador quede libre para realizar otras tareas, y la generación de la señal sea automática y más efectiva. El mecanismo consiste en programar el timer con el ancho del pulso (el período de la señal) y al comparador con el valor de duración del pulso a nivel alto. Cuando se produce una interrupción de overflow del timer, la subrutina de interrupción debe poner la señal PWM a nivel alto y cuando se produzca la interrupción del comparador, ésta debe poner la señal PWM a nivel bajo.
Basados en este concepto de PWM se configuró las salidas PWM para el movimiento de los micro-servos siguiendo el diagrama esquemático de la SMT32F411re mostrado en la sección "marco teórico".
CÓDIGO EN MBED DE LIBRERIA PARA SERVO-MOTOR)
https://os.mbed.com/users/simon/code/Servo/
PROGRAMACIÓN EN MBED (trabajando)
main.cpp
#include "mbed.h" #include "Servo.h" //implementación de un algoritmo en ARM para movimiento de un robot cuadrúpedo //Entradas //Salidas Servo servo1(D2); Servo servo2(D3); Servo servo3(D4); Servo servo4(D5); Servo servo5(D6); Servo servo6(D7); Servo servo7(D10); Servo servo8(D11); int main() { while(1) { ///// for(int i=0; i<100; i++) { servo1 = i/100.0; servo2 = i/100.0; servo3 = i/100.0; servo4 = i/100.0; servo5 = i/100.0; servo6 = i/100.0; servo7 = i/100.0; servo8 = i/100.0; wait(0.01); } for(int i=100; i>0; i--) { servo1 = i/100.0; servo2 = i/100.0; servo3 = i/100.0; servo4 = i/100.0; servo5 = i/100.0; servo6 = i/100.0; servo7 = i/100.0; servo8 = i/100.0; wait(0.01); } ///// } }
Precaución!
Configurar y conectar correctamente las salidas y entradas en el programa así como en las conexiones de la tarjeta, usar el diagrama esquemático., los servos deben ser alimentados con 5VDC y las salidas para los servos deben ser PWM.
REFERENCIAS
ANEXOS