

Thermal Shield
An Arduino 💻 project for temperature 🌡️ control using a thermal board and a fan ♨️🌪️
- Size
- 43.8 × 45 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 19
- Nets
- 16
- Pads
- 50
- Tracks, vias
- 115, 0
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 21 Jan 2026
- Updated
- 16 Mar 2026
Overview
Thermal Shield is an open-source printed circuit board by Nataso08, from the Nataso08/Thermal_Shield repository on GitHub. It is a 2-layer board of 43.8 × 45 mm with 19 parts on 16 nets, routed with 115 tracks and 0 vias.
It is built around the LM311 and BC337. Its parts include 8 resistors, 3 diodes, 3 transistors, 2 ICs and 2 connectors.
Main components
2README
README.md💻 Thermal_Shield 🌡️
Un progetto Arduino per il controllo della temperatura tramite una scheda termica e una ventola.
🧾 Materiali necessari:
- Arduino UNO
- Scheda termica
- Ventola 12 V
- Ponte H
🌡️ Scheda termica:
La scheda termica utilizzata nel nostro sistema è stata realizzata dalla nostra scuola, Istituto Max Planck (Villorba, TV).
📐 Struttura:
La scheda termica è strutturata su un PCB e si presenta come riportato nelle seguenti immagini.
🖇️ Schema
Di seguito è riportato lo schema elettrico della scheda.

🔌 Collegamenti:
- Alimentare la scheda (jack DC) ad una tensione di 12 V
- Collegare Arduino UNO tramite la morsettiera:
- GND → GND
- $V_T$ → Ingresso Analogico di Arduino (A0 - A5)
- PWM → Uscita PWM di Arduino (pin 3, 5, 6, 9, 10 o 11)
💨 Ventola:
Generica ventola 12 V (es. ventola da PC).

🔌 Collegamenti:
- Power → alimentazione 12 V (tramite ponte H)
- GND → GND (comune tra Arduino e alimentazione 12 V)
- RPM → Pin interrupt di Arudino (2, 3)
⚠️ Non collegare GND all'uscita del ponte H, altrimenti l'encoder non funziona correttamente.
❗ Nel codice allegato non è presente la misurazione della velocità (RPM) ma è facilmente integrabile.
❗ Collegare 5 V del ponte H a $V_{in}$ di Arduino se si vuole far funzionare il sistema indipendente dall'alimentazione USB.
⚠️ In questo caso, alimentare il ponte H prima di collegare Arduino con USB per evitare problemi di alimentazione.
🔌 Ponte H:
È possibile usare un qualsiasi ponte H.
Nel mio caso ho utilizzato un L298N, utilizzando esclusivamente il "ramo" B.

Collegare il pin IN3 (se si utilizza il "ramo" B) ad un'uscita PWM di Arduino (pin 3, 5, 6, 9, 10 o 11).
⚠️ Si può verificare se il l'alimentazione ha polarizzazione corretta cortocircuitando il pin IN3 con i 5 V di Arduino: se la ventola inizia a girare il pin è corretto, altrimenti collegare il pin IN4 (o il complementare della coppia del "ramo" scelto).
❗ Alternative:
Se non si dispone di un ponte H è possibile sostituirlo con un circuito a transistor con dovuto dimensionamento.
⚙️ Filtro segnale PWM:
Poiché il segnale PWM potrebbe non essere propriamente adatto alla tua ventola è consigliabile realizzare un filtro RC come quello di seguito riportato.
...
🛠️ Setup:
- Effettuare i collegamenti sopra descritti
- Adattare i pin impostati nel codice allegato sulla base delle proprie necessità
- Impostare i propri valori di T_min e T_max
- Se necessario, modificare il kp e q (nella funzione FTU) affinché la ventola riesca ad abbassare la temperatura fino a T_min
- Caricare il codice allegato e aggiornato (vedi punto 2) su Arduino tramite Arduino IDE
💻 Utilizzo:
🟢 Azionamento:
Si può azionare il sistema tramite:
- Pressione del pulsante Start
- Scrittura '1' su Seriale
A seguito di una delle 2 azioni il sistema inizierà il suo ciclo di riscaldamento/raffreddamento.
🔴 Spegnimento:
Si può fermare il sistema tramite:
- Pressione del pulsante Stop
- Scrittura '0' su Seriale
A seguito di una delle 2 azioni il sistema si fermerà togliendo alimentazione a resistenza riscaldante e ventola (non svolge però la funzione di freno alla ventola, che continuerà a ruotare per inerzia).
📊 Misurazione / rappresentazione grafica:
È possibile osservare il variare della temperatura tramite la lettura della comunicazione seriale. In particolare:
- Monitor Seriale: Permette una facile lettura dei dati "grezzi" 📄
- Plotter Seriale: Permette una facile visualizzazione grafica del variare dei valori 📉
Credits:
Tools I used:
Find Me on:
Parts
19| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 1k | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal | R3, R4, R7 |
| 3 | BC337 | Package_TO_SOT_THT:TO-92_Inline_Wide | Q1, Q2, Q3 |
| 3 | LED | LED_THT:LED_D4.0mm | D1, D2, D3 |
| 2 | 560 | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal | R1, R2 |
| 1 | 100 | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal | R5 |
| 1 | 150 | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P20.32mm_Horizontal | R8 |
| 1 | 220 | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal | R6 |
| 1 | 68n | Capacitor_THT:C_Rect_L7.2mm_W2.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 | C1 |
| 1 | Barrel_Jack_Switch | Connector_BarrelJack:BarrelJack_Horizontal | J2 |
| 1 | LM311 | Package_DIP:DIP-8_W7.62mm | U2 |
| 1 | LM35-LP | Package_TO_SOT_THT:TO-92_Inline_Wide | U1 |
| 1 | Screw_Terminal_01x03 | TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-03P_1x03_P5.00mm | J1 |
Questions
How big is the Thermal Shield PCB?
It measures 43.8 × 45 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Thermal Shield use?
19 parts, built around the LM311 and BC337. 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 Thermal Shield KiCad files?
From the Nataso08/Thermal_Shield repository on GitHub, at the commit this page was made from: the board is Thermal_Shield/Thermal_Shield.kicad_pcb and its schematic Thermal_Shield/Thermal_Shield.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Thermal Shield design in my own project?
Its repository states no licence, so its author keeps all rights: ask Nataso08 before reusing the design.
Similar boards
- 2 layers53 × 38 mm

- 2 layers58 × 110 mm

- 2 layers215 × 100 mm

- 4 layers80 × 80 mm

- 2 layers216 × 150 mm

Motherboard-101
artemisamsx/artemisa
Schematics, PCB designs and HDL simulations to build a 8-bits MSX computer
124 parts67 - 2 layers101.6 × 147.3 mm

Karabas pro revER
andykarpov/karabas-pro
FPGA based retrocomputer with FDD and HDD controllers
223 parts37MIT - 2 layers44 × 100 mm

HP45 Standalone V4.02
yvodehaas/HP45-standalone-controller-V4.02
HP45 standalone controller V4.02
90 parts36GPL-3.0 - 4 layers55.9 × 78.7 mm
