Arduino Nano - servomotor

Este tutorial te enseña cómo usar Arduino Nano para controlar un servomotor. En detalle, aprenderemos:

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×Servomotor
1×Cables Puente
1×(Opcional) Conector de Alimentación DC
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del servomotor

Un servomotor es un componente capaz de hacer girar su eje, normalmente entre 0° y 180°. Se utiliza comúnmente para controlar la posición angular de un objeto.

Disposición de pines del servomotor

El servomotor tiene tres pines:

  • El pin VCC (usualmente rojo) debe conectarse a VCC (5V)
  • El pin GND (generalmente negro o marrón) debe conectarse a GND (0V)
  • El pin de señal (comúnmente amarillo o naranja) recibe la señal de control PWM desde un pin del Arduino Nano
Diagrama de pines del servomotor

Arduino Nano - Servomotor

Algunos de los pines del Arduino Nano pueden programarse para producir una señal PWM. Podemos conectar el pin de señal del servomotor a uno de estos pines y programarlo para generar una salida PWM. Esto nos permitirá controlar el servomotor.

Gracias a la Arduino Nano Servo library, controlar un servomotor es fácil. No necesitamos entender cómo funcionan los servomotores ni cómo generar señales PWM. Todo lo que necesitamos hacer es aprender a usar la biblioteca.

Diagrama de Cableado

Diagrama de cableado del motor servo de Arduino Nano

This image is created using Fritzing. Click to enlarge image

Para simplificar, el diagrama de cableado anterior se utiliza para pruebas o fines educativos y para un servomotor con un par pequeño. Recomendamos encarecidamente usar una fuente de alimentación externa para el servomotor en la práctica. El diagrama de cableado a continuación ilustra cómo conectar el servomotor a una fuente de alimentación externa.

Esquema de cableado de la fuente de alimentación externa para el motor servo de Arduino Nano.

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Por favor, no olvides conectar GND de la fuente de alimentación externa a GND del Arduino.

Cómo programar para un motor servo

  • Incluir la biblioteca:
#include <Servo.h>
  • Crear un objeto Servo:
Servo servo;
  • Si tienes más de un servomotor, simplemente declara objetos Servo adicionales:
Servo servo1; Servo servo2;
  • Asigna el Arduino Nano que se conecta al pin de señal del servomotor. Como ejemplo, usa el pin 9:
servo.attach(9);
  • Finalmente, controla el servomotor al ángulo requerido. Por ejemplo, 90°
servo.write(90);

Código de Arduino Nano

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 connected to the signal pin of servo motor Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // rotate from 0 degrees to 180 degrees // in steps of 1 degree servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // rotate from 180 degrees to 0 degrees servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } }

Pasos R\u00e1pidos

  • Conecta el Arduino Nano a tu ordenador usando un cable USB.
  • Abre el IDE de Arduino, selecciona la placa y el puerto correctos.
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para compilar y subir el código al Arduino Nano.
Cómo subir código al Arduino Nano
  • Observa el resultado: el servomotor gira tanto en sentido horario como antihorario.

Explicación del código

¡Echa un vistazo a la explicación línea por línea que se encuentra en los comentarios del código fuente!

Cómo controlar la velocidad de un servomotor

Utilizando las funciones [map()] y [millis()], podemos ajustar la velocidad de un servomotor de forma constante sin obstaculizar el resto del código.

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 connected to the signal pin of servo motor Servo servo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(SERVO_PIN); move_start_ms = millis(); // start moving // TODO: other code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: other code }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!