Skip to the content
PCBKitNew board
2 layers78 × 52 mmHeated bed controller, the printed circuit board in 3D

Heated bed controller

Morfeam/HeatedBed

The code, circuit, and 3d models used in the creation of a module to control my DIY 3d printers heated bed temperature.

Size
78 × 52 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
15
Pads
34
Tracks, vias
66, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
4 Jul 2025
Updated
9 Jul 2025

Overview

Heated bed controller is an open-source printed circuit board by Morfeam, from the Morfeam/HeatedBed repository on GitHub. It is a 2-layer board of 78 × 52 mm with 12 parts on 15 nets, routed with 66 tracks and 0 vias.

It is built around the IRF3205. It belongs with the robots and motor control boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

Readme.md

Heated Bed Controller for 3d Printer

heated bed controller

Summary

Backstory

While building my DIY 3d printer, I've run into several roadblocks along the way. One of which being the temperature read and controlled output of the 3d printers heated bed. Currently, the main controls of my printer (for motor drivers, hotend, LCD display) are run on an arduino mega accompanied by a modified RAMPs 1.4 shield operating at 24 volts (marlin firmware). For whatever reason, after every attempt to drive the heated bed through RAMPs 1.4, my printer would run into several performance issues: - Inaccurate readings from bed thermistor - Bed continuously heating up, runaway temps well past desired temperature - Miscellaneous lapse in readings from hotend thermistor causing hotend temp runaways causing print failures (but only when bed was attached)

Whether it was the RAMPs 1.4 shield itself, or the bed not playing well with my current setup, I decided to build an additional system to read heated bed temps, set, and hold bed temps via PID Control.

Reading Temperature

In order to measure temps, the arduino must measure the voltage at the point past the thermistor and another "known" resistor (voltage-divider). The resistance of the thermistor embedded in my heated bed is approximately 10k ohms. A 10k ohm pull-down resistor is set up and an analog pin is set and gets fed back the voltage at the point past the thermistor + pull-down resistor see circuit diagram.

The Steinhart–Hart equation is used to calculate temperature from the resistance reading on the thermistor.

Controlling Temperature

A modified PID control algorithm is used to balance temperatures around a setpoint, where setpoint is the desired temperature and is set via potentiometer.

The standard output range on the Arduino PWM pin allows for values between 0 - 255. For my purposes, this range in temperature (degrees fahrenheit) works fine, but if higher temps are required I'd recommend driving MOSFET gate by another means (analog pin, optocoupler, etc).

Arduino drives MOSFET by sending PWM-capped PID values to the MOSFET gate pin (protected by 330R resistor). MOSFET then controls the flow of current from the 24v external power supply to the heated bed, heating it up (Arduino and MOSFET share ground).

Warning: The values saved in main.cpp were consistently off by 3 degrees fahrenheit of the actual temperature measured by a thermometer I used as a control. A 3 degree fahrenheit error margin is acceptable for my purposes, but it's important to tune the Kp, Ki, and Kd values specific for your setup.

Output To Display

OLED display uses I2C protocol and serial communication is handled via the Adafruit_SSD1306 library to write relevant data to display.

Display data key:

Set: The current set temperature by potentiometer

Read: The current temperature read from thermistor

PiD: current PID value (capped between 0-255 for PWM)

Time: time elapsed in milliseconds

Material List

  • 1x 50mm x 70mm PCB Prototype Board
  • 1x 10 Amp Fuse
  • 1x IRF3205 MOSFET
  • Solid Core / Jumper Wires (22 AWG)
  • 1x Arduino Nano (ATmega328P)
  • 1x 10K ohm resistor
  • 1x 330R ohm resistor
  • 1x 10K potentiometer
  • 2x 250V 10A switches
  • 1x small OLED display (I2C)
  • 3x 2 pin PCB mount screw terminals
  • Heatsink for MOSFET
  • 2x spade connectors
  • Small 12v fan
  • 24v heated bed + 10K thermistor
  • Soldering setup (iron, solder, etc.)
  • External power supply (a means of powering both arduino and heated bed)
