Introducción Teórica
La modulación por ancho de pulso (PWM) es una técnica que se utiliza para controlar la cantidad de energía entregada a un dispositivo electrónico. En Mecatrónica y en Internet de las Cosas (IoT), PWM es de particular importancia ya que es la base para el control de servomotores y la velocidad de motores DC. Permite el control preciso de la posición y la velocidad, lo cual es crucial en aplicaciones de automatización y robótica.
En la industria, el PWM se utiliza para regular la velocidad de motores de corriente continua en cintas transportadoras, grúas, vehículos eléctricos, entre otros. También se utiliza en servomotores que se encuentran en robots y sistemas de posicionamiento.
Explicación Técnica Detallada
El ESP32 es un microcontrolador de bajo costo con capacidades de PWM integradas. Para configurar el PWM, se deben configurar varios registros importantes:
Temporizador
Genera la señal PWM baseCanal PWM
Configuración del canal específicoPin de salida
Configuración del pin físicoA continuación, se muestra un código de ejemplo utilizando la biblioteca ESP32Servo:
#include
Servo myservo; // create servo object
void setup() {
myservo.attach(2); // attaches the servo on pin 2
}
void loop() {
myservo.write(90); // tell servo to go to 90 degrees
delay(1000); // wait 1 second
myservo.write(0); // tell servo to go to 0 degrees
delay(1000); // wait 1 second
}
Este código configura un servomotor en el pin 2 y lo mueve entre 0 y 90 grados con intervalos de 1 segundo.
Ejercicios Prácticos Visuales
Objetivo: Controlar la posición de un servomotor usando PWM.
Materiales: ESP32, Servomotor SG90, cables, protoboard.
Conexiones: Servomotor al pin 2 del ESP32, VCC y GND.
Resultados esperados: El servomotor se mueve entre 0 y 90 grados.
Objetivo: Controlar la velocidad de un motor DC usando PWM.
Materiales: ESP32, Motor DC, Módulo L298N, fuente de alimentación, cables.
Resultados esperados: El motor DC cambia su velocidad gradualmente.
// Control de velocidad de motor DC con L298N
int motor1Pin1 = 27;
int motor1Pin2 = 26;
int enable1Pin = 14;
// Setting PWM properties
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;
void setup() {
// Configure PWM functionalities
ledcSetup(pwmChannel, freq, resolution);
ledcAttachPin(enable1Pin, pwmChannel);
// Set motor direction pins as outputs
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
Serial.begin(115200);
}
void loop() {
// Move the DC motor forward at maximum speed
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
// Gradually increase speed
for(dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
ledcWrite(pwmChannel, dutyCycle);
delay(15);
}
delay(1000);
// Gradually decrease speed
for(dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
ledcWrite(pwmChannel, dutyCycle);
delay(15);
}
delay(1000);
}
Proyecto Aplicado
Robot seguidor de líneas con PWM
Aplicación práctica en mecatrónica: Desarrollo de un robot autónomo que sigue una línea utilizando control PWM para ajustar la velocidad de los motores según las lecturas de los sensores.
Integración con sensores/actuadores: Sensores infrarrojos de línea y motores DC con control de velocidad variable.
Lista de materiales:
- ESP32
- 2x Motores DC con reductora
- Módulo driver L298N
- 2-4 Sensores IR de línea
- Fuente de alimentación (7.4V)
- Chasis robótico
- Cables y conectores
- Protoboard
Funcionalidades del proyecto:
- Detección automática de línea
- Ajuste dinámico de velocidad
- Corrección de trayectoria con PWM
- Manejo de curvas y intersecciones
Evaluación y Troubleshooting
Problemas comunes:
- Servo no se mueve o tiembla
- Motor DC no responde al PWM
- Alimentación insuficiente
- Conexiones incorrectas
- Frecuencia PWM inadecuada
- Interferencia electromagnética
Soluciones:
- Verificar alimentación externa para servos
- Revisar configuración de canales PWM
- Usar fuente de alimentación adecuada
- Verificar conexiones VCC, GND y señal
- Ajustar frecuencia según componente
- Usar capacitores de filtrado
Criterios de evaluación:
- El servomotor se mueve a diferentes ángulos precisos
- El motor DC varía su velocidad suavemente
- Control estable sin oscilaciones
- Respuesta adecuada a comandos de control
- Integración exitosa con sensores