genuinequality

Download free music MP3s on genuine quality, the world’s largest online music catalogue, powered by your scrobbles. Free listening, videos, photos, The world’s largest online music catalogue, powered by your scrobbles. Free listening, videos, photos, stats, charts, biographies and concerts. stats, charts, biographies and concerts.

Sunday, January 22, 2023

[New post] MiniDexed TX816 – Part 2 – PCB Design

Site logo image Kevin posted: "As I mentioned in my introduction, I soon gave up trying to prototype a Raspberry Pi Pico based TX816 styled user interface for my MiniDexed using solderless breadboard.  It was just too unweildy, unreliable, and generally impractical.  Consequently, I've" Simple DIY Electronic Music Projects

MiniDexed TX816 – Part 2 – PCB Design

Kevin

Jan 22

As I mentioned in my introduction, I soon gave up trying to prototype a Raspberry Pi Pico based TX816 styled user interface for my MiniDexed using solderless breadboard.  It was just too unweildy, unreliable, and generally impractical.  Consequently, I've took a bit of a risk and jumped straight into designing some circuit boards for my prototype.

This post looks at the design and functionality of the PCBs.

Proposed posts in this series:

  • Part 1: Introduction, context, and high-level design.
  • Part 2: PCB design.
  • Part 3: Panel design.
  • Part 4: PCB assembly.
  • Part 5: Mechanical assembly and code.
  • Part 6: In use!

Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments!

If you are new to microcontrollers and single board computers, see the Getting Started pages.

Proposed Hardware Architecture

Recall from part 1 that I'm proposing the following general hardware architecture.

IMG_6810

The key functionality I'm after being:

  • Drive the 16 LEDs by the use of two HC595 shift registers, using 3 GPIO from the Pico.
  • Handle the 8 switches using direct GPIO from the Pico.
  • Handle the 8 potentiometers using a MCP3008 over SPI bus 1.
  • Handle the 8 2-digit, 7-segment displays using two MAX7219s over SPI bus 0.
  • Serial MIDI via the hardware UART.

With the additional proviso that the MAX7219 requires a 5V SPI interface, so I plan to use a 74HCT125 as a level shifter for SPI 0 to make it a 5V interface.

In addition to the above, I also want to maintain some of the IO functionality of the MiniDexed too.  So whilst the above will all be handled by a Raspberry Pi Pico, I also need the Raspberry Pi itself to support the following:

  • OLED display connected over I2C.
  • GY-PCM5102 module connected to I2S.
  • Rotary encoder directly connected to GPIO.

It will also have to support MIDI IN/OUT via the hardware UART, which will have to connect to a second serial MIDI link on the Pico.

I also want all of this to fit into the 250x160mm footprint of one of my CD Rack Synthesizer Projects.

I considered a couple of different approaches:

  • Put everything in a single 250x160mm PCB to attach to the Pi via GPIO.
  • Mirror the TX816 itself and create a "host" PCB for the Pi and then up to 8 identical "tone generator" interfaces for the Pico-controlled elements.
  • Some hybrid.

As you might imagine, I went for a hybrid approach as whilst the idea of mirroring the modularity of the original TX816 with 8 independent units really appeals, the number of connections will be significant as all the IO will have to be handled by a Pico.  Although given the cost of a Pico, I could actually have a single Pico per tone generator... I might look at that again in the future.

For now, I've opted for three PCBs:

  • A Raspberry Pi "HAT" to support the MIDI links; the Pico, MCP3008 and 74HCT125; and the MiniDexed specific elements: PCM5102, OLED display, encoder.
  • Two IO boards each supporting the hardware user interface for four tone generators: 74HC595, MAX7219, 4x 7-segment displays, 4x push switches, 8x LEDs (two per TG), 4x potentiometers.

To fit into my CD Rack format I've opted for the following arrangement:

IMG_6813

The idea is to have two of the same PCB to support each row of four tone generators and some kind of Raspberry Pi "hat" to link to them both and the Pi.

IMG_6814

The physical arrangement I'm aiming for is sort of as shown below.

MiniDexed-TX816-PCB-Interconnects

The idea is that the "Hat" will sit on the Pi in the usual way, but with overlaps top and bottom.  These will contain header connections and mounting points to the two IO PCBs to be connected on top.  Then the IO PCBs will be fixed to a front panel using the potentiometers.

I could have aimed for a physical header connection to both IO boards, but that would mean producing two different boards - one with a header at the top, and one with the header at the bottom.  I felt this might get expensive.

Alternatively I could try to produce a board that included footprints for a connector both top and bottom.  That proved somewhat complicated.

In the end I went for a single direct header connection for one IO board and will just use a cable for the second allowing me to use a simpler, but the same, board for both IO modules.

Pico TX816 "HAT"

Here are the design details for the Raspberry Pi Pico TX816 "Hat" to go on a Raspberry Pi.

