Skip to the content
PCBKitNew board
2 layers33.1 × 43.8 mmThrottleBlaster, the printed circuit board in 3D

A Turbo circuit with a MHz display that can slow down the CPU speed

Size
33.1 × 43.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
34
Nets
38
Pads
132
Tracks, vias
373, 20
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
17 Mar 2024
Updated
14 Dec 2025

Overview

ThrottleBlaster is an open-source printed circuit board by scrapcomputing, from the scrapcomputing/ThrottleBlaster repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 33.1 × 43.8 mm with 34 parts on 38 nets, routed with 373 tracks and 20 vias.

It is built around the MAX3232ID. Its parts include 12 connectors, 6 capacitors, 4 ICs, 2 resistors and 2 transistors. It belongs with the lEDs and displays boards and the RP2040 boards of this library.

Main components

1

README

README.md

ThrottleBlaster

A Pi Pico-based Turbo circuit with a MHz display that reduces the effective frequency of fast CPUs by pulling down the STPCLK# pin at a specified frequency and duty-cycle.

This allows you to play speed-sensitive games, like Digger on a 1200MHz Athlon!

Since rev.0.8e we also support the Pico 2!

Videos:

Download firmware ThrottleBlaster_pico1.uf2 (or ThrottleBlaster_pico2.uf2 for the Pico 2): https://github.com/scrapcomputing/ThrottleBlaster/releases

Download gerbers (ThrottleBlaster_gerbers_rev.X.X.zip): https://github.com/scrapcomputing/ThrottleBlaster/releases

A front panel design by Michael Swimm: https://www.thingiverse.com/thing:6619261

How it works

The Throttle Blaster is a fancy PWM controller that pulls the CPU's STPCLK# to ground.

It is tailored to the needs of vintage PC enthusiasts, so it drives a 4-digit 7-segment display and is pre-loaded with presets that span several hardware generations.

Features

  • Four modes of operation to fit your needs, selected by jumpers:
    1. single push-button control. This is great for re-purposing the Turbo button (NOTE: the on/off turbo switch would need to be replaced with a push-button).
    2. Two-button control (left/right).
    3. rotary-encoder with a push-button. This is great for placing it on a drive bay panel.
    4. analogue potentiometer with/without a push-button. This could be used for configurations without a display.
  • 7-segment TM1637-based display that shows the effective frequency. This can be considered optional, but is highly recommended.
  • Cycle through preset frequencies or select a frequency at a 1MHz granularity.
  • Each preset can be tuned/programmed both in terms of the PWM level but also the PWM frequency.
  • Configuration changes are permanently stored in the Pico's flash memory.
  • The PWM pulses are generated by the Pico's PIOs and are clock-accurate, with no jitter.

Modes of operation

Mode 1: Rotary Encoder (ROT)

  • The devices starts at the "Presets" state (mode).
  • Turn the knob to select a frequency
  • Short push to switch to fine-grain frequency selection
  • Long push to enter configuration of the current preset:
    • Fine-tune actual frequency, short push to switch to PWM period tuning. Long-push escapes.
    • Fine-tune PWM period, short push to switch to preset deletion. Long-push escapes.
    • Select if preset should be deleted, short push to confirm.

Initial configuration

  • The default CPU frequency is 200MHz. Long push to configure the CPU speed. Select the frequency and short push to get back to the presets.

Mode 2: Single-button (1Btn)

  • The device starts at the "Presets" state.
  • Three types of push:
    1. Short push (release immediately)
    2. Medium push (for ~0.5 seconds)
    3. Long push (about 2 seconds)
  • Cycle through presets with a short push. A medium push brings us back to the default CPU frequency.
  • Long push to enter programming mode.

Mode 3: Two-button (2Btn)

  • The device starts at the "Presets" state.
  • Two types of push: long and short
  • Three types of actions:
    1. Short Left or Right push (release immediately)
    2. Both Left and Right short push
    3. Both Left and Right long push.
  • Cycle through presets with a L or R short push.
  • Go to 1-1 manual mode with both L and R short push.
  • Long push (L or R) to enter programming mode, or to configure the CPU Frequency (CPUF) when showing the maximum frequency.
  • Reset to defaults by long press L and R twice.

Mode 4: Potentiometer (POT)

  • Can be used in conjunction with the single-button operation. Turning the potentiometer overrides the preset selected by the button.

Serial Mode (UART): Control by the serial port, works in conjunction with all other modes.

You can connect to the Throttle Blaster via the serial port and set the Frequency and PWM Period. This is convenient for launching a game with a .bat file that first configures the Throttle Blaster and then launches the game.

Reset to factory defaults during power on (since rev 0.9)

Press the button (rotary encoder, or any individual button in other modes) and plug in the ThrottleBlaster to power. The led on the Pico will start flashing fast for around 2 seconds and the MHz display will show "RES".

