Thermal Throttling and Active Cooling Chart¶
Specification¶
The full specification below is extracted from Chapter 14: Raspberry Pi 5 Hardware: Storage, Camera, and Cooling.
Type: chart
**sim-id:** thermal-throttling-chart<br/>
**Library:** Chart.js<br/>
**Status:** Specified
Learning objective: Students will *analyze* (Bloom L4: Analyze) how active cooling and heat sink choice affect processor temperature and the onset of thermal throttling under sustained load.
Chart type: line chart, responsive Chart.js canvas.
Purpose: show simulated CPU temperature over ten minutes of sustained load under three cooling configurations, and mark the point at which each configuration crosses the thermal throttling threshold.
X-axis: time under load, in minutes (0 to 10).
Y-axis: CPU temperature in degrees Celsius, with a clearly marked horizontal reference line at the throttling threshold (approximately 85°C).
Data series: three lines — "No Cooling" (red, rises quickly and crosses the threshold early), "Heat Sink Only" (gold `#D4AF37`, rises more slowly and crosses the threshold later), and "Active Cooling" (circuit green `#2E7D32`, levels off below the threshold and never throttles).
Interaction (required): a set of three checkboxes lets students toggle each line's visibility independently to compare configurations one at a time or together. Hovering any point on a line shows a tooltip with the exact simulated temperature and, if that configuration has crossed the threshold by that time, a note reading "Throttling active — clock speed reduced."
Implementation: Chart.js line chart with `responsive: true` and `maintainAspectRatio: false`. Precompute each series as an array of 11 values (one per minute) following a simple approach-to-asymptote curve, with the "No Cooling" and "Heat Sink Only" curves exceeding the threshold value partway through. Wire the three checkboxes' `change` events to toggle `chart.data.datasets[i].hidden` and call `chart.update()`.