Skip to the content
2 layers81.8 × 78 mmAnalog PID Controller, the printed circuit board in 3D

An all-hardware Proportional-Integral-Derivative (PID) controller built entirely from op-amps, resistors, and capacitors — no microcontroller, no code.

Size
81.8 × 78 mm
Copper layers
2
Thickness
1.6 mm
Parts
45
Nets
23
Pads
121
Tracks, vias
224, 45
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Aug 2026
Updated
16 Aug 2026

Overview

Analog PID Controller is an open-source printed circuit board by DishanPanchigar, from the DishanPanchigar/Analog_PID_Controller repository on GitHub. It is a 2-layer board of 81.8 × 78 mm with 45 parts on 23 nets, routed with 224 tracks and 45 vias.

It is built around the LM358. Its parts include 18 resistors, 10 capacitors, 4 ICs and 4 connectors.

Main components

1

README

README.md

Analog PID Controller

An all-hardware Proportional-Integral-Derivative (PID) controller built entirely from op-amps, resistors, and capacitors — no microcontroller, no code. Designed and simulated in Proteus, hand-built on a proto-board, and laid out as a two-layer PCB in KiCad.

Analog Circuit Course (BECE206L) project — School of Electronics Engineering, VIT Chennai.

Overview

Digital PID controllers dominate modern practice, but analog controllers still have a place where continuous-time response, zero sampling delay, and simplicity matter. This project implements the classic PID control law directly in hardware using LM358 op-amps:

  • Proportional stage — inverting amplifier with a variable-resistor gain
  • Integral stage — op-amp integrator (capacitor in the feedback path)
  • Derivative stage — practical differentiator (capacitor at the input, resistor in feedback)
  • Summing amplifier — combines P, I, and D outputs into the final control signal
  • Power supply / virtual ground — a buffered voltage divider lets every stage run from a single +12V rail

The design was validated at three levels: theoretical modeling, Proteus simulation, and hardware prototyping — followed by a proper two-layer PCB layout in KiCad.

System Architecture

The input error signal is fed in parallel to the proportional, integral, and derivative stages. Each stage produces its own control voltage, and a summing amplifier combines them into the final output, exactly as in the classical PID equation.

Architecture block diagram

text
Vout = Kp·Vin + Ki∫Vin dt + Kd·dVin/dt

Circuit Design

Full schematic

Full circuit schematic

Proportional stage — inverting amp, gain set by potentiometer RV1:

text
Vprop = -(RV1 / R2) · Vin = -Kp · Vin

Integral stage — op-amp integrator, R = RV2, C1 = 4.7 µF (with a parallel resistor to prevent saturation drift):

text
Vint = -(1 / RV2·C1) ∫ Vin dt = -Ki ∫ Vin dt

Derivative stage — practical differentiator, C2 = 0.1 µF, R = R5 ∥ RV3 (extra resistors limit high-frequency noise gain):

text
Vdiff = -(Req·C2) · dVin/dt = -Kd · dVin/dt

Summing amplifier — inverting summer that combines all three stages:

text
Vout = Kp·Vin + Ki∫Vin dt + Kd·dVin/dt

Component selection

ComponentChoiceWhy
Op-ampLM358Cheap, single-supply (3–32 V), low offset (~2 mV), 1 MHz GBW, low bias current — good enough for low-frequency PID work
Resistors1 kΩ – 1 MΩGain/stability setting per stage
Capacitors0.1 µF – 4.7 µFIntegration / differentiation
Filter caps10 µF – 100 µFPower-rail smoothing
PotentiometersRV1–RV4Live tuning of Kp, Ki, Kd, and set-point

Power supply & virtual ground: a +12 V single-rail supply is split by two 10 kΩ resistors into a 6 V midpoint, buffered by an LM358 voltage-follower to hold a stable virtual ground under load — this is what lets every op-amp stage handle bipolar signals from a single supply.

PCB Design

Two-layer board designed in KiCad. Front layer carries the active components (U1–U4 op-amps, R1–R18, C1–C10, tuning pots RV1–RV4); back layer is largely ground plane and power routing, stitched together with vias to keep the analog signal paths low-noise.

Front layerBack layer
PCB front layerPCB back layer

3D render of the finished board:

PCB 3D render

Noise reduction techniques used:

  • Electrolytic decoupling caps (10–100 µF) for low-frequency ripple, ceramic 0.1 µF caps right at the op-amp supply pins for high-frequency noise
  • Dedicated ground plane on the back layer with generous stitching vias
  • Short, direct signal routing to minimize parasitic pickup

Gerbers and native KiCad project files are included in PCB Design/.

Simulation (Proteus)

Each stage (P, I, D) was verified independently before being combined through the summing amplifier.

Proteus simulation circuit

Set-point and feedback potentiometers were swept to observe the controller's response under different gain conditions:

Simulation output waveform

The yellow trace shows the instantaneous error signal; the blue trace shows the controller's driving output as it reacts to that error. Sweeping Kp, Ki, and Kd this way surfaced two real issues that were fixed before moving to hardware: excessive high-frequency noise gain in the derivative stage (fixed by re-tuning the differentiator capacitor for a mild low-pass effect) and op-amp saturation from mismatched resistor ratios.

Hardware Prototype

The power supply and virtual ground were built and verified first, then each PID stage was built and tested individually before being tied together with the summing amplifier.

FrontBack
Prototype frontPrototype back

Assembled and running:

Prototype on proto-board

Experimental Setup

The board was powered from a regulated +12 V supply, with an oscilloscope and multimeter monitoring the outputs while the set-point/feedback potentiometers and the Kp/Ki/Kd trim pots were adjusted.

Experimental setup

