WIKI

ARAÑA STM

PREREQUISITOS

  • Materiales
    • Tarjeta STM32F411
    • Plataforma virtual Mbed, https://www.mbed.com/en/
    • Software Cool term (Permite crear una interfaz para recibir y enviar telecomandos)
    • Servomotores MG90S
    • Jumpers
    • Impresión láser sobre material acrílico del diseño
    • Sensor de color TCS3200

PASO A PASO PARA LA CREACION DE UN NUEVO PROYECTO

  • 2. Creamos un usuario y una contraseña.

/media/uploads/1016035478/22.png

  • 3. En la pestaña amarilla parte superior derecha, botón COMPILER, damos click derecho.

/media/uploads/1016035478/21.png

  • 4. Se desplegara una nueva ventana, en la parte superior derecha, se encontrara el botón “ select platfom”, allí deberá seleccio- nar la tarjeta que halla escogido para el proyecto, en nuestro caso la STM32F411.

/media/uploads/1016035478/20.png

  • 5. Si ha conseguido adicionarla, encontrara dos pestañas llamadas “description” y “pinout”. En la pestaña description hallara una breve descripción de las funciones que puede realizar con esta, el tipo de comunicación, cantidad de datos, interfaces que puede reconocer, a las cuales es capaz de recibir y transmitir. En la pestaña pínout, se encuentra una imagen donde esta el nombre que se lee en la tarjeta física, y su correspondiente nombre para que en programación corresponda a este. Encontramos que pines soportan comunicaciones análogas, digitales, de tipo pwm, pines que permiten la transmisión (RX, TX), salidas de voltaje, tierra. Botones físicos que podrán ser usados como sensores para simular alguna acción.La conexion de la tarjeta a nuestra interfaz coolterm, se realiza buscando el puerto com en el que este conectado de nuestro PC y acontinuacion damos conectar.

/media/uploads/1016035478/19.png

  • 6. Para crear nuestra programación, nos dirigimos a la pestaña en la parte superior izquierda, llamado “new”, se desplegara una pestaña “créate new program”, allí solo asignaremos el nombre a nuestro proyecto, y daremos aceptar, inmediatamente creara un nuevo programa en nuestro Mbed, todo lo que se haga en la plataforma quedara en el servidor, permitiendo manipular nuestra programación desde cualquier parte, únicamente ingresando con nuestro usuario y contraseña.

/media/uploads/1016035478/23.png

  • 7. Al crear el proyecto se generara una carpeta, donde encontrara un archivo llamado main.cpp, es allí donde se iniciara el proceso de programación de nuestro proyecto.

PROGRAMACION DE LA ARAÑA

  • A continuación se explicara línea a línea, la función que realiza; en caso de ser un conjunto de líneas que permitan realizar una función, se especificara con estos símbolos donde inicia y donde termina, cabe resaltar que estos símbolos no deben ser incorporados en la programación (%&). Al final se presentara una imagen donde podrá observar como debe quedar escrito su código hasta ese punto. Iniciamos con esta cabecera, la cual permitirá usar los directorios diseñados para este tipo de tarjetas.

/media/uploads/1016035478/1.jpg

  • FUNCIONES

Aquí declaramos las funciones, donde las matrices que utilizaremos presentara un filtro donde deben cumplir con ciertas condiciones para responder con una acción o dato. Definimos a MAX con una capacidad máxima de 20 caracteres.

/media/uploads/1016035478/2.jpg

  • VECTORES Y MATRICES

Creamos un vector que recibirá la información llamado vbuff, una matriz donde se almacenara la información ya validada llamada mbuff, en la siguiente línea creamos un vector que guarda los grados en el que queda posicionado cada servomotor, por eso encontrara 8 espacios parametrizados en 0.

/media/uploads/1016035478/3.jpg

Creamos tres variables de tipo entero llamadas filas, colum, con esto parametrizamos la capacidad de la matriz. Declaramos el método de comunicación TX,RX.

