Archivo de la categoría: ArduRover

Midiendo Sensores

He decidido dotar al ArduRover de tres entradas analógicas para poder medir y representar sensores externo que se conecten a él.

Es una evolución de la anterior entrada. En esta ocasión, doto al programa de un panel de configuración, para que se pueda personalizar las medidas que se realicen.

Configuración

Como podemos ver se puede configurar el nombre del sensor a representar, el valor de aviso(por si queremos que al llegar a un valor dado nos avise), si se representa o no, el valor máximo en la escala y un último valor que ajustará los valores recibidos a una escala real de medición.

Si conectásemos el sensor siguiente, el valor de conversión sería -> 0.4882

lm35.png

Continuamos con la posibilidad de almacenar los valores en una hoja de Excel, para su posterior análisis.

La programación con VB es casi idéntica al realizado en la entrada “Conociendo el Estado de los Sensores” y el posterior “ Exportando a Excel los valores”  con unos pequeños ajustes para parametrizar las medidas.

Una mejora que puede dar muy buen resultado es realizar una media de diez mediciones antes de enviar el valor desde Arduino a la aplicación, con esta minimizamos parte de los errores por ruido.

Esquema Práctico del Sensor LM35:

Medir_Temperaturas_Sensor

Esquema Práctico de las Entradas Analógicas:

Esquema_Practico

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Hembra Soporte Hembra 1
Macho Soporte Macho 1
Pasamuros Porta Soporte 2

 

Extracto del Programa Arduino:

codigo_Arduino

 

 

Fotos:

Arriba_01

Vista SuperiorArriba_02

Detalle con sensores

frontal_01

Primer plano

VB_01

Visión General del Programa

Configuración

Detalle del Panel de Configuración

Código Fuente  Arduino Completo

Midiendo.ino

Proyecto VB 2015

Sensores de Entrada.zip

Vídeo resumen:

 

 

 

 

 

 

Anuncios

Exportando a Excel los valores

Esta entrada es una evolución de la anterior y por ello voy a ser un poco más conciso de lo habitual, considerando que ya habéis leído la anterior( Conociendo el Estado de los Sensores)

Lo novedoso es que sobre una misma gráfica pueden ser representados más de un valor y que los valores los almaceno en una tabla que luego la exporto a Excel.

Este proyecto está diseñado para aquellos casos donde sea necesario dejar una sonda y medir su estado a lo largo del tiempo con un máximo de medidas de 590 datos. Con el control del tiempo entre medidas podemos calcular los datos necesario o sabiendo los datos calcular el tiempo entre medidas

Declaración de Variables

Declaracion_de_Variables

Procedimiento obtener los datos

Obtener_Datos

Botón de inicio/fin de la obtención de datos

Medir

Botón de inicio de la exportación de los datos a Excel

Grabar_Datos_01

Procedimientos de exportación a Excel

Grabar_Datos_02

Fotos

Instantánea - 4

Pantallazo del Programa

Frente

Sensores LDR

Código Fuente  Arduino Completo

Comunicando.ino

Proyecto VB 2015

ArduRover-Excel.zip

Ficha del Proyecto:

Exportar_a_Excel_Ficha_41

Vídeo resumen:

 

 

Conociendo el Estado de los Sensores

Llevaba mucho tiempo queriendo realizar una entrada con programación en VB, al actualizarme a VB 2015 me ha parecido un buen momento para realizarlo.

Os dejo esta entrada donde realizo un programa que capta los datos de todos los sensores que hasta ahora tengo en el Rover y los representa de distintas maneras.

Los módulos son paramétricos y pueden ser exportados a casi cualquier proyecto.

Creo que al realizar una programación modular, queda bastante claro como lo he realizado, no obstante más abajo he puesto todo el proyecto para que podáis descargarlo. Si algo no queda claro( que seguro que hay), contármelo y si puedo os ayudaré.

Abrir Puerto de Comunicación

Abrir_Puerto_Comunicacion

Procedimiento de Obtención de Datos de los Sensores

Procedimiento_ObtenerDatos

Procedimiento de Representación de Datos Tipo Vúmetro

Procedimiento_Medidor_Vumetro

Procedimiento de Representación de Datos Tipo Analógico

Procedimiento_Medidor_Analogico

Modulo de Representación Gráfica de Datos

Procedimiento_Grafica

Procedimiento de Representación de Datos Tipo On/Off

Procedimiento_Medidor_Sensores

Extracto del Programa Arduino:

Codigo_Arduino

Fotos:

Pantalla_02

Ejemplo de Instantánea de Pantalla

Pantalla_01

Otro Ejemplo de Instantánea de Pantalla

Código Fuente  Arduino Completo

Comunicando.ino

Proyecto VB 2015

ComunicacionArduino.zip

Ficha del Proyecto:

