Código de búsqueda

Lección 18/31: Uso del Servomotor con Arduino Kit de SunFounder

Lección 18/31: Uso del Servomotor con Arduino Kit de SunFounder

Los servomotores son los caballos de batalla de innumerables proyectos de robótica y control remoto, proporcionando un control angular preciso para todo, desde mecanismos de dirección hasta brazos robóticos. Esta guía, basada en la Lección 18 del curso del Kit Arduino de SunFounder, te explicará los fundamentos del uso de un servomotor con un Arduino. Aprenderás cómo conectar el hardware y controlar la posición del motor usando dos métodos diferentes: un movimiento de barrido simple y una posición controlada por perilla. El conocimiento que adquieras aquí es altamente práctico y se puede aplicar a una amplia gama de proyectos, incluyendo:

  • Construir un brazo robótico que pueda agarrar y mover objetos con precisión.
  • Crear un coche o barco controlado remotamente con un servo para la dirección.
  • Desarrollar un seguidor solar que siga al sol para maximizar la recolección de energía.
  • Construir un soporte de cámara panorámico e inclinable para vigilancia o fotografía.
  • Automatizar las superficies de control de un avión modelo, como el timón o los alerones.

Descripción General del Hardware

Antes de sumergirte en el código, es esencial entender el servomotor en sí. Como se demuestra en el video, un servomotor no gira continuamente como un motor DC estándar. En cambio, rota a una posición angular específica, típicamente entre 0 y 180 grados. Esto lo hace ideal para aplicaciones que requieren movimiento preciso. El video destaca varios ejemplos, desde dirigir un coche RC hasta controlar las articulaciones complejas de un brazo robótico (en el video en 00:06).

Los servos vienen en varios tamaños, con el tamaño físico y la clasificación de torque determinando su precio y aplicación. Un micro servo pequeño es perfecto para modelos ligeros, mientras que un servo más grande y potente se necesita para tareas más pesadas como dirigir un "coche muy potente o grueso" (en el video en 01:59).

La mayoría de los servos de hobby tienen tres cables alojados en un conector estándar. El video explica una elección de diseño inteligente: el cable del medio es siempre el cable de alimentación (VCC), típicamente 5V. Esta es una característica de seguridad que protege el dispositivo de una polaridad incorrecta si el conector se enchufa al revés (en el video en 03:27). Los otros dos cables son para tierra (GND) y la señal de control.

Guía de Cableado

Servo-wiring_bb
Servo-pot_wiring

Cablear el servo a tu Arduino es sencillo. El video proporciona una demostración clara de las conexiones (en el video en 04:48). Los tres pines en el conector del servo se conectan al Arduino de la siguiente manera:

  • Cable de Señal (a menudo naranja o amarillo): Conéctalo a un pin PWM digital en el Arduino. El ejemplo usa el pin 9.
  • Cable de Alimentación (a menudo rojo): Conéctalo al pin de 5V en el Arduino.
  • Cable de Tierra (a menudo marrón o negro): Conéctalo a uno de los pines GND en el Arduino.

En el video, el presentador usa cables puente DuPont macho a macho para conectar el conector hembra del servo a los cabezales de pines del Arduino (en el video en 05:23).

Programa 1: Controlando el Servomotor (Barrido)

Este primer programa es el ejemplo clásico de "barrido". Está diseñado para demostrar el rango completo de movimiento del servo moviéndolo de un lado a otro entre 0 y 180 grados. Esta es una gran manera de verificar que tu cableado sea correcto y ver tu servo en acción. El video demuestra la carga de este código y observa el servo barrer de un lado a otro (en el video en 09:21).

Para controlar el servo, el código primero incluye la biblioteca incorporada Servo.h, que simplifica el proceso de generar las señales de control necesarias. Luego creas un objeto servo y le das un nombre, como myservo. En la función setup(), adjuntas este objeto a un pin específico usando myservo.attach(9), indicándole al Arduino que el cable de señal del servo está conectado al pin 9.

