30.4.12

Introducción a la Robótica - Ruedas y Arquitecturas de Control

En este PDF de la Facultad de Ingeniería Eléctrica de la Universidad de Chile, se puede comprender y estudiar el funcionamiento y comportamiento de diversos tipos de ruedas y arreglos motrices según la complejidad y la necesidad que enfrentemos.
Además cuenta con un capitulo sobre Arquitecturas de Control para toma de desiciones y Arquitecturas de navegación para robots autónomos

Lo puedes descargar AQUI

23.4.12

Forklift-Bot Robot sigue lineas y monta cargas con Arduino

Bueno, siguiendo con los trabajos de robotica, el año pasado presente este robot a la competencia de robotica de la UTFSM que se realiza año a año y plantea un desafio a solucionar.
El robot principalmente consiste como se ve en las fotos de un montagarga de 2 ejes, controlado por correas adaptadas de un mecanismo de scanner. Se modifico los motores y se cambiaron por servomotores doblemente trucados. Se truco su velocidad, y se truco para que girara en 360 grados.

Las ruedas estan comandadas por 2 cajas de engranajes en el eje delantero y trasero y es guiado por 3 pares de ruedas de goma.

El sensor de lineas instalado en la parte inferior del robot esta compuesto por 6 sensores CNY70 y conectado a compuertas logicas que simplifican las entradas utilizadas del arduino que comanda.

El monta carga, esta controlado por finales de carrera de toque 2 en cada eje que indican al microcontrolado cuando detener el motor que avanza o retrocede la carga. Este, soporta aproximadamente una carga de 400gr en una carga de 30 x 30 app

En la parte delantera cuenta con 2 sensores CNY70 mas, que controlan que el robot no se salga de su area de trabajo y pueda caer por el borde.

Esta controlado por 2 arduinos, uno que controla los sensores de linea y las cajas de motores y el otro controla el sistema del monta carga, mas, los finales de carrera

Los motores estan controlados por Puentes H para la inversion de giro y control de velocidad mediante modulacion PWM















El control de PWM para la velocidad de las ruedas. En el osciloscopio se observa el ancho de pulso regulable.














El sistema de correa con engranages que controla el montacargas



El sistema de traccion de las ruedas, los sensores de lineas CNY70











El Robot ya terminado y en pruebas para funcionamiento. El robot funciona con 2 baterias de 6 volts para ser conectadas en serie y generar los 12 volts con que se alimentan las cajas de engranajes de las ruedas







Robot Terminado





















Descripción Hardware

2 Arduino UNO
2 mecanismos de tracción de scanner
2 servomotores modificados 360°
4 cajas de engranajes con motores CC
6 ruedas todo terreno
1 Sensor ultrasónico
10 sensores reflectivos B/N
2 batería Plomo-acido 6v 4Ah
4 finales de carrera

Problemas detectados en la construccion

Problemas de giro al ser 6 ruedas
Problemas de peso por las baterias eran de plomo
Problemas con las ruedas que no eran rellenas por lo que se deformaban por el peso

a pesar de ser un robot con muchas funciones, solo se encontraron problemas de los materiales y no tantos de diseño.

16.1.12

Modulo Serial con ATMEGA (arduino)

Como ya es conocido, existe un modulo que convierte las entradas paralelas del LCD en una conexión serial, la cual mediante un microcontrolador, recibe por el puerto serial los datos a mostrar en la pantalla y los convierte en paralelo. Este Modulo, que es desarrollado por SparkFun, cuesta alrededor de $14.000, por lo que sumado al costo del display LCD es muy caro.
Es por esto, que desarrollaremos un modulo similar con un Integrado ATMEGA que tenia con el bootloader de arduino, y diseñe un programa que mediante los mismos comandos del modulo de SparkFun pueda realizar la misma función.
Para esto se ocupa un Arduino, un cristal de 16KMHz, dos condensadores de 22pF, un ATMEGA168, y un display LCD mas una placa virgen.

 El diseño de la placa por debajo. se aprecia el ATMEGA y los pines de conexión del LCD