/media/uploads/1016035478/4.png

Para utilizar las salidas pwm de nuestra tarjeta, debemos observar el pinout anteriormente presentado, allí escribiremos

  • PWMOUT para indicar pwm como salida
  • Servo1 asignar un nombre genérico al pin
  • (PB_3) Es la salida virtual correspondiente en la parte física

/media/uploads/1016035478/5.png

  • While(1) Indica una condición verdadera, que se vera accionado por un switch case, aquí usaremos las funciones creadas por nosotros para evitar repetir código, un ejemplo de esta es “recibir_dat”, es una función que recibe los datos en forma serial y los valida, una de las validaciones es identificar el tele comando que da incio a una serie de codigos ascci que enviara nuestro usuario, indicando asi un orden lógico de los datos. Se maneja una velocidad de 9600 baudios.

/media/uploads/1016035478/6.png

  • El primer comando en nuestro vector deberá ser el tipo de comando. Utilizamos el while para determinar el comando que en este caso será 1,2, o 3, estos comandos nos permitirán crear una forma de rutinas o programaciones predeterminadas sin alterar las líneas de programación, en el comando uno se estipula un orden lógico para los servomotores y les podemos asignar un giro en grados a cada uno de ellos, de manera individual. Para el comando dos podremos escoger el motor que deseemos mover y asignarle una rutina de movimiento, ya sea arriba, abajo, adelante y atrás.

/media/uploads/1016035478/7.png

  • Utilizamos el while para determinar el comando que en este caso será 1,2, o 3, estos comandos nos permitirán crear una forma de rutinas o programaciones predeterminadas sin alterar las líneas de programación, en el comando uno se estipula un orden lógico para los servomotores y les podemos asignar un giro en grados a cada uno de ellos, de manera individual. Para el comando dos podremos escoger el motor que deseemos mover y asignarle una rutina de movimiento, ya sea arriba, abajo, adelante y atrás.

/media/uploads/1016035478/8.png

  • Realizamos una asignación al periodo, en este caso se realiza en milisegundos.

/media/uploads/1016035478/9.png

  • Mediante la forma matricial, asignamos valores en grados(vgrados) que se verán reflejados en pulsos, de acuerdo a el numero del servomotor.

/media/uploads/1016035478/10.png

COMANDO

/media/uploads/1016035478/11.png

  • El tele comando se compone de una serie de cinco caracteres hexadecimales separados por un espacio, para que el programa tome los datos de una manera organizada, se inicia la cadena con ff, es decir que cada vez que nuestro sistema detecte un ff, lo tomara como un nuevo envió de datos, así mismo en la posición numero 5 de la cadena de datos se debe terminar con un fd, para poder concluir la cadena; estos parámetros son los mismos para los 4 comando que a continuación se presentaran:

PRIMER COMANDO

/media/uploads/1016035478/comandos.png

  • Resaltamos que en la segunda posición llamaremos el comando, el comando a groso modo son distintos tipos de funcionamiento que se podrán realizar con solo cambiar este valor en el tele comando. El tercer espacio permitirá escoger el motor que se va a manipular, en el cuarto espacio se definirá en "grados" cuanto se desea girar el servomotor.
  • Esta función es creada como un retorno de información, aquí imprimiremos la información ingresada manualmente por el coolterm, y confirmaremos que se estén recibiendo los datos. Tambien imprimiremos el vector de pulsos asignado para cada servo, estos datos los observamos en decimal, mediante la asignación de este comando %d.
  • Recibimos los datos en forma vectorial y se validan, la validación consiste en iniciar el telecomando con el valor hexadecimal FF, el telecomando debe contener 5 valores, sin contar la posición o número 0, el numero de servomotores solo podrá tener un rango de 1 hasta 8, con el hexadecimal 0xb4, estamos limitando los grados a un rango de 0 a 180 grados, en la ultima posición del vector se requiere un FD, para poder aceptar el telecomando, todos los parámetros contienen una aviso para el usuario donde les indican que comando debe corregirse para que a los motores se les asigne el movimiento deseado.

