USO PRACTICO DEL PIC12F675 (IV) - PICKEY ELECTRÓNICA

Vaya al Contenido

Menu Principal:

USO PRACTICO DEL PIC12F675 (IV)

Uso Practico del PIC12F675 (IV)

PROYECTO: MnEBasic (control de un servomotor analógico).


.Tema:
En este nuevo artículo aprenderemos lo necesario para manejar un servomotor en general, y practicaremos con un servo Futaba S3003 en particular.

.Utilidad:
El servomotor que vamos a estudiar es el clásico y común utilizado en aeromodelismo o radiocontrol en general. Este mecanismo es muy fácil de encontrar a unos precios bastante razonables, su utilización es realmente variada, como puede ser el control de la dirección de un vehículo a radiocontrol, el paso de combustible del mismo, alerones de una maqueta, el posicionamiento de la aguja de un cuenta Km. Finalmente lo que lo hace interesante para nosotros, la aplicación a la robótica; como puede ser la construcción de un brazo robot, orientación de un proyector de ultrasonidos, pinza robot, cámara de Tv dirigida a distancia, etc, y también con las modificaciones adecuadas la tracción para nuestro robot.

.Partes y funcionamiento interno:
El funcionamiento en este caso es bien sencillo porque no entraremos en grandes profundidades, pero si lo suficiente para evitarnos cometer los errores típicos del principiante, de esta forma ahorraremos tiempo y frustración durante el desarrollo de nuestros futuros montajes.

El servomotor que estudiamos esta compuesto de:
- Caja o gabinete; contendrá todos los mecanismos y permite la fijación a algún elemento exterior.

- Motor DC; es un pequeño motor de corriente continua "DC" que nos genera el movimiento y  potencia necesarios. Los motores de corriente continua tienen la particularidad que con simplemente invertirles la polaridad cambia de sentido de giro.

- Mecanismo reductor de velocidad de giro o caja de cambios; este mecanismo esta compuesto de varias ruedas dentadas que llamaremos engranajes, cuando el motor gira este hace girar a su vez el engranaje solidario a el, y este engranaje tiene otro solidario y, así este ultimo al siguiente y, el siguiente al siguiente hasta llegar al eje de arrastre exterior, que es el que realmente podemos aprovechar en nuestro beneficio. Por lo tanto el movimiento se va transmitiendo de engranaje a engranaje, y con cada transmisión se produce una perdida de velocidad angular, sin embargo este efecto tiene su ventaja y es que ganamos torque o si lo preferimos fuerza angular, en este tipo de mecanismos es normal llegar a los 3Kg-cm de torque.

- Electrónica de control; se encarga de posicionar el eje de arrastre del servo a la posición deseada por el operador, y mantener la posición incluso si se ejercen fuerzas que intentan lo contrario, siempre y cuando el operador no decida otra cosa. Para poder controlar el servomotor éste apartado tiene que quedar bien claro, y además, para no pedir imposibles al mecanismo. Esta electrónica se encarga de invertir el sentido de giro y suministrar la energía demanda por el motor en cada momento, según el esfuerzo necesario que tiene que realizar. El eje del servo tiene limitado su giro mecánicamente a unos grados determinados, es decir el eje no gira 360º su recorrido aceptado va desde 0º a 180º, posteriormente veremos que es algo mayor, en realidad se ajusta a un valor menor al dispositivo que se encarga de suministrar la posición del eje a la electrónica de control, para de esta forma conocer en todo momento en que posición está el eje dentro de su recorrido posible. El mecanismo que se encarga de indicar la posición del eje es un potenciómetro; un potenciómetro es una resistencia que tiene la particularidad de que puede variar su valor dentro de un margen máximo y mínimo. Esta resistencia tiene un eje solidario que sale al exterior de ella y, cuado se hace girar varia el valor de la misma proporcionalmente al recorrido de su eje (si es de tipo de respuesta lineal). El eje del potenciómetro a su vez esta solidario con el eje exterior del servomotor, por lo que repite los mismos desplazamientos indicando la posición a la electrónica de control. Por lo que ya sabemos de los potenciómetros de volumen de los antiguos equipos de música, estos tienen un recorrido inferior a 360º, podemos deducir porqué este tipo de servo solo tiene un recorrido de su eje de 0º a 180º, como máximo lo máximo que permite el potenciómetro sin romperse (siempre será menor), en este caso esta protegido por un tope en el eje que impide girar lo suficiente como para romperlo. Cuando el eje del servo llega a un extremo lo podemos saber porque el servo no gira más y podemos escuchar un zumbido característico, que nos indica que de forma inmediata tenemos que cambiar el ángulo o corremos el riesgo de dañarlo.
La electrónica de control también se encarga de que el servomotor tenga velocidad de desplazamiento proporcional, esto es que cuanto mayor sea la diferencia entre la posición actual y la deseada la electrónica se encargará de que el eje del servo gire más rápido, y si la distancia es menor girará más lento, a esto se le llama posicionamiento proporcional.
Otro punto muy interesante que hay que saber es que se dice que el servo una vez que se posiciona deja de consumir o su consumo es muy bajo (en algunos sitios se nombra como estado sleep), en realidad esto en la mayoría de los casos no se aplica ya que tendrá que vencer la fuerza de la gravedad, que actúa sobre el objeto que tiene que mover, arrastrar o tirar de el. Por lo que tendremos un consumo permanente proporcional a la fuerza que tenga que vencer para mantener la posición deseada. Se entiende que si lo único que tiene que hacer es posicionar una aguja indicadora o tirar de una pequeña palanca, si en ambos casos la fuerza es mínima, entonces tendremos un consumo en servomotor muy bajo, ya que la fuerza de fricción que se opone a que sus mecanismos internos giren entre si será suficiente para mantener la posición, pero si queremos mantener la posición del cuerpo de un robot insecto, o la orientación de una cámara, el servomotor se vera en la necesidad de estar consumiendo energía para que la gravedad no venza sus mecanismos. En el caso del robot insecto quedaría aplastado en el suelo bajo su peso, y la cámara quedaría siempre señalando hacia abajo. Para que esto no suceda la señal de control externa que le indica al servomotor que posición tiene que mantener, siempre tiene que estar presente, de esta manera el servo siempre guardara su posición oponiéndose a las fuerzas exteriores, si esta señal de posicionamiento dejara de serle suministrada el servo pasaría al estado de reposo, y cualquier fuerza suficiente grande podría mover su mecanismo internos "lo vencería". De igual forma para llevarlo a una posición, no basta con indicarle una sola vez la posición deseada, hay que estar enviándole repetidas veces la trama de la señal de control como mínimo hasta que llegue a la posición indicada (en este caso se entiende que el peso del objeto es mínimo), o el servo para de girar antes de llegar a la posición. Hay que tener en cuenta que estos mecanismos se paran muy rápido porque tienen muy baja inercia.
Resumiendo; en la inmensa mayoría de nuestras aplicaciones la trama de control que le indica al servomotor el posicionado del eje será perpetua.


.Generando la trama de control:
La parte de la señal de control que le indica la posición que el servo tiene que tomar en cada momento, para el servo genérico tiene dos valores extremos, valor mínimo igual a 1mSeg. (posición 0º) y valor máximo igual a 2mSeg. (posición 180º), esta parte de la señal de control que indica el posicionamiento toma valor alto. Por lo tanto la señal de control como máximo puede estar 2mSeg a valor alto y como mínimo 1mSeg también a valor alto. El resto del tiempo la señal permanecerá en estado bajo. Tanto si la señal la mantenemos en este ultimo estado, tiempo de menos, o al contrario, alargamos demasiado este tiempo, el servo no responderá adecuadamente, podremos observar desplazamientos con velocidad no homogénea, ruidos raros, perdida de fuerza. La duración total de la señal de control será de 20mSeg estado alto y bajo incluidos. Este valor no es un capricho es el recomendado por el fabricante, ya que estos servos también son llamados servos de 50hz (el periodo de 50hz es igual a 20mSeg). Resumiendo; la señal de control la repetiremos cada 20mSeg por lo que tendrá una longitud de 20mSeg. Está establecido que esta señal puede tener una variación entre 10mSeg y 30mSeg en general.

