domingo, 22 de junio de 2008

pi-pi pi-pipi pipipipi...

El prototipo cada vez está más perfilado. Por último, hemos incorporado el sonido.

Para ello tan sólo hemos tenido que definir una salida analógica de salida más y ligar un zumbador de PC a esta, cuando queremos que suene, solo tenemos que generar una salida analógica i obtendremos el sonido del zumbador.

El código utilizado es el siguiente:

int zumbador = 11;

void setup(){

Serial.begin(115200){
// y demás.... opciones de configuracion del bluetooth

pinMode(zumbador, OUTPUT);

}

void loop(){
analogWrite(zumbador,200);
}

jueves, 12 de junio de 2008

Fin de semana de carreras...

Montamos las tres pilas en serie alimentando la placa Arduino, obteniendo el siguiente montaje:


Utilizaremos el programa citado anteriormente para obtener los siguientes resultados:




Como se puede ver claramente, el problema era el que habíamos previsto y está solventado.

Nos movemos !

Soluciones a la falta de pilas...

Para solventar el "supuesto" problema necesitamos mas tensión en el sistema, pero recordando las especificaciones de Arduino, que anoto seguidamente...

Don't power the board with more than 5.5 volts to the or reverse the polarity (power and ground pins) of your power supply, or you might kill the ATmega168 on the Arduino BT

... , vemos que la máxima tensión a la que podemos llegar es 4,5 Voltios.

Nuestra previsión de compras nos hizo comprar un serie para 6 pilas, sin embargo, no podemos entrar más de 3, por lo que tenemos que buscar soluciones !

Observando el artilugio, vemos que tan solo sigue la corriente en serie por las seis pilas, por lo que si hacemos un puente entre 3 posiciones podremos obtener los 4,5 V de las otras tres posiciones, en las imagenes inferiores podemos ver que para hacerlo utilizamos un pequeño cable.


Para probar que los resultados son los que pensábamos, utilizamos un multímetro que nos demuestra que tenemos los 4,5 V que necesitamos, ahora tan sólo falta probar nuestra teoría.

Llega el fin de semana, no tenemos pilas...

Primero, montamos la placa siguiendo el esquema de la anterior entrada. Utilizamos el chip L293D para controlar el motor y seguimos con la alimentación de 3 Voltios.

A continuación, le cargamos la siguiente aplicación (muy simple) a la Arduino:

int pin9 = 9;

void setup() {
pinMode(pin9,OUTPUT);
Serial.begin(115200);
delay(2000);
Serial.println("SET BT PAGEMODE 3 2000 1");
Serial.println("SET BT NAME ARDUINOBT");
Serial.println("SET BT ROLE 0 f 7d00");
Serial.println("SET CONTROL ECHO 0");
Serial.println("SET BT AUTH * 12345");
Serial.println("SET CONTROL ESCAPE - 00 1");
Serial.println("SET CONTROL BAUD 115200,8n1");
}

void loop () {
analogWrite(pin9, 200);
delay(5000);
analogWrite(pin9, 0);
delay(5000);
}

Con esta aplicación, conseguimos que el motor se encienda y se pare en intervalos de 5 segundos.

Sin embargo, el montaje no resulta, y creemos que puede ser por falta de voltaje. Nuestra teoría es que, al encender el motor, este consume gran parte de los 3 Voltios que tenemos en el sistema, dejando a la placa Arduino "vacía", por lo que se "resetea" y no nos deja probar que nuestro sencillo código funciona !

martes, 10 de junio de 2008

Nos ponemos en marcha 2...

Anteriormente, se debatía la manera en la que se podía utilizar la placa Arduino para alimentar un motor DC y controlar su actividad. Ahora, ya contamos con el material para solventarlo.

Por un lado, como podemos ver a la derecha de la imagen ya tenemos el integrado L 293 D, que nos permitira controlar los motores de continua mediante la placa Arduino.

Por el otro , a la izquierda de la imagen tenemos un serie de seis pilas de 1.5V, dado que necesitaremos más de los tres voltios actuales para alimentar los motores.

jueves, 5 de junio de 2008

¡¡¡Tenemos el control!!!

Control o Driver de un motor de continua:

Los dos parámetros que queremos controlar de un motor de continua, es su dirección de giro y su velocidad. La dirección se controla cambiando su polaridad. En cambio, para su velocidad, debemos utilizar la técnica de modulación por ancho de pulso-PWM.

Aquí hay algunos gráficos donde se muestra la relación entre la señal de pulsos (PWM) y el voltage efectivo:

Cuando el tiempo que el pulso está activo es la mitad del periodo de la señal o el parámetro duty cycle está al 50%, el voltage efectivo es la mitad del voltage total de entrada.

Cuando el duty cycle es reducido al 25%, el voltage efectivo es un cuarto del voltage total de entrada. Entonces la velocidad del motor disminuye.

De esta forma controlando el duty cycle o el tiempo que el pulso está activo (frecuencia), podemos controlar la velocidad del motor de continua.

Una forma de realizar dicho control en Arduino, es utilizando la salida analógica PWM. Hay que recordar que la señal de salida PWM (pines 9,10) es una señal de frecuencia constante (30769 Hz) y que sólo nos permite cambiar el "duty cycle" o el tiempo que el pulso está activo (on) o inactivo (off), utilizando la función analogWrite().

La otra forma es generando señales PWM utilizando la capacidad del microprocesador a través de la función digitalWrite ().

Si queremos controlar simultáneamente la velocidad y dirección de un motor, necesitamos utilizar un circuito integrado o chip llamado de forma general como "puentes H", por ejemplo como el L293D.

Nos ponemos en marcha...

Una vez solventado el problema de la comunicación, el siguiente paso es conseguir mover a nuestro despertador.

Para ello poseemos un motor de continua, aunque para la implementación final querríamos tener dos para poder crear trayectorias con ambos.

En cuanto a la implementación con un motor, la idea que tenemos es seguir el siguiente esquema:


Aunque este diseño no sea para nuestra placa, ArduinoBT conserva muchas similitudes con Wiring que nos pueden facilitar la implementación de un prototipo.

Analizando esta idea, nos encontramos con el problema de que las salidas de Arduino no nos proporcionan tensión suficiente para alimentar a un motor DC como el que tenemos.

Para solventar este obstáculo, usaremos el chip L 293 D, que es un circuito integrado que puede ser utilizado para controlar simultáneamente la velocidad y dirección de dos motores de continua.

domingo, 1 de junio de 2008

Conociendonos... más pruebas

Después de realizar numerosas pruebas, vamos intimando con Arduino, consiguiendo conocer las comunicaciones que nos ofrece dicha placa. En este post intentaremos esclarecer algunos detalles no comentados anteriormente sobre como cargar una aplicación dentro de la placa.

El bluetooth que tiene Arduino puede tener muchas utilidades, entre las que se encuentra la posibilidad de cargar una aplicación propia en la placa. Para ello deberemos seguir algunos pasos:

1) Desarrollar programa básico y compilarlo:

