Controlar Un Servomotor Con ESP32

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

Controlar un servomotor con ESP32, potenciómetro y mostrar

información en pantalla

Para controlar un servomotor con un ESP32, un potenciómetro y mostrar la


velocidad y el voltaje del PWM en pantalla, necesitarás algunos componentes y
seguir estos pasos:
Componentes:
 ESP32
 Servomotor
 Potenciómetro
 Pantalla LCD (por ejemplo, I2C 16x2)
 Cables
Conexiones:
1. Conecta el servomotor a los pines del ESP32 según las especificaciones
del servomotor.
o Tierra: Conecta la tierra del servomotor a la tierra del ESP32
(GND).
o VCC: Conecta la alimentación del servomotor (VCC) a la
alimentación del ESP32 (3.3V o 5V, dependiendo del
servomotor).
o Señal: Conecta la señal de control del servomotor a un pin del
ESP32 (por ejemplo, GPIO13).
2. Conecta el potenciómetro a un pin analógico del ESP32 (por ejemplo,
A0).
3. Conecta la pantalla LCD al ESP32 según las instrucciones del
fabricante.
Software:
1. Instala la biblioteca Arduino IDE y las bibliotecas necesarias para la
pantalla LCD.
2. Escribe un programa Arduino que:
o Lea el valor del potenciómetro y lo use para calcular la posición
del servo.
o Genere señales PWM para controlar la posición del servo usando
la función map().
o Lea el voltaje del PWM usando la función analogRead() y lo
calcule.
o Muestre la posición, la velocidad y el voltaje del PWM en la
pantalla LCD.
Código:

#include <LiquidCrystal_I2C.h>

#define SERVO_PIN 13
#define POT_PIN A0
#define LCD_ADDRESS 0x27

LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);

void setup() {
lcd.init();
lcd.backlight();
}

void loop() {
int potValue = analogRead(POT_PIN);
int position = map(potValue, 0, 1023, 0, 180); // Map
potentiometer value to servo position range

analogWrite(SERVO_PIN, position); // Control servo position

float voltage = analogRead(PWM_PIN) * 5.0 / 1024.0; // Calculate


PWM voltage

lcd.clear();
lcd.print("Posicion: ");
lcd.print(position);
lcd.print(" grados");
lcd.setCursor(0, 1);
lcd.print("Voltaje PWM: ");
lcd.print(voltage);
lcd.print(" V");

delay(100);
}

Recursos adicionales:
 Controlar servo con potenciómetro en ESP32 - YouTube
 13.- Controlar servo con potenciómetro en ESP32.ino - Wokwi
 ESP32 y Servo Motores | Control Básico | Curso de Robótica con Esp32
Nota: Este es un ejemplo básico. Es posible que debas modificar el código
para adaptarlo a tu configuración específica.
#include <LiquidCrystal_I2C.h>

#define SERVO_PIN 13
#define POT_PIN A0
#define LCD_ADDRESS 0x27

LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);

void setup() {
lcd.init();
lcd.backlight();
}

void loop() {
int potValue = analogRead(POT_PIN);
int position = map(potValue, 0, 1023, 0, 180); // Map potentiometer
value to servo position range

analogWrite(SERVO_PIN, position); // Control servo position

float voltage = analogRead(POT_PIN) * 5.0 / 1024.0; // Calculate PWM


voltage

lcd.clear();
lcd.print("Posicion: ");
lcd.print(position);
lcd.print(" grados");
lcd.setCursor(0, 1);
lcd.print("Voltaje PWM: ");
lcd.print(voltage);
lcd.print(" V");

delay(100);
}

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>

#define SERVO_PIN 13
#define PWM_PIN 34
#define LCD_ADDRESS 0x27

Servo myservo;
LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
myservo.attach(SERVO_PIN);
}

void loop() {
int pwmValue = analogRead(PWM_PIN); // Lee el valor analógico del pin
PWM_PIN (potenciómetro)
int position = map(pwmValue, 0, 4095, 0, 180); // Mapea el valor del
potenciómetro a un ángulo (0 a 180 grados)

myservo.write(position); // Mueve el servomotor a la posición


calculada

float voltage = pwmValue * 3.3 / 4095.0; // Calcula el voltaje del


potenciómetro

lcd.clear(); // Limpia la pantalla LCD


lcd.setCursor(0, 0); // Establece el cursor en la primera línea
lcd.print("Posicion: "); // Muestra "Posicion: "
lcd.print(position); // Muestra el valor de la posición del servomotor
lcd.print(" grados"); // Muestra " grados"
lcd.setCursor(0, 1); // Establece el cursor en la segunda línea
lcd.print("Voltaje: "); // Muestra "Voltaje: "
lcd.print(voltage, 2); // Muestra el voltaje con 2 decimales
lcd.print(" V"); // Muestra " V"

delay(100); // Espera 100 milisegundos


}

También podría gustarte