Skip to the content
PCBKitNew board
2 layers106 × 95.4 mmHardmpu wt, the printed circuit board in 3D

HardMPU with wavetable module support

Size
106 × 95.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
50
Nets
151
Pads
410
Tracks, vias
833, 78
Pours
4
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
16 Apr 2022
Updated
7 Jul 2023

Overview

Hardmpu wt is an open-source printed circuit board by PickledDog, from the PickledDog/hardmpu-wt repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 106 × 95.4 mm with 50 parts on 151 nets, routed with 833 tracks and 78 vias.

It is built around the ATMEGA1284-PU, 74HCT240D and OPA2134UA, with the 74HCT138D, 74HCT574D and 74HCT74D among its other parts. Its parts include 17 capacitors, 12 ICs, 8 connectors, 5 resistors and 1 crystal. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

9

README

README.md

hardmpu-wt

HardMPU with wavetable module support

Assembled HardMPU

Overview

This is a clone of ab0tj's HardMPU board. I wanted one with a "Wave Blaster" header, so... here it is! If you don't need to install a wavetable module on your HardMPU, rather use ab0tj's original board. In particular, to quote the HardMPU repo, the circuit design is free for non-commercial use. The presence of this implementation does not permit commercial exploitation. If you build this, you may do so only for your own personal use. All software is bound by the terms of the GPL.

Initial setup

The ATmega needs to be programmed before use. This can be done using any AVR programmer (AVRISP, STK500, USBtinyISP, USBasp etc), or a universal programmer (TL866, T48).

Using an AVR programmer

This method programs the ATmega chip in-place (with the board fully assembled), through the J4 ISP connector. The listed programmers work similarly, but AVRDUDE will need to be told what programmer you are using. This example uses the programmer from Pololu.

Program the board loose (not plugged into a computer!) with the programmer configured to power the target at 5V. The required firmware can be found in ab0tj's repository (download all files), and AVRDUDE is used to install the firmware onto the ATmega.

You will need to modify the program.bat to reflect your programmer and environment. For example, to use a Pololu programmer detected at COM4, change (per-line):

text
-c usbasp-clone

to

text
-c stk500v2 -P COM4

For Mac and Linux, change the BATch file to a shell script and adapt it accordingly (use /dev/ttyUSB0 instead of COM4 etc).

Using a TL866

If you're using a TL866 or T48, the firmware is programmed directly to the ATmega chip before installing it - the J4 connector isn't used here, and can be omitted. Download HardMPU.hex from ab0tj's repository and open it with the standard XGpro tool. Go to the Config tab and set the fuses as follows:

ATmega1284 fuse config

With the firmware loaded and the fuses set, go ahead and program the ATmega chip.

User port

The optional User port (J2) allows adventurous builders to add features to the board, either internally or externally. It breaks out 4 GPIO pins, an I²C interface, the "Internal" serial interface (shared with the Wavetable header), and fused power and ground pins. Either regular or right-angled header (as pictured) can be installed in the J2 position; a hole will need to be cut in the bracket for external access. You will need to write your own code to use these interfaces - maybe add a status display using a common I²C LCD? The possibilities are not particularly limited!

Usage

With the card built and the chip programmed, it's ready to be installed in the ISA slot of your vintage PC. Copy hardmpu.com from the firmware folder above to the PC's hard drive - this is the config tool for HardMPU. Use it to select between internal and external MIDI devices, enable a delay for "rev 0" Roland MT-32s, and other miscellaneous options. Settings do not persist across reboots, so this will need to be added to autoexec.bat if the defaults aren't adequate.

External MIDI

To connect it to an external synthesizer, you'll need a "Sound Blaster MIDI" cable - you can find a used one, buy a new one, or build your own. If shopping for a new one, make sure to pick the one with large black DA-15 plugs since it has the electronics in the plug. Do not use the "metal plugs" kind, they are passive and may damage your synthesizer.

Internal MIDI ("Wave Blaster")

Plug the wavetable board onto the 26-pin header, aligning the pin 1 arrows on both boards. Audio is output through both the 3.5mm jack and the AuxOut header on the board. The latter can be fed into your regular sound card using a standard "MPC2" CD Audio cable (assuming it has a spare input). You will need to use the hardmpu.com tool to select the internal MIDI port.

Part selection

The design permits "nicer" parts than necessary - for example, the audio jack footprint accepts both switched and unswitched sockets. Not all pads and holes in the board need to be filled. The OPA2134 can be substituted for other common dual opamps (like the NE5532). Some connectors are optional - J2 and J5 in particular are seldom-used. An ATmega1284 can be used in place of the ATmega1284P if the latter isn't in stock; you will need to update program.bat accordingly.

Parts list

Bill Of Materials and part references are below. The specified parts are just the ones I used, and can be substituted as needed - Mouser links provided for convenience and reference. You will need to drill a single hole in the specified bracket for the audio jack - refer to the PCB file for size and location.

