Tutorial: Controlar la Intensidad de un LED con Potenciómetro (PWM)
https://www.youtube.com/watch?v=RhSxNY6m-7c
En este tutorial aprenderás a controlar la intensidad luminosa de un LED usando un potenciómetro y la técnica PWM (Modulación por Ancho de Pulso).
📋 Materiales Necesarios
1 Arduino (Uno, Nano, etc.)
1 LED
1 Potenciómetro de 10kΩ
1 Resistencia de 220Ω
Cables de conexión
Protoboard
🔌 Esquema de Conexiones
POTENCIÓMETRO:
- Terminal izquierdo → 5V (Arduino)
- Terminal derecho → GND (Arduino)
- Terminal central → A0 (Arduino)
LED:
- Ánodo (+) → Pin 9 (Arduino) con resistencia de 220Ω
- Cátodo (-) → GND (Arduino)💻 Código Arduino
// Definición de pines
const int potPin = A0; // Pin analógico para el potenciómetro
const int ledPin = 9; // Pin PWM para el LED
// Variables
int potValue = 0; // Valor leído del potenciómetro (0-1023)
int pwmValue = 0; // Valor PWM para el LED (0-255)
void setup() {
// Configurar el pin del LED como salida
pinMode(ledPin, OUTPUT);
// Iniciar comunicación serial (opcional, para debugging)
Serial.begin(9600);
}
void loop() {
// Leer el valor del potenciómetro (0-1023)
potValue = analogRead(potPin);
// Convertir el valor a rango PWM (0-255)
pwmValue = map(potValue, 0, 1023, 0, 255);
// Escribir el valor PWM al LED
analogWrite(ledPin, pwmValue);
// (Opcional) Mostrar valores por monitor serial
Serial.print("Potenciometro: ");
Serial.print(potValue);
Serial.print(" | PWM: ");
Serial.println(pwmValue);
// Pequeña pausa para estabilidad
delay(10);
}🎯 Explicación del Código
1. Definición de Pines
const int potPin = A0; // Entrada analógica para el potenciómetro
const int ledPin = 9; // Salida PWM para el LED (debe ser pin PWM: 3,5,6,9,10,11)2. Función map()
pwmValue = map(potValue, 0, 1023, 0, 255);Convierte el rango del potenciómetro (0-1023) al rango PWM (0-255)
3. analogWrite()
analogWrite(ledPin, pwmValue);Envía señal PWM al LED. Valores:
0 = LED apagado
255 = LED máxima intensidad
🔧 Pines PWM en Arduino
Los pines que soportan PWM en Arduino Uno son:
3, 5, 6, 9, 10, 11
📊 Valores y Comportamiento
| Potenciómetro | PWM | Intensidad LED |
|---|---|---|
| 0 | 0 | Apagado |
| 512 | 128 | Media intensidad |
| 1023 | 255 | Máxima intensidad |
🛠️ Posibles Mejoras
1. Suavizado de cambios
// Agregar suavizado para transiciones más naturales
int smoothedPWM = (pwmValue * 0.1) + (smoothedPWM * 0.9);
analogWrite(ledPin, smoothedPWM);2. Control con botones
// Incrementar/decrementar intensidad con botones
if (digitalRead(upButton) == HIGH) {
pwmValue = min(pwmValue + 5, 255);
}
if (digitalRead(downButton) == HIGH) {
pwmValue = max(pwmValue - 5, 0);
}🚨 Solución de Problemas
LED no enciende:
Verificar polaridad del LED
Comprobar resistencia (220Ω)
Confirmar que el pin usado es PWM
Respuesta irregular:
Verificar conexiones del potenciómetro
Comprobar valores por monitor serial
Intensidad no varía:
Confirmar que se usa
analogWrite()y nodigitalWrite()
🎓 Conceptos Aprendidos
PWM (Modulación por Ancho de Pulso): Técnica para simular valores analógicos
Entradas analógicas: Lectura de valores continuos (0-1023)
Conversión de rangos: Uso de la función
map()Control de intensidad: Regulación de potencia en dispositivos
¡Ahora tienes control total sobre la intensidad de tu LED
Tutorial: Control PWM con Potenciómetro en Arduino
📋 Introducción
En este tutorial aprenderás a controlar la intensidad de un LED usando un potenciómetro mediante PWM (Pulse Width Modulation) con Arduino.
🛠 Componentes Necesarios
1x Placa Arduino (Uno, Nano, etc.)
1x Potenciómetro (10kΩ recomendado)
1x LED
1x Resistencia 220Ω
Cables jumper
Protoboard
🔌 Esquema de Conexiones
Potenciómetro:
Pin izquierdo → 5V de Arduino
Pin derecho → GND de Arduino
Pin central → A0 de Arduino
LED:
Ánodo (+): Pin 9 de Arduino (a través de resistencia 220Ω)
Cátodo (-): GND de Arduino
💻 Código Arduino
// Definición de pines
const int potPin = A0; // Pin analógico para el potenciómetro
const int ledPin = 9; // Pin PWM para el LED
// Variables
int potValue = 0; // Valor leído del potenciómetro (0-1023)
int pwmValue = 0; // Valor PWM para el LED (0-255)
void setup() {
// Configurar el pin del LED como salida
pinMode(ledPin, OUTPUT);
// Iniciar comunicación serial (opcional, para monitoreo)
Serial.begin(9600);
}
void loop() {
// Leer el valor del potenciómetro (0-1023)
potValue = analogRead(potPin);
// Mapear el valor de 0-1023 a 0-255 para PWM
pwmValue = map(potValue, 0, 1023, 0, 255);
// Escribir el valor PWM al LED
analogWrite(ledPin, pwmValue);
// Mostrar valores en el monitor serial (opcional)
Serial.print("Potenciometro: ");
Serial.print(potValue);
Serial.print(" | PWM: ");
Serial.println(pwmValue);
// Pequeña pausa para estabilidad
delay(10);
}🔍 Explicación del Código
1. Definición de Pines
const int potPin = A0; // Entrada analógica
const int ledPin = 9; // Salida PWM (pines 3, 5, 6, 9, 10, 11 en Arduino Uno)2. Función map()
Convierte el rango del potenciómetro (0-1023) al rango PWM (0-255):
pwmValue = map(potValue, 0, 1023, 0, 255);3. PWM con analogWrite()
Controla la intensidad del LED:
analogWrite(ledPin, pwmValue);📊 Pines PWM en Arduino
Arduino Uno/Nano: Pines 3, 5, 6, 9, 10, 11
Frecuencia PWM: 490Hz o 980Hz dependiendo del pin
🎯 Funcionamiento
El potenciómetro actúa como divisor de voltaje
Arduino lee el voltaje en el pin central (0-5V)
La lectura analógica se convierte a digital (0-1023)
Se mapea a valores PWM (0-255)
El LED cambia de intensidad según la posición del potenciómetro
🔧 Posibles Mejoras
1. Suavizado de lectura
// Promedio de lecturas para mayor estabilidad
int leerPotenciometro() {
int total = 0;
for(int i = 0; i < 10; i++) {
total += analogRead(potPin);
delay(1);
}
return total / 10;
}2. Control de motor DC
// Para controlar velocidad de motor DC
const int motorPin = 9;
void setup() {
pinMode(motorPin, OUTPUT);
}
void loop() {
int velocidad = map(analogRead(A0), 0, 1023, 0, 255);
analogWrite(motorPin, velocidad);
}⚠️ Consejos y Solución de Problemas
LED no enciende: Verifica polaridad y conexiones
No hay variación: Revisa conexiones del potenciómetro
Valores erráticos: Usa filtrado de señales o promediado
Pines PWM: Asegúrate de usar pines con capacidad PWM (~)
📈 Aplicaciones
Control de intensidad lumínica
Control de velocidad de motores
Generación de señales analógicas
Sistemas de control de posición
¡Ahora puedes controlar dispositivos analógicos con precisión usando PWM y potenciómetros!
Comentarios
Publicar un comentario