Con un Arduino se Programa el chip y luego se coloca en la placa diseñada, para esto hay que retirar el ATMEGA del Arduino que utilizaremos como programador.

 Con mucho cuidado de no doblar los pines.

 Se inserta en la placa, y se sueldan los componentes, el cristal los condensadores y el potenciometro de contraste.

El modulo serial montado en la pantalla LCD

 Se Programa otro arduino y se envía mediante serial al otro y este lo publica en la pantalla

Si interesa el código colocar un comentario y será publicado.

10.1.12

Registro de clave con Arduino Teclado numerico y LCD

Como el titulo lo dice, se desarrolal un programa que mediante un teclado numerico conectado a Arduino y un LCD Serial se ppida al usuario el ingreso de una clave de 6 caracteres. Esta, puede se cambiada mediante el codigo ****** el cual solicita ingresar la clave actual y luego la nueva clave de 6 caracteres igualmente.
Además, si el usuario ingresa 3 veces mal la contraseña, el terminal es bloqueado hasta que se presione el boton de reset de arduino.
El video explica mejor en detalle el sistema.



Para esto se utiliza
  • Un LCD 2x16 con modulo serial.
  • Un Arduino UNO
  •  Un Teclado numerico matricial de 3x4
 

Si juntamos todos los accesorios mas una tapa ciega metalica y le hacemos los correspondientes calados, se puede obtener un proyecto muy bien presentado y terminado para una instalación.


10.11.10

Quemar Bootloader de Atmega168 de Arduino

Hoy revisaremos como cargar nuevamente el Bootloader a nuestro Atmega168 de Arduino. Este problema puede darse debido a que el bootloader que viene de fabrica se haya dañado (no cargan los programas con el IDE) o por que hemos adquirido un nuevo chip para nuestro Arduino

Primero debemos crear el conexionado para llegar desde el USB hasta el conector ICSP. Debemos primero soldar un conector de 4 pines al espacio al lado de X3 escrito FT232RL en el PCB Diecimila. (Estas almohadillas están conectados a las clavijas de control de FT232RL.)
Removemos la soldadura para insertar el conector y lo soldamos por debajo

 
Descargamos los siguientes archivos a nuestro PC (Windows):

 Instalación 

avrdude-serjtag
 
Extrae serjtag-03.zip.
Copia "avrdude-serjtag" dentro de la carpeta "C:\Archivos de Programa" .

 Eliminar la carpeta "src" en la carpeta "avrdude-serjtag".

avrdude.conf avrdude.conf

Sobre escribe el archivo "avrdude.conf" en la carpeta "C: \ Archivos de programa \ avrdude-serjtag \ binario”. Con el que se obtiene al presionar el link anterior
Esta modificación "avrdude.conf" tienen ya creadas las secuencias de comandos de creación de "FTDI BitBang AVR-Writer" para Diecimila .

#arduino diecimila
programmer
  id="diecimila";
  desc = "FT232R Synchronous BitBang";
  type = ft245r;
  miso = 3;  # CTS X3(1)
  sck = 5;  # DSR X3(2)
  mosi = 6;  # DCD X3(3)
  reset = 7;  # RI X3(4)
;


avrdude-GUI (yuki-lab.jp Version)

Extrae avrdude-GUI-1.0.5.zip.
Copia la carpeta "avrdude-GUI-1.0.5" en la carpeta "C: \ Archivos de programa" .
Recuerda que avrdude-GUI requiere Microsoft .NET Framework 2.0.

Configuración
Abre la carpeta "C: \ Archivos de programa \ avrdude-GUI-1.0.5". y haz doble clic en el "avrdude-GUI.exe" para ejecutarlo.


La configuracion del  "GUI avrdude-" es la siguiente del I al IV.



(i) avrdude.exe
Haz clic en el icono . . .
Abrir la carpeta "C: \ Archivos de programa \ avrdude-serjtag \ binario".
Selecciona "avrdude.exe", y haz clic en el boton Abrir.