Optional Materials
  • Heat shrink tubing
  • 3d printer and PLA filament (for printing the housing)
  • Solder flux paste to make better contacts

Future Enhancements

  • Streamline everything to run at 12 volts

    • Currently, my heated bed takes 24 volts while my arduino microcontroller can only support an operating voltage range between 7 - 12 volts.
    • In my case, this isn't too big of an issue, as I already have several components in my DIY printer that require both 12 and 24 volts. However, in the future it would be ideal to have all components functioning at the same voltage.
    • Steamling voltage would reduce complexity of wiring and remove the need for additional power supply / buck converter for arduino.
  • Updates to 3d models

    • Models could be updated to better fit the form factor of my printer's design.
  • Kicad circuit design to fully milled PCB

    • instead of using wires, this could be done on a custom milled circuit board for reliability, repeatability, and appearance

Parts

12
QtyValueFootprintReferences
2SW_SPSTLibrary:screw_mountSwitch1, Switch2
110KLibrary:screw_mountResistor1
112vLibrary:screw_mountPower1
124vLibrary:screw_mountPower2
1330RLibrary:screw_mountResistor2
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1Heated BedLibrary:screw_mountR2
1IRF3205Package_TO_SOT_THT:TO-220-3_VerticalMOSFET
1R_PotentiometerLibrary:arduino_kit_potentiometerPotentiometer
1ThermistorLibrary:screw_mountThermistor1
1~Library:OLED_displayOLED_display1

Questions

How big is the Heated bed controller PCB?

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

What parts does the Heated bed controller use?

12 parts, built around the IRF3205. 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 Heated bed controller KiCad files?

From the Morfeam/HeatedBed repository on GitHub, at the commit this page was made from: the board is kicad_files/heated_bed_controller.kicad_pcb and its schematic kicad_files/heated_bed_controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Heated bed controller design in my own project?

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

Similar boards

  • 2 layers77.7 × 73.2 mmBMT BionX Minimum Translator vereinfacht, the printed circuit board in 3D

    BMT BionX Minimum Translator vereinfacht

    stancecoke/BionX_Minimal_Translator

    Drive your BionX motor with a no-name battery and a Kunteng LCD-display without any further BionX-components

    40 parts22GPL-3.0
  • 2 layers50.2 × 73 mmLibreductioner, the printed circuit board in 3D

    Libreductioner

    andreasb242/Libreductioner

    Induction loop sender for mower

    39 parts8GPL-2.0
  • 2 layers98.8 × 55.1 mmH bridge controller, the printed circuit board in 3D

    H bridge controller

    jayanta525/dual-h-bridge

    Dual H-Bridge Controller with IRF3205 and IR2104 MOSFET Driver, and with ATMega328P-AU PWM Controller

    104 parts5MIT
  • 2 layers90 × 44 mmDC AC Inverter EGS, the printed circuit board in 3D

    DC AC Inverter EGS

    stefaweb/DC-AC-Inverter-EGS

    Mini DC-AC Inverter with EGS002 module

    42 parts5
  • 2 layers80 × 100 mmCustomPCB, the printed circuit board in 3D

    CustomPCB

    Cpp-homies/MAPLE

    M.A.P.L.E: Modular Automated Plant Life Enclosure

    23 parts4MIT
  • 4 layers104.1 × 132.6 mmAmpeater, the printed circuit board in 3D

    Ampeater

    Acliad/Ampeater

    10 A/us high current electronic load for power supply testing

    97 parts3MIT
  • 2 layers92.6 × 52 mmSineWaveInverter, the printed circuit board in 3D

    SineWaveInverter

    ampnics/Project-10

    Mater KiCad with Projects is a series of lectures in which we are learning PCB designing

    44 parts2