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:

Robot Explorador HEX-4

Bueno, segundo proyecto que explicare paso a paso aquí en arduibots. Este explorer, tiene como objetivo lograr entregar información útil del lugar en donde se encuentra, por ejemplo presión atmosférica, temperatura ambiente, imagen del lugar en 180°, distancias referenciales del robot hacia algún punto de la imagen, luminosidad ambiental, etc.

Todo esto será controlado inalambricamente a través de una aplicación en Visual Basic 6 por medio de comunicación Serial.
Utilizaremos por segunda vez, las ruedas Oruga utilizadas en el proyecto anterior, y trabajaremos también en acrílico gris.
Como tracción utilizaremos dos motores de CC, cada uno con su respectiva caja reductora, la cual puede ser configutrada en velocidad rápida y lenta.
Pronto agregaré mas avances del proyecto, que incluye la implementación de todos los sensores, y avances en el chasis del robot