Llévate los mejores 📘EBOOKS📘 ➡ ENTRA AQUÍ

¿Cómo programar un Servomotor con Arduino para crear proyectos complejos? Guía paso a paso

publicidad

Programar un servomotor con Arduino no es una tarea difícil, si es que lees con detenimiento todos los párrafos de este artículo. Te vamos a mostrar cómo puedes crear proyectos complejos sin errores.

Será necesario que conozcas qué es un servomotor y para qué sirven estos componentes de hardware. También te explicaremos los usos que tienen estos dispositivos y cómo puedes programar un servomotor con Arduino.

Pero esto no es todo lo que verás, también podrás encontrar los mejores proyectos de Arduino con servomotor que puedes hacer tú mismo para practicar de una manera rápida y sencilla. Echa un vistazo.

publicidad

¿Qué es un servomotor y para qué sirven estos componentes de desarrollo de hardware?

¿Qué es un servomotor y para qué sirven estos componentes de desarrollo de hardware?

publicidad

Un servomotor es un tipo especial de motor que se caracteriza por realizar movimientos precisos a un determinado torque. Su función principal es mantener la posición del eje en una acción robótica.

Está compuesto por una caja de plástico la cual contiene una placa de Arduino, a la que se le añade un motor de tipo DC, un potenciómetro y un sistema de engranajes. Se puede encontrar 2 tipos de servomotores. Están los de giro limitado, los cuales pueden rotar hasta 180° y los servomotores de rotación total o continuo. Estos pueden tener una rotación completa de 360°.

Los 10 Kits de Servomotores Arduino más vendidos

Sabemos que es difícil elegir a la hora de adquirir tu Kit de servomotores para usarlo con tu placa Arduino, por eso a continuación te mostramos una lista con los 10 Kits de Servomotores Arduino más vendidos del momento.

SuperVentas Nº 1
ZHITING 5Pcs SG90 9G Micro Servo Motor Kit para RC Robot Arm / Hand / Walking...
ZHITING 5Pcs SG90 9G Micro Servo Motor Kit para RC Robot Arm / Hand / Walking...
Par de parada (4.8V): 17.5oz / in (1kg / cm). Ajuste de banda muerta: 7 microsegundos; Tipo de amplificador: controlador analógico. Voltaje de funcionamiento: 4.8V ~ 6.0V
12,99 EUR
SuperVentas Nº 2
ELEGOO Conjunto Medio de Iniciación Compatible con Arduino IDE con Tutorial en...
ELEGOO Conjunto Medio de Iniciación Compatible con Arduino IDE con Tutorial en...
La manera mas económica de iniciarse en la programaciónpara principiantes.; El modulo LCD1602 incluye conector (no será necesario que lo suelde).
32,99 EUR
SuperVentas Nº 3
AZDelivery MG995 Micro Digital Servo Motor para RC Robot Avión Helicóptero...
AZDelivery MG995 Micro Digital Servo Motor para RC Robot Avión Helicóptero...
✔️ Este servo ofrece un amplio rango de ajuste de 180º con engranaje metálico.
9,99 EUR
SuperVentas Nº 4
AZDelivery MG996R Micro Digital Servo Motor con engranaje metálico para RC...
AZDelivery MG996R Micro Digital Servo Motor con engranaje metálico para RC...
✅ Velocidad: 0.17s / 60 grados a 4.8V; 0.13s / 60 grados a 6V.; ✅ Dimensiones: 40 x 19 x 43 mm.
8,29 EUR
SuperVentas Nº 6
AZDelivery Servo MG90S Micro Servo Motor Compatible con Arduino Incluido E-Book!
AZDelivery Servo MG90S Micro Servo Motor Compatible con Arduino Incluido E-Book!
✔️ El servo 9G Mini tiene un voltaje de funcionamiento de 4,8 V a 6 V.; ✔️ Temperatura de funcionamiento: 0 °C ~ + 55 °C.
7,99 EUR
SuperVentas Nº 8
ALLOMN 10 PCS Micro Servo Avión Servo Helicóptero Servo Mucho Ambición Noble...
ALLOMN 10 PCS Micro Servo Avión Servo Helicóptero Servo Mucho Ambición Noble...
✔ Micro helicóptero Servo helicóptero, cuerpo translúcido.; ✔ Mini servo para modelos de barco de vehículo de avión de helicóptero RC.
19,99 EUR
SuperVentas Nº 9
owootecc Micro Servo Motor SG90 9g Robot RC Controles del Barco del Aeroplano...
owootecc Micro Servo Motor SG90 9g Robot RC Controles del Barco del Aeroplano...
Un gran servomotor de alto par arduino, que puede girar a una posición específica; Velocidad de funcionamiento: 0.1sec / 60degree (4.8v); Ángulo rotatorio
12,99 EUR
RebajasSuperVentas Nº 10