Results

  • Hardware behavior closely tracked the Proteus simulation, with only minor deviations from component tolerances, op-amp non-idealities, and wiring noise.
  • The integrator showed slight drift from leakage current; the differentiator was sensitive to high-frequency noise — both mitigated with parallel resistors and small filtering capacitors.
  • The buffered virtual ground kept single-supply operation stable across all three stages.
  • The PCB layout (vs. the proto-board) further improved signal integrity by shortening traces and tightening the ground plane.

Overall, the controller reduced steady-state error, improved rise time, and stayed stable across the tested range of Kp/Ki/Kd settings — confirming that a fully analog, code-free PID implementation is viable for real-time, low-latency control.

Applications

  • Motor speed control — fast proportional response, zero steady-state error, low overshoot
  • Temperature control (e.g. industrial heaters) — integral action removes long-term offset, derivative action limits overshoot
  • Position control (robot arms, servos) — precise, low-oscillation positioning
  • Any low-cost, real-time embedded application where digital sampling delay is undesirable

Repository Structure

text
.
├── Analog Circuit_Project_Report.docx   # Full project report
├── PCB Design/
│   ├── Analog_PID_Controller.kicad_pro
│   ├── Analog_PID_Controller.kicad_sch  # Schematic
│   ├── Analog_PID_Controller.kicad_pcb  # PCB layout
│   └── Gerbers/                         # Fabrication files (Gerbers + drill files)
└── images/                              # Figures used in this README

Tools Used

  • Proteus — circuit simulation
  • KiCad — PCB schematic capture, layout, and Gerber export

Bill of Materials (key parts)

  • 4× LM358 dual op-amps
  • Resistors: 1 kΩ – 1 MΩ (various, for gain/stability tuning)
  • Capacitors: 0.1 µF – 4.7 µF (integration/differentiation), 10 µF – 100 µF (supply filtering)
  • 4× potentiometers (RV1–RV4) for Kp / Ki / Kd / set-point tuning
  • Regulated ±12 V or +12 V single-rail power supply
  • Proto-board (for the initial build) / custom PCB (see PCB Design/)

Authors

  • Manas Mishra (24BLC1157)
  • Panchigar Dishan Chiragbhai (24BLC1217)
  • Taraksh Pratap Singh (24BLC1149)

Course project under Dr. Raju Patel, School of Electronics Engineering, VIT Chennai — April 2026.

References

See the full report for the complete bibliography, including foundational PID texts (Åström & Hägglund, Ogata, Visioli) and recent literature on analog vs. digital and adaptive PID implementations.

Parts

45
QtyValueFootprintReferences
1310kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R7, R8, R9, R10, R11, R12, R15, R16, R17, R18
60.1uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC3, C4, C5, C6, C7, C10
4LM358Package_DIP:DIP-8_W7.62mmU1, U2, U3, U4
31kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4, R13, R14
3Screw_Terminal_01x02TerminalBlock_RND:TerminalBlock_RND_205-00045_1x02_P5.00mm_HorizontalJ1, J3, J4
2100kPotentiometer_THT:Potentiometer_Alps_RK09K_Single_VerticalRV2, RV4
250kPotentiometer_THT:Potentiometer_Alps_RK09K_Single_VerticalRV1, RV3
1100kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6
1100uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC1
110uFCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC9
11MResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5
122uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC2
14.7uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC8
1Conn_01x03_SocketConnector_PinHeader_2.00mm:PinHeader_1x03_P2.00mm_VerticalJ2
1FerriteBeadResistor_SMD:R_0603_1608MetricFB1
1LOGOLOGOG***

The 42 most common of 45 parts.

Similar boards

  • 2 layers132.1 × 45.7 mmIPoS, the printed circuit board in 3D

    IPoS

    peterheinrich/InternetOverSpaghetti

    Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

    42 parts342
  • 2 layers68.8 × 53.6 mmZArduino, the printed circuit board in 3D

    ZArduino

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    46 parts269
  • 2 layers152 × 88 mmRFBitBangSMT, the printed circuit board in 3D

    RFBitBangSMT

    profdc9/RFBitBanger

    A QRP digital transceiver created from readily available parts for off-the-grid maintenance

    271 parts222
  • 2 layers118 × 103.5 mmEV Charger2, the printed circuit board in 3D

    EV Charger2

    fotherja/EV_Charger

    Arduino Uno Code for EV Charger

    62 parts167MIT
  • 2 layers113 × 62.2 mmFullScope, the printed circuit board in 3D

    FullScope

    tvlad1234/pillScopePlus

    Oscilloscope based around the STM32F401 Black Pill and a color LCD screen

    15 parts165Apache-2.0
  • 2 layers75.2 × 61.1 mmHelios, the printed circuit board in 3D

    Helios

    Grix/helios_dac

    Helios Laser DAC

    102 parts132
  • 2 layers144.1 × 182.2 mmSHVC CPU-01, the printed circuit board in 3D

    SHVC CPU-01

    starlightk7/OpenSFC

    OSHW Reproduction Parts related to the Super Famicom / Super Nintendo game console

    498 parts114CERN-OHL-S-2.0
  • 2 layers100 × 85 mmVNA, the printed circuit board in 3D

    VNA

    profdc9/VNA

    Vector Network Analyzer based on the STM32F103C8T6 bluepill

    178 parts93

Questions

How big is the Analog PID Controller PCB?

It measures 81.8 × 78 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Analog PID Controller use?

45 parts, built around the LM358. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Analog PID Controller KiCad files?

From the DishanPanchigar/Analog_PID_Controller repository on GitHub, at the commit this page was made from: the board is PCB Design/Analog_PID_Controller.kicad_pcb and its schematic PCB Design/Analog_PID_Controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Analog PID Controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask DishanPanchigar before reusing the design.