La magia ocurre en la función loop(), que usa dos bucles for para mover el servo. El primer bucle incrementa una variable de posición pos de 0 a 180, moviendo el servo un grado a la vez. El segundo bucle hace lo opuesto, decrementando pos de 180 de vuelta a 0. La parte crucial es el delay(15) al final de cada iteración del bucle. Esta pausa le da al servo suficiente tiempo para moverse físicamente a la nueva posición antes de que se envíe el siguiente comando. Sin este retraso, el servo no podría mantenerse al día y se detendría o vibraría (en el video en 12:31).

Este ejemplo es perfecto para aprender, pero en una aplicación real, probablemente querrás establecer el servo a un ángulo específico. Como se muestra en el video, puedes modificar el código reemplazando los bucles for con un solo comando como myservo.write(90) para mover el servo a 90 grados y mantenerlo allí (en el video en 10:09).

Programa 2: Controlando el Servomotor (Perilla)

Este segundo programa lleva el control del servo un paso más allá al introducir un potenciómetro (una perilla) para proporcionar control manual en tiempo real sobre la posición del servo. Esta es una manera fantástica de entender cómo la entrada analógica se puede traducir en movimiento físico preciso.

Este programa se basa en el anterior añadiendo un potenciómetro. Un potenciómetro es una resistencia variable que actúa como un divisor de voltaje analógico. Cuando giras la perilla, cambia el voltaje en su pin de salida. El Arduino lee este voltaje usando un convertidor analógico-digital (ADC) en uno de sus pines analógicos, convirtiéndolo en un valor entre 0 y 1023.

La clave de este programa es la función map(). Esta función escala un número de un rango a otro. En este caso, se usa para traducir el valor bruto del potenciómetro (0 a 1023) a un valor adecuado para el servo (0 a 180 grados). El código lee el valor del potenciómetro con analogRead(potpin), lo escala usando map(val, 0, 1023, 0, 180), y luego envía ese valor escalado al servo con myservo.write(val). Esto crea un vínculo directo donde girar la perilla hasta su punto medio posicionará el servo a 90 grados, y así sucesivamente.

Este método de control es altamente intuitivo y es la base de muchas interfaces hombre-máquina, desde controles remotos simples hasta controladores robóticos complejos.

Demostración en Vivo del Proyecto

El video proporciona una demostración en vivo de ambos programas en acción. Para el programa de barrido, puedes ver el brazo del servo moviéndose suavemente de 0 a 180 grados y de vuelta. El presentador también muestra cómo ajustar el tamaño del paso en el bucle for (por ejemplo, de 1 grado a 20 grados) y el tiempo de retardo cambia el comportamiento del servo, haciendo el movimiento más rápido pero menos suave (en el video en 11:19).

Para el programa de la perilla, la demostración muestra cómo girar el potenciómetro controla directamente la posición del servo en tiempo real. Esta retroalimentación visual es excelente para entender la relación entre la entrada analógica y la salida física.

Capítulos

  • [00:00] Introducción a los Servomotores
  • [01:07] Aplicaciones de los Servomotores
  • [02:57] Anatomía de un Servomotor
  • [04:48] Conexión del Servo al Arduino
  • [06:06] Explorando el Código de Ejemplo de Barrido
  • [09:21] Demostrando el Programa de Barrido
  • [10:04] Configurando un Ángulo Personalizado del Servo
  • [11:19] Modificando la Velocidad y el Tamaño del Paso del Barrido
  • [13:15] Ejemplo de Otro Servomotor

Imágenes

SG90_servo_motor-1
SG90_servo_motor-1
SG90 servo
SG90 servo
Servo-pot_wiring
Servo-pot_wiring
Servo-wiring_bb
Servo-wiring_bb
914-Lesson 18/31: Controlling servo motor (sweep)
Idioma: C++
This code has not been parsed yet. Please return to the admin panel to parse it.
915-Lesson 18/31: Controlling servo motor (knob)
Idioma: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Archivos📁

Bibliotecas de Arduino (zip)