Arduino Mega custom

Hace ná y menos que estoy por aquí, así que voy a contaros un poco de historia antes de ir al grano:

Desde hace un tiempo estoy intentando montar un quad-rotor de buenas prestaciones, sobre el que poder implementar un UAV decente. Mis primeras ideas eran bastante hardcore, así que reducí el problema en módulos. Ahora mismo estoy preparando el módulo de electrónica básica, que hace de interface directa con motores y sensores. Primero hice cositas con PICs porque los conocía bien, y más tarde probé un Arduino Uno por curiosidad y decidí emplearlo.

Ahora, me doy cuenta que con la de cosas que voy añadiendo, el Uno se me queda algo corto, así que me paso al Mega. Lo que pasa es que el mega vale alrededor de 40-50€ más gastos de envio, lo cual no me importaría demasiado si no fuera por ciertas cosas que he visto en el Uno y que me dá que también se dan en el Mega (pero no he podido comprobar aún). Para no extenderme en explicaciones, la PCB del Arduino Uno no es ninguna joya, tiene fallos de diseño que le restan en prestaciones.

Por ello estoy diseñando mi propio Arduino Mega, y una placa de expansión acorde que acomode fácilmente los periféricos que quiero añadir. Una PCB de 10x16cm (donde más o menos cabrian ambas) vale unos 30€, y como ya tengo la mayoría de los componentes, me saldría bastante a cuenta. El asunto es que he pensado que alguien más de por aquí podría estar en una situación similar, o podria interesarle esta placa, así que si alguien tiene sugerencias a añadir al diseño, podemos adaptarlo. Yo cuelgo los archivos de la PCB en cuestión y luego cada uno se apaña. Mi interés principal es tener algo de feedback sobre el asunto.

De momento mis ideas principales son:

  • Atmega328
  • tensión para el Atmega seleccionable mediante jumpers (así puede funcionar como 3.3V@8MHz y 5V@16MHz)
  • Sin módulos USB-UART incorporados (necesita un cable como este)
  • Un regulador más decente (para sacarle todo el jugo a las baterias, que no siempre se trabaja por USB...) - Compatibilidad con shields estándar.

La placa de expansión debería acomodar:

  • Módulo XBee, en principio conectado a un puerto por defecto, pero si alguien la quiere, podriamos adaptarlo para hacerlo seleccionable
  • Una pequeña area de prototipado (para lo que caiga)
  • Posiblemente una zona para acomodar un GPS, de momento este. - shield estándar para Arduino

De momento estoy aún con el sketching del diseño, pero algo así de simple no creo que me lleve mucho... ¿Ideas, sugerencias?

Algo similar me ha pasado a mí. En el primer caso, por necesidades de espacio, en segundo lugar por no querer tener una interfaz USB siempre conectada. Así nacieron el arduSTICK, arduSTAMP y arduCHIP.

Los puedes ver en el foro por si te interesan.

Los he visto, sin embargo me gustaría que la placa no perdiera la compatibilidad con los shields 'estándar'. Algo que debí añadir a la descripción inicial :P (ahora lo pongo). El principal motivo para hacermela yo mismo es que me sale por el mismo precio (o incluso más barato) con la diferencia de que no arrastro errores de diseño que tengo que decir que me sorprenden bastante. Los puertos analógicos del Arduino Uno tienen un camino de retorno desastroso, entre otros.

Si hay unas cuantas cosas que no me gustaban mucho del arduino original ni del uno, entre ellos, la forma de alimentar sin ningún tipo de filtrado el bloque analógico, el filtrado en la alimentación no es el mejor del mundo,… Son cosas que no me terminaban de convencer. En concreto el arduSTICK tiene un pinout compatible con el Nano pero todo el bloque de alimentación está mejor adaptado.

Ya nos contarás y nos enseñarás la placa.

Una simple curiosidad con respecto al UAV que estás montando, ¿has considerado usar un Cortex?

Para el UAV que monté hace tiempo, todo el sistema de navegación, guiado y control lo monté con un ARM7TDMI y quedaba espacio para muchas cosas que al final fueron apareciendo en la nave. Por ejemplo un pequeño estabilizador mecánico para el "guimbal" de la cámara, control de frecuencias de transmisión del enlace video (este ahora es digital), aerofrenos, extensiones de canales para actuar sobre dispositivos de la aeronave, ...

Otros micro controladores que te podrían resultar interesantes son los de Cypres.

fm: Una simple curiosidad con respecto al UAV que estás montando, ¿has considerado usar un Cortex?

La primera idea era usar un i.MX23, pero luego opté por algo mucho más modular, un diseño por capas. En lo más básico, un micro tipo arduino, y más tarde sistemas más complejos que lo guíen. De este modo puedo hacer controles de fallo más potentes (como por ejemplo el Ardupilot, que tiene un Attiny que le permite hacer un override de las señales de control).

De momento estoy con los bloques básicos, el AtMega que controlará los motores (con los sensores para la realimentación) y poco más.

Ok, ya veo. Si yo empecé con un micro para intentar hacerlo todo, pero al final "divide y vencerás" para conseguir una arquitectura algo más modular.

