Variador de Frecuencia PWM para Motor DC (5000 RPM) en Tinkercad
https://www.youtube.com/watch?v=7IyGmp4OHcs
Variador de Frecuencia PWM para Motor DC (5000 RPM) en Tinkercad
En este tutorial aprenderás a controlar la velocidad de un motor DC usando PWM (Modulación por Ancho de Pulso) en Arduino para alcanzar aproximadamente 5000 RPM.
Componentes Necesarios
Arduino Uno
Motor DC
Transistor MOSFET (IRF520N)
Diodo de protección (1N4007)
Resistencia 220Ω
Fuente de alimentación externa (9-12V)
Protoboard
Cables de conexión
Circuito en Tinkercad
Diagrama de Conexiones:
Arduino Uno:
- Pin 9 (PWM) → Resistencia 220Ω → Gate MOSFET
- GND → Source MOSFET
MOSFET (IRF520N):
- Gate → Resistencia desde Arduino
- Drain → Terminal negativo del motor
- Source → GND
Motor DC:
- Terminal positivo → Fuente externa (+)
- Terminal negativo → Drain MOSFET
Diodo (1N4007):
- Cátodo (+) → Terminal positivo del motor
- Ánodo (-) → Terminal negativo del motor
Fuente Externa:
- Positivo → Motor positivo
- Negativo → GND ArduinoCódigo Arduino
// Variador de Frecuencia PWM para Motor DC
// Objetivo: Controlar velocidad hasta 5000 RPM
const int motorPin = 9; // Pin PWM para controlar el motor
int velocidad = 0; // Variable para almacenar la velocidad (0-255)
void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
Serial.println("Variador de Frecuencia PWM - Control Motor DC");
Serial.println("Velocidad objetivo: ~5000 RPM");
Serial.println("Comandos: + (aumentar), - (disminuir), 0 (apagar)");
}
void loop() {
// Verificar si hay datos disponibles en el monitor serial
if (Serial.available() > 0) {
char comando = Serial.read();
switch(comando) {
case '+': // Aumentar velocidad
if (velocidad < 255) {
velocidad += 25;
if (velocidad > 255) velocidad = 255;
}
break;
case '-': // Disminuir velocidad
if (velocidad > 0) {
velocidad -= 25;
if (velocidad < 0) velocidad = 0;
}
break;
case '0': // Apagar motor
velocidad = 0;
break;
}
// Aplicar la velocidad al motor
analogWrite(motorPin, velocidad);
// Mostrar información
Serial.print("Velocidad PWM: ");
Serial.print(velocidad);
Serial.print("/255 (");
Serial.print((velocidad * 100) / 255);
Serial.println("%)");
// Estimación de RPM (varía según el motor)
int rpmEstimado = map(velocidad, 0, 255, 0, 5000);
Serial.print("RPM estimado: ");
Serial.println(rpmEstimado);
Serial.println();
}
}
// Función adicional para control preciso
void setVelocidadRPM(int rpmDeseado) {
// Conversión de RPM a valor PWM (ajustar según motor específico)
int pwmValue = map(rpmDeseado, 0, 5000, 0, 255);
if (pwmValue > 255) pwmValue = 255;
if (pwmValue < 0) pwmValue = 0;
analogWrite(motorPin, pwmValue);
velocidad = pwmValue;
Serial.print("Objetivo: ");
Serial.print(rpmDeseado);
Serial.print(" RPM - PWM: ");
Serial.println(pwmValue);
}Pasos para Implementar en Tinkercad
Paso 1: Montar el Circuito
Abre Tinkercad y crea un nuevo circuito
Agrega los componentes de la lista
Conecta según el diagrama proporcionado
Paso 2: Programar
Copia el código en el editor de Arduino
Ajusta los parámetros si es necesario
Verifica que no haya errores
Paso 3: Probar
Inicia la simulación
Abre el monitor serial
Usa los comandos:
+para aumentar velocidad-para disminuir velocidad0para apagar
Código Alternativo con Control por Potenciómetro
const int motorPin = 9;
const int potPin = A0;
void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(potPin);
int velocidad = map(potValue, 0, 1023, 0, 255);
analogWrite(motorPin, velocidad);
// Mostrar valores cada 500ms
static unsigned long lastTime = 0;
if (millis() - lastTime > 500) {
lastTime = millis();
Serial.print("Potenciómetro: ");
Serial.print(potValue);
Serial.print(" - PWM: ");
Serial.print(velocidad);
Serial.print(" - RPM estimado: ");
Serial.println(map(velocidad, 0, 255, 0, 5000));
}
}Consideraciones Importantes
Protección con Diodo: Siempre usa un diodo en paralelo inverso con el motor para proteger el circuito de picos de voltaje.
Fuente de Alimentación: Para motores que requieren más corriente de la que Arduino puede proveer, usa una fuente externa.
MOSFET: El IRF520N puede manejar hasta 24V y 9A, suficiente para la mayoría de motores DC pequeños.
RPM Real vs Estimado: Los 5000 RPM son una estimación. El RPM real depende del motor específico y la carga.
Solución de Problemas
Motor no gira: Verifica conexiones y polaridad
Velocidad inconsistente: Revisa la fuente de alimentación
MOSFET se calienta: Puede necesitar disipador de calor
RPM menores a 5000: Ajusta el mapeo en el código según tu motor
Variador de Frecuencia para Motor DC (5000 RPM) - Arduino
Instituto Tecnológico Costa Rica
Escuela de Mantenimiento Industrial
Presentado por: [Tu Nombre] y Antonio
Introducción
Hoy vamos a exponer acerca del variador de frecuencia programado en Arduino para controlar un motor a 5000 revoluciones por minuto. A continuación mostramos los pasos para armar el circuito completo.
Materiales Utilizados
Arduino Uno
Motor DC
Transistor MOSFET
Diodo de protección
Resistencias 220Ω
Potenciómetro
4 Switches (conmutadores)
Osciloscopio virtual
Voltímetro
Protoboard
Cables de conexión
Procedimiento de Conexión
Paso 1: Conexión del Potenciómetro
Comenzamos conectando las terminales del potenciómetro para controlar manualmente la velocidad del motor.
Paso 2: Alimentación del Conmutador
Conectamos los cables para alimentar lo que es el conmutador y las resistencias. Estas resistencias ya estaban pre-conectadas para facilitar la instalación.
Paso 3: Conexión del Osciloscopio
Procedemos a conectar el osciloscopio en las terminales 3 y luego a tierra, para visualizar la señal PWM.
Paso 4: Alimentación del Arduino
Conectamos la tierra del Arduino con la tierra de la protoboard para establecer una referencia común.
Paso 5: Conexión del Transistor
Conectamos la resistencia a la terminal 3 para que alimente el transistor MOSFET. Del transistor vamos a conectar una línea al negativo del motor.
Paso 6: Cierre del Circuito
Cerramos el circuito conectando el positivo del motor a la fuente de alimentación.
Paso 7: Conexión del Voltímetro
Conectamos un voltímetro a ambas terminales del motor para monitorear el voltaje aplicado.
Análisis del Circuito
Al tener ya lista nuestra conexión, procedemos a analizar las funciones de cada elemento:
Potenciómetro: Control manual continuo de velocidad
Switches: Control por pasos (25%, 50%, 75%, 100%)
MOSFET: Actúa como interruptor de potencia
Diodo: Protección contra picos de voltaje inverso
Resistencias: Limitación de corriente
Programación Arduino
Explicación del Código
Declaración de Variables:
int puerto_salida = 3; // Salida PWM principal
int puerto11 = 11; // Switch 1
int puerto10 = 10; // Switch 2
int puerto9 = 9; // Switch 3
int puerto6 = 6; // Switch 4
int potenciometro = A0; // Entrada analógicaConfiguración Inicial (Setup):
void setup() {
pinMode(puerto_salida, OUTPUT);
pinMode(puerto11, INPUT);
pinMode(puerto10, INPUT);
pinMode(puerto9, INPUT);
pinMode(puerto6, INPUT);
pinMode(potenciometro, INPUT);
analogWrite(puerto_salida, 0);
Serial.begin(115200);
}Lógica Principal (Loop):
Control por Potenciómetro
Cuando todos los switches están apagados:
if (C1 == LOW && C2 == LOW && C3 == LOW && C4 == LOW){
E_pot = map(valor_potenciometro, 0, 1023, 0, 73);
analogWrite(puerto_salida, E_pot);
int rpm = map(E_pot, 0, 73, 0, 5000);
}Control por Switches (Pasos Predefinidos)
Switch 1 - 25% (1250 RPM):
if (C1 == HIGH) {
int t = 18; // 25% de 73 = 18.25
analogWrite(puerto_salida, t);
}Switch 2 - 50% (2500 RPM):
if (C2 == HIGH) {
int t = 37; // 50% de 73 = 36.5
analogWrite(puerto_salida, t);
}Switch 3 - 75% (3750 RPM):
if (C3 == HIGH) {
int t = 55; // 75% de 73 = 54.75
analogWrite(puerto_salida, t);
}Switch 4 - 100% (5000 RPM):
if (C4 == HIGH) {
int t = 73; // 100% - valor calculado
analogWrite(puerto_salida, t);
}Cálculo para 5000 RPM
El valor 73 se calculó mediante regla de tres:
255 (PWM máximo) → 17,485 RPM
X (PWM necesario) → 5,000 RPM
X = (5,000 × 255) / 17,485 ≈ 72.91 ≈ 73
Demostración Práctica
Señal en Osciloscopio
En el osciloscopio observamos una señal cuadrada PWM cuya frecuencia y ciclo de trabajo varían según la velocidad seleccionada.
Monitor Serial
El monitor serial nos muestra en tiempo real las revoluciones del motor:
Revoluciones: 0
Revoluciones: 1250
Revoluciones: 2500
Revoluciones: 3750
Revoluciones: 5000Comportamiento del Motor
Con switches: Velocidades predefinidas precisas
Con potenciómetro: Control continuo desde 0 hasta 5000 RPM
Estabilidad: El motor mantiene constante la velocidad seleccionada
Ventajas del Sistema
Control Dual: Potenciómetro y switches para diferentes tipos de control
Precisión: Valores calculados matemáticamente
Seguridad: Protección con diodo y resistencias limitadoras
Monitoreo: Visualización en tiempo real de RPM
Flexibilidad: Fácil modificación de valores de velocidad
Conclusiones
Hemos demostrado exitosamente el funcionamiento de un variador de frecuencia para motor DC controlado por Arduino, capaz de alcanzar 5000 RPM con precisión. El sistema ofrece múltiples métodos de control y protección eléctrica, siendo una solución eficiente para aplicaciones de mantenimiento industrial.
Comentarios
Publicar un comentario