This helps revert the deleted presets or any potential flash-related issue.

UART Circuit

  • Connect the Throttle Blaster's Tx pin to the PC's serial port Rx pin (that is pin 2 of the serial connector), the Throttle Blaster's Rx pin to serial Tx (pin 3) and ground to ground (pin 5)

UART Software

  • Serial port settings: 9600 8N1, no flow control
  • The string to send is in the form F<MHz>P<Period>\r, where:
    • <MHz> is the desired effective frequency in MHz (float),
    • <Period> is the PWM Period level (1-256),
    • \r (also seen as ^M) is the Carriage-Return character (ASCII 13 0x0d).
    • For example F4.77P8 sets the frequency to 4.77MHz and the PWM period to 8 which is a around 50us.
  • In DOS you can use a terminal emulator, like Kermit, to connect and send the command.
    • You could use this one-liner in a batch file: kermit set port COM1, set speed 9600, output F4.77P8\13. This will set the frequency to 4.77 MHz, the period to 8 and will send a Carriage-Return character (\13).

Note Changing the frequency is not instantaneous. So if you are setting the frequency in a batch file, please consider adding a delay before launching the game.

Note Please note that the serial-port functionality is totally optional. You don't need to populate the MAX3232 IC and its capacitors if you are not planning to use it.

Preset Buttons (since rev 0.7)

Since revision 0.7 you can also directly select a preset by pushing one of the 8 available buttons. This functionality is compatible with all other modes of operation.

Please note that you don't need a Rev 0.7 PCB to use this feature. You can simply connect buttons to the Pico's GPIOs, with one button pin to the GPIO and the other to ground, see table below:

GPIO1011121318192021
Freq (MHz)4810253366133Max

Reset Detection (Optional and experimental) (since rev 0.8)

Connect the computer case reset button to RES1 and another cable from RES2 to the computer motherboard. Now when you press the reset button, the Throttle Blaster will detect it and will temporarily set the frequency to maximum for a faster boot. During this time the MHz display will show "boot" and show a count down until the frequency is restored.

Note Polarity matters: If you connect the reset cables to the RES headers the wrong way your PC won't boot!

Reverse Direction jumper JP3 (since rev 0.4)

Since revision 0.4 the default rotation direction of the knob has been changed and a new jumper JP3 has been added. Closing the jumper will reverse the direction for both the rotary encoder and the potentiometer.

Presets

DisplayPerformance equivalence
44.77 MHz IBM PC
88 MHz
1010 MHz
2525 MHz
3333 MHz 486
6666 MHz 486
133133 MHz Pentium
450450 MHz Pentium-II
733733 MHz Pentium-III

Firmware

Dependencies

Build Instructions

  • Download release (v1.2.1) https://github.com/wahlencraft/TM1637-pico and extract it.
  • cd firmware/ && mkdir build && cd build
  • cmake -DCMAKE_BUILD_TYPE=Release -DPICO_SDK_PATH=/path/to/pico-sdk/ -DPICO_BOARD=<pico|pico2> -DPICO_TM1637_PATH=/path/to/TM1637-pico/ ../src/ && make
  • This will place the firmware into: ThrottleBlaster_pico1.uf2 (or ThrottleBlaster_pico2.uf2) in the build directory.

Installing the firmware

  • Unplug the Pico
  • Press and hold the small "BOOTSEL" button on the Pico
  • While holding the BOOTSEL button, connect the Pico to your PC with a micro-USB cable
  • The Pico should show up as a mass-storage device
  • Copy the ThrottleBlaster_pico1.uf2 (or ThrottleBlaster_pico2.uf2 for the Pico 2) firmware to the drive associated with the Pico
  • Safely eject the mass-storage device

The Pico should boot and you should see the Pico's LED light up.

Circuit

Schematic

Throttle Blaster Schematic

The Throttle Blaster circuit is fairly simple:

  • The Rotary Encoder, the Push Button and the Potentiometer are connected to the Pico's GPIOs.
  • The Display is also connected directly to GPIOs
  • The STPCLK# pin is driven by a N-channel MOSFET, a 2N7000, and its gate pin connects to the Pico's GPIO via a 1K resistor and the transistor's drain connects to STPCLK# via a 100 Ohm resistor.
  • The circuit is powered directly from the PSU's 5V power supply via diode (preferrably a Schottky).
  • The serial port circuit relies on a MAX3232 for converting the RS232 levels to Pi-Pico levels.

PCB

Throttle Blaster PCB Front Throttle Blaster PCB Back

Bill Of Materials (BOM)

Download gerbers: https://github.com/scrapcomputing/ThrottleBlaster/releases