ReferenceValueQtyMouser link
C1-C100.1uF ceramic10KEMET C315C104M5U5TA
C11, C1222pF ceramic2KEMET C315C220K2G5TA
C13, C140.47uF ceramic2TDK FG18X7R1H474K
C15, C161uF ceramic2TDK FG18X7R1E105K
C1722μF electrolytic1Panasonic ECE-A1AKS220
F1500mA PPTC fuse1Bourns MF-R050-0-17
J1D-Sub DA-15 female1Amphenol L77SDA15SA4CH4F
J22x5 right-angle header1Amphenol 10129382-910002BLF
J33.5mm jack socket1CUI SJ1-3553NG
J42x3 box header1Wurth 61200621621
J52x5 box header1Wurth 61201021621
J62x13 header1Amphenol 67997-226HLF
J7CD-Audio socket1Molex 70551-0003
JP12x4 header1Amphenol 10129381-908002BLF
JP22x6 header1Amphenol 10129381-912002BLF
JP32x3 header1Amphenol 10129381-906002BLF
jumpers4Harwin M7583-46
R1-R34k7Ω resistor3Yageo CFR-25JR-52-4K7
R4, R5220Ω resistor2Yageo CFR-25JR-52-220R
U1, U274HCT1382TI CD74HCT138E
U374HCT081TI CD74HCT08E
U4, U574HCT5742TI CD74HCT574E
U674HCT2401TI SN74HCT240N
U7, U874HCT742TI CD74HCT74E
U9ATmega1284P1Atmel ATmega1284P
socket1Amphenol DILB40P-223TLF
U1078L051ST L78L05ACZ
U1179L051ST L79L05ACZ
U12OPA21341TI OPA2134PA
Y120MHz crystal1Arbacon ABL-20.000MHz-B1U
bracketISA DA-15 bracket1Keystone 9200-11

Parts

50
QtyValueFootprintReferences
100.1uFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2, C3, C4, C5, C6, C7, C8, C9, C10
34k7Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3
20.47uFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC13, C14
21uFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC15, C16
2220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4, R5
222pFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC11, C12
274HCT138Package_DIP:DIP-16_W7.62mm_LongPadsU1, U2
274HCT574Package_DIP:DIP-20_W7.62mm_LongPadsU4, U5
274HCT74Package_DIP:DIP-14_W7.62mm_LongPadsU7, U8
2WT_HoleMountingHole:MountingHole_3.2mm_M3H1, H2
120MHzCrystal:Crystal_HC49-4H_VerticalY1
122uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC17
1500mAFuse:Fuse_BelFuse_0ZRE0005FF_L8.3mm_W3.8mmF1
174HCT08Package_DIP:DIP-14_W7.62mm_LongPadsU3
174HCT240Package_DIP:DIP-20_W7.62mm_LongPadsU6
178L05Package_TO_SOT_THT:TO-92U10
179L05Package_TO_SOT_THT:TO-92U11
1ATmega1284PPackage_DIP:DIP-40_W15.24mm_LongPadsU9
1AuxOuthardmpu-wt:Molex_SL_70551-0003_1x04_P2.54mm_HorizontalJ7
1Bracket_HoleMountingHole:MountingHole_3.2mm_M3_PadH3
1IRQConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJP2
1ISPConnector_IDC:IDC-Header_2x03_P2.54mm_VerticalJ4
1JTAGConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalJ5
1LineOuthardmpu-wt:Jack_3.5mm_CUI_SJ1-3555NGJ3
1MIDIConnector_Dsub:DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ1
1OPA2134Package_DIP:DIP-8_W7.62mm_LongPadsU12
1PortConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJP1
1UserConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_HorizontalJ2
1WT PortConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJP3
1WavetableConnector_PinHeader_2.54mm:PinHeader_2x13_P2.54mm_VerticalJ6
1XT Bushardmpu-wt:BUS_XTJ8

Questions

How big is the Hardmpu wt PCB?

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

What parts does the Hardmpu wt use?

50 parts, built around the ATMEGA1284-PU, 74HCT240D, OPA2134UA and 74HCT138D. 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 Hardmpu wt KiCad files?

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

Can I use the Hardmpu wt design in my own project?

Its repository publishes it under the Apache-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 layersLM80C R6, the printed circuit board in 3D

    LM80C R6

    leomil72/LM80C

    A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

    153 parts123GPL-3.0
  • 2 layers368.3 × 215.9 mmTTL 6510 Computer fab, the printed circuit board in 3D

    TTL 6510 Computer fab

    StefansAI/TTL-6510-Computer

    Yet another CPU made from TTL chips

    330 parts1
  • 2 layers214.6 × 123.2 mmFISC2, the printed circuit board in 3D

    FISC2

    DoctorWkt/2FISC

    FISC2: A TTL CPU with Some 16-bit Capabilities

    73 parts10GPL-3.0
  • 4 layers449.2 × 272.9 mmWpc power driver cost, the printed circuit board in 3D

    Wpc power driver cost

    lolz0r/Williams-WPC-Power-Driver-Board-A-12697-3

    Untested, unverifed, AI created design.

    453 parts2
  • 2 layers231.3 × 96.5 mmFISC, the printed circuit board in 3D

    FISC

    DoctorWkt/FISC

    An 8-bit TTL CPU with a Stack Pointer

    59 parts7GPL-3.0
  • 2 layers133.3 × 85.2 mmUart, the printed circuit board in 3D

    Uart

    nojan1/project-wrass

    The purpose of Project Wrass is to develop the Wrass 1.

    54 parts
  • 2 layers200 × 150 mmMSX ONE, the printed circuit board in 3D

    MSX ONE

    jdgabbard/MSX-ONE-Computer

    MSX 1 Computer from discrete parts

    114 parts28GPL-3.0
  • 2 layers100 × 160 mmAFI K5173, the printed circuit board in 3D

    AFI K5173

    Stefan311/A7150

    All about the IBM-XT-Clone A7150

    50 parts3BSD-2-Clause