Comunicación_Visual Basic_Ficha_40

Vídeo resumen:

ArduRover puede Seguir Líneas

¿Qué pretendo realizar?

Básicamente lo que pretendo realizar es que el Rover sea capaz de desplazarse a lo largo de una línea de un color negro diferente al fondo blanco, para ello he colocado cuatro sensores, de los que en principio solo utilizaré dos.

El funcionamiento básicamente consta de tres ordenes y son las siguientes:

BD14866_ Los dos sensores están sobre la línea, avanzamos

BD14866_ El sensor de la derecha ha salido de la línea, giramos hacia la izquierda

BD14866_ El sensor de la izquierda ha salido de la línea, giramos hacia la derecha

BD14866_ Los dos sensores están fuera de la línea, sigue con lo que estabas realizando.

Teoria_Sigue_lineas

Para ampliar información – pulsa aquí

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Soporte_CNY70 Soporte CNY70 1
Porta_Soperte_CNY70 Porta Soporte 2

 

Bloque Sigue Líneas

Metodo_SigueLineas

Esquema Parcial Teórico:

Circuito_ArduRover_Sigue_Lineas

Esquema Práctico Simplificado:

Extracto_Placa_1_ArduRover_XI

Extracto del Programa Arduino:

Codigo_ArduroverXI

Fotos:

Frontal

Frontal

Detalle_DelanteroSC_1939

Detalle Frontal

Panza

Panza

Detalle_Panza

Detalle Panza

Código fuente Completo

ArduRover_Sigue_Lineas.ino

APP de Proyecto:

ArduRover_XI.apk

Ficha del Proyecto:

ArduRover_XI_Sigue_Linea_Ficha_39

Vídeo resumen:

 

Controlar el Brazo Robot con Android

Controlar el Brazo Robótico con la App diseñada.

Como continuación a la entrada anterior he seguido diseñando partes del brazo robot que quiero para el ArduRover, he introducido un grado más de libertad y he diseñado la interfaz que lo controla.

La primera dificultad que me he encontrado es la alimentación con la suficiente energía para abastecer a los cuatro servos. La solución aunque no muy buena, es utilizar un 7806 cuya alimentación proviene directamente de las baterías del ArduRover y a través de el alimentar los servos.

Las características del 7806 son muy parecidas a las del ya utilizado 7805, pero con tensión de salida 6 voltios. Al aumentar la tensión el requerimiento de intensidad es menor y si disponemos de un buen refrigerador(en mi caso no lo he puesto aunque es necesario)solucionaremos el problema.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Base Muñeca 1
Muñeca 1
Lateral Brazo 4
Repy 1.1 Head 2
Repy 1.1 Body 2

Transmisión de datos entre Android y Arduino:

cuadro

En principio y de manera muy resumida el funcionamiento de la transmisión de los datos de la posición que definimos en el programa desde la Tablet al ArduRover es el siguiente:

  • Definimos la posición de cada servo
  • Memorizamos dichas posiciones en unas variables
  • Transmitimos una “F” y a continuación una cadena separada con el carácter “;” con todas las variables anteriores por Bluetooth
  • Arduino recibe la cadena, la separa y asigna a cada servo la posición futura
  • Mediante el procedimiento “posicionServo” los servos recorren desde la posición actual hasta la futura. Con esto los movimientos son más suaves

Los procedimientos “recibirCadenaServo”, “valorServos” y “posicionar” podrían haberse juntado, pero por claridad los he separado

He incluido la posibilidad de memorizar cuatro posiciones del brazo robot para dar mayor funcionalidad a la interfaz

Bloques de Memorizar posición

MemoriaServo

Bloques de Grabar la Posición de los Servos

GrabarPosicion

Bloques de Transmisión de la posición de los servos al Arduino

EnviarPosicion

Esquema Teórico:

 Brazo_Android_Esquema_electrico

Esquema Práctico:

Placa_1_ArduRover_6_bb_Fin

Extracto del Programa Arduino:

Extracto_de_Codigo

Fotos:

Pantalla_01

Pantalla Principal

Pantalla_05

Pantalla de control del Brazo Robot

Brazo_Plegado

Vista con el Brazo Plegado

Brazo_Extendido

Vista con el Brazo Extendido

Detalle

Detalle de conexión

Código fuente

ArduRover_Brazo_Robot.ino

APP de Proyecto:

ArduRover_X.apk

Ficha del Proyecto:

ArduRover_X_Ficha_38 

Vídeo resumen:

 

Brazo Robot

Realización de un brazo Robótico.

Como continuación a la entrada anterior he seguido diseñando partes del brazo robot que quiero para el ArduRover. Como os comenté, las piezas las he diseñado con el programa “FreeCad” y las he impreso con la impresora 3D “BQ Prusa i3 Hephestos”.