El caso es que el ARM se quedó simplemente para el bloque de navegación, guiado y control, estabilizador, selección de canales, extensión de IOs y aerofrenos + flaps.

Viendo el micro que pretendías usar, no está nada mal pero con ese formato no me atrevo a trabajar para proyectos caseros. Lo dicho, publica los avances del proyecto que tiene un pintón.

Acabo de ver esto, que se acerca bastante a lo que quería, y por un precio más razonable. Creo que de momento sólo seguiré con la placa de expansión, y si veo que tengo espacio en el panel y cabe, me plantearé hacerla.

La placa tiene un pintón. Quizás la única pega es el filtrado de la alimentación analógica. Por cierto, qué herramienta CAD usas para esquemáticos y PCBs?

Uso Altium, empecé en la universidad y ahora lo uso también en el trabajo. Le da mil vueltas al Eagle, pero en vista de que es lo más extendido, iba a hacerla con el Eagle (a parte de que tengo que aprender).

Me imaginaba que usabas un entorno algo más profesional por los comentarios que has hecho y la selección de componentes. Francamente es un entorno muy, muy bueno. Yo utilizo en casa Eagle y en el trabajo he usado PADs de Mentor.

Eagle, no deja de ser un entorno pensado para el mercado del hobby. Creo que incluso para hobby, la versión de pago es muy cara si la comparas con lo que ofrecen otros entornos. Hay cosas que no me gustan absolutamente nada incluso el flujo de trabajo me parece un poco rollo. Por otro lado las pruebas de consistencia entre esquemático y PCB dejan mucho que desear y para hacer simulaciones de pistas de alta velocidad, pues nada...

En resumen, la versión gratis de Eagle es lo más caro que me puedo permitir en el MAC que tengo en casa ,-(

fm: En resumen, la versión gratis de Eagle es lo más caro que me puedo permitir en el MAC que tengo en casa ,-(

Es lo mejor que le he visto al Eagle, que funcione en mac :D

Puesto que ha salido el tema de programas y ARM, que IDE recomendáis para ARM, alternativas totalmente libres/gratis como Eclipse + Yagarto, o puede merece la pena usar una de las licencias enfocadas al hobby como las que ofrecen aquí: http://www.rowley.co.uk/ donde por $150 tienes todo lo necesario para el ARM, si conocéis el tema, merece la pena pagar esos $150?

Gracias

Uno de los entornos que me gustan personalmente: - eclipse - gcc - lauterbach

El entorno de Phillips (NXP) esta muy bien y el de Atmet también. El codewarrior también es un clásico. El entorno xduino apunta bien.

Quizás el problema con los micros de ARM es que cada fabricante monta lo que quieren en sus chips y bajo el paraguas ARM encuentras un montón de ASICs con periféricos muy diferentes entre sí. bueno, problema o ventaja - como se quiera ver. Construir un entorno similar al de arduino implica casarse con un fabricante y con una familia. Similar a lo que van a hacer los del grupo Arduino.

Hasta ahora sólo he probado las placas que ofrecen los fabricante a bajo coste (nxp, stm), que ya vienen con el programador/emulador y bajas la versión de prueba de su entorno de desarrollo, que están limitadas, y claro está la licencia de una de estos entornos de desarrollo con su compilador es impagable.

Después de mirar muchas placas en ARM me he decidido a usar dos de olimex, estoy "intentando aprender" con esta: http://www.olimex.com/dev/sam7-h256.html y esperando a que me llegue una de estas: http://www.olimex.com/dev/sam3-h256.html, que aprovechando que los arduinos van a usar tb los cortex-m3 de Atmel pues puede estar interesante ponerse con ellos, también el JTAG para estas placas está sobre los 100 euros que se puede pagar.

Estoy usando Yagarto ya que es gratis, pero viendo otras alternativas a un precio que se puede pagar pues es para pensarselo, tiene una versión de prueba el anterior que puse así que supongo que probaré.

Pero bueno no quiero cambiar el tema del hilo que era la placa de Arduino a medida, así que mejor dejemoslo aquí, voy a mirar lauterbach que nunca lo había oído.

Gracias

Hablando de placas a medida.. yo creo que a las versiones de arduino que estáis diseñando le deberíais añadir una resistencia en serie en todos los puertos, ya que son placas de iniciación y así evitáis que alguien que la coja por primera vez, coja un pin configurado como salida a 1 y lo conecte por error directamente a tierra en la protoboard, lo que quemaría el pin, puerto.

La resistencia en serie no molesta para la mayoría de aplicaciones, aunque aumente el tiempo de carga del adc y te pueda infuir a lo mejor en la velocidad, número de dispositivos a conectar en bus como por ejemplo el i2c, para la mayoría de los usos/situaciones no se va a apreciar su efecto. Son placas de iniciación, y en el peor de los casos el que necesite hacer algo más complejo y le pueda influir la resistencia sabrá quitarla y cortocircuitarla sin problemas.

Yo en una placa/shield que me monté para Arduino Mega de uso general metí la resistencia en serie en todos los pines para evitar malas conexiones y errores de programación.

Mi shield de arduino mega para usar de interfaz en distintos proyectos con sus resistencias en serie: