Descripción del Proyecto
|
|
La idea fundamental es la de
hacer un circuito que sea capaz de recibir órdenes vía serie y mantener
perfectamente controlados hasta 16 servos mediante sus correspondientes
señales PWM. Es una ampliación de los temas tratados en artículos
anteriores de PicManía como los presentados en el
Receptor RC asistido por PIC o el
mencionado
Controlando 8 Servos con una sola
interrupción. Este proyecto va en paralelo también con lo descrito en
Experimentando con un Motor D.C.
usando el driver L298N.
|
|
En el fondo todos estos
experimentos y proyectos parciales no son más que pequeños pasos que damos
hacia el Gran Proyecto (que cada vez se va decantando más
hacia el Barco de Vela Radiocontrolado, muy probablemente una Maqueta
navegable de una Goleta del Siglo XIX).
|
|
Este
proyecto debe ser capaz de controlar esos 16 servos de forma estable y
fiable. Debe poder controlar Servos de distintas clases, de fabricantes
distintos y con especificaciones técnicas similares pero no iguales. Deben
poder ser configurables uno a uno los distintos servos para adaptar las
señales PWM que cada uno de ellos requiera según esas especificaciones.
|
|

|
|
No hay que
olvidar que aunque todos ellos requieren un PWM con una frecuencia de 50
Hz, cada fabricante, cada modelo o incluso cada Servo en concreto tienen
márgenes distintos en cuanto a la relación Duty Cycle y posicionamiento
efectivo. Hay servos que requieren pulsos entre 0.5 y 2.5 milisegundos
para posicionarse en ambos extremos, mientras que en otros su rango es
entre 0.7 y 2.3 milisegundos por ejemplo. Diferencias de este tipo
encontramos entre servos como los Hitec HS-311 y los Futaba S-3003 que son
dos de los servos mas utilizados por los aficionados al RC.
|
|
Lo que se
quiere conseguir es poder enviarle a este diseño las distintas posiciones
requeridas para cada uno de los servos y que sea él quien realice la
función de generar los distintos PWM's que cada uno de ellos necesita.
|
|
Se le deben también poder
enviar los distintos "trimmers" o ajustes de posición al centro y/o a cada
uno de los extremos a cada uno de ellos. Las curvas de evolución: lineal,
logarítmica, exponencial o compleja. Y por último se debería también poder
enviar "macros" de ejecución, o pequeñas programaciones que combinen
movimientos concretos que involucren a varios servos al mismo tiempo, a
modo de procedimientos almacenados que se ejecutan con una sola orden
sencilla.
|
|
Como podemos
ver no es sólo generar los PWM lo que deseamos sino algo bastante mas
interesante y por ello mas complejo. Así que me he decidido por hacer una
placa suficientemente inteligente como para poder realizar todas estas
funciones. And the winner is: Un viejo conocido, nuestro buen amigo el
18F4550 en su encapsulado TQFP de 40 pines.
|
|
¿Que por
qué? Pues porque lo conozco, porque tiene suficientes pines como para ser
capaz de tener dos puertos completos, el PORTB y el PORTD, con todos sus
16 pines correlativos disponibles, sospecho que puede ser una importante
simplificación a la hora de diseñar el firmware generador de 16 PWM's, y
porque tiene USB que a la hora de configurarlo o utilizarlo puede venir
muy bien. Y porque tengo un saco de ellos y me parece oportuno no tener
que experimentar con otros modelos que no conozco o conozco menos. Así que
¿necesitas alguna otra razón?
|
Primera Parte: El
Hardware.
|
En esto del diseño hardware que
propongo hay pocas cosas que explicar ya que tanto el esquema como la
realización del PCB se auto-explican bastante bien. Sin embargo se pueden
decir cosas sobre los porqueses de algunas cosas.
|
El esquema que
propongo es este (click sobre él para verlo a tamaño natural):
|
|

|
Una decisión
previa que tomé fue la de utilizar todos los componentes SMD posible en un
intento de reducir al máximo el tamaño de esta placa. El mismo PIC 18F4550
en su formato PDIP me parecía tener mas de un metro de largo y no deseaba
tener que usar una carretilla para llevar la placa.
|
|
Lo básico:
El PIC 18F4550 con sus imprescindibles circuitos auxiliares de
Oscilador, ICSP/Reset y sus condensadores de desacoplo (lleva dos ya que
tiene dos grupos de pines de alimentación).
|
|
Lo necesario:
La alimentación, que puede ser de tres formas distintas:
Directamente a 5V a través de la clema correspondiente, de 9V a 12V por la
suya propia y utilizando un 7805ABD2TG ó los 5V por el conector USB
poniendo el correspondiente puente en JP4, el Macro-Conector JP1-JP2 en batería
para los 16 Servos (recordad que éstos tienen un conector de tres pines
con GND,VCC,PWM en ese orden) y el conector TX-RX para la comunicación
serie TTL.
|
|
Lo accesorio:
El conector USB y su condensador VUSB, los conectores JP5, JP6, JP7
y JP8 para la
publicación de otros pines sin utilizar para un uso futuro indeterminado
por el momento.
|
|
Con todo
esto ya solo queda rutear y ver que PCB nos sale. Gracias al sabio consejo
del gran maestro de maestros, Manolo Jímenez "Nocturno"
Webmaster de Micropic.es, que me dijo
que poniendo todos los componentes SMD por la cara Bottom podría evitarme
"un güebo" de vías (son palabras textuales). Así lo hice y el resultado es
este (click sobre él para verlo a tamaño natural):
|
|

|
Como se puede
comprobar en la imagen anterior todo un TQFP de 40 pines con la mayoría de
ellos conectados en una placa de una sola cara con tan solo seis puentes
por la cara Top. Me encanta tener amigos que me den este tipo de consejos.
|
Los
correspondiente fotolitos en PDF los tenéis disponibles en la sección
picmaníaca de
Todos los PCB's en PDF en nuestro
Cajón de
Sastre.
|
|

|
|
 |
| Realización práctica del
PCB y montaje de los componentes: |
| |
|
*** En deconstrucción ***
En breve mas noticias sobre este proyecto |
| |
| |