hoja de datos Servos
Transcripción
hoja de datos Servos
SERVOS v1.0 INTRODUCCIÓN El módulo Servos v1.0 está diseñado para controlar diez servomotores de forma independiente, gobernado por un microcontrolador PIC18F previamente programado, es capaz de recibir la información de control vía serial. En este manual conoceremos algunos ejemplos básicos del módulo Servos v1.0 así como las instrucciones y características principales. La secuencia en la que se basarán los módulos PYC para la comunicación es la siguiente: MÓDULO COMANDO INSTRUCCIÓN DATO_X Todos los módulos deberán de enviar una respuesta al término de cada cadena de instrucciones que reciba, ya sea de configuración, escritura o lectura. Este dato siempre será el cero en binario, es decir: “0000 0000” Para utilizarlos debemos de recordar que la información que se envié será en ASCCI y la información que esté respondiendo el módulo será en forma de BYTE. Cada módulo estará representado por 4 Bytes para identificación particular. En la tabla 1 se muestran las instrucciones de configuración, comandos de lectura y escritura para los módulos PYC versión 1.0. Los comandos para cada módulo serán de un solo byte. C - Configuración W - Escritura R - Lectura COMANDO MOTx FQ STP1 SEVx _LCD M1 M2 D1 D1 SC PS CD Rx Lx Px Wx Ux DC IC BC FQ CONFIGURACIÓN C BC BC BC ESCRITURA W L1 L2 R1 R2 LECTURA R - L1 R0 R1 R2 R3 BC 00xx…xx - Sx R1 - TEMP 40xx..xx - - T Tabla 1. Instrucciones módulos PYC v1.0. Página 1 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 CONFIGURACIÓN DE COMUNICACIÓN Los módulos PYC v1.0 estarán configurados previamente para operar a 9600 Baudios, en la tabla 2 se presentan las distintas velocidades a las que el módulo podrá operar. INSTRUCCIÓN 1 2 3 4 VELOCIDAD DE COMUNICACIÓN (BAUDIOS) 9600 10417 19200 57600 Tabla 2. Configuraciones de comunicación Servos v1.0. Un ejemplo para cambiar la velocidad de comunicación en el módulo es: BC4 De esta manera estaremos configurando el módulo a 57600 Baudios, recordemos que cuando un módulo es configurado a una velocidad mayor o menor de comunicación dejara de entender las instrucciones hasta que nuestro dispositivo maestro comience a la misma velocidad. Para que la configuración de velocidad se lleve a cabo el módulo no deberá de ser desconectado ya que este mismo cuando es alimentado operará a 9600. Página 2 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 INSTRUCCIONES SERVOS v1.0 Este módulo en particular tiene la opción controlar y configurar los diferentes anchos de pulso, que nos ayudará a manejar cualquier servomotor analógico sin importar la marca. En la tabla 2 se presentan anchos de pulso de diversos servomotores. FABRICANTE Power HD Futaba Hitech Graupner/Jr Multiplex Robbe Simprop Vigor DURACION DE PULSO (ms) MÍNIMA NEUTRAL MÁXIMA 0° 90° 180° 0.9 1.5 2.2 0.9 1.5 2.1 0.9 1.5 2.1 0.8 1.5 2.2 1.05 1.6 2.15 0.65 1.3 1.95 1.2 1.7 2.2 0.9 1.5 2.1 COLOR DE LOS CABLES FREC. (Hz) POSITIVO NEGATIVO CONTROL 50 50 50 50 40 50 50 50 Rojo Rojo Rojo Rojo Rojo Rojo Rojo Rojo Marrón Negro Negro Marrón Negro Negro Azul Marrón Naranja Blanco Amarillo Naranja Amarillo Blanco Negro Naranja Tabla 2. Características técnicas de algunos servos. Como se pude observar en la tabla la mayoría de los servomotores analógicos cumplen con pulsos estándar como los servos Futaba y los Hitech. Con ayuda de la tabla 2 podremos partir para ubicar el servomotor que estemos utilizando y así configurar nuestro módulo Servos v1.0 adecuadamente. En la imagen 1 tenemos nuestro módulo, en él podemos observar que se encuentran divididos en 2 grupos de 5, y esto es debido a que en cada grupo se podrá configurar el mínimo pulso y la diferencia total del pulso. Imagen 1. Módulo Servos v1.0. La configuración que el módulo tendrá previamente programada será con un pulso mínimo de 1.3 ms y con una diferencia de 0.4 ms, lo que nos da un pulso total de 1.7 ms. En la tabla 3 presentamos los distintos pulsos configurables. Página 3 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 CÓDIGO DE MÍNIMO DIFERENCIA IDENTIFICACIÓN ms ms 0 0.3 0.4 1 0.35 0.5 2 0.4 0.6 3 0.45 0.7 4 0.5 0.8 5 0.55 0.9 6 0.6 1 7 0.65 1.1 8 0.7 1.2 9 0.75 1.3 10 0.8 1.4 11 0.85 1.5 12 0.9 1.6 13 0.95 1.7 14 1 1.8 15 1.05 1.9 16 1.1 2 17 1.15 2.1 18 1.2 2.2 19 1.25 2.3 20 1.3 2.4 Tabla 3. Mínimos y diferencias configurables del módulo servos v1.0 En la tabla 3 podremos ubicar los pulsos mínimos y diferencia que debemos configurar para trabajar con nuestro servo. En la imagen 2 se muestran tres ejemplos de posicionamiento de un servomotor estándar. Imagen 2. Posicionamientos de un servomotor. Observando la imagen tenemos que el pulso mínimo tiene una duración de 0.5 ms y ubica el servomotor a 0°, para ubicar el servomotor a 90° el pulso será de 1.5 ms y para mover el servomotor a 180° tendremos que mandarle un pulso de 2.5 ms. Teniendo los pulsos mínimo y máximo podremos determinar la diferencia, que para este caso es de 2 ms. Para configurar el módulo tenemos las siguientes instrucciones presentadas en la tabla 4. Página 4 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 INSTRUCCIÓN M1 M2 D1 D2 SC PS DESCRIPCIÓN Mínimo 1. Servo A-E. Mínimo 2. Servo F-J. Diferencia 1. Servo A-E. Diferencia 2. Servo F-J. Salvar configuración. Salvar posición. Tabla 4. Instrucciones de configuración Servos v1.0. Para indicarle al módulo que configure los pulsos mínimos para el ejemplo anterior se realizará de la siguiente manera: SEV1CM14 Mediante esta cadena de caracteres que son enviados de forma serial, podemos configurar el pulso mínimo para los servos A-E. Como podemos observar, la instrucción está dividida en cuatro partes como se describe: SEV1 C M1 4 Hace referencia al módulo. Es el comando de configuración. Es una instrucción exclusiva del módulo localizada en la tabla 4. Indicamos que será el pulso con número de identificación 4 ubicado en la tabla 3. Debemos de tener en cuenta que el módulo Servos v1.0 debe tener un retardo mínimo de 250ms para que comience la comunicación. También si vamos a utilizar servomotores de una sola marca, tenemos la opción de salvar la configuración con la instrucción SC localizada en la tabla 4. El siguiente ejemplo muestra la secuencia con la que podemos configurar mínimos y diferencia, seguido de la instrucción de guardar configuración. SEV1CM15 SERVOS A-E SEV1CD16 SEV1CM210 SERVOS F-J SEV1CD210 SEV1CSC Con esta secuencia tendremos configurado nuestro módulo de la siguiente manera: Servos A-E Pulso mínimo de 0.55 ms y diferencia de 1 ms. Lo que nos dará un pulso máximo de 1.55 ms. Servos F-J Pulso mínimo de 0.8 ms y diferencia de 1.4 ms. Lo que nos dará un pulso máximo 2.2 ms. Página 5 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 Con la última instrucción indicada al módulo se estará guardando la configuración, por lo que solo será necesario hacer una sola configuración inicial y después podremos utilizar el módulo sin problema alguno. También tenemos la opción de PS (Salvar posición), que nos será muy útil para aquellas aplicaciones en donde se requiera poner los servos en una posición inicial, de igual forma se podrá guardar la posición una sola vez y el módulo cuando es prendido estará mandando los servos a su posición original. El siguiente ejemplo muestra cómo podemos mover los servos y también como se guardara la posición inicial. SEV1WSA100 SEV1WSB95 SEV1WSC85 SEV1WSF30 SEV1WSJ5 SEV1CPS Mediante esta secuencia estaremos posicionando el servo A en 100°, el servo B en 95°, el servo C en 85°, el servo F en 30° y por último el servo J en 5°. La instrucción SEV1CPS estará configurando al módulo para utilizar estas posiciones como las iniciales de modo que al prender el módulo inmediatamente estarán moviéndose los servos a su respectiva posición. Página 6 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 SOFTWARE PYC C Y OTROS EJEMPLOS En la página www.ingenieriaenserie.com o con tu distribuidor podrás rás encontrar información relevante acerca de los módulos q que ue desees usar, así mismo códigos de ejemplo y un software para poder realizar tus proyectos con los módulos P PYC. C. La imagen 3 muestra el software PY PYC, mediante ell cual y con ayuda de un FTDI v1.0 podremos controlar los módulos desde nuestro ordenador. Imagen 3 3. Software PYC SERVOMOTORES. En la imagen 3 podemos observar las barras de SA hasta ST, que son nombres de identificación que reciben los servos, en el caso de el módulo Servos v1.0 solo so estaremos manejando los servos A hasta J. También en la parte inferior tenemos la configuración de los mínimos y diferencias configurables para cada grupo de servomotores. De esta manera podemos probar y controlar los servomotores desde nuestro ordenador. ordenado El siguiente código es un sencillo ejemplo para la plataforma Arduino. void setup() { Serial.begin(9600); SALVAR_CONFIGURACION(); Página 7 de 12 www.ingenieriaenserie.com Junio o 2012 –DCT0006 SERVOS v1.0 } void loop() { Serial.println("SEV1WSA0");// Servo A lo posicionamos a 0° Serial.println("SEV1WSJ0");// Servo J lo posicionamos a 0° delay(2500); Serial.println("SEV1WSA180");// Servo A lo posicionamos a 180° Serial.println("SEV1WSJ180");// Servo J lo posicionamos a 0° delay(2500); Serial.println("SEV1WSA90");// Servo A lo posicionamos a 90° Serial.println("SEV1WSJ90");// Servo J lo posicionamos a 90° delay(2500); Serial.println("SEV1WSA50");// Servo A lo posicionamos a 50° Serial.println("SEV1WSJ50");// Servo J lo posicionamos a 50° delay(2500); } void SALVAR_CONFIGURACION()// Rutina para salvar configuración { delay(500); Serial.println("SEV1CM18"); Serial.println("SEV1CM28"); Serial.println("SEV1CD111"); Serial.println("SEV1CD211"); Serial.println("SEV1CSC"); } De esta forma podemos probar configuraciones básicas y movimientos para nuestros servomotores. Recordemos que arduino es una plataforma fácil de operar con grandes aplicaciones y esta ocasión les presentamos una más para implementar a gusto de ustedes. Página 8 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 Es importante resaltar que los módulos están diseñados para operar bajo distintas plataformas de programación. En el siguiente ejemplo está diseñado para trabajar en lenguaje ensamblador y en específico para PIC18F, que fue implementado para el Entrenador v1.0. La librería se encuentra disponible en el sitio web, en ella podremos encontrar la opción para generar retardos exactos de mili segundos y segundos. Se ha diseñado para operar correctamente con los módulos por lo cual la comunicación serie estará a cargo de la librería. SERVOMOTOR V1.0 SEVXWX Registro AUXILIAR_PyC Bit 7 1 = Placa de 20 servomotores. Bit 6 No importa. Bit 5 No importa. Bit 4 - 0 Numero del servo que se va a mover. 0 = Placa de 10 servomotores. Registro DATO_PyC_L Contiene los grados que se va a mover el servo. Ejemplo 1 Selecciono la placa de 20 servos, el servo 17(Q) y lo muevo a 90°. CLRF AUXILIAR_PyC BSF AUXILIAR_PyC,7 MOVLW .17 ADDWF AUXILIAR_PyC,F MOVLW .90 MOVWF DATO_PyC_L CALL SEVXWX Ejemplo 2 Selecciono la placa de 10 servos, el servo 9(Q) y lo muevo a 180°. CLRF AUXILIAR_PyC MOVLW .9 ADDWF AUXILIAR_PyC,F MOVLW .180 MOVWF DATO_PyC_L CALL SEVXWX Página 9 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 SEVXCX Registro AUXILIAR_PyC Bit 7 1 = Placa de 20 servomotores. 0 = Placa de 10 servomotores. Bit 6 No importa. Bit 5 No importa. Bit 4 1 = Salvar Configuración. Bit 3 1 = Salvar Posición. Bit 2 1 = Diferencia. 0 = Mínimo. Bit 1 - 0 Selección del intervalo a modificar. Registro DATO_PyC_L Contiene el código de identificación de los diferentes pulsos posibles. Ejemplo 1 Selecciono el módulo de 10 servos para configurar el mínimo del 1 intervalo a 1.3ms. CLRF AUXILIAR_PyC BCF AUXILIAR_PyC,7 ;PLACA SERVOS 10 BCF AUXILIAR_PyC,2 ;CONFIGURO MíNIMO MOVLW .1 ;DE LA SECCION 1 ADDWF AUXILIAR_PyC MOVLW .20 ;A 1.3ms MOVWF DATO_PyC_L CALL SEVXCX Ejemplo 2 er Selecciono el módulo de 10 servos para configurar la diferencia del 1 intervalo a 4ms. CLRF AUXILIAR_PyC BCF AUXILIAR_PyC,7 ;PLACA SERVOS 10 BSF AUXILIAR_PyC,2 ;CONFIGURO DIFERENCIA MOVLW .1 ;DE LA SECCION 1 ADDWF AUXILIAR_PyC MOVLW .0 ;A .4ms MOVWF DATO_PyC_L CALL SEVXCX Página 10 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 ESPECIFICACIONES DEL MÓDULO SERVOS v1.0 El módulo está integrado por un microcontrolador de la familia MICROCHIP de la gama 18F, y las dimensiones son representadas en la imagen 4. Imagen 4. 3D y medidas del módulo Servos v1.0. Como podemos observar en la imagen 4, tenemos los pines de conexión los cuales tendremos que conectar como se indica en la tabla 5. PIN DEL MÓDULO TX RX VCC 3.3V GND VIN GND PIN DE NUESTRO CIRCUITO RX De nuestro microcontrolador ó PC. TX De nuestro microcontrolador ó PC. VCC De nuestro circuito preferentemente de 4.5V a 5.5V. 3.3V No es necesario. GND Tierra de nuestro circuito. Voltaje de alimentación de los servomotores. De 5V a 18V. Tierra de nuestra fuente de alimentación de servomotores. Tabla 5. Conexión del módulo Servos v1.0. Página 11 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006 SERVOS v1.0 HOJAS DE DATOS Las hojas de especificaciones de los componentes que integran éste módulo, las podemos localizar en las siguientes direcciones: - PIC18F13K22. http://ww1.microchip.com/downloads/en/DeviceDoc/41365E.pdf Página 12 de 12 www.ingenieriaenserie.com Junio 2012 –DCT0006