Usos de un servomotor ¿En qué tipo de dispositivos podemos utilizarlos?

El uso de un servomotor es muy amplio debido a la función principal que ofrece en la robótica, que es la de rotar una pieza dentro del mismo eje.

Recomendado para ti:
¿Cómo crear una cuenta de Google gratis en español fácil y rápido? Guía paso a paso

Por lo tanto, es común encontrar un servomotor en:

  • Coches de radio control, en diferentes tipos de juguetes y en robots para niños.
  • Radares incorporados a diferentes objetos.
  • En la automatización de procesos fabriles. Estos robots trabajan en especial en los procesos de ensamblaje, construcción de automóviles y en otros tipos de fabricación automática a nivel industrial.
  • Los servomotores también se pueden encontrar en los ascensores.
  • Mientras que, en la informática es común encontrar un servomotor en la bandeja de los reproductores de discos DVD.

Aprende paso a paso cómo programar un servomotor con Arduino para tus proyectos desde cero

Si quieres programar un servomotor con Arduino tendrás que seguir los pasos que te mostraremos a continuación:

Conecta todos los componentes físicos

El primer paso que deberás hacer es ensamblar todos los componentes a la placa de Arduino. Para ello tendrás que conectar en la placa protoboard tres tipos de cable, uno será el que irá a tierra, el otro a la alimentación de 5 volts y el último al pin PWM. Una vez que tengas conectado este circuito deberás incorporar el servomotor y si quieres puedes agregarle resistencias.

Programa el giro del motor

Lo que deberás hacer ahora es ingresar al IDE de Arduino y escribir los siguientes comandos para que el motor pueda girar en tres tipos de ángulos.

Los códigos son:

#include <Servo.h>

Servo servoMotor;

void setup() {

begin(9600);

attach(9);

}

void loop() {

Ahora deberás configurar el desplazamiento a la posición 0º, para ello tendrás que ingresar:

write(0);

delay(1000);

Lo mismo tendrás que hacer con la posición de 90° y con la de 180°:

write(90);

delay(1000);

write(180);

delay(1000);

}

Gira el motor grado por grado

En este paso tendrás que incorporar movimientos para que el servomotor pueda barrer todos los grados desde 0 a 180.

Para ello tendrás que ingresar:

#include <Servo.h>

Servo servoMotor;

void setup() {

A continuación, tendrás que iniciar el monitor serie:

begin(9600);

Luego vas a tener que programar que el servomotor trabaje desde el principio con el pin 9:

attach(9);

write(0);

}

Crea bucles

En estos momentos vas a tener que generar 2 bucles, uno negativo y otro en sentido positivo:

void loop() {

for (int i = 0; i <= 180; i++)

{

Luego desplaza al ángulo que corresponda:

write(i);

delay(25);

}
publicidad


"ACTUALIZADO ✅ ¿Quieres utilizar Arduino para programar un servomotor y usarlo en tus proyectos? ⭐ ENTRA AQUÍ ⭐ y Aprende Todo ¡Desde Cero!"
publicidad
publicidad

Lo mismo tendrás que hacer para el sentido negativo:

for (int i = 179; i > 0; i--)

{

write(i);

delay(25);

}

}