(ii)Programmer area.
Abrir y seleccionar "FT232R Synchronous BitBang (diecimila)".

(iii)Device
Haz clic en el icono. . .
Selecciona "ATMega168 (M168)".

(iv)Command line Option area
Haz clic en el cuadro de texto y escribe a continuación.

-P ft0 -B 4800

"-P ft0" es la configuración de puertos Bitbang y "B-4800" es el modo de configuración lenta del reloj.

Atención!
Debes dejar la zona de Puerto en blanco.


Cableado
Conecte los terminales del X3 con los pines ICSP por medio de cables como muestra la imagen siguiente



Conecta Diecimila al PC mediante un cable USB.
Ejecuta el avrdude-GUI.

Leer el bits del fusible.

Haz clic en el botón [Leer] de la zona de fusibles.  



Si el fusible bits se leen, se está trabajando.
Cuando se muestra un error, no funciona confirma el cableado y la puesta del avrdude-GUI.

Ejecutar por el modo de reloj rápido.
Eliminar "B-4800" de la zona de la línea de comandos opción. 
  Leer el fusible bits otra vez.
Si los bits del fusible se leen, se está trabajando en modo de reloj rápido.

Quemar el Bootloader.

Establecer el nuevo chip ATMega168. (en caso de querer quemar un nuevo chip, en caso de querer volver a cargar el bootloader saltar este paso)

  • Desconecta el cable USB de la Diecimila.
  • Retira el ATMega168 chip de la Deicimila-PCB.
  • Establecer el nuevo chip en el Decimila-PCB.
  •  Conecte el cable USB a la Diecimila nuevo.

Escribir el fusible-Bits.
Ajuste el modo de reloj lento.
Escribe "B-4800" al texto de Command line Option area
.
Atención! Un chip virgen no se puede ejecutar por el modo de reloj rápido.

Borrar
(1) Haz clic en el botón [Chip Erase].
(2) Haz clic en el botón [Read] de la zona de bits de bloqueo. El valor de bit de bloqueo que se debe mostrar es 3F.


Escribir el fusible-Bits.
(1) Coloca el bits del fusible de la siguiente manera. (Estos valores son sólo para ATMega168.)
hfuse = DD
lfuse = FF
efuse = 00
(2) Haz clic en el boton [Write] de la zona de fusibles.

Cambiar a modo de reloj rápido.
Eliminar "B-4800", la línea de comandos área opción y leer el fusible-Bits.
Cuando no lee los bits de fusibles, probablemente, había un error al establecer el fusible-Bits. Volver al modo de reloj lento. Y escribir el fusible-Bits como corresponde.
Preparación del Bootloader con el archivo hex.
Haga clic en el icono ... del área de Flash.
Abre la carpeta "C:\Program Files\arduino-0013\hardware\bootloaders\atmega168"
Seleccione "ATmegaBOOT_168_diecimila.hex", y haga clic en el boton Abrir

Quemado

Haz clic en el boton [Erase Write Verify] de la zona de Flash.
Espera hasta que el trabajo estará terminado.

Escribir el bit de bloqueo.
(1) Ajusta el bloqueo de bits de la siguiente manera.

Lock = 0F Bloqueo = 0F

(2) Writing
Haz clic en el [Write] botón de bloqueo de la zona de bits.