Lo primero que tenemos que hacer es crear un código en el IDE de Arduino y compilarlo para generar un archivo .hex, que posteriormente cargaremos en la placa.

El código básico para generar esta imagen es el siguiente:


2) Realizar la conexión Bluetooth entre el PC y la placa Arduino:

Mediante un usb bluetooth hemos establecido una conexión con la placa Arduino.

3) Resetear la placa y cardar la imagen a Arduino:

Por último, tenemos que resetear la placa pulsando el botón que hay en ella y, inmediatamente después cargar la imagen desde el IDE como podemos ver en la imagen inferior, cuando la imagen se haya descargado el IDE nos lo notificará.


Con esto cerramos la problemática de comunicaciones bluetooth con la placa Arduino.

jueves, 29 de mayo de 2008

¡¡¡Enciendan Motores que arrancamos!!!

Ya hemos hecho la segunda prueba, y esta ya es mas o menos importante, hemos connectado la Arduino al motor, y FUNCIONA!!!

jueves, 22 de mayo de 2008

Conociendonos... primeras pruebas

Hemos realizado las primeras comunicaciones con la ArduinoBT.

Primero hemos comprado un dongle USB Bluetooth y lo hemos instalado en un portátil para poder realizar la conexión. Abajo podemos ver una captura del software que nos ha permitido emparejar nuestro Usb con la placa Arduino.

Una vez tenemos los dispositivos conectados, nos hemos instalado el IDE de Arduino, que podemos ver en la captura inferior.


Ahora escribimos el siguiente código en el IDE. En resumen, define un pin como salida digital y lo cambia de estado cada cierto retardo.

#include "WProgram.h"

int ledPin = 13;
//definimos el pin numero trece como un entero llamado ledPin

void setup(){

pinMode(ledPin,OUTPUT); // en la carga inicial definimos ledPin como una salida digital
}
void loop(){
digitalWrite(ledPin,HIGH);
//creamos una rutina iterativa que enciende y apaga ledPin
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}


En la placa, hemos puesto un led en el pin 13.


Para volcar el programa que tenemos escrito en el IDE, debemos cargar el archivo compilado con el botón load del IDE.

El programa se transferirá en nuestra placa y se quedara ejecutandose de manera indefinida hasta que la placa se apague o le transfiramos otro programa.

Para acabar, hemos grabado un pequeño video que permite ver como funciona la placa, espero que sea de vuestro agrado !