.En particular para el servomotor Futaba modelo S3003:
Control servomotor Futaba S3003

Es un servomotor para modalismo, es un servomotor de posición y es un servo a 50hz. Permite tiempos inferiores a 1mSeg y superiores a 2mSeg., El periodo de la señal de control no recomiendo que sea inferior a 15mSeg ni superior a 20mSeg, de hecho siempre que se pueda que sea lo más próximo a 20mSeg. Trabaja perfectamente a 5Vdc, por lo que es ideal para nuestros proyectos. Cuando se ajusta para que trabaje a sus extremos máximos (recorrido del eje) siempre hay que dejar una pequeña franja sin utilizar, no solo para no dañarlo, sino también porque no hay dos servos exactamente iguales incluso siendo ambos del mismo modelo. El circuito de alimentación tiene que ser capaz de suministrarle entre 350 a 500mAmp de corriente por servo, este valor es razonable para nuestros montajes, pero hay que tener en cuenta que si  se ve obligado a ejercer un esfuerzo grande puede superar perfectamente 1Amp en consumo de forma permanente un solo servo.

Valores máximos y mínimos para Futaba S3003
Posición mínima: 0.4mSeg.
Posición para 0º: 0.4mSeg.
Posición para 90º: 1.3mSeg.
Posición para 180º: 2.2mSeg.
Posición máxima: 2.3mSeg.

Sabiendo que la duración del pulso alto para 0º =  0.4mSeg
:
La duración del pulso alto en mSeg para un ángulo O
queda dado por la fórmula t = 0.4 + O/100, teniendo en cuenta que t va expresado en mSeg y O en grados.
Ejemplo para un ángulo de 30º: t = 0.4mSeg + 30º/100 = 0.7mSeg


Conexiones para Futaba S3003

Los servos utilizan un conector tipo header de tres vías hembra con tres cables de distinto color. Futaba utiliza el color negro para la conexión con el negativo o GND de la fuente de alimentación, color rojo central para el polo positivo (+Vcc) y el blanco para suministrarle los pulsos de la señal de control.

Información técnica para Futaba S3003

  Velocidad a 4.8V: 0.23 sec/60°
  Velocidad a 6.0V: 0.19 sec/60°
  Torque a 4.8V: 3.2kg-cm
  Torque a 6.0V: 4.1kg-cm
  Peso: 37g
  Dimensiones: 40 x 20 x 36mm

.Programas de ejemplo:
Los programas de ejemplo siguen una plantilla en la que se configuran módulos más comunes adaptándolos a la configuración de entradas y salidas de la Mini-Entrenadora. Los distintos módulos son configurados utilizando los nombres de cada BIT de configuración y se emplean en lo menor posibles las definiciones y directivas propias del lenguaje. De esta manera se pretende conseguir un código fácil de entender por todos y también de rápida traducción a otros lenguajes. El uso directo en el código de estos nombres facilita su búsqueda en el datasheets del microcontrolador en cuestión para su rápida localización y así poder consultar sus posibilidades. Las líneas de los códigos de ejemplo están comentadas.

Ejemplo I:
En el ejemplo 1 mediante una simple rutina en la que se ha utilizado una sencilla función de pausa (uSeg.) integrada en el sistema, Waitus, se consigue el posicionado permanente del servomotor en la posición central (90º).

Ejemplo II:
Este es un ejemplo algo más elaborado que el anterior, mueve el servomotor de un extremo a otro de forma continua a dos velocidades distintas. La electrónica interna del servo es la que decide a que velocidad debe girar en todo momento, pero introduciendo pasos intermedios hasta llegar a la posición deseada se puede conseguir modificar la velocidad del servo.
También permite seleccionar el Pin del microcontrolador por donde enviaremos la señal al servo.


< Vídeo donde se puede ver el servomotor trabajando a distintas velocidades.

Vídeo de una practica con servomotor y acelerómetro analógico >

 
Copyright 2016. All rights reserved.
Regreso al contenido | Regreso al menu principal