De la web de “Juan González Gómez” he utilizado los “Módulos Y1” nuevos y basándome en ellos he desarrollado las nuevas piezas.

He utilizado un programa para cargar los objetos y crear el archivo que tras grabarlo en una SD lo imprimira la impresora.

Cura_Brazo_Robot

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Base Muñeca 1
Muñeca 1
Lateral Brazo 2
Repy 1.1 Head 1
Repy 1.1 Body 1

Faltaría la articulación del hombre que en un futuro deberé decidirlo.

Esquema Teórico:

 Brazo_Esquema_electrico

Esquema Práctico:

Servos_Brazo_Robot_bb

Programa Arduino:

Codigo

Fotos:

ArduRover_Brazo_Robot_Vista_Lateral

Vista Lateral

ArduRover_Brazo_Robot_Vista_Latera2l

Otra vista Lateral

ArduRover_Brazo_Robot_Detalle_01

Detalle codo

ArduRover_Brazo_Robot_Detalle_03

Detalle brazo

ArduRover_Brazo_Robot_Detalle_02

Detalle Muñeca

ArduRover_Brazo_Robot_Vista_Superior

Vista Superior

ArduRover_Brazo_Robot

Vista 360 grados

Código fuente

 ArduRover_Brazo_Robot.ino

Ficha del Proyecto:

 ArduRover_X_Ficha_37

Vídeo resumen:

Pinza de Agarre

Realización de una Pinza para un brazo Robótico.

Una de las pretensiones que al principio propuse para el ArduRover, era que tuviese un brazo robotizado, pues bien, me he puesto manos a la obra y después de ver muchos modelos, me he decidido por una variación de uno que vi en “thingiverse“; esta web tiene a disposición de los usuarios un montón de objetos en 3D (os la recomiendo).

Las piezas las he  diseñado con el programa “FreeCad” y las he impreso con la impresora 3D “BQ Prusa i3 Hephestos”.

He utilizado un programa para cargar los objetos y crear el archivo que tras grabarlo en una SD lo imprimira la impresora.

Impresion_3D

 Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Base Base 1
Engranaje01 Engranaje 1 1
Engranaje02 Engranaje 2 1
Garra Garra 3
Union_Pieza
Unión entre Piezas 3
Suplemento01
Suplemento 1 1
Suplemento02 Suplemento 2 1

Como podéis ver, esto solo es la pinza, en el futuro deberé pensar cuantos grados de libertad quiero dar al brazo robotizado y diseñarlo.

Esquema Teórico:

Control_Pinza_Esquema

Esquema Práctico:

 

Control_Pinza_bb

Programa Arduino:

Pinza_Robot_Codigo

Fotos:

DSC_1772

Perceptiva

DSC_1770

Vista de Frente

 

DSC_1768

Vista Lateral

 

DSC_1765Vista Trasera

DSC_1764

Vista Superior

Código fuente

Control_Pinza.ino

Ficha del Proyecto:

ArduRover_X_Ficha_36

Vídeo resumen:

 

ArduRover IX (Calibración)

Realizando unas pruebas para calibrar el recorrido.

Para convertir los pasos a distancia real, se debe realizar unas medidas para determinar a cuanto equivale cada paso. Debido a que la precisión del Rover y la electrónica empleada no es muy precisa, se hace necesario un proceso de calibración.

He escogido para realizar el proceso de calibración el método de “Ajuste por Mínimos Cuadrados”.

El método consiste en someter al Rover a diferentes medidas, fijando para ello distintos valores de los pasos (variable independiente x), y anotando en cada caso el correspondiente valor medido en mm. (variable dependiente). De este modo se dispone de una serie de puntos (x1,y1)…(xn,yn)que, representados gráficamente, deberían caer sobre una línea recta de la forma siguiente “ y= ax+b“. Sin embargo, los errores experimentales siempre presentes hacen que no se hallen perfectamente alineados. El método de mínimos cuadrados determina los valores de los parámetros a y b de la recta que mejor se ajusta a los datos experimentales.

Medidas, Graficas y Rectas de Calibración.

Grafica_Marcha_Atras

Medición realizada con los motores en avance

Grafica_Marcha_Adelante

 Medición realizada con los motores en retroceso.

Como se puede observa la pendiente de la recta no es muy mala, pero existe un desplazamiento (b) de unos 4 cm. Esto puede ser debido a la inercia de la parada de los motores. Hay que tener en cuenta también en los errores de medida, pues los he realizado con un metro de los de bricolaje normal.

De lo que se trata no es de realizar una calibración muy precisa, sino de mostrar un método de calibración del Rover, que cuanto mas precisos seamos en las medidas y corrijamos el avance debido a la inercia (cortando unas decimas de segundo antes) mayor será la precisión en el camino a recorrer.

Archivo Excel:

Curva_de_Calibracion

Video de la realización de una curva de Calibración:

…………………………..

ArduRover VIII (Creando Recorridos)

Creación de un Recorrido Definido.

Esta parte del proyecto es continuación de los proyectos anteriores  y trata de crear un recorrido como suma de secuencias de movimientos que se grabarán en un registro.

Para ello, lo primero que hay que realizar, son los procedimientos básico para la gestión de una BD:

Añadir un Registro

Eliminar un Registro

Modificar un Registro

Para ello, he creado una lista y la he manejado utilizado las funciones que nos ofrece App Inventor  sobre “TinyDB”.

Una vez terminada esta labor, lo siguiente en realizar la sincronización de la secuencia a utilizar, para ello, he utilizado un sistema de sincronización que se basa en la siguiente secuencia:

La aplicación envía una orden a ejecutar y espera respuesta.

Arduino ejecuta la orden, y cuando acaba envía a la aplicación “OK”

Cuando la aplicación lo recibe, pasa a la siguiente orden.

Esto acaba con el ultimo registro grabado

Como podéis ver he implementado cuatro botones de recorridos, aunque solo está habilitado el primero, dejando para un futuro la implementación de cuatro posibles recorridos.

Diagrama de Flujo del Funcionamiento de Arduino al recibir una Orden

Presentación_Recorrido

SCREEN 1

Pantalla1SCREEN 2

Pantalla2
SCREEN 3

Pantalla3

SCREEN 4

Pantalla4Bloque de Inicialización

Bloque_Inicializacion

Bloques del Control de Registros

Bloque_Reguistro_Recorrido

Bloques Ejecutar Recorrido del Registro

Bloques_Recorridos

Esquema Teórico Parcial:

Sensor_Hall

Esquema Práctico:

Placa_1_ArduRover_Codificador_Hall

Modificación del Programa Arduino:

Extracto_Codigo_Recorrido

Fotos:

Vista_General

Vista General

DetalleDetalle de las conexiones

TabletPantalla Tablet

—————-

Código fuente

ArduRover_Recorridos.ino

APP de Proyecto:

APP ArduRover_VIII.apk

Ficha del Proyecto:

ArduRover_VIII_Ficha_35

Vídeo resumen:

ArduRover VII Codificadores

Codificando Interrupciones

La realización de esta parte del proyecto es continuación de los proyectos anteriores , se trata de seguir incorporando funcionalidades nuevas al Rover. En este caso he incorporado la posibilidad de realizar los cuatro movimientos básicos con un codificador “Hall”, de manera que puedo elegir, la distancia del movimiento. En un proyecto futuro se podrá confeccionar un recorrido definido y realizarlo con un alto nivel de precisión.

Codificador_Hall

He utilizado las posibilidades que me brinda la placa Arduino en cuanto a la programación de Interrupciones.

Interrupciones_Arduino

Las interrupciones son un método del que disponen Arduino para hacer notar al procesador la aparición de alguna circunstancia que requiera su intervención. De este modo, el dispositivos que ha realizado la interrupción pueden provocar que el procesador deje por el momento la tarea que estaba realizando y atienda la interrupción, una vez atendida, seguirá con su labor anterior. Las interrupciones son útiles para hacer que las cosas que sucedan automáticamente puedan ser atendidas de inmediato sin necesidad de ir consultando regularmente el estado de ese suceso, estas puedan ayudar a resolver problemas de temporización y son buenas para leer un encoder rotacionales, monitorizando la entrada del usuario, sin perder nunca un pulso.

Para comprender un poco mejor como funciona las interrupciones en Arduino, podéis visitar la entrada que realicé con el proyecto “Interrupciones

SCREEN 1

Pantalla1SCREEN 2

Pantalla2
SCREEN 3

Pantalla3

Código de la Función Contador de Pasos

Codigo_Contador_de_Pasos

Código de la Función PasosAPaso

Codigo_PasoAPaso

Bloques del Cambio entre Pantallas

Botones_Cambio_de_Pantallas

Bloques de la selección de la función a realizar (Dirección) 

Cambio_de_Direccion

Bloques de los pasos a caminar 

Ir

Esquema Teórico Parcial:

Sensor_Hall

Esquema Práctico:

Placa_1_ArduRover_Codificador_Hall

Código Parcial del Programa Arduino:

Codigo_Codificadores

Fotos:

Vista_General

Vista General

DetalleDetalle de las conexiones

Tablet_01Pantalla Principal

Tablet_02Pantalla de Programación por Pasos

Código fuente

ArduRover_Codificador_de_cuadratura.ino

APP de Proyecto:

APP ArduRover_VII.apk

Ficha del Proyecto:

ArduRover_VII_Ficha_34

Vídeo resumen: