martes, 2 de mayo de 2017

practica en arduino servor

En este practica vamos a mover el eje de un servomotor. Los servomotores son motores eléctricos con un mecanismo interno de control, el cual nos permite controlar la posición o ángulo de su eje. Normalmente están construidos para girar en un angulo de 0 a 180 grados y en ambos sentidos. También hay los que tienen giro continuo, en los que no podemos controlar la posición pero si la velocidad.
En este proyecto sólo haremos girar el eje del servomotor de manera continua, primero de 0 a 180 grados y después en sentido contrario, de 180 a 0 grados.
El propósito es usar la biblioteca Servo, que nos facilita el manejo de los servomotores y probar como funciona.
Componentes
  • arduino
  • protoboard
  • un servomotor

Circuito

El servomotor de nuestro kit es un servomotor de 5 volts y tiene tres cables para hacerlo funcionar. Un cable rojo, que se debe conectar a 5 volts. Un cable negro, que se debe conectar a tierra. Y un tercer cable, amarillo en nuestro motor, que es el cable de control y que vamos a conectar a un pin de salida del arduino.
Es muy recomendable colocar un capacitor entre las dos patas de alimentación de nuestro servo. Cuando el servo arranca, consume más corriente que cuando se está moviendo, causando caidas en el voltaje, que con el capacitor ayudamos a hacerlas más suaves. Pondremos un capacitor electrolítico de 100 uf, hay que tener cuidado en como lo conectamos, ya que son componentes polarizadas

Código

Para utilizar los servomotores desde el Arduino contamos con la biblioteca Servo, que nos permite controlar los servos de manera muy simple.
Lo primero que debemos hacer es incorporar la biblioteca Servo en nuestro sketch, que es una de las bibliotecas que ya viene con el software del Arduino.
Con esta biblioteca primero hay que crear un objeto Servo. Despues hay que ligarlo al pin con el que lo vamos a controlar y finalmente con la función write() lo colocamos en la posición deseada.
En este caso lo vamos a hacer girar de 0 a 180 y de 180 a 0 grados, utilizando dos ciclos for().
    /* 

      En este proyecto movemos un servo de 0 a 180 grados y despues en sentido inverso

      Para hacerlo utilizamos la biblioteca Servo

    */

    #include <Servo.h>   // incluimos la biblioteca Servo 

    Servo miservo;       // creamos un objecto servo para controlar el motor 

    void setup() { 
             miservo.attach(9);  // liga el servo al pin 9 
  }

    void loop() { 
      for(int angulo = 0; angulo < 180; angulo += 1) {   //  un ciclo para mover el servo entre los 0 y los 180 grados  
       miservo.write(angulo);               //  manda al servo la posicion
       delay(15);                        //  espera unos milisegundos para que el servo llegue a su posicion
    }

    for(int angulo = 180; angulo >= 1; angulo -= 1)    {   //  un ciclo para mover el servo entre los 180 y los 0 grados                             
       miservo.write(angulo);                 //  manda al servo la posicion
       delay(15);                          //  espera unos milisegundos para que el servo llegue a su posicion
    }
         }
imagenes de como se gira el servomotor.


Variantes

Puedes cambiar la velocidad a la que gira el servo, ya sea variando el incremento de la posición en los ciclos for, o cambiando el tiempo del delay(), lo primero será lo más indicado.
Puedes hacer que no haga el giro completo de 180 grados, si no que lo haga por ejemplo entre 45 y 90 grados.