Skip to the content
PCBKitNew board
2 layers100 × 100 mmFloppyExerciser, the printed circuit board in 3D

Simple tool for testing and repairing floppy drives

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
118
Nets
141
Pads
586
Tracks, vias
1,978, 299
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
18 Feb 2024
Updated
10 Apr 2025

Overview

FloppyExerciser is an open-source printed circuit board by schlae, from the schlae/FloppyExerciser repository on GitHub. It is a 2-layer board of 100 × 100 mm with 118 parts on 141 nets, routed with 1,978 tracks and 299 vias.

It is built around the ATMEGA328PB-MN, 74LS245SC and 74LS04PC, with the 74LS32SC among its other parts. Its parts include 28 resistors, 19 diodes, 13 switches, 11 connectors and 8 transistors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

Floppy Exerciser

Floppy exerciser circuit board

This board helps test floppy drives of several different types:

  • Standard IBM 34-pin drives (3.5" and 5.25")
  • IBM PS/2 40-pin drives with embedded power connections
  • Shugart 8" floppy drives
  • Apple II (original Disk II)
  • HP 34-pin drives (as found in many 9122 enclosures)
  • HP 26-pin drives (found in older enclosures and machines)
  • IBM 31SD and 51TD floppy drives

The board basically breaks out every signal to a control switch, indicator LED, or test point. It's not designed as a flux imaging tool--it's just a simple way to exercise features of a floppy drive.

There is an optional section of the board that is a step controller for the head stepper motor. This controller has an encoder wheel and a small 7-segment display. It will let you select and automatically step to a particular track.

Features include:

  • Two potentiometers control step pulse width and step period (speed)
  • Generates TG43 signal (Track greater than 43, for variable write current)
  • Alignment mode makes it easy to cycle between track 0, middle, and last track
  • Supports half tracking (Apple II) and double tracking modes
  • Supports direct stepper motor drive through separate header
  • Direct stepper drive supports half track, double track, and 1.5x tracking, useuful for getting 32 tpi from a 48tpi drive
  • Auto track 0 seek function will try to locate track 0

The fab files are here.

The schematic is here.

The bill of materials is here

Fabrication notes

The board is 100mm x 100mm, 2 layer, standard 1.6mm thickness.

Use toggle switches, not slide switches, otherwise the silkscreen markings will be reveresed.

Use a 3-position switch for the TG43 switch.

Use SIP sockets for RN1 and RN2 so you can swap in different termination resistor values. I usually use 1K.

Be careful about putting any signals on J2. If EN WRITE gets grounded (the adjacent pin is ground) then it will enable writes on any connected drive, erasing the existing track.

Connecting Drives

  • Apple II: Use connector J12. Apply -12V, +5V, and +12V to the test points on the left side of the board.
  • PC: Use connector J6. Apply +5V to the test point on the left side of the board. Connect a Molex connector to the floppy drive for power (+5V and sometimes +12V).
  • PS/2: Use connector J11. Apply +5V and +12V to the test points on the left side of the board.
  • Shugart: Use connector J9. Apply +5V to the test point on the left side of the board. Connect the drive to power externally (typically +5V, +24V, and 120VAC).
  • IBM 31SD/51TD: Use connector J10. The 31SD has fewer pins, line it up with pin 1. Apply +5V, -5V, and +24V to the test points on the left side of the board.
  • HP 34-pin: Use connector J7. Apply +5V and +12V to the test points on the left side of the board.
  • HP 26-pin: Use connector J8. Apply +5V to the board and external power to the HP drive.

The board can directly drive an external 4-phase stepper motor. Attach the stepper motor to J1 and connect either +12V or +24V power to the test points on the left side, and set jumper J4 to pick the voltage.

Firmware

Building the Firmware

The code for the ATMega328PB microcontroller is meant to run without a bootloader and can be built from the command line if you have installed avr-gcc and avrdude.

text
make
make fuses
make prog

Note that the avrdude command lines in the makefile are hard-coded for the usbtiny programmer. You'll want to change that if you have another type of AVR programmer.

The MCU is new enough that your version of avr-gcc and avrdude may not support it yet, see here for instructions on how to fix that.

The bottom of the board has a standard 6-pin AVR programming header as a surface mount footprint. Since you only need to program it once, you could plug a header into the programmer's cable and physically push it up against the board, or you could temporarily tack-solder it in place. Or just leave it soldered in place and install standoffs in the corners of the board.

Using the Firmware

On startup, the display will temporarily indicate HI and then prompt you for the stepping mode:

  • SS - single step
  • DS - double step
  • HS - half step
  • 15 - 1.5x step

Half step mode and 1.5x step are supported on the direct drive stepper motor header and the Apple II header.

Select the mode with the encoder wheel and then push it down to select the option.

The display now indicates the current track. Move the encoder wheel to pick a new track. The display will blink to indicate your desired track. Once you are satisfied with it, push down on the encoder to select that track.

For additional functions, you can push the menu button. Menu options are selected with the encoder wheel:

  • HO - Home to track 0. The controller seeks until TRACK0 asserts or it steps by 80 tracks
  • A8 - Alignment mode for 80 tracks. In this mode, the encoder switches between track 0, track 39, and track 79
  • A7 - Alignment mode for 77 tracks
  • A4 - Alignment mode for 40 tracks
  • 35 - Alignment mode for 35 tracks

To exit alignment modes, push the menu button.