ReferenceQuantityValueDescription
N/A1 (recommended)TM1637 based 4-digit 7-segment displayThe display of the Throttle Blaster
D11Through-hole diode (preferrably Schottky 1N5817)Reverse polarity protection
N/A (for Pico)21x17 female through-hole pin-header 2.54mm pitch (Harwin M20-7821746)For attaching the Pico to the board.
J11 (optional)1x01 male through-hole angled pin-header 2.54mm pitchFor the STPCLK# cable
RES1,22 (optional)1x02 male through-hole angled pin-header 2.54mm pitchFor Reset detection
J21 (optional UART)1x03 male through-hole pin-header 2.54mm pitchFor controlling the Throttle Blaster via serial. (Requires MAX3232)
JP1/JP212x02 (or 2x 1x02) male through-hole pin-header 2.54mmSelects mode of operation.
JP311x02 male through-hole pin-header 2.54mm pitchFor the JP3 jumper that flips the rotation direction
SW1/SW22 (optional)1x02 male through-hole pin-header 2.54mm pitchFor the SW1 and SW2 switches
U11 (optional)1x04 male through-hole angled pin-header 2.54mm pitchFor connecting the TM1637 7-segment display.
Jumpers22.54mm pitch JumpersFor JP1/JP2
Q1 (optional Q2)1 (2 for optional RESET detection)2N7000 N-channel MOSFETPulls down the CPU's STPCLK# pin
R111K Resistor SMD 1206For the throttle transistor gate.
R21100 Ohm Resistor SMD 1206 WARNING: P-iii CPUs and VIA MVP3-based boards may need lower values like 47 OhmsBetween the throttle pin and the throttling transistor for additional safety. It's value could be lower.
Pot11 (mode POT)10K linear potentiometerSelects Frequency in Potentiometer mode.
SW11 (mode 1Btn)Push buttonSelects Frequency in 1Btn mode.
SW31 (mode 2Btn)Push buttonThe right button in 2Btn mode.
Preset Btns P1-P88 (optional)1x02 (or one 8x02) male through-hole pin-header 2.54mmHeaders for the 8 preset push-buttons.
SW21 (mode ROT)Rotary Encoder with push-button, (ALPS EC11E-Switch) VerticalSelects Frequency in Rotary mode. Note: These are widely available online using keywords like: "rotary encoder switch Arduino" and they can also be found in kits with fitting knobs.
U21Raspberry Pi Pico
U311x04 horizontal pin header 2.54mm pitchFor connecting to the floppy power connector, for powering the unit.
C11 (mode POT)100pF Ceramic capacitor SMD 1205Used to reduce potentiometer noise.
C2,C3,C4,C5,C65 (optional UART)1uF Ceramic Capacitor SMD 1206For MAX3232 (serial port)
U41 (optional UART)MAX3232 SOIC-16 5.3x10.2mm (Commonly listed as 16-SOIC 3.90mm width)For controlling the Throttle Blaster via the serial port. WARNING: There are many fakes/clones of the MAX3232 available online but these are known not to work well or at all. They may need smaller capacitor values as mentioned in fake max3232 issue. So please avoid them and get a MAX3232 from a known brand and supplier.

Using the circuit for the first time

  • Select the operation mode using jumpers JP1/JP2.
  • Connect J1 to your CPU's STPCLK# pin.
  • Power it on and you are good to go.
  • You can reverse the knob direction by closing JP3 (since rev.0.4)

Basic Troubleshooting

  • Check that the Throttle Blaster's ground is connected to the motherboard's ground
  • Check the voltage at the STPCLK# pin:
    • Max frequency: The voltage should be matching the CPU's I/O high ~3.3V for most CPUs
    • Any other frequency: You should be seing pulses using an oscilloscope, or values between 0 and ~3.3V using a multimeter.
  • Confirm that it's working as expected by running benchmarks from Phil's DOS Benchmark Pack

How to find the STPCLK# pin

Just look for it in your CPU's datasheet. This table lists the STPCLK# pin number for your reference:

CPUSTPCLK# Pin
Pentium MMXV34
Pentium ProA3
Pentium-iii socketAG35
Pentium-iii slot1B6
Athlon XPAC1

How about older CPUs that don't have a STPCLK pin?

486 or older CPUs don't usually have a STPCLK# pin. Instead they have the HOLD pin which has somewhat similar functionality and is active high. Some boards use PWM on this HOLD pin when the Turbo button is pressed.

The HOLD pin is not pulled down internally by the CPU. So it is up to the motherboard to pull it down. The problem is that this is usually actively pulled down by the CPU chipset, meaning that if we try to pull it up with the Throttle Blaster we may damage the chipset. So I don't think there is a way to get the Throttle Blaster to work universally with older systems.