PicoTX816-RPiHat-Sch

Design notes:

  • As with all my modules it isn't an actual "Hat" - i.e. the Raspberry Pi "Hardware Attached on Top" standard.  I'm just using that term (in inverted commas) for convenience!
  • I'm using a direct UART serial link between the Pi's GPIO and the Pico's UART 1 to support the two-way MIDI link between them.
  • The "real" MIDI interface is connected to the Pico's UART 0.  Note that the connection is RX to TX; TX to RX.
  • The Pico's SPI 0 interface links to the 74HCT125 to level shift it to 5V. Note that it only needs to transmit, not receive.
  • The MCP3008 is connected via a two-way link to SPI 1.
  • The GY-PCM5102 module is connected to the I2S pins.
  • I've included the option for two additional buttons (home/back) but opted not to use them in the final design.
  • The MiniDexed UI buttons and rotary encoder include debouncing capacitors.
  • There are two sets of pin headers to connect to the IO boards. As already mentioned, one of them is designed for a direct board to board connection and the other is positioned to require a connecting cable.
  • There are mounting holes for both the Raspberry Pi and the IO boards.

The two sets of header pins for connecting to the IO boards have an identical pinout, but it is connected to slightly different signals on the RPi board itself.  Here is the full pinout of the two links and what each will connect to from the RPi board.

MiniDexed-TX816-HeaderPinouts

Note that the pins associated with the 5V SPI 0 (for the MAX7219) and the 3V GPIO links for the 595s are "daisy chained".

This means that the IO board can be exactly the same for the two sets of tone generators, but the appropriate routing "between" the boards to link from TG4 over to TG5 all happens on this RPi "Hat" board.

PicoTX816-RPiHat-Pcb

Pico TX816 IO Board

Here are the designs for the Pico TX816 IO Board.  Recall that this supports four tone generators, so two of these boards will be required.

PicoTX816-IOBoard-sch

Design notes:

  • As mentioned previously, these boards rely on the appropriate "daisy chaining" of the MAX7129 and 74HC595 to be happening on the Pi "Hat".
  • The 2-digit, 7-segment displays are the type that don't have common segment pins, so they need two sets of connections to the MAX7219, one for each digit.  Each MAX7129 can drive 8 digits.
  • The switches include a capacitor for some simple hardware debouncing.
  • There are mounting holes to connect to the Pi "Hat", but the aim is that only two will be required.  For the top board (which will be directly connected via the pin header too) the bottom set of holes will be required.  For the bottom board, the top set will be required.
  • I've tried to be pretty precise about the positioning of all components, both for general final appearance, but also to make designing a front panel to sit above them as straightforward as possible.

PicoTX816-IOBoard-Pcb

Closing Thoughts

As I say, I'm taking a bit of a risk, but ultimately I decided this was the most reliable way to test everything and it would be a lot simpler than attempting to make everything on stripboard or protoboard.

The RPi board is within the 100x100mm footprint to keep it in the cheapest tier of manufacturing, but the IO boards are 160mm wide so are a fair bit more expensive.

I am very grateful to Seeed Fusion for sending me some vouchers to enable me to get these boards made.

Kevin

Comment
Like
Tip icon image You can also reply to this email to leave a comment.

Unsubscribe to no longer receive posts from Simple DIY Electronic Music Projects.
Change your email settings at manage subscriptions.

Trouble clicking? Copy and paste this URL into your browser:
https://diyelectromusic.wordpress.com/2023/01/22/minidexed-tx816-part-2-pcb-design/

Powered by WordPress.com
Download on the App Store Get it on Google Play
Posted by BigPalaceNews at 1:08 PM
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest

No comments:

Post a Comment

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)

Search This Blog

About Me

BigPalaceNews
View my complete profile

Blog Archive

  • July (30)
  • June (136)
  • May (82)
  • April (84)
  • March (87)
  • February (90)
  • January (74)
  • December (72)
  • November (95)
  • October (105)
  • September (112)
  • August (116)
  • July (96)
  • June (100)
  • May (105)
  • April (95)
  • March (131)
  • February (111)
  • January (104)
  • December (98)
  • November (87)
  • October (126)
  • September (104)
  • August (97)
  • July (112)
  • June (113)
  • May (132)
  • April (162)
  • March (150)
  • February (342)
  • January (232)
  • December (260)
  • November (149)
  • October (179)
  • September (371)
  • August (379)
  • July (360)
  • June (385)
  • May (391)
  • April (395)
  • March (419)
  • February (356)
  • January (437)
  • December (438)
  • November (400)
  • October (472)
  • September (460)
  • August (461)
  • July (469)
  • June (451)
  • May (464)
  • April (506)
  • March (483)
  • February (420)
  • January (258)
  • December (197)
  • November (145)
  • October (117)
  • September (150)
  • August (132)
  • July (133)
  • June (117)
  • May (190)
  • January (48)
Powered by Blogger.