En este tutorial se muestra el funcionamiento de un servomotor y cómo se puede usar con Arduino. Se usará un microServo. El servomotor tiene 3 cables, Alimentación, Masa y la señal.
Los colores son los siguientes:
Básicamente un servomotor es un motor de corriente continua con un potenciometro que le permite saber la posición en la que se encuentra y así poder controlarla.
Para controlar el servomotor se le envía pulsos cada 20 ms es decir 50Hz. La anchura del pulso es lo que codifica el angulo de giro , es decir lo que se conoce como PWM, codificación por ancho de pulso. Esta anchura varia según el servomotor pero normalmente va entre 0.5 y 2.5 ms aunque pueden variar.
Dependiendo del tamaño del servo y su consumo es posible que no puedas alimentarlo desde tu placa arduino, en ese caso es necesario una fuente de 5V independiente para poder moverlo,en mi caso uso un microservo por lo que consume poca corriente y se puede alimentar directamente por el Arduino . Sobre el peso que pueden levantar se puede deducir con el par del servo. Normalmente los servos indican el par o torque que pueden realizar para un servo estándar suele ser 5kg/cm es decir puede mover 5kg a 1 cm de distancia. En caso de querer mover lo a 5 cm el servo solo podrá mover 1kg.
A continuación vamos a ver como controlar en Arduino un servomotor. Para ello iniciamos la aplicación de Arduino y pulsamos en sketch->importar libreria ->Servo
Con esto se incorpora la librería, aunque también se puede escribir el texto directamente. Una vez hecho esto ya se puede usar la librería Servo.
Ahora vamos a definir nuestro objeto Servo, esto es como definir una variable de tipo int o float, pero un poco mas completa con funciones y campos que le pertenecen. Para ello se escribe Servo miServo.
Con el objeto servo definido se pasa a inicializarlo, para ello se utiliza la función attach(pin,min,max). Los parámetros de esta función son el pin, casi cualquier pin del Arduino puede controlar un Servomotor y no es necesario que sea uno de los PWM. En las placas que no son la Mega la utilización de la librería Servo inhabilita el PWM en los pines 9 y 10 se usen estos pines o no como servo. Los dos siguientes parámetros son opcionales e indican cuál es el ancho de pulso en microsegundos para 0º y para 180º, por defecto 544 y 2400.
En este ejemplo se usará el pin 9.
El siguiente paso consiste en enviarle el ancho de pulso al servo con el angulo que queremos. En esta primera parte le enviaremos un angulo constante por ejemplo 90º. Y lo visualizaremos el ancho de pulso en el osciloscopio. Donde en la parte inferior se puede ver el ancho de pulso y como el periodo es de 20 ms aproximadamente.
Hay que tener en cuenta que no se ha puesto ningún delay, por lo que el objeto servo enviará el pulso cada 20 ms independientemente del programa.
Para poder interactuar con el servo se van a incorporar unas funciones que permitan moverlo desde el PC. Para ello se usará el puerto Serie conectado al USB y se enviará la letra ‘a’ cuando se quiera aumentar 10º o la letra ‘z’ cuando se quiera decrementar 10º. Además, con la función constrain se asegura que el valor no supere los 180 ni baje de los 0.
Para las conexiones simplemente la masa conectada con la del Arduino, la señal del servo(Naranja o blanco) al pin 9 y la alimentación si tenéis un servo pequeño al pin +5v del Arduino , sino tenéis que alimentarlo con alguna fuente externa.