Change Log

  • Rev 0.9: Allows deletion of presets and adds flash reset when button pressed during boot.
  • Rev 0.8e: Fixes single/two-button configuration bug (introduced in 0.8b). Adds Pico2 support.
  • Rev 0.8d: Fixes reset detection
  • Rev 0.8c: Fixes bugs introduced in Rev 0.8b.
  • Rev 0.8b: Improves responsiveness of rotary encoder. WARNING: This revision is buggy, please upgrade to Rev 0.8c (thanks @nahimov for reporting the bug).
  • Rev 0.8: Adds RESET detction circuit (optional) which will temporarily set the speed to max for 20 seconds.
  • Rev 0.7: Adds support for 8 preset buttons.
  • Rev 0.6: Firmware bug fixes: (i) fix saving MHz/Period adjustments to flash and (ii) one-button mode frequency glitch.
  • Rev 0.5: Replaces potentiometer capacitor with SMD and several firmware fixes.
  • Rev 0.4: Reverses knob direction and adds jumper JP3 for selecting direction.
  • Rev 0.3: Adds UART support in both firmware and PCB.
  • Rev 0.2: Adds two-button mode "2Btn".
  • Rev 0.1: Initial release.

Acknowledgements

  • Many thanks to all of you who have reported bugs or asked for clarifications or features requests. By doing so you are helping improve the project! Special thanks to Michael Swimm for extensive testing, reporting bugs, coming up with awesome ideas for new features, and for sharing fancy mounting hardware for the Throttle Blaster!

License

The project is GPLv2 except for Pwm.pio which comes from the Pi Pico SDK examples and is under SPDX-License-Identifier: BSD-3-Clause.

Parts

34
QtyValueFootprintReferences
10SW_PushConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalP1, P2, P3, P4, P5, P6, P7, P8, SW1, SW3
51uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2, C3, C4, C5, C6
22N7000Package_TO_SOT_THT:TO-92_InlineQ1, Q2
2Conn_01x02_MaleConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalRES1, RES2
1100 OhmsResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2
1100pFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1
110KConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalPot1
11KResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1
17SegmentDisplayTM1637Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalU1
1Conn_01x01_MaleConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_HorizontalJ1
1D_SchottkyDiode_THT:D_5W_P10.16mm_HorizontalD1
1FloppyPowerConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalU3
1MAX3232Package_SO:SOIC-16W_5.3x10.2mm_P1.27mmU4
1MODEConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1POT EnableConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2
1RaspberryPi_PicoThrottleBlaster:raspberry_pi_picoU2
1ReverseDirConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP3
1Rotary_Encoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW2
1SerialConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2

Questions

How big is the ThrottleBlaster PCB?

It measures 33.1 × 43.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ThrottleBlaster use?

34 parts, built around the MAX3232ID. 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 ThrottleBlaster KiCad files?

From the scrapcomputing/ThrottleBlaster repository on GitHub, at the commit this page was made from: the board is kicad/ThrottleBlaster.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the ThrottleBlaster design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers189.5 × 204.9 mmSmartSpin2k Panelized, the printed circuit board in 3D

    SmartSpin2k Panelized

    doudar/SmartSpin2k

    Transform your spin bike into a Smart Trainer!

    749 parts292GPL-2.0
  • 2 layers193 × 113 mmSerial hat, the printed circuit board in 3D

    Serial hat

    colinleroy/a2tools

    Stuff I write for my Apple //c

    35 parts92
  • 2 layers81.6 × 44.5 mmELTerm, the printed circuit board in 3D

    ELTerm

    zephray/ELTerm

    ANSI/VT100-compatible serial terminal built with Raspberry Pi Pico and EL640.480-AM/AG screen

    31 parts92MIT
  • 2 layers87 × 71 mmSocket, the printed circuit board in 3D

    Socket

    eddyem/STM8_samples

    Some code samples and ready projects based on STM8 (deprecated)

    89 parts80
  • 2 layers100 × 93 mmSpeeduino base, the printed circuit board in 3D

    Speeduino base

    Tjeerdie/SPECTRE

    Speeduino compatible engine control unit (ECU) based around black STM32F407VET6 board.

    213 parts59GPL-3.0
  • 2 layers127.3 × 54.1 mmESP32 SolarBox, the printed circuit board in 3D

    ESP32 SolarBox

    cole8888/SRNE-Solar-Charge-Controller-Monitor

    Read data from SRNE solar charge controllers.

    34 parts42
  • 4 layers98.8 × 85.1 mmSsc, the printed circuit board in 3D

    Ssc

    jmthompson/ssc

    Simple Serial Card, an Apple Super Serial Card clone

    25 parts37
  • 2 layers86.2 × 78 mmVersaTermMinus, the printed circuit board in 3D

    VersaTermMinus

    jimbro1000/VersaTermMinus

    Based on the VersaTerm project but slightly shrunk in the wash

    61 parts20GPL-3.0