Construya una Fuente de Alimentación Variable con Arduino UNO – Circuito y Código Paso a Paso
Cómo Hacer una Fuente de Alimentación Variable usando Arduino UNO
Una fuente de alimentación es requisito básico y esencial para equipos y circuitos electrónicos/eléctricos. Hay diversos tipos de circuitos/equipos, por tanto, sus demandas de alimentación varían. Por ejemplo, módulos Wi-Fi, relés, motores requieren tensiones distintas. En el mercado no hay fuentes distintas para cada circuito, así que generamos la nuestra. Solución simple: baterías.
Las baterías se usan para alimentar circuitos/proyectos electrónicos por ser accesibles y fáciles de conectar. Pero se agotan rápido, requieren reemplazo, no dan alta corriente para motores potentes, se calientan con uso prolongado y su vida útil disminuye. Para superar esto presentamos una solución mejor y eficiente usable en cualquier circuito: Fuente de Alimentación Variable desde Arduino UNO.
Con este proyecto obtendrá alimentación variable según su equipo sin preocuparse por carga, descarga, calentamiento, etc. Hay muchos métodos para generar alimentación variable, pero este es el más fácil al usar componentes baratos y accesibles. Veamos componentes necesarios.
- Artículo Relacionado: Timbre Automático con Detección de Objetos por Arduino
Componentes Necesarios
- Arduino UNO
- Display LCD 16×2
- Condensadores 100 µF
- Resistencias 1 kΩ
- Cables jumpers
- Fuente 5 Voltios
- Transistor 2N2222
Software: Arduino IDE Nightly o Atmel Studio 6.2
- Artículo Relacionado: Medición de Distancia con Arduino y Sensor Ultrasónico
Diagrama de Circuito de Fuente Variable
Antes de entrar en el proyecto, conozcamos algunas cosas.

Arduino UNO
Arduino UNO es plataforma open source para desarrollar proyectos electrónicos. Programable, borrable y reprogramable en cualquier momento. Hay muchas placas: UNO, Nano, Mega, LilyPad, etc. con distintas especificaciones. Usamos Arduino UNO para controlar electrodomésticos automáticamente. Lleva microcontrolador ATmega328 a 16 MHz. Potente, trabaja con USART, I2C y SPI.
- Artículo Relacionado: Lámpara Nocturna Automática con Arduino
Se programa vía software Arduino IDE con cable micro USB. ATmega328 viene con bootloader preprogramado para subir código sin hardware externo. Amplias aplicaciones en proyectos/productos electrónicos. Lenguajes C/C++, fáciles de aprender. Arduino IDE separa código en void setup() (ejecuta una vez, inicia procesos) y void loop() (ejecución continua).
6 pines analógicos (A0–A5, resolución 10 bits) y 14 pines digitales GPIO (6 con PWM). Alimentación por USB (5 V) o jack DC (7–20 V). Regulador onboard genera 3,3 V para dispositivos baja potencia. Pines comunicación: 0 (Rx) y 1 (Tx) USART; SDA (A4) y SCL (A5) I2C; SS (10), MOSI (11), MISO (12), SCK (13) SPI.
- Artículo Relacionado: Comunicación Serie con Arduino
ADC en Arduino UNO
Arduino UNO tiene 6 canales ADC onboard para leer señales analógicas 0–5 V. Al interfazar sensores, estos generan valores analógicos; Arduino lee digitales. ADC convierte valores de sensor a analógicos para el microcontrolador. Aplicaciones: sensado temperatura, distancia, velocidad, sensores con salida analógica.
ADC de 10 bits: valores 0–1023. Resolución = nº valores discretos sobre rango analógico. Tensión máxima ADC = 5 V → cada paso ≈ 5 mV (5/1024). 6 canales ADC (A0–A5) → hasta 6 dispositivos analógicos simultáneos. Función Arduino IDE: analogRead(pin) (pin A0–A5).
- Artículo Relacionado: Qué es Circuito Crowbar – Diseño y Operación
PWM en Arduino UNO
Modulación por Ancho de Pulso (PWM) genera señales analógicas desde fuente digital variando ancho de pulso manteniendo frecuencia constante. Dos parámetros clave: ciclo de trabajo (duty cycle) y frecuencia.
Ciclo de Trabajo: Fracción de período que señal está ON.
Duty Cycle = 100 × Ton / (Ton + Toff)
Usado para controlar potencia a carga encendiendo/apagando señal. Ej.: intensidad de luz o velocidad motor. Tras llamada a analogWrite(), pin genera onda cuadrada continua con duty cycle especificado hasta siguiente llamada a analogWrite() o digitalRead()/digitalWrite() en mismo pin.
- Artículo Relacionado: Interruptor Táctil Simple con Timer 555 y Transistor BC547
Frecuencia de Señal:
Qué tan rápido completa ciclo la señal (cambio ON→OFF o viceversa). Haciéndolo a duty cycle particular, salida se comporta como voltaje analógico constante. Frecuencia PWM en la mayoría de pines ≈ 490 Hz. En UNO y similares, pines 5 y 6 ≈ 980 Hz. Pines 3 y 11 en Leonardo también 980 Hz.
Arduino UNO tiene 6 canales PWM 8 bits (marcados ~). Voltaje analógico con analogWrite(pin, duty cycle):
- Pin: pin Arduino para salida analógica.
- Duty Cycle: 0 (mín) a 255 (máx).
- Artículo Relacionado: Circuito Simple Protección Sobretensión con Diodo Zener
Display LCD 16×2
Generar caracteres personalizados en LCD no es difícil. Requiere conocimiento de memoria CG-RAM y controlador LCD. Interfaz Arduino UNO con LCD JHD162A 16×2 (driver HD44780 de Hitachi). 16 pines, operable en modo 4 bits (4 líneas datos) u 8 bits (8 líneas). Usamos modo 4 bits (menos cables).
Descripción Pines LCD 16×2:
| Pin LCD | Descripción |
|---|---|
| VSS | Pin Tierra |
| VCC | +5 V alimentación |
| VEE | Pin para cambiar contraste LCD |
| RS | Register Select: Modo Dato o Comando |
| RW | Modo Lectura o Escritura |
| E | Enable LCD |
| DB0-DB7 | Datos y comandos por estos pines |
| LED+ | Ánodo LED retroiluminación |
| LED- | Cátodo LED retroiluminación |
- Artículo Relacionado: Interruptor Automático de Luz de Baño – Diagrama y Funcionamiento
LCD no tiene luz propia; LED tras pantalla actúa como retroiluminación. Interfaz con Arduino UNO es fácil: Arduino IDE provee librería LiquidCrystal con funciones integradas. Funciones principales usadas:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
- Artículo Relacionado: Convertidor 12V a 5V
Funcionamiento de Fuente Variable con Arduino
Conecte cables según diagrama. Obtenemos voltaje en terminal de salida y lo damos como entrada a canal ADC. ADC da valor digital que mostramos en LCD 16×2. Botones para incrementar/decrementar voltaje conectados a pines 4 y 5 de Arduino UNO. ADC 10 bits (0–1023), tensión máx 5 V → 1 bit ≈ 4,9 mV. Al incrementar/decrementar, valor digital varía 0–1023.
Leemos valor ADC en canal A0 con analogRead(A0). Usamos pin 3 para PWM. analogWrite(3, duty cycle) genera voltaje de salida deseado con duty cycle dado en pin 3.
Al pulsar botones cambiamos duty cycle PWM → cambia voltaje salida. Un botón incrementa, otro decrementa. PWM 0–255 (0 V a 5 V). Pin 3 va a transistor NPN que da voltaje variable en emisor y actúa como interruptor. Base del transistor tiene PWM con duty cycle variable → obtenemos voltaje variable en terminal. Al no ser lineal, conectamos condensadores para filtrar ruido en voltaje variable.
- Artículo Relacionado: Control Semáforo Electrónico con IC 4017 y Timer 555
Explicación del Código
Incluir Librerías:
#include <LiquidCrystal.h>
Librería integrada para LCD; funciones fáciles para mostrar caracteres.
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt = 125;
float flag = 0;
lcd toma pines de datos y RS, RW, E del LCD. Referencia 2,5 V → duty cycle 50 % → ref_volt = 125.
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
Pin 3 = salida PWM; pines 4 y 5 = entrada para incrementar/decrementar voltaje.
lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);
lcd.begin configura caracteres del LCD. Al inicio mostramos "Variable Voltage".
float value = analogRead(A0);
value = (value * 5) / 1024;
analogWrite(3, ref_volt);
Variable value lee valor digital del canal ADC A0 y lo convierte a voltaje. analogWrite genera PWM en pin 3.
if (digitalRead(4) == LOW) {
if (ref_volt < 250) {
ref_volt = ref_volt + 1;
delay(100);
}
}
Comprueba si botón incremento pulsado. Si sí, aumenta ref_volt.
if (digitalRead(5) == LOW) {
if (ref_volt > 0) {
ref_volt = ref_volt - 1;
delay(100);
}
}
Comprueba si botón decremento pulsado. Si sí, disminuye ref_volt.
- Artículo Relacionado: Interruptor por Aplausos con Timer 555 y Sin Timer
Así puede generar fuente de alimentación variable de 5 voltios con Arduino UNO sin preocuparse por baterías ni circuitos voluminosos.
Tecnología Industrial
- Construye un Decodificador DTMF Solo con Arduino – Sin CI Externos
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Servidor Web Arduino Uno WiFi: Controla un LED desde el Navegador
- Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M
- Coche Robot Controlado por Sensor G del Smartphone con Arduino y Bluetooth
- Seguimiento GPS en Tiempo Real con Helium, Azure IoT Hub y Power BI
- La IA Detecta Tráfico Humano y de Vida Silvestre en Cadenas de Suministro Globales
- Dominando corriente, potencia y par en variadores de velocidad
- Fuente de Alimentación Dual ±12 VCC desde 230 VCA – Diagrama Circuito y Guía
- Fuentes de alimentación sin transformador: solución probada para reducir costes y espacio