The board will control the TG43 (track greater than 43) signal used by 8" drives as long as the switch is set to "AUTO".

Licensing

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. See https://creativecommons.org/licenses/by-sa/4.0/.

Parts

118
QtyValueFootprintReferences
25TestPointConn:TP_KEYSTONE_5005_9TP1, TP2, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20, TP21, TP22, TP23 +9
10220Passive:RESC1608X55R12, R13, R14, R15, R16, R17, R18, R19, R20, R21
910KPassive:RESC1608X55R1, R10, R11, R23, R24, R25, R26, R27, R28
81KPassive:RESC1608X55R2, R3, R4, R5, R6, R7, R8, R9
8D_ALTActive:DIOM5226X210D3, D5, D7, D9, D16, D17, D18, D19
8~Active:SOT95P230X117-3Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8
6LED_Small_FilledActive:LEDM1608X50D10, D11, D12, D13, D14, D15
4LED_ALTActive:LEDM1608X50D2, D4, D6, D8
4MHConn:MH_125_200H1, H2, H3, H4
20.1Passive:CAPC1608X100C1, C2
2R_Network08Resistor_THT:R_Array_SIP9RN1, RN2
13.3KPassive:RESC1608X55R22
174LS04Active:SOP127P620X175-14U4
174LS245Active:SOP127P1065X265-20U2
174LS32Active:SOP127P620X175-14U3
1APPLE IIConnector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_VerticalJ12
1ATmega328PB-MPackage_DFN_QFN:QFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mmU1
1DENSITYSwitch:SW_SPDTSW13
1DIRSwitch:SW_SPDTSW10
1DISKCH_RSTSwitch:ESWITCH_TL1105SW3
1DRIVE_SELECTSwitch:SW_SPDTSW6
1DSELSwitch:SW_DPDTSW4
1DSEL2Switch:CTS_220AD_04SW5
1HEAD_LOADSwitch:SW_SPDTSW9
1HEAD_SELSwitch:SW_SPDTSW8
1HP 26-PINConnector_PinHeader_2.54mm:PinHeader_2x13_P2.54mm_VerticalJ8
1HP 34-PINConnector_PinHeader_2.54mm:PinHeader_2x17_P2.54mm_VerticalJ7
1IBMConnector_PinHeader_2.54mm:PinHeader_2x17_P2.54mm_VerticalJ6
1IBM 31SDConnector_PinHeader_2.54mm:PinHeader_2x18_P2.54mm_VerticalJ10
1ISPConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical_SMDJ3
1LITEON_LTD-2601G-11Active:LTD-2601G-11D1
1MENUSwitch:ESWITCH_TL1105SW12
1MOTOR_ONSwitch:SW_SPDTSW7
1PS/2Conn:EDAC_395-040-559-212J11
1PWPassive:BOURNS_3386_VERT_UNIVERSALRV2
1RATEPassive:BOURNS_3386_VERT_UNIVERSALRV1
1RotaryEncoder_SwitchSwitch:PANASONIC_EVEYSW1
1SHUGARTConnector_PinHeader_2.54mm:PinHeader_2x25_P2.54mm_VerticalJ9
1STEPSwitch:ESWITCH_TL1105SW2
1STEPPERConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ1
1TG43 MODESwitch:SW_SPDTSW11
1VConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1WRITEConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2

Questions

How big is the FloppyExerciser PCB?

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

What parts does the FloppyExerciser use?

118 parts, built around the ATMEGA328PB-MN, 74LS245SC, 74LS04PC and 74LS32SC. 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 FloppyExerciser KiCad files?

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

Can I use the FloppyExerciser design in my own project?

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

Similar boards

  • 2 layers370.8 × 298.5 mm8 Bit Computer, the printed circuit board in 3D

    8 Bit Computer

    The-Invent0r/8-bit-Computer-PCB

    These are the KiCAD files for my 8-Bit Computer.

    323 parts142
  • 2 layers114.3 × 106.7 mmXt ide, the printed circuit board in 3D

    Xt ide

    glitchwrks/xt_ide

    XT-IDE 8-Bit IDE Controller

    46 parts126GPL-3.0
  • 4 layers337.6 × 105.7 mmISA CGA, the printed circuit board in 3D

    ISA CGA

    hkzlab/CGA_Redux

    The Color Graphics Adapter Redux board is a more or less faithful clone of the original IBM CGA, based on the original schematics

    170 parts56
  • 2 layers350 × 224.3 mmConsole, the printed circuit board in 3D

    Console

    danwerner21/TI99_22

    a 2022 replica of the classic TI/994a, using obtainable parts

    251 parts50
  • 4 layers243.8 × 170.2 mmHEC1, the printed circuit board in 3D

    HEC1

    Andy18650/HEC-Model-Z1

    A Z80 computer with protected mode support

    126 parts36GPL-3.0
  • 4 layers203.2 × 105.4 mmIBMExtender, the printed circuit board in 3D

    IBMExtender

    schlae/ibm-extender

    IBM 5161 expansion chassis extender and receiver cards

    44 parts33
  • 2 layersSap be, the printed circuit board in 3D

    Sap be

    kyllikki/eda-designs

    EDA designs

    148 parts32MIT
  • 4 layers340 × 210 mmYddraig, the printed circuit board in 3D

    Yddraig

    ddraig68k/hardware

    Schematic and CAD files for my 68K based computer

    224 parts29MIT