📅 Tal día como hoy 15 de diciembre... ¿QUÉ PASÓ?
Cursos Gratis Stories
Ganar Dinero Internet
Android Stories
Windows Stories
iOS Stories
MacOS Stories
Linux Stories
Facebook Stories
Amazon Stories
Netflix Stories
Whatsapp Stories
Twitch Stories
Instagram Stories
YouTube Stories
Gmail Stories
TikTok Stories
Arduino Stories
Telegram Stories
Raspberry Pi Stories

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

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

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°.

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.

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);

}

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:

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.

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

🔥ÚNETE🔥 A LA NUEVA COMUNIDAD DE IP@P ¡APÚNTATE AQUÍ!

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! 😉

Temas

Félix Albornoz
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

Deja un comentario