Icono del sitio ELECTROALL

Como Controlar un Servomotor

INTRODUCCIÓN

Un servomotor también llamado servo, es un motor electrónico como cualquier u otro motor DC con la diferencia que estos se pueden mover a un Angulo especifico normalmente de 0° a 180°, en la actualidad ya existen servomotores que giran a 360°, y que estos pueden ubicarse en un Angulo especifico, a través de un control que se realiza, además, tiene la capacidad de mantenerse en una posición durante el tiempo que se requiere. Así mismo estos servos podemos controlar la velocidad y posición de acuerdo a las necesidades requeridas.

CARACTERÍSTICAS 

Este motor es un motor especial ya que dentro de ella existe un circuito de control, un potenciómetro y un conjunto de engranajes; las cuales no permiten el giro mayor a 180° o 360° según sea caso.

FUNCIONAMIENTO

Este servomotor funciona por un ancho de pulso (PWM) el cual nos permite el control adecuado y eficaz. La mayoría de ellos trabajan a 50Hz, así la señal PWM tendrá de un periodo de 20 ms. La parte del circuito interno que tiene el servomotor recibe señales específicas para la una ubicación de una posición; es decir, para girar a 0° requerimos 700us, para girar a 90° necesitamos 1500us y finalmente para lograr girar a 180° se requiere 2300us.

CÓDIGO ARDUINO
/* 
                CREADO POR      :{==[=======>>>> ELECTROALL <<<<<=======]==}
                INSTAGRAM       : https://www.instagram.com/carlos_j_fuentess/ ó  @carlos_j_fuentess
                FACEBOOK        : https://web.facebook.com/ELECTROALL.ELECTRONICA/?_rdc=1&_rdr
                PÁGINA WEB      : https://www.electroallweb.com/
                YOUTUBE         : https://www.youtube.com/c/ELECTROALL
           ________________________________________________________
                   {==[=======> (SERVOMOTOR) <=======]==}
           ________________________________________________________
*/

int servo =7;
void setup() {
 pinMode (servo, OUTPUT);
 Serial.begin(9600);
}

void loop() {

 //  {==[=======> (180°) <=======]==}
 for (int Hz =0; Hz < 50 ;Hz++){      // repetimos la instruccion 50 veces
digitalWrite (servo,HIGH); 
delayMicroseconds(2300);               // llevamos a 180°
digitalWrite (servo,LOW);
delay(18);
Serial.println(Hz);
 }
delay(2000);                          // retardo

// {==[=======> (90°) <=======]==}
 for (int Hz =0; Hz < 50 ;Hz++){     // repetimos la instruccion 50 veces
digitalWrite (servo,HIGH);
delayMicroseconds(1500);                // llevamos a 90°
digitalWrite (servo,LOW);
delay(19);
Serial.println(Hz);
 }
delay(2000);

// {==[=======> (0°) <=======]==}
 for (int Hz =0; Hz < 50 ;Hz++){      // repetimos la instruccion 50 veces
digitalWrite (servo,HIGH);
delayMicroseconds(700);                // llevamos a 0°
digitalWrite (servo,LOW);
delay(20);
Serial.println(Hz);  
 }
 delay(2000);
}
Salir de la versión móvil