Montaje básico Arduino

Hemos conseguido alimentar la placa Arduino utilizando la fuente de alimentación que nos proporciona el kit de k'nex.

En la fuente tenemos dos pilas de 1.5V en serie, que nos dan los 3 V que necesitamos.

En la imagen inferior podemos ver el resultado del montaje.


Esqueleto

Como podéis ver en la imagen hemos decidido recurrir a los juegos de niños para montar nuestra estructura. La estructura esta compuesta por las dos ruedas traseras las cuales tiene cada una de ellas un motor DC alimentadas por 2 pilas de AA (LR6) de 1,5V . Hemos elegido la estructura esta ya que nos permite tener mejor distribución de los componentes que necesitamos para nuestro proyecto, ya que se puede ir variando según lo necesitemos.

jueves, 15 de mayo de 2008

Empezamos con la elaboración del prototipo

Ahora que ya nos hemos documentado sobre todos las partes del proyecto, empezamos con la elaboración del prototipo.

Para ello, hemos definido las secciones del trabajo que tenemos, la división quedade la siguiente manera.



Sección de mecánica: En esta parte intentaremos definir una estructura móvil basada en K'nex donde podamos alojar la placa Arduino y todos los periféricos que sean necesarios.

Sección de comunicaciones: Esta se ocupará de toda la comunicación por Bluetooth entre la placa Arduino y la aplicación para terminales móviles basada en Mobile Procesing.

Sección de alimentación : La placa Arduino requiere una alimentación DC de 3 V, esta sección se ocupará de ella y de todas las que necesitemos para otras partes del proyecto (motor...).

Sección de reloj : Por último, esta parte medira el tiempo constantemente, para poder informar al usuario y hacer sonar la alarma cuando haga falta.

Problemática Arduino

Documentándonos nos chocamos con algunos inconvenientes que hemos podido solventar en el uso de la placa ArduinoBT, concretamente dos.

En primer lugar la placa no posee un USB, por lo que no teniamos muy claro como podiamos conectar la placa a un PC. Después de investigar, hemos descubierto que la placa se conecta al PC mediante Bluetooth, como podemos ver en el siguiente enlace.

http://www.arduino.cc/playground/Learning/BurnBootloaderBT


En segundo plano queda que no tiene conector para alimentar la placa. Esto se puede solventar montando una pequeña fuente basada en pilas que nos proporcionen una tensión entre 3-5V que nos permitan hacer funcionar la placa.

Después de salvar está problemática, esperamos recibir en breve la placa para empezar a trabajar en el prototipo a implementar.

jueves, 8 de mayo de 2008

Wiring vs Arduino BT

Hasta el momento, pensabamos que la mejor opción para desarrollar el proyecto era la placa Wiring, sin embargo, investigando nos hemos encontrado con muchos problemas para integrar el módulo bluetooth en esta.


Para incorporar un transmisor/receptor Bluetooth en la placa necesitamos conectar un módem Bluetooth, en la imagen inferior, podemos ver un pequeño esquema de como tendríamos que conectar el modem a la placa Wiring. El alto coste del módem Bluetooth produjó que empezaramos a investigar otras vias para poder implementar nuestra idea.


Aquí es donde entra en juego la placa Arduino, encontramos una placa llamada Arduino BT que viene con un módulo Bluetooth integrado , debajo podemos ver una imagen de la placa que mencionamos.


Después de debatir cual de las dos es la mejor opción, nos hemos decantado, por unanimidad, por la segunda opción, dado su ventajoso precio y la posibilidad de aprender nuevas tecnologias.

miércoles, 7 de mayo de 2008

¡El tamaño a veces importa!

Los primeros ejemplares de modems encontrados tienen dimensiones parecidas al modelo siguiente

Dado que interesa hacer un prototipo que se asemeje a lo comercial, debemos tener en cuenta las medidas. Nos interesa que no sea demasiado grande por lo que hemos decidido utilizar modulos PCB o SMDs. Nuestras opciones son:


Bluetooth

En esta nueva versión del despertador vamos a intentar acoplarle un modem bluetooth para poder programar la hora desde nuestro mobil al despertador. En nuesto primer contacto con la placa nos damos cuenta de que ésta no posee modem bluetooth por lo que surjen nuestras primeras preocupaciones. Para ello empezamos a indagar en como incorporarle un modem.

jueves, 3 de abril de 2008

Presentación

Nuestro objetivo en el proyecto de PSE (Programación de sistemas empotrados) es intentar perfeccionar el resultado del proyecto "despertador con ruedas".

Principalmente, queremos hacer un prototipo de un despertador que salga corriendo al sonar su alarma, de esta manera el usuario tendrá que despertarse obligatoriamente para apagarlo.

Nada de remolones !