Robotica Facil. Robots, kits, circuitos, sensores, motores, etc.. SR1 Robot Multifuncional Robótica Fácil  
Página Principal Novedades Ayuda Ver Carrito Catálogo
Kits Robots Circuitos electrónicos Sensores robotica Motores y servos para robots Ruedas y Orugas para robots
Soportes y hardware Tornillos y separadores Libros robotica Radio Modem, Transmisores de Vídeo Robots Fotograficos
Fuentes de Alimentacion Componentes electrónicos Varios robotica Proyectos de Robotica Tutoriales de Robotica
CONTROLADOR PARA 21 SERVOS POR I2C SD21 S310180

CONTROLADOR PARA 21 SERVOS POR I2C SD21. Clic para ampliar

Circuito controlador de hasta 21 servos que se controla mediante señales I2C. Las señales I2C pueden proceder del exterior, o directamente desde un procesador en el propio circuito, ya que incorpora un zócalo en el que se puede colocar un microcontrolador como el BasicX24 o el Basic Stamp o el nuevo y económico Picaxe 18, con lo que se obtiene un sistema totalmente autónomo, como por ejemplo para controlar un robot. Todos los pines del controlador que no se utilizan para el bus I2C, están disponibles en un conector para utilizarlos en otras tareas de entrada y salida. Incorpora bornas de alimentación independiente para alimentar los servos y el circuito, aunque también es posible utilizar alimentación única si no supera los 7,2 V y es bastante potente. Esta última opción solo es valida cuando se trata de un número bajo de servos (menos de 5 ó 6) y además lo servos no van realizar trabajos de gran potencia.

Esto es una traducción de la documentación original del fabricante e incluye toda la información disponible sobre este circuito.

SD21 es un circuito controlador de servos para 21 canales. Este módulo puede controlar hasta 21 servos RC, manteniendo una tasa de refresco de 20mS, sea cual sea el número de servos utilizados o sus posiciones (ancho de pulso). Puede controlar tanto la posición como la velocidad de los servos. Se controlan a través del envío de comandos al procesador PIC18F2220 que esta en placa mediante un bus I2C. Hay 3 conectores I2C en la placa, pudiendo utilizar cualquiera de ellos para conectarse con su controlador. Asimismo, pueden utilizarse otros controladores del mercado como Basic X24, Picaxe, BS2p, Atom, etc. y conectarlos directamente al módulo ya que incluye zócalos libres para el procesador Picaxe y para procesadores de 24 pines como el BasicX24, convirtiéndose de esta forma en un potente controlador autónomo para sus proyectos de robótica.

Conexiones del circuito SD21

Alimentación

Hay dos maneras de alimentar el controlador SD21. El primer método es una alimentación de 5 voltios para la sección del procesador y una alimentación independiente de 6-7,2 voltios para los servos. Este es el método recomendado y se utilizan las 4 vias del las bornas de alimentación. Las conexiones de tierra de los datos lógicos y los servos se realizan internamente en la placa de circuito impreso. Teniendo en cuenta que no todos quieren utilizar dos alimentaciones independientes, se ha habilitado el uso de una única batería (normalmente de 7,2 voltios) para alimentar los servos y el módulo. Para ello debe colocar un puente entre los dos pines situados bajo las bornas de conexión. De este modo se conecta la alimentación del servo a un regulador de 5 voltios de bajo caída de tensión para alimentar la parte lógica. En el caso de alimentación única, la conexion de la alimentación debe hacerse siempre desde los terminales correspondientes a los servos, y no los de la alimentación lógica. El circuito SD21 es capaz de controlar la tensión de la batería de los servos, que está disponible para su lectura a través de un registro interno.

Conexiones

Los servos se conectan directamente en el controlador SD21, con el pin de tierra (cable negro en un servo hitec) lo más cerca posible de la parte externa de la placa de circuito impreso.

Basic X24 o controlador compatible

El terminal de 24 pines en el controlador SD21 permite el uso de un controlador Basic X24, BS2p u otro controlador compatible como por ejemplo, el ATOM. El BasicX24 se inserta en el pin 1 situado en la parte exterior del módulo separado de los conectores de los servos. El pin 5 y pin 6 del procesador se utilizan para las líneas SDA/SCL de I2C. Estos son los únicos pines de entrada/salida (I/O) utilizados en el módulo. El resto de pines se encuentran en el zócalo de 16 pines, como se muestra en la imagen y pueden emplearse en cualquier otra cosa.

Controlador Picaxe

El zocalo de 18 pines del SD21 permite el uso del controlador PICAXE-18X. Las salidas 1 y 4 se utilizan para I2C (son el puerto hardware de I2C en el PIC). Las demás entradas y salidas están disponibles en el zócalo de 16 pines. El controlador Picaxe se conecta con el pin 1 más próximo al extremo del módulo y separado de los conectores de los servos.

Registros