Los mejores proyectos Arduino con Servomotor que puedes hacer tú mismo para practicar

Si deseas practicar con un trabajo con servomotor en una placa de Arduino tendrás que tener en cuenta estos proyectos:

Recomendado para ti:
¿Cómo ocultar fotos en Instagram para que nadie las vea fácil y rápido? Guía paso a paso

Cesto de basura con detector de movimiento

Cesto de basura con detector de movimiento

Este proyecto te permitirá abrir un bote de basura por medio de un sensor de movimiento. Necesitarás una placa Micro Arduino, un sensor ultrasónico genérico de tipo HC-SR04, un servomotor y un cesto de basura.

Para la programación tendrás que ingresar estos códigos:

#include <Servo.h>

Servo myservo ;

const int  servo_pin  =  2 ;

const int  trig_pin  =  3 ;

const int  echo_pin  =  4 ;

const int  inter_time  =  200 ;

int tiempo  =  0 ;

configuración vacía ()

{

Serial . comenzar ( 9600 );

myservo . adjuntar ( servo_pin , 500 ,  2400 );

myservo . escribir ( 90 );

pinMode ( trig_pin ,  SALIDA );

pinMode ( echo_pin ,  ENTRADA );

retraso ( 3000 );

}

bucle vacío ()

{

duración del flotador, distancia;

digitalWrite ( trig_pin , ALTO );

delayMicroseconds ( 1000 );

digitalWrite ( trig_pin , BAJO );

duración =  pulseIn  ( echo_pin ,  HIGH );

distancia =  ( duración / 2 ) / 29 ;

Serial . imprimir ( distancia );

Serial . println ( "cm" );

time = time + inter_time;

delay(inter_time);

if (distance < 10)

{

for(int i = 1500; i >= 1100; i-=25){

writeMicroseconds(i);

println("2");

delay(100);

}

delay(1000);

para ( int i  =  1100 ;  i  <=  1500 ;  i + = 25 ) {

myservo . writeMicroseconds ( i );

Serial . println ( "1" );

retraso ( 100 );

}

}

}

Brazo de robot

Brazo de robot

Lo que necesitarás para construir este brazo robótico una placa de Arduino UNO, 3 SparkFun Servo, 1 Módulo de un Joystick de dos ejes de una consola PlayStation2 una fuente de alimentación. También tendrás que tener a mano cables, un disipador de calor, un condensador de cerámica y otro de electrolítico.

Los códigos con los que deberás trabajar son:

#include "AnalogReader.h"

#include <Arduino.h>

AnalogReader::AnalogReader(const int pin) : m_pin(pin) {}

/**

Read analog value from board ADC

*/

int AnalogReader::read()

{

return analogRead(m_pin);

}

#include "Button.h"

#include <Arduino.h>

Button::Button(const int pin) : m_pin(pin)

{

}

void Button::init()

{

pinMode(m_pin, INPUT);

Para establecer el estado de inicio vas a tener que escribir:

m_lastButtonState = read();

}

//read button state.

bool Button::read()

{

return digitalRead(m_pin);

}

En caso que el botón no se presione retornará a LOW (0), pero si está accionado entregará el valor HIGH (1).

Para esto hay que ingresar:

bool Button::onChange()

{

//read button state. '1' is pushed, '0' is not pushed.

bool reading = read();

// If the switch changed, due to noise or pressing:

if (reading != m_lastButtonState) {

// reset the debouncing timer

m_lastDebounceTime = millis();

m_pressFlag = 1;

}

if ((millis() - m_lastDebounceTime) > m_debounceDelay) {

// whatever the reading is at, it's been there for longer

// than the debounce delay, so take it as the actual current state:

// if the button state has changed:

if (m_pressFlag) { //reading != m_lastButtonState) {

//update the buton state

m_pressFlag = 0;

// save the reading. Next time through the loop,

m_lastButtonState = reading;

return 1;

}

}

m_lastButtonState = reading;

return 0;

}

bool Button::onPress()

{

//read button state. '1' is pushed, '0' is not pushed.

bool reading = read();

// If the switch changed, due to noise or pressing:

if (reading == HIGH && m_lastButtonState == LOW) {

// reset the debouncing timer

m_lastDebounceTime = millis();

m_pressFlag = 1;

}

if ((millis() - m_lastDebounceTime) > m_debounceDelay) {

if (m_pressFlag) {

Después de esto, habrá que hacerlo por medio del bucle:

m_pressFlag = 0;

m_lastButtonState = reading;

return 1;

}

}

m_lastButtonState = reading;

return 0;

}

bool Button::onRelease()

{

//read button state. '1' is pushed, '0' is not pushed.

bool reading = read();

// If the switch changed, due to noise or pressing:

if (reading == LOW && m_lastButtonState == HIGH) {

// reset the debouncing timer

m_lastDebounceTime = millis();

m_pressFlag = 1;

}

if ((millis() - m_lastDebounceTime) > m_debounceDelay) {

// whatever the reading is at, it's been there for longer

// than the debounce delay, so take it as the actual current state:

// if the button state has changed:

if ( m_pressFlag) { //reading == LOW && m_lastButtonState == HIGH) {

// save the reading. Next time through the loop,

m_lastButtonState = reading;

m_pressFlag = 0;

return 1;

}

}

m_lastButtonState = reading;

return 0;

}

#ifndef _BUTTON_H_

#define _BUTTON_H_

//button class:

class Button {

public:

Button(const int pin);

//initialize button instance

void init();

//Read button state - without debounce

bool read();

//return True on both button events, Press or Release

bool onChange();

//return True only on Press

bool onPress();

//return True only on Release

bool onRelease();

private:

const int m_pin;

bool m_lastButtonState; //state variables

long m_lastDebounceTime = 0;

const int m_debounceDelay = 50;

bool m_pressFlag = 0;

};

#endif //_BUTTON_H_

Insecto

Insecto

Para este proyecto necesitarás una placa de Arduino de 3,3 V. y 8 MHz, un servomotor, un interruptor, una batería de litio de 1000mAh, cables, alambres y pegamento. El montaje lo deberás hacer sujetando lo más firme posible todos los elementos por medio de los alambres y pegamento.

Recomendado para ti:
¿Cómo activar Hyper-V para virtualizar en Windows 10? Guía paso a paso

Luego deberás ingresar estos códigos en el IDE:

#include <Servo.h>

int FRENTE =  4 ;

int BACK =  5 ;

Servo frontLegs, backLegs ;

configuración vacía () {

pinMode ( 13 , SALIDA ) ;

attach ( FRENTE ) ;

attach ( VOLVER ) ;

write ( 90 ) ;

write ( 90 ) ;

retraso ( 5000 ) ;

}bucle vacío () {

digitalWrite ( 13 , ALTA ) ;

write ( 70 ) ;

write ( 70 ) ;

digitalWrite ( 13 , BAJO ) ;

retraso ( 200 ) ;

write ( 110 ) ;

retraso ( 200 ) ;

write ( 110 ) ;

}
Ebooks de IPAP
Ebooks IPAP

Si te quedaste con alguna duda, déjalas en los comentarios, te contestaremos lo antes posible, además seguro que será de gran ayuda para más miembros de la comunidad. Gracias! 😉

Más Trucos y Consejos cada día ¡Apúntate Aquí!


He leído y acepto los términos y condiciones

Temas

Autor: Félix Albornoz

Llevo más de 20 años trabajando en el sector tecnológico ayudando a empresas y usuarios a desarrollarse y formarse en este campo. Siempre aprendiendo cosas nuevas.

Publicidad

Relacionadas

Populares

Deja un comentario

  ◀ Acepto los términos de privacidad