martes, 18 de agosto de 2015

Convirtiendo Pro Mini de 5V a 3,3V...Estilo Tucumano

Como comentamos en el post Anterior, necesitamos modificar uno de nuestros mal adquiridos Arduino Pro Mini de 5V para que funcione a 3,3V.

Que es lo que habría que hacer teóricamente para que realizar esta proeza???
Por suerte y gracias al código libre, tenemos disponibles los circuitos completos del PRO MINI para que unos futuros ingenieros como nosotros podamos analizar el problema.



En principio el microcontrolador, un ATMEL ATMEGA328P soporta sin problemas tensiones desde los 1,8V hasta los 5,5V, pero se nos presenta un problema adicional... La velocidad de Clock del Micro.
Como sabemos la velocidad de clock depende  de la tensión de alimentación. ATMEL provee una gráfica que muestra la velocidad de clock soportada para cada tensión para nuestro microcontrolador:


Interpolando dentro de la gráfica vemos que para 3,3V, la frecuencia de clock soportada es de aproximadamente 13MHz... algo lejos de los 16MHz con los que viene programado el Bootloader del modulo que tenemos comprado. 
Que hacemos? Reprogramar el Bootloader implica conseguir un programador o un JTAG para este micro, conseguir el bootloader... la verdad que una complicación adicional y de la que no podemos escapar, no importa que alternativa de 3,3V elijamos.
Otra alternativa es arriesgarnos a trabajar fuera de especificación y ver como nos va... a 16MHz alimentado con 3,3V. Nos ponemos a leer un poco mas y descubrimos que no somos los primeros a los que nos pasa esto (obviamente), que varios trabajaron de esta forma sin problemas, e inclusive 3,3V es la tensión elegida por los fanáticos del Overclocking para hacer funcionar a este micro hasta 30MHz, por lo que en principio no deberíamos tener problemas. 
Nos arriesgaremos a utilizar el modulo sin reprogramarlo a 3,3V!!
Algunas de las referencias de las que obtuvimos información sobre este tema fueron las siguientes:


Habiendo superado el problema de la frecuencia (Esperemos no encontrarnos con sorpresas después), nos ponemos a trabajar en adaptar el modulo. Básicamente lo que debemos hacer es lo siguiente:
  • Comprar un regulador de 3,3V
  • Anular o retirar el regulador de voltaje de 5V.
  • Colocar el de 3,3V en su lugar.
Ingenuamente vamos a recorrer casas de electrónica de Tucumán buscando un regulador SMD MIC5233 o similar para reemplazar el de 5V que tiene el Modulo.
Obviamente no lo conseguimos, pero no volvemos con las manos vacías, compramos un regulador L78L33 de 3,3V en formato TO-92.


Como lo adaptamos??? Vimos que el Modulo tiene disponibles los pines de entrada RAW, que corresponde a la tensión sin regular, y también VCC y GND. Estos pines como vemos en el circuito corresponden a los terminales del regulador. Si colocamos este regulador ahí debería funcionar.


Entonces sacamos el Regulador con cuidado para no dañar la placa, colocamos el nuevo regulador, y este fue resultado:



Un Arduino Pro Mini de 5V, canibalizado, funcionando a 3,3V a 16MHZ sin problemas!! Modificamos el FTDI para que la tensión de programación sea 3,3V, verificamos que las tensiones de salida fueran 3,3V y realizamos pruebas de funcionamiento si tener ningún problema.

Por mas que solucionamos este contratiempo, realmente creemos que esto no debería haber sucedido en primera instancia. Si hubiésemos adquirido el modulo con la idea del proyecto mas avanzada y ya con las especificaciones detalladas seguramente comprábamos el modulo de 3,3V. En este caso compramos solo las partes separadas en base a una idea general de lo que queríamos hacer y eso llevo a este problema.  Tomaremos esta experiencia para el resto del proyecto.

Seguimos en los proximos post con las pruebas del Acelerometro y de la interface Bluetooth!!! Finalmente!


5V o 3,3V....esa es la cuestión.

Ya probamos el Arduino y su programación. Ahora comenzamos a probar el funcionamiento de los sensores y del módulo de comunicación que elegimos para el proyecto.
Lo primero que conectaremos sera el módulo de MPU-9150 del Giroscopio, Acelerometro y Magnetómetro, que utilizara la interface I2C del Arduino. El diagrama de conexión sera el siguiente:


Hasta ahora, todo perfecto... hasta que leemos las especificaciones...el modulo se alimenta con 3,3V y los niveles de I/O son también en esa tensión. Lo mismo sucede para el modulo Bluetooth, aunque permite alimentación de 5V y una adaptación en sus entradas. 
De todas maneras pensamos alimentar el sistema con una batería de 3,7V, por lo que no debería ser problema, o al menos eso creemos....
Todas las pruebas anteriores con el Arduino y la interface FTDI eran alimentado por el USB a 5V, por lo que en ese momento no era un problema.  
Bueno, comenzamos a leer.. nuestro modulo viene en las 2 versiones, la de 5V y la de 3,3V. La diferencia básica entre ambos es el regulador interno que trae y la velocidad de Reloj, que cambia de 16MHz para 5V y 8MHz para 3,3V. Obviamente el de 3.3V puede conectarse a 5V, pero no a la inversa.

Regulador de Tensión Arduino Pro Mini

Y, como no podía ser de otra manera, los 4 módulos con los que contamos son de 5V!!!!

Lluvia de ideas y google para ver como solucionamos el problema. Alternativas:

a) Comprar un modulo que funcione a 3,3V... Esta alternativa es la que utilizaría cualquier mortal fuera de la Argentina y en 3 o 4 días tendría resuelto el problema, pero no.... acá no es posible, ya que comprar otro modulo implicaría retrasar el proyecto 2 meses hasta que esperamos que llegue la parte requerida de  Taiwan o China, y realmente no nos gusta mucho la idea.

b) Adaptar los sensores a 5V.... Inviable. Por lo que investigamos, era necesario agregar mucha circuiteria externa y ademas todavía teníamos el problema de que alimentábamos con 3,7V.

c)Alimentar el modulo con 3,3V... Posible, ya que el modulo cuenta con una entrada denominada VCC que esta después del regulador, pero teníamos que desarrollar un regulador externo, ademas de tener que desconectar los sensores cuando programáramos el modulo, ya que el programador debía seguir funcionando a 5V. Esta alternativa no nos gustaba demasiado, pero era una alternativa valida.

d) Modificar el Modulo para que funcione a 3,3V...Posible. Implicaba realizar unas modificaciones sobre el modulo y todas las notas que encontramos en Internet eran distintas y encontradas sobre el resultado de estas modificaciones, pero era la solución mas practica por lo que nos inclinamos a probar primero por esta.


Ademas nos surgió otro inconveniente, que por suerte solucionamos rápido. Si pasábamos a 3,3V, la interface de programación debía funcionar en 3,3V, caso contrario tendríamos problemas.
Por suerte, el chino que diseño o mejoro el modulo FTDI pensó en nosotros antes de que lo necesitemos y diseño el programador de tal forma que funcione para módulos Arduino con ambas tensiones. Simplemente cambiando una soldadura debajo de la placa, podemos seleccionar la tensión de trabajo entre 3,3V y 5V. Va la foto:



Analizando las alternativas decidimos arrancar por la opción d) y si no era posible pasar a la c)... En el próximo post les contamos como nos fue!


lunes, 10 de agosto de 2015

Empezamos a probar y conectar....

Bueno, arrancamos a jugar con las partes para conocerlas... Abrimos el paquetito del Arduino pro mini, abrimos el FTDI y los conectamos entre si.
Para tenerlo "a modo de referencia" estos son los vínculos a las especificaciones de cada uno:

Arduino Pro Mini:  https://www.arduino.cc/en/Main/ArduinoBoardProMini
FTDI CRIUS: http://www.multiwiicopter.com/products/usb-to-ftdi-program-card-5v

Ahora a conectarlo a la PC.....Sorpresa. Necesitamos un cable Mini USB arcaico (que obviamente no viene) y nosotros rodeados de cables micro USB. A buscar por todos lados.
Luego de revolver por 2 horas todos los cajones, cajas y equipos, encontramos un cable Mini USB, que cuidaremos como oro porque es el único que tenemos.


Finalmente abrimos el programa de Arduino, conectamos el Pro Mini, y.......FAIL: Hardware No encontrado. A instalar los drivers del conversor RS232 a USB. Los encontramos acá:

http://www.ftdichip.com/Drivers/VCP.htm

Listo, driver instalado, las lucecitas del Arduino encendidas. A programar el Hola Mundo, para ver si funciona, en este caso simplemente sera hacer parpadear el LED que trae para que la gente como uno pruebe si funciona.
Primero abrimos y configuramos el SOFT de Arduino, que en nuestro caso utilizaremos las versión 1.6.5 para el modulo Pro Mini. Para esto seleccionamos los parámetros como se muestran a continuación:



Probamos la conexión con el Modulo por Puerto 31, para nuestra PC, y funciona perfecto.
Luego abrimos uno de los ejemplos que trae el Software para realizar el parpadeo del Led que viene en el modulo:




Simplemente lo programamos, y.... Primer pequeño éxito:



Ya tenemos el Arduino Pro Mini en funcionamiento, conectado y con las herramientas de desarrollo instaladas y probadas. Empezamos a integrar y probar los sensores en el próximo Post!

Cronograma del Proyecto

viernes, 7 de agosto de 2015

Proyecto aprobado - a conseguir y juntar las partes!

Ya tenemos el proyecto aprobado! Hora de empezar a trabajar sobre las especificaciones y en reunir todos los componentes, ya que algunos tenemos que adquirirlos fuera del país.
Inicialmente teniendo en cuenta las especificaciones iniciales vamos a necesitar lo siguiente:

Cerebro: Utilizaremos un clon Chino del Arduino Pro Mini que adquirimos hace un mes a través de Ebay. Con este dispositivo contamos con las E/S necesarias para el proyecto, como ser I2C para el Giroscopio, UART para el Modulo Bluetooth y salidas PWM para el control del Motor.

Este Modulo en particular no dispone de interface de programación, por lo que adquirimos un modulo FTDI genérico para poder programarlo mediante la interface de Arduino.
Giroscopio / Acelerometro: Para esta función utilizaremos un módulo que también adquirimos hace un mes, el MPU-9150 9DOF 3 Axis Gyroscope+Accelerometer+Magnetic.
Este modulo ademas de tener las funciones que necesitamos tiene disponible un magnetometro (Brújula Electrónica) a la que podremos acceder. Luego veremos que uso podemos darle dentro del proyecto. El Vinculo del módulo comprado es el siguiente:

MPU-9150 9DOF 3 Axis Gyroscope+Accelerometer+Magnetic


Motores: Como dijimos en el articulo anterior, analizamos muchas alternativas para los motores del mini drone. Desde motores de 1.5KG de empuje de U$D40 cada uno incluyendo el conversor DC-DC necesario para que funcionen, hasta motores Brushless mas pequeños. Decidimos dado el objetivo del proyecto implementar unos motores pequeños que conseguimos por MercadoLibre que incluían las hélices y no necesitábamos ningún conversor para manejarlos, simplemente con MOSFETS y la salida PWM del arduino podíamos hacer el truco.
Adquirimos por $160 un KIT de 2 motores de giro horario, 2 de AntiHorario, las 4 hélices y los mosfets para manejarlos. sabemos que vamos a tener una limitación importante en el peso que vamos a poder manejar, pero nos arriesgamos a utilizarlos.




Comunicación: Para el control del Drone a distancia utilizaremos un modulo Bluetooth HC05 que adquirimos también por ebay. Este modulo se comunica utilizando la interface Serial del Arduino o bien cualquier otro Pin si utilizando una librería que emula la comunicación serie. De todas maneras tendremos libre el puerto serie nativo del Arduino, por lo que utilizaremos esta. 


Estructura: El Drone lo realizaremos íntegramente en Madera Balsa, para hacerlo lo mas liviano posible y también fácil de construir. Inicialmente nuestra idea es realizarlo con una estructura tipo H, para facilitar su construcción, pero veremos en el proceso que tan estable es.

Controlador: Para controlarlo utilizaremos un celular con Android mediante Bluetooth. Desarrollaremos con la aplicación APP INVENTOR 2 una interface de control adecuada.

Con esto cubrimos la idea general de lo que queremos realizar, veremos como se desarrolla el proyecto. Próximo paso: Empezar a programar el arduino y cada parte.






jueves, 6 de agosto de 2015

Cronograma y Avance del Proyecto.

En esta publicación se encontrará el cronograma general del proyecto y el avance. 
Ademas agregaremos debajo las modificaciones realizadas para que podamos seguirlas y en cada publicación habrá un vinculo a esta.

Cronograma de tareas y Avance:

Tarea
Fecha
Avance
 Diseño Conceptual18/5/2015
100%
 Presentación del diseño conceptual y aceptación20/6/2015
100%
 Adquisición de Partes del Proyecto20/7/2015
100%
 Selección y configuración de plataforma de seguimiento del Proyecto6/8/2015
100%
 Prueba de cada parte y asimilación de conceptos teóricos10/9/2015
80%
    - Arduino PRO MINI
100%
    - Giroscopio MPU-9150
70%
    - Comunicaciones Bluetooth HC-05
50%
    - Control Remoto
50%
    - Control de Motores
100%
 Diseño detallado del Proyecto26/10/2015
15%
    - Electrónica
20%
    - Estructura de Soporte
30%
    - Sofware de Control 
0%
 Armado de prototipo - Integración de Módulos30/10/2015
0%
 Programación y Ajuste2/11/2015
0%
 Pruebas de Vuelo y Ajustes6/10/2015
0%
 Presentación del Proyecto11/11/2015
0%

Log de avance y Modificaciones:

- 6/8/2015: Creación de Cronograma y del blog. Tareas iniciales ya realizadas a un 100% y avance en pruebas de partes
-10/8/2015: Actualización de avance en pruebas de ARDUINO.
-18/8/2015: Actualización de avance en pruebas ARDUINO y cambio de fecha objetivo de prueba de partes por retraso en algunas tareas.
- 25/8/2015: Se diseño placa de potencia para el control de motores y se integro el modulo Bluetooth y MPU 9150. Actualización de porcentaje de avance en Giroscopio, Bluetooth, Control Remoto y motores.
- 29/8/2015: Actualizaciones avance en control de Motores. Cambio de fecha objetivo de pruebas y diseño.
-15/9/2015: Pruebas de Motores, armado de prototipo de control de Motores
-8/10/2015: Actualización de BLOG
-10/10/2015: Actualización de BLOG
-13/10/2015: Compra de KIT adicional por problemas en Helices
-19/10/2015: Actualización del BLOG, modificaciones en Cronograma y Log de Avance
-20/10/2015: Actualización del BLOG, Avance en control del Drone

Arrancamos con el Blog! A construir un Drone

A pesar de que hace 1 mes que tenemos aprobado el proyecto, nos quedaba pendiente elegir una plataforma para publicar el avance. Finalmente lo Hicimos!

Sistema de Estabilización de Vuelo:

Inicialmente analizamos las alternativas que teníamos para realizar este proyecto, como ser tipo de plataforma (Helicóptero, Drone, Cantidad de Hélices, Etc.), si iba a contar o no con vuelo independiente, etc. Concluimos que el proyecto más enriquecedor será la realización de un MiniDrone tipo QuadCopter.

Para esto estudiamos las variedades de Motores y estructuras base disponibles para la realización, y decidimos debido a una cuestión de costos y disponibilidad de partes en el país en realizar un MiniDrone con una estructura de Madera Balsa y motores sin escobillas de 200gr de empuje cada uno, ya que estos se consiguen en el país y pueden manejarse con un circuito con MOSFETS y no es necesario ningún Driver Adicional.

La electrónica la realizaremos utilizando un módulo Arduino Mini o Arduino Lilypad basados en Microprocesadores ATMEL ATMEGA de 8 Bits, una módulo de Giroscopio + Acelerómetro y un sistema de comunicaciones basado en 2.4GHz para controlarlo remotamente. Para alimentar este sistema utilizaremos una batería de Litio-Polimero de 3.7V y 500mah que debería dar unos 15 minutos de autonomía de vuelo.
Una vez montado el prototipo analizaremos la inclusión de otros sistemas como ser sensores de distancia o seguidores, debido a que el peso máximo del Drone estará bastante acotado.

Salvo la batería y los conjuntos motor - helice (que nos adelantamos y ya los adquirimos), ya contamos con todos los componentes que mencionamos.

Publicaremos todos los avances hasta la fecha y continuaremos las actualizaciones!