ESP32 - Servomotor controlado por potenciómetro

Este tutorial le enseña a usar ESP32 con un motor servo y un potenciómetro. En detalle, el ángulo de un motor servo es proporcional al valor leído de un potenciómetro.

Acerca del servomotor y del potenciómetro

Tenemos tutoriales específicos sobre servomotores y potenciómetros. Cada tutorial contiene información detallada e instrucciones paso a paso sobre la asignación de pines de hardware, el principio de funcionamiento, la conexión de cableado al ESP32, el código para ESP32... Aprende más sobre ellos en los siguientes enlaces:

Diagrama de Cableado

Diagrama de cableado del potenciómetro para servomotor con ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Código ESP32

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-servo-motor-controlled-by-potentiometer */ #include <ESP32Servo.h> #define PIN_POTENTIOMETER 36 // ESP32 pin GPIO36 (ADC0) onnected to potentiometer #define PIN_SERVO 26 // ESP32 pin GPIO26 onnected to servo motor Servo myServo; // create servo object to control a servo void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); myServo.attach(PIN_SERVO); // attaches ESP32 pin to the servo object } void loop() { // reads the value of the potentiometer (value between 0 and 4095) int analogValue = analogRead(PIN_POTENTIOMETER); // scales it to use it with the servo (value between 0 and 180) int angle = map(analogValue, 0, 4095, 0, 180); // sets the servo position according to the scaled value myServo.write(angle); // print out the value Serial.print("Analog value: "); Serial.print(analogValue); Serial.print(" => Angle: "); Serial.println(angle); delay(100); }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en el IDE de Arduino.
  • Realiza el cableado tal como se muestra en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Haz clic en el icono Libraries en la barra izquierda del IDE de Arduino.
  • Escribe ESP32Servo en el cuadro de búsqueda, luego busca la librería para servomotores de Kevin Harrington,John K. Bennett.
  • Haz clic en el botón Install para instalar la librería de servomotores para ESP32.
Biblioteca de servomotores para ESP32
  • Copie el código anterior y péguelo en el IDE de Arduino.
  • Compilar y subir el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino
Subir código al IDE de Arduino
  • Abrir el Monitor Serial en el IDE de Arduino
Cómo abrir el monitor serie en el IDE de Arduino
  • Ajusta el potenciómetro
  • Observa la rotación del servomotor
  • Mira el resultado en el Monitor Serial. Es como lo siguiente:
COM6
Send
Analog value: 0 => Angle: 0 Analog value: 85 => Angle: 14 Analog value: 201 => Angle: 35 Analog value: 286 => Angle: 50 Analog value: 370 => Angle: 65 Analog value: 444 => Angle: 78 Analog value: 521 => Angle: 91 Analog value: 608 => Angle: 106 Analog value: 690 => Angle: 121 Analog value: 793 => Angle: 139 Analog value: 907 => Angle: 159 Analog value: 4095 => Angle: 180 Analog value: 4095 => Angle: 180
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explicación del código línea por línea

El código ESP32 anterior contiene una explicación línea por línea. Por favor, lea los comentarios del código.

※ Nota:

Este tutorial utiliza la función analogRead() para leer valores de un ADC (Convertidor Analógico a Digital) conectado a un potenciómetro. El ADC del ESP32 es bueno para proyectos que NO requieren alta precisión. Sin embargo, para proyectos que requieren mediciones precisas, ten en cuenta:

  • El ADC del ESP32 no es perfectamente preciso y podría necesitar calibración para obtener resultados correctos. Cada placa ESP32 puede ser un poco diferente, por lo que debes calibrar el ADC para cada placa individual.
  • La calibración puede ser difícil, especialmente para principiantes, y puede que no siempre dé exactamente los resultados que deseas.

Para proyectos que requieren alta precisión, considera usar un ADC externo (por ejemplo ADS1115) con el ESP32 o usar un Arduino, que tiene un ADC más confiable. Si aún quieres calibrar el ADC del ESP32, consulta ESP32 ADC Calibration Driver

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!