Linux Droids Blog

Experiencias y Proyectors robóticos de Sphinx

PCB #Pinguino4Robots USB para pilotar hasta 30 servos 11 mayo, 2015

ElectrónicaA raiz de otras entradas que ya habréis visto en el blog, tocaba ya diseñar una PCB Pinguino, para aprovechar todos sus pines de usuario, como servos. Es relativamente sencilla de hacer y nos resultará a fin de cuentas económica. Fácil de programar, puesto que nos basamos en el IDE de Pinguino. Y además, totalmente Open Source Hardware. Es decir, os podéis bajar el diseño y modificarla… En cualquier caso, el resultado es este, Pinguino4Robots: como controladora de hasta 30 servos (opcionalmente algunos puertos pueden ser utilizados como sensores).

PCB #Pinguino4Robots USB, 30 channel servo controller

Estas son algunas imagenes del prototipo en la placa de topos:
Prototipo_creacion Prototipo_delante Prototipo_detras

Motivación

Le he llamado Pinguino4Robots (algo así como Pinguino para robots) y la idea es básicamente, tener una placa Pinguino pero rediseñada con la particularidad de facilitar la conexión de servomotores principalmente y opcionalmente sensores. Mi idea partió inicialmente de crear una placa para controlar robots, totalmente montados a partir de servos (hexapodos, humanoides, o lo que se nos ocurra) Utilizo como base el modelo Pinguino 4550 porque tiene 30 pines disponibles para usuario. Y el diseño de la placa permite que los 30 sean utilizados como servos. El IDE Pinguino nos proporciona un entorno de programación muy sencillo, como sabéis que facilitará al máximo programar vuestros robots basados en servos.

Las placas controladoras que podéis ver en el mercado para manejar cerca de 30 servos o más, controladas por USB, cuestan en torno a unos $40(USD), como mínimo (Casi 40 Euros al cambio actual). Esta os la podéis hacer vosotros mismos de manera fácil …porque los componentes no son SMD y el cobre está sólo por una cara, lo que facilita que utilizando cualquier método, hagáis la placa en casa.

Tenéis muchas placas comerciales o de aficionados que pilotan muchos servos. Desconozco cuantas son Open Source Hardware. Esta, sin embargo, sí lo es. Podéis rediseñarla, si queréis, para adaptarla al proyecto que tengáis en mente.

open_source_hardware_logo-t

Adicionalmente, estoy creando una aplicación Linux, para pilotar desde el PC, la tarjeta Pinguino mediante USB. La idea, es poder crear secuencias de movimientos con los servos. Hablaré de la aplicación en otra entrada del blog, cuando la tenga más avanzada y lista para una primera versión.

Comentarios sobre el diseño

Mi diseño está realizado en Eagle con la versión freeware. Concretamente con la 6.5.0 Light. Es un diseño completamente Open Hardware. Así que en este formato, podéis descargarla desde el área de descargas y modificarla a vuestro gusto. Dejo pendiente pasar el diseño a KiCAD.

Como decía antes, las pistas están solo a una de las caras, de modo que os sea más sencillo crearla.

En cuanto a la alimentación, para estabilizar la alimentación del micro y evitar resets de microcontrolador, debido a los picos de tensión que pueden generar los servos, la placa está diseñada con dos entradas de alimentación distintas: una para el PIC y otra para los servos. La idea es proporcionar a cada entrada, una alimentación con una batería distinta. El regulador a 5 voltios de la placa servirá para alimentar al PIC, la entrada de alimentación de los servos no tiene ningún regulador sobre la placa. Si la quereis regular tendréis que añadirla externamente. Esto nos permite alimentar los servos con la tensión que escojamos.

En cuanto a los conectores: he conservado el jumper para seleccionar la alimentación del PIC, bien desde el mencionado conector para baterías o bien desde el conector USB que viene del PC, en caso de que estemos en la fase de pruebas de programación y queramos prescindir de alimentar el PIC con batería (aún en este caso, siempre es necesario alimentar los servos con una batería o fuente de alimentación distinta a la que alimenta el PIC). En cualquier caso, no es conveniente alimentar ningún servo desde el USB de un ordenador.
Así mismo, también utilizo de los diseños clásicos, el conector ICSP, para poder cargar versiones nuevas de firmware, si apareciesen, sin sacar el PIC del zócalo. El resto de pines son para conectar los servos (o sensores).

Pinguino4Robots_SCH

Esquema en Eagle

Pinguino4Robots_PCB

PCB en Eagle

Pinguino4Robots_serigrafia_ANOTADA

PCB fabricada

Después de encargar la fabricación de la PCB, este es el resultado final:
Pinguino4Robots_placas

Ideas

A partir de aquí, podéis hacer muchas cosas con la placa. ¡Seguro que podréis mejorarla!

Si queremos que Pinguino, sea placa subordinada, no la principal en nuestro diseño (robot, proyecto, lo que sea…). Es decir que sólo se comporte como un servo controller, tendremos que crear un modo de comunicarnos con ella para pasarle los datos que Pinguino debe aplicar a los servos. Para esto, necesitamos crear un mini protocolo de comunicaciones para que un “host” se entienda con Pinguino4Robots. Esto lo abordaré en otra entrada de blog, posteriormente. La idea es utilizar el propio puerto USB de Pinguino4Robots como puerto de comunicaciones y utilizar lo ya desarrollado en mi anterior entrada comunicaciones USB entre Pinguino y PC.

Por otro lado, como ya os he comentado, estoy desarrollando un programa para jugar directamente desde el PC con Pinguino como Servo Controller y crear secuencias de movimientos, moverlos individualmente o en conjunto, etc… Esto será un poco más tarde.

De ese modo, si creamos un robot o una aplicación que utilice Pinguino como controladora principal de servos y nada más, podríamos por ejemplo conectarla a una RaspberryPi que fuese el cerebro de nuestro sistema.

Por el contrario, si queremos que el mismo Pinguino4Robots, sea el propio cerebro de nuestro sistema, quizá tendremos que tener en cuenta que algunos pines, puede que los necesitemos dejar disponibles para utilizarlos como entradas para los sensores…

Pronto más…

Referencias

Pinguino Project website


PCB #Pinguino4Robots USB, 30 channel servo controller

Based in previous blog posts, it’s time to design a Pinguino PCB in order to take advantage of all user pins to make them servo channels. It should be relatively easy to design, and at the end of the day it would be cheap. Easy to program, as we will base on Pinguino IDE. And adittionally fully Open Hardware. You can download my design files and modify them… Anyway, this is the result, Piguino4Robots: Up to 30 channels servo drivers (optionally some ports could be used as sensors using the same pinout).

These are some images of Pinguino4Robots built on a prototype board.
Prototipo_creacion Prototipo_delante Prototipo_detras

Motivation

I called it Pinguino4Robots and the idea is basically to have a Pinguino PCB, but redesigned to make easier connecting RC servos mainly, and optionally sensors. My aim was to create a PCB to drive servo based robots (hexapods, humanoids, o whatever I could imagine). I use the Pinguino 4550 board as basement, because it has 30 user pins available. And the PCB design allows that all of them be used as servos. Pinguino IDE provide us a simple programming enviroment and needed software, as you already now, which make quite easy to program them.

Most of servo controller boards with more than 30 servo channels are above 40 euros (aprox. $40). This one can be made by yourself easily because components are not SMD,  and copper wires are just in one side. So, that makes easier to make it by yourself.

You have a lot of PCBs for servo controlling. I don’t know how many of them are Open Source Hardware. Never the less this is OSHW. You can redesign it to adapt it to any project you have in mind.

open_source_hardware_logo-tAdditionally I’m working on a Linux appplication for driving from a computer this Pinguino board by USB port. The idea is to create movement sequences for all the servos. I will devote another post to that application when ready.

Comments about design

My design was done in Eagle with freeware option, version 6.5.0 light. It’s fully OSHW, as said. You can download it at download area, and modify it however you want (it’s pending to pass it to KiCAD PCB design program).

Regarding power supply, in order to keep stable the microcontroller supply and to avoid microcontroller resets or brown-outs due to current peaks provoked by servos, the PCB is designed with 2 different supply conectors: one for PIC and one for servos. So, batteries are needed for each power entry. PIC has its own regulator to 5Volts on board. Servos could be supplied with any requiered voltage. If they need 5 volts, this should be regulated outsite the board.

Regarding pin conectors: I have kept on board the jumper conector for selecting PIC supply, which allows to select the power coming from USB, or power coming from the battery. We could use USB power supply during the testing/programming phase (in case of testing with one or more servos, these must be powered by a battery. It is not recomended to poeer any servo with a PC USB power).
Also, I have kept the classic ICSP conector, in order to enable PIC firmware uploading on board.
The rest of pin connectors are user ports, mainly for servo ports (usable for sensors too).

Pinguino4Robots_SCH

Esquema en Eagle

Pinguino4Robots_PCB

Eagle PCB

Pinguino4Robots_serigrafia_ANOTADA

PCB manufactured

This is the resultant manufactured PCB::
Pinguino4Robots_placas

Ideas

From here you can do many things with the board. You could improve it for sure!!

In case you want this Pinguino4Robots board not to be the main brain in your project (robot, appliance, whatever…), we will need a small communication protocol to be defined between Pinguino and host, Thus a main host send commands to Pinguino for movements. In this way Pinguino behaves just as servo controller board. This will be treated in another post in this blog later. The idea is to use the USB port on Pinguino4Robots as comm port, in the way I already described in my latest article USB comunications between Pinguino and PC.

Additionally, as commented before, I’m just developing a program to directly play with servos from a computer. In this way allowing to create movement sequences, etc.. but this it will take some time…

Pinguino could be driven as servo controller from a RaspberryPI for instance too. In case we decide to use RaspberryPI as our robot brain.

In the other hand, if we would want that Pinguino4Robots be the main brain of our robot, we could reserve some pins for sensors. I imagine that as independent robot, it would need some sensing devices. That would depend on our system design.

More soon…

References

Pinguino Project website

Anuncios
 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s