El núcleo del controlador SD21 es el chip preprogramado PIC18F2220. Se accede a el por el bus I2C en la dirección 0xC2 ($C2) a través de cualquiera de las opciones de controladores mencionados anteriormente, conectados al módulo, o desde un controlador externo conectado a uno de los conectores I2C. Existen tres registros internos asociados con cada uno de los 21 servos. La velocidad, el byte de menor peso y el byte de mayor peso de la posición.

Registro Servo  Función    Registro Servo  Función    Registro Servo  Función 
0 1 Velocidad   24 9 Velocidad   48 17 Velocidad
1 1 Byte de posición bajo   25 9 Byte de posición bajo   49 17 Byte de posición bajo
2 1 Byte de posición alto   26 9 Byte de posición alto   50 17 Byte de posición alto
3 2 Velocidad   27 10 Velocidad   51 18 Velocidad
4 2 Byte de posición bajo   28 10 Byte de posición bajo   52 18 Byte de posición bajo
5 2 Byte de posición alto   29 10 Byte de posición alto   53 18 Byte de posición alto
6 3 Velocidad   30 11 Velocidad   54 19 Velocidad
7 3 Byte de posición bajo   31 11 Byte de posición bajo   55 19 Byte de posición bajo
8 3 Byte de posición alto   32 11 Byte de posición alto   56 19 Byte de posición alto
9 4 Velocidad   33 12 Velocidad   57 20 Velocidad
10 4 Byte de posición bajo   34 12 Byte de posición bajo   58 20 Byte de posición bajo
11 4 Byte de posición alto   35 12 Byte de posición alto   59 20 Byte de posición alto
12 5 Velocidad   36 13 Velocidad   60 21 Velocidad
13 5 Byte de posición bajo   37 13 Byte de posición bajo   61 21 Byte de posición bajo
14 5 Byte de posición alto   38 13 Byte de posición alto   62 21 Byte de posición alto
15 6 Velocidad   39 14 Velocidad   63 -  
16 6 Byte de posición bajo   40 14 Byte de posición bajo   64 - Versión de Software
17 6 Byte de posición alto   41 14 Byte de posición alto   65 - Voltios de batería
18 7 Velocidad   42 15 Velocidad        
19 7 Byte de posición bajo   43 15 Byte de posición bajo        
20 7 Byte de posición alto   44 15 Byte de posición alto        
21 8 Velocidad   45 16 Velocidad        
22 8 Byte de posición bajo   46 16 Byte de posición bajo        
23 8 Byte de posición alto   47 16 Byte de posición alto        

Posición de servo

La posición (Byte de posición bajo/alto) se trata de un número de 16 bits que establece directamente el ancho del pulso de salida expresado en uS. Generalmente establecer la posición como 1500 (1500uS o 1,5mS) permite mover a la mayoría de los servos a su posición central. El rango de los anchos de pulsos admitidos normalmente va desde 1000uS (1mS) a 2000uS (2mS). Sin embargo, es posible superar estos límites. En un servo Hitec HS311, podemos establecer la posición desde 800 a 2200 para conseguir un rango amplio de movimiento. Tenga cuidado ya que es fácil hacer que el servo alcance los topes internos si define anchos de pulso fuera de los límites inferiores y superiores. Los registros pueden también leerse de manera inversa. La posición será la posición actual del servo durante un movimiento con velocidad controlada, por lo que puede realizar un seguimiento de su progreso hacia la posición requerida.

Velocidad de servo

El registro de velocidad controla la velocidad a la que se mueve el servo a su nueva posición. Los pulsos de los servos se refrescan automáticamente cada 20mS. Si la velocidad de registro es cero (0x00) entonces el pulso del servo se establecerá en la posición solicitada inmediatamente. Tras el encendido, los registros de velocidad tienen un valor fijo de cero para dar la máxima velocidad, por lo que si no desea reducir la velocidad, deberá ignorar los registros de Velocidad. Si el registro de velocidad está definido con un valor diferente a cero, entonces dicho valor se sumará a la posición actual cada 20mS hasta alcanzar la posición objetivo. Si desea moverse desde 1000 a 2000 y el registro de velocidad esté definido en 10, entonces tardará 2 segundos en alcanzar la posición 2000. La fórmula para definir el tiempo que tardará el movimiento es la siguiente:
(posición final-posición de inicio)/Registro de Velocidad)*20mS
A continuación, encontrará algunos ejemplos:

Posición de inicio Posición objetivo  Registro de velocidad  Duración del movimiento
2000 1000 10 2000mS (2Seg)
1000 2000 10 2000mS (2Seg)
1000 2000 1 20000mS (20Seg)
1000 2000 100 200mS (0,2Seg)
1234 1987 69 220mS (0,22Seg)

Más registros:

Los servos puede controlarse completamente a través de los registros anteriores, sin embargo, para facilitar las cosas a los controladores de pocos recursos como el Picaxe, hay otro grupo de registros (63-83 inclusive). Estos pueden definir la posición escribiendo un único byte en lugar de dos bytes. Estos registros no están implementados físicamente, por lo que no pueden leerse. Al escribir en ellos, el procesador multiplicará el número escrito por 6 y después se sumará una compensación de 732 y almacenará el resultado en los registros de 16 bits reales descritos arriba. Le proporciona un rango de 732 (0*6+732) a 2268 (256*6+732) en pasos de 6uS. Este conjunto de registros se denomina el conjunto Base. La fórmula es:
Reg Base*6+732uS
Aunque no pueden leerse, los datos se almacenarán internamente y se utilizarán con otros dos conjuntos de registros. Son las compensaciones positivas (84-104) y negativas (105-125). Al escribir la dirección de compensación positiva, el procesador la sumará a la posición base, la multiplicará por 6 y le sumará 732. Se realiza una función similar para las compensaciones negativas. Las fórmulas son las siguientes:
(RegBase + RegPos) * 6 + 732 y
(RegBase - RegNeg) * 6 + 732

Servo   Registro Base  Reg. compensación positiva  Reg. compensación negativa
1 63 84 105
2 64 85 106
3 65 86 107
4 66 87 108
5 67 88 109
6 68 89 110
7 69 90 111
8 70 91 112
9 71 92 113
10 72 93 114
11 73 94 115
12 74 95 116
13 75 96 117
14 76 97 118
15 77 98 119
16 78 99 120
17 79 100 121
18 80 101 122
19 81 102 123
20 82 102 124
21 83 104 125

Resumen de Registros
Para controlar de manera precisa los servos se utiliza el registro de 16 bits reales que establece la posición del servo directamente en uS. Con controladores de recursos de valores bajos, el servo puede ser controlado a través de valores de 8 bits. Los registros de compensaciones positivas y negativas facilitan considerablemente el diseño de los robots caminantes en los que las patas se mueven fácilmente hacia los lados desde una posición central. Disponemos de ejemplo de control de un robot EH2 de Lynxmotion a través de un controlador BS2p Stamp que utiliza registros de 16 bits y un controlador Picaxe haciendo los mismos movimientos y basándose en registros Base y Compensación de 8-bits.

Número de Revisión de Software
El Registro 64 es el número de revisión del software (3 en el momento de redacción de este documento).

Tensión de alimentación
El registro 65 contiene la tensión de la alimentación de los servos en unidades de 39mV hasta un máximo de 10v. Una tensión de pila de 7,2v dará un valor de 184. 6v equivalen a un valor aproximado de 154. Se actualiza cada 20mS tanto si se lee el valor como si no.

Dirección
El módulo de servo SD21 se encuentra en la dirección 0xC2 del bus I2C.

Código de ejemplo

Le muestra el uso de un BS2p Stamp para controlar un servo. Define un bucle simple que envía el servo entre dos posiciones

  
'{$STAMP BS2p}

SDA     CON 0     ' SDA on pin0, SCL on pin1
SD21    CON $C2   ' SD21 I2C address
Servo1  CON 0     ' register address of servo1 speed reg (followed by pos low/pos high)
Speed   CON 0     ' maximum speed
Servo1p CON 1800  ' Right position
Servo1n CON 1200  ' Left position

Servo VAR W0

Loop:
  Servo = Servo1p
  I2COUT SDA, SD21, Servo1, [Speed, Servo.LOWBYTE, Servo.HIGHBYTE]
  PAUSE 300
  Servo = Servo1n
  I2COUT SDA, SD21, Servo1, [Speed, Servo.LOWBYTE, Servo.HIGHBYTE]
  PAUSE 300
  GOTO Loop
  

Lo siguiente hace lo mismo con el controlador Picaxe utilizando el conjunto de registros alternativo.

 
Servo1  = 63   ' servo 1 base register
Servo1p = 84   ' servo 1 positive offset register
Servo1n = 105  ' servo 1 negative offset register
Base    = 128  ' centre position
Offset  = 50   ' +/- 50 from centre position

ProgStart:
  i2cslave $c2, i2cslow, i2cbyte    ' setup i2c port for servo controller
  writei2c Servo1, (Base)
Loop:
  writei2c Servo1p, (Offset)
  pause 300
  writei2c Servo1n, (Offset)
  pause 300
  goto Loop
 

 

Haga clic en el botón COMPRAR para añadir este producto a su carrito de la compra.

38,65-Euros.
IVA incluido
AÑADIR AL CARRITO DE LA COMPRA

CONTROLADOR PARA 21 SERVOS POR I2C SD21

Vea mas productos de esta categoría en:

Controladores de Servos

Ir a la Página Principal de www.SuperRobotica.com

Actualizada el 29/12/2023 © 2002 -2023 INTPLUS ®. Todos los derechos reservados