/media/uploads/1016035478/12.png

  • Estas líneas de programacion permitirán almacenar los datos después de que se realizaron las validaciones anteriormente mencionada, con esto estaremos asegurando la entrega de datos correctos para que no hallan errores de compilación y podamos corroborar en tiempo real los telecomandos enviados.

/media/uploads/1016035478/13.png

  • Funcion de comando 1, tomamos los datos obtenidos por el coolterm, guardado en la casilla (0,2) de la matriz, y le sobreescribimos la conversión de grados a pulsos, para que sea interpretada por nuestros servomotores, el calculo esta dado por la máxima frecuencia para el valor de 180 grados y la mina que es 0, realizamos una conversión de grados a pulsos, definiendo la cantidad de pulsos necesarias para conseguir el giro necesario. (la frecuencia varia según la referencia del servomotor).

/media/uploads/1016035478/25.png

COMANDO 2

  • Almacenamos en vectorial mente 2 motores por cada espacio en la variable mbrazos.
  • Definimos 4 movimientos, adelante, atrás, derecha e izquierda. Generamos un vector nuevo de dos posiciones
  • Estas dos posiciones de los nuevos vectores, seran funciones de mbuff, mmov, que representan los datos obtenidos mediante los telecomandos y mmov que direccionara al movimiento especificado.
  • mpasos es el giro que se le asignara de el vector (0,2) y (0,3).
  • Creamos un while que se acondiciona verdadera, en cuanto cant sea menor que el numero de pasos.

/media/uploads/1016035478/26.png

SENSANDO COLORES

  • A continuacion se creara la funcion para sensar colores azul, rojo y verde.
  • Tendremos una variable dependiente llamada mediciones, en la que se almacenaran los datos recibidos .
  • Estos se reciben del emisor del sensor de color.

/media/uploads/1016035478/27.png /media/uploads/1016035478/28.png /media/uploads/1016035478/29.png

SEGUNDO COMANDO

  • El usuario cuenta con 4 comandos, ubicado en la posicion 2 cuando se envia el telecomando
  • Muestreo de funcionamiento

/media/uploads/1016035478/18.png

TERCER COMANDO

  • Manejo con joistick
  • Muestreo de funcionamiento

/media/uploads/1016035478/joystick.png

ESPECIFICACIONES SENSOR DE COLOR TCS3200

  • Alta resolución de conversión de luz a frecuencia.
  • Frecuencia de salida Programable en color y escala completa.
  • Se comunica directamente con un microcontrolador.
  • Voltaje de funcionamiento: 2.7-5.5 V.
  • Rango de error típicamente de 0,2% a 50 kHz.
  • Coeficiente de temperatura 200 ppm/°C .

PRINCIPIO DE FUNCIONAMIENTO

/media/uploads/1016035478/17.png

  • El TCS3200 va detectar colores rojo, verde y azul en el monitor serial se mostrara la cantidad de color y que color es si rojo, azul o verde.de acuerdo a unos rangos que nosotros definimos, estos deben ser previamente analizados por ustedes para ser definidos.

<FUNCION DE TERMINALES>

/media/uploads/1016035478/15.png

<<OPCIONES SELECCIONABLES>>

/media/uploads/1016035478/16.jpg

CONEXION JOYSTICK

/media/uploads/1016035478/joys_conexion.png

/media/uploads/1016035478/joystick_2.png

ENSAMBLE DE PIEZAS

/media/uploads/1016035478/win_20181003_21_07_35_pro.jpg

/media/uploads/1016035478/base.png

MONTAJE FISICO DE SERVOMOTORES

/media/uploads/1016035478/servo_ara.png

/media/uploads/1016035478/24.png


Please log in to post comments.