Con esto tenemos quemado el bootloader en nuestro Atmega168
Download avrdude.conf ( Update: it's included chip-parameter of ATmega328P) Descargar avrdude.conf (Actualización: que es incluido chip parámetro de ATmega328P)
Use these fuse-bits,lock-bit and .hex file as follows. Utilice estos fusibles bits, bits y bloqueo. Hex de la siguiente manera. (according to arduino-0013\hardware\board.txt) (De acuerdo con arduino-0013 \ hardware \ board.txt)
hfuse = DA hfuse = DA
lfuse = FF lfuse = FF
efuse = 05 eFUSE = 05
unlock = 3F desbloquear = 3F
lock = 0F bloqueo = 0F
bootloader .hex file gestor de arranque. hex
arduino-0013(or 0014)\hardware\bootloaders\atmega168\ATmegaBOOT_168_atmega328.hex arduino-0013 (o 0014) \ hardware \ gestores de arranque \ ATMega168 \ ATmegaBOOT_168_atmega328.hex

Confirmación.
Desconecta el cable USB del arduino Diecimila.
Retira los cables de ICSP y X3.
Conecta el cable USB para Diecimila nuevamente.
Pulse el botón de reinicio de Diecimila.
Ejecuta el Arudino-IDE
Carga el ejemplo "Blink". Y se llevará a cabo.

28.4.10

AMICI el programador gráfico para Arduino

Alguna vez programaste un Lego Mindstorm con el programador grafico?. Algo tan simple como arrastrar bloques y unirlos segun la secuencia que quieres que cumpla tu programa una y otra vez.
Bueno ahora tienes Amici algo similar al programa antes mencionado pero para Arduino. Todo en una simple aplicacion disponible para Windows y MAC en 4 lenguajes, incluido el Español
Lo puedes descargar haciendo click aqui : Windows - Mac

Fuente: http://dimeb.informatik.uni-bremen.de/eduwear/?cat=4

27.4.10

Como elejir el Motor de nuestro Robot..

Muy pocas veces se tienen los conocimientos para poder elegir el motor que dará la movilidad a nuestro robot, y aveces nos da mas que un dolor de cabeza que al terminar de ensamblar las piezas sensores y accesorios nuestro robot tiene una movilidad deficiente o en algunos casos nula.

Es por esto que aquí en arduibots te daremos unos consejos y formulas rápidas para calcular el motor que debe tener tu robot revisando parámetros asociados al diseño.

Parámetros y unidades del motor

Los motores eléctricos tienen asociados una serie de parámetros de los cuales la velocidad, el par y la eficiencia son los más importantes.
La velocidad de un motor siempre se considera velocidad angular y se puede medir en revoluciones por minuto (RPM) o revoluciones por segundo (RPS) siendo estas unidades el número de vueltas que el eje del motor da por unidad de tiempo.
Por otra parte el par se mide la fuerza que hay que hacer para mover un peso a una determinada distancia. Supongamos dos casos:
  • Un palo de 20 cm de distancia con un peso de 1 kg en su extremo.
  • Un palo de 10 cm de distancia con un peso de 2 kg en su extremo.
Si intentásemos mover ambos palos desde el extremo opuesto al peso haciéndolo rotar nos daríamos cuenta que utilizamos la misma fuerza para moverlos. Este es el principio del par:

Par (P) = Fuerza (F) * Distancia (d)

Su unidades de medidas suelen ser Newtons por metro (N•m) o Onzas por pulgada (Oz•in). Aquí podeis encontrar una completa calculadora para cambiar las unidades de par:
Normalmente en las hojas de caracteristicas de los motores encontraremos dos tipos de par.
  • Par de bloqueo: Se refiere al par máximo que el motor puede ejercer cuando está parado. Indica el par máximo que es capaz de ejercer el motor para comenzar el movimiento.
  • Par nominal: Es el par máximo que puede ejercer el motor a velocidad nominal. Esta velocidad es la velocidad de funcionamiento para la cual el motor ha sido diseñado.
Por último, la eficiencia es un parámetro que relaciona la energía eléctrica utilizada y energía mecánica desarrollada. Como en todo movimiento, existe una perdida energética, como puede ser el rozamiento. Se expresa en porcentaje.

Parámetros del robot

 

Para determinar si un robot es capaz de desplazarse necesitaremos conocer:
  • Peso total del robot.
  • Radio de las ruedas motrices.
  • Número de ruedas.
  • Rozamiento de las ruedas.
  • Velocidad esperada.
  • Aceleración esperada.
El diámetro de las ruedas, influirá directamente sobre el par y la velocidad del motor, ya que cuanto mayor sea el radio de la rueda, mayor será la velocidad final y menor la fuerza ejercida por el motor y viceversa.

Par (P) = Fuerza (F) * Radio rueda (r)
Velocidad (V) = Velocidad angular motor (ω) * 2 * π * Radio rueda (r)

Supongamos que deseamos que nuestro robot se mueva a 0,5 m/s y tenemos una rueda de 20cm. Necesitaríamos un motor con una velocidad angular de:

ω = V / (2 * π * r) = 0,5 / (2 * π * 0,02) = 3,48 rps = 238,73 rpm

La aceración es un parámetro al que no se le suele dar la importancia que tiene. Imaginemos que tenemos un motor que es capaz de mover a nuestro robot pero que alcanza su velocidad máxima en 15 segundos. Seguramente no estaremos satisfechos con su comportamiento. Por ello es aconsejable que la aceleración no sea inferior a la mitad de la velocidad nominal.
El momento es otro parámetro de interés que nos da una idea de cómo de ágil es nuestro robot ya que representa la facilidad que tiene para cambiar de dirección y/o velocidad. Viene definido por:

Momento = Masa (M) * Velovidad (V)

Condición de movimiento
Para calcular la aceleración de nuestro robot tendremos en cuenta que:
Fuerza (F) = Masa (M) * Aceleración (a)
Dado que nuestro motor nos da una fuerza en función del tamaño de la rueda:
Fuerza (F) = Par (P) / Radio rueda (r)
Teniendo en cuenta que obtendremos una fuerza directamente proporcional al numero de motores que utilicemos, obtenemos que:

Aceleración (a) = Nº Motores (n) * Par (P) / ( Radio rueda (r) * Masa (M) )

Condición de movimiento

 

Para que el robot sea capaz de moverse debemos conseguir que la potencia capaz del entregar el motor sea mayor que la potencia mecánica del robot.
Pm >Pr
Donde la potencia de un motor se define por:
Pm = Par (P) * Velocidad (ω)
Y la potencia mecánica de un robot se define por:

Pr = Masa (M) * Aceleración (a) * Velocidad (V) / ( Eficiencia (e) * 2 * π)

Para realizar todos estos cálculos de forma fácil disponemos de calculadora que hara todos los cálculos por nosotros aquí

Cálculos para evitar derrapes


Hay dos situaciones muy degradables que se pueden producir en un robot desde el punto de vista no solo mecánico, sino del control.
El derrape ocurre cuando la fuerza de rozamiento en una rueda no es suficiente como para transmitir la velocidad del robot a la superficie. Por lo tanto si

Fuerza rozamiento (Fr) = Coeficiente rozamiento (u) * Masa (M) * Gravedad (g)
Fuerza (F) = Masa (M) * Aceleración (a)

Por lo tanto, la máxima aceleración que es capaz de asumir la rueda será de:

Aceleración (a) = Fuerza (Fr) / Masa (M) = Coeficiente de rozamiento (u) * Gravedad (g)

Donde la masa es la proporción de masa que recae en las ruedas motrices. Si esto lo unimos al cálculo de la aceleración lineal de los motores:

Aceleración (a) = Nº Motores (n) * Par (P) / (Radio rueda (r) * Masa (M) )
Obtenemos que el par máximo útil es:

Par (P) = Coeficiente rozamiento (u) * Gravedad (g) * Radio rueda (r) * Masa (M) / Nº Motores (n)

Visto desde otro punto de vista, si la fuerza de rozamiento fuese menor que el par llegaríamos a esta misma conclusión.

Fuerza rozamiento (Fr) = Coeficiente de rozamiento (u) * Masa (M) * Gravedad (g)
Par (P) = Fuerza (F) * Radio rueda (r)

Entonces:

Par (P) = Coeficiente rozamiento (u) * Masa (M) * Gravedad (g) * Radio rueda (r)

Fuentes: