Built to order

Variable Power Supply Project with Digital Voltage Control and CC-CV Modes using Arduino

This project builds a bench variable DC power supply with digital voltage control around an Arduino Nano: adjustable 0–24 V output with constant-current / constant-voltage (CC-CV) operation. A rotary encoder sets the voltage in 0.1 V steps, a 16×2 LCD shows set and measured voltage, load current and the active CV/CC mode, and the firmware enforces a programmable current limit with short-circuit cutoff. The control loop runs in firmware, trimming the buck converter drive to hold the setpoint. Suitable for B.E./B.Tech final-year projects in Electronics, E&TC, Electrical and Instrumentation.

Electronics / E&TC Arduino NanoACS712 current sensor16×2 LCDArduino C++ firmwareDC-DC buck converter moduleRotary encoder · push buttonRC-filtered PWM control24 V SMPS inputHardware
Variable Power Supply Project with Digital Voltage Control and CC-CV Modes using Arduino — project thumbnail preview
More project photos (2)

The problem

Every electronics student eventually needs a variable bench supply: wall adapters give one fixed voltage, linear regulators waste power and still fix the voltage, and powering a prototype at the wrong voltage destroys boards. Commercial CC-CV bench supplies are priced beyond a typical student budget, and cheap adapters give no current limiting — one shorted wire means burnt traces. This project builds a digital bench variable DC power supply around an Arduino Nano. A rotary encoder sets the output in 0.1 V steps (design value), a 16×2 LCD shows set and measured voltage, load current and the active mode, and the firmware implements true CC-CV behavior: constant voltage until the load current reaches the programmed limit, then constant current as the voltage sags. Short circuits latch the output off until reset. It is an explainable instrument — the student can describe the buck stage, feedback injection, current sensing and firmware loop in a viva without hand-waving.

SYSTEM FLOW

5 components 5 connections

Live flow
Drag to explore
100%
sensorRotary encoder

Each detent changes the voltage setpoint by 0.1 V; a press switches to the current-limit setpoint.

Follow the working sequence

How it works

  1. The operator turns the rotary encoder; each detent changes the voltage setpoint by 0.1 V (design value), and a button press switches the encoder to the current-limit setpoint (0–3 A range, design target).
  2. A firmware control loop running approximately every 10 ms (design target) converts the voltage setpoint into a PWM duty cycle; an RC low-pass filter (1 kΩ, 10 µF — design values) smooths this into a DC control voltage injected into the buck converter's feedback node.
  3. The output voltage is sampled through a resistor divider scaled for the Nano's 10-bit ADC using its internal 1.1 V reference (datasheet); the loop trims the PWM to hold the measured voltage at the setpoint — this is constant-voltage mode.
  4. Load current is measured by an ACS712 Hall-effect sensor (±5 A variant, 185 mV/A — datasheet) and scaled to amperes in firmware; output power is computed from V × I.
  5. When the measured current reaches the set limit, the firmware switches to constant-current mode: it reduces the PWM drive to hold current constant, the LCD mode flag flips from CV to CC, and the output voltage sags as the load demands.
  6. On a sudden over-current spike — a shorted load — the firmware latches the converter off, raises a fault message on the LCD, and requires a manual reset; the 3 A slow-blow input fuse (design value) provides hardware backup.
  7. Four EEPROM presets (3.3/5/9/12 V defaults, user-rewritable) are recalled with the encoder button for the voltages students reach for most often.

Tech stack:

  • Arduino Nano (ATmega328P)
  • Arduino IDE (C++ firmware)
  • DC-DC buck converter module (adjustable)
  • ACS712 current sensor
  • 16×2 LCD (HD44780)
  • Rotary encoder
  • 24 V SMPS input adapter
  • Perfboard wiring
Parameter Value
Output voltage range 0–24 V (design target; input must stay ~2 V above output — expected)
Current limit range 0–3 A (design target, bounded by module rating and wiring)
Voltage setting step 0.1 V (design value)
Current limit step 0.1 A (design value)
Voltage display resolution 0.1 V (design value)
Current display resolution Approximately 0.01 A (expected)
Control loop period Approximately 10 ms (design target)
ADC 10-bit, ATmega328P internal 1.1 V reference (datasheet)
Current sensor ACS712 ±5 A variant, 185 mV/A sensitivity (datasheet)
Feedback drive PWM → RC low-pass (1 kΩ, 10 µF — design values) into buck FB node
Input supply 24–30 V DC SMPS brick (design value)
Input fuse 3 A slow-blow (design value)
Presets 4 EEPROM voltage presets, user-rewritable (design value)
Enclosure Ventilated metal prototype box; Approximately 200 × 150 × 80 mm (typical build)

Project features

  • [Digital voltage control] A rotary encoder sets the output in 0.1 V steps (design value) with the value taking effect live; pressing the encoder switches it to adjust the current limit instead.
  • [True CC-CV modes] In constant-voltage mode the output holds the set voltage; when the load current reaches the programmed limit the firmware switches to constant-current mode, holding current steady while voltage sags. The LCD flags the active mode.
  • [Live voltage and current readout] A 16×2 LCD shows the set voltage, the measured output voltage, the load current and the CV/CC indicator, refreshed approximately 4 times per second (design target).
  • [Short-circuit protection] A sudden over-current event latches the converter output off and raises a fault screen until the user resets; a 3 A slow-blow input fuse (design value) backs up the firmware protection.
  • [EEPROM voltage presets] Four user-rewritable presets (default 3.3, 5, 9 and 12 V) are stored in the Nano's EEPROM and recalled from the front panel, retained without power.
  • [Multimeter calibration procedure] A documented two-point calibration against the buyer's reference multimeter stores calibration constants in EEPROM, so the displayed values match a real instrument.
  • [Filtered-PWM feedback drive] The firmware turns one Nano PWM channel into a smooth control voltage through an RC low-pass filter (1 kΩ, 10 µF — design values) injected into the buck module's feedback node.
  • [Prototype enclosure] A ventilated metal box with panel-mount binding posts, the LCD window, the encoder knob and handwritten masking-tape labels — a real bench instrument, not a breadboard demo.

What is included

  • Working bench variable DC power supply prototype with digital control and CC-CV
  • Arduino firmware source code with comments
  • Circuit/wiring diagram and front-panel layout drawing
  • Component list with values
  • Two-point calibration procedure against a reference multimeter
  • Project report PDF (design, firmware logic, calibration, results)
  • PPT presentation for final review
  • Viva Q&A preparation document (buck converters, CC-CV, feedback, ADC, current sensing)
  • Demonstration guidance

Limitations & prerequisites

  • Output maximum follows the input: 24 V out needs a 26–30 V input brick (expected), because the buck stage cannot boost above its input.
  • Displayed voltage and current are only as accurate as the buyer's two-point calibration against their reference multimeter; some temperature drift is expected.
  • 0–3 A is a design target bounded by the buck module rating and wiring gauge, not a measured thermal rating; sustained full-load operation needs the documented heatsinking and ventilation.
  • The CC loop is a firmware loop (~10 ms, design target), not an analog control loop — it will not catch microsecond-scale transients; the input fuse is the fast protection.
  • This is a prototype instrument, not a certified laboratory supply — no calibration certificate and no industrial/medical certification.
  • Input ripple and load-transient response are module-dependent (component-dependent).
  • High-current operation needs clear ventilation; the enclosure vents must not be blocked.

Frequently Asked Questions

Which controller is used?

An Arduino Nano (ATmega328P). It reads the rotary encoder, drives the buck module through a filtered-PWM control voltage, samples output voltage and current with its 10-bit ADC, runs the CC-CV loop, and updates the 16×2 LCD.

Is the current limiting real CC-CV?

Yes. CV mode holds the set voltage; when the load current reaches the programmed limit, firmware switches to CC mode and holds current constant while the voltage sags. A short circuit latches the output off until reset.

What feeds the supply?

A 24–30 V DC SMPS brick (design value), specified in the component list. The maximum output is about 2 V below the input because it is a buck stage.

Does it need calibration?

Yes — the deliverables include a two-point calibration procedure against a reference multimeter, and the firmware stores the calibration constants in EEPROM.

Can it be customized?

Yes: an OLED display in place of the 16×2 LCD, more presets, serial logging of V/I to a PC, temperature-based fan control, or a higher-current buck module (needs wiring and thermal redesign).

Is this project suitable for a final-year project?

Yes — for Electronics, E&TC, Electrical and Instrumentation programs. It demonstrates power electronics, feedback control, current sensing, embedded C and instrument design, all explainable end to end in a viva.

Components & software requirements
  • Arduino Nano (ATmega328P)
  • Arduino IDE (C++ firmware)
  • DC-DC buck converter module (adjustable)
  • ACS712 current sensor
  • 16×2 LCD (HD44780)
  • Rotary encoder
  • 24 V SMPS input adapter
  • Perfboard wiring
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.

Get a quotation