Thomasch

19" Rack MBFM with extended frontpanel

17 posts in this topic

Hi folks.

I've build a MIDIbox FM years ago and had a lot of fun with it in the last years, but i've never taken the time to design the beautiful case that this synth deserves.
It might have to do with the fact, that building something really cool would make the sausage casing more expensive than the sausage.

However, in the last days i came to the conclusion, that now it's the time to build something nice and i started with it.
Unfortunately i never made a professional designed PCB by myself, but this time the handwired strip boards i used with my projects in the past wont do the trick.Same goes fpr 3d design and cnc milling of the frontpanel, never done anything like this.
Actually i'm in the process of learning KiCad and FreeCAD and as i quickly realized, there are a lot of other skills and knowledge i have to learn before.

The goal is a 19" case with the extended user interface.
The matrix row/column buttons of the original expansion design will be extended to a dedicated button for every single function.
To make this work without having to change the code, i want to use DPDT tactile switches, which are really a rare breed out there.

Here are the first results of what i've learned until now:

mbfm_front_thomasch_v8_3D.jpg

MBFM_Frontpanel_PCB v.01.jpg

MBFM_Frontpanel_PCB v.01_2.jpg

Share this post


Link to post
Share on other sites

Posted (edited)

I want to use rectangular 2mm x 5mm LEDs, because they look so much cooler than the regular round ones.
But i realized quickly, that traditional CNC milling will always make rounded edges on the cutouts in the panel, with the size of the diameter of the milling tool.
This will make it hard to fit a rectangular LED into the cutout without adding additional gap width to the cutout or sanding the edges of the LED.
I will have to checkout if laser cutting, punching or something else might be the solution for my problem.
Any hints from the more experienced case builders are highly welcomed.

When i dived into the deep of the web for sourcing parts, i ran into those nice 40x2 OLED displays with WS0010, RS0010 and OLED-0010 controller.
Would be nice to use one of these OLEDs on my build.
Are the WS0010/RS0010/OLED-0010 OLEDs compatible with the HD44780 driven LCD Displays that we typicaly use on the MIDIbox FM?

Actually i'm looking for a red 40x2 OLED for a little bit of DX1 touch, but it seems there is no red one.
Has anyone found a red 40x2 OLED somewhere?

Edited by Thomasch

Share this post


Link to post
Share on other sites

You could always get a panel laser cut, that way the corner radius could be 0.15mm or less. That's fairly much square. If you push the LEDs through, the corners might also be "shaved" off in the process, no issue!

We stock a quality white OLED. Simplest would be to use  this with a red acrylic "gel" or even have the whole window milled from transparent red acrylic.

Are you using MIOS8 or MIOS32? The OLED driver works for MIOS32 but I don't know about MIOS8.

 

 

 

Share this post


Link to post
Share on other sites
3 hours ago, Thomasch said:

But i realized quickly, that traditional CNC milling will always make rounded edges on the cutouts in the panel, with the size of the diameter of the milling tool.

The "round" with 1mm milling tools represent 15/100 "error" at tangent

also, 5x3mm milling for 5x3mm LED will probably not fit, you need anyway little room for "soft" mounting

5.3x3.3 mm cutout with 1mm tool (0.5mm round at corner) is fine and you'll probably never notice 15/100mm room around the led.

Then there is the option to mill "inside" the corner, don't know the name of this technic, but it work too, close to unnoticeable by eyes with 1mm tool

Best

Zam

 

Share this post


Link to post
Share on other sites
On 13.7.2019 at 6:47 PM, latigid on said:

You could always get a panel laser cut, that way the corner radius could be 0.15mm or less. That's fairly much square. If you push the LEDs through, the corners might also be "shaved" off in the process, no issue!

Might not be the best solution to push the LEDs into the board with force, because they are mounted on a pcb and the resulting force will bend their legs.
 

On 13.7.2019 at 6:47 PM, latigid on said:

We stock a quality white OLED. Simplest would be to use  this with a red acrylic "gel" or even have the whole window milled from transparent red acrylic.

Good hint, to use a white Oled with a transparent red acrylic window!

On 13.7.2019 at 6:47 PM, latigid on said:

Are you using MIOS8 or MIOS32? The OLED driver works for MIOS32 but I don't know about MIOS8.

It's a MIOS8 core on a PIC18F4585.
Maybe @TK. can tell us if it might work?
@latigid on When you tinkered around with these OLEDs, was it possible to use them just as a pure hardware replacement instead of a HD44780 LCD display or did you had to change something in the code to make them work on your core32?

On 13.7.2019 at 7:16 PM, Zam said:

The "round" with 1mm milling tools represent 15/100 "error" at tangent

also, 5x3mm milling for 5x3mm LED will probably not fit, you need anyway little room for "soft" mounting

5.3x3.3 mm cutout with 1mm tool (0.5mm round at corner) is fine and you'll probably never notice 15/100mm room around the led.

Then there is the option to mill "inside" the corner, don't know the name of this technic, but it work too, close to unnoticeable by eyes with 1mm tool

Best

Zam

My english is not the best, , so what means 15/100 error at tangent?
I understand it in a way, that there will be a tolerance of +- 15%?
It would be cool to fit the LEDs without any gap into the frontplate, because gaps are always pulling dust like magnets (and they are hard to clean afterwards).
Because of tolerances a little bit of gap between hole and LED might be necessary. Just enough, that it don't needs any force to slide the LEDs in.
I might have to add a bevel to the cutouts from the backside, to give the LEDs a little lead sliding into the cutouts.
I'm sure this will prevent a lot of frustration while installing the pcb to the frontplate eventually.

Share this post


Link to post
Share on other sites

The DPDT momentary switches i will use, are much taller than most tactile switches and i realised, that there might be a problem with the height, because the rotary encoders are too short to have switches and encoders on one board.
It seems i have to make 2 small extra pcbs for the encoders and put them on shorter spacers, to get them closer to the prontplate.
This sucks a little bit, because it will need more space for additional screws and some additional pinheaders.

5d2c4f37b3494_Encodershaftstoshort.thumb

5d2c5387ccb1a_MBFM_Frontpanel_PCBv.01.th

Share this post


Link to post
Share on other sites
29 minutes ago, Thomasch said:

My english is not the best, , so what means 15/100 error at tangent?

sorry, I mean 15/100 millimeter, If you draw a (quarter) circle of 1mm diameter inside a 90° angle

44 minutes ago, Thomasch said:

Because of tolerances a little bit of gap between hole and LED might be necessary. Just enough, that it don't needs any force to slide the LEDs in.

That's what I say, add 3/10 mm and you'll be fine for a soft mount, dust won't come in that much and aestheticly it's not noticeable

Best

Zam

Share this post


Link to post
Share on other sites
1 hour ago, Thomasch said:

Might not be the best solution to push the LEDs into the board with force, because they are mounted on a pcb and the resulting force will bend their legs.

A typical construction technique is to manually push LEDs into the panel and then solder. You'll probably have to do this anyway considering the height of other parts.

 

1 hour ago, Thomasch said:

 When you tinkered around with these OLEDs, was it possible to use them just as a pure hardware replacement instead of a HD44780 LCD display or did you had to change something in the code to make them work on your core32?

There's a ready-made driver for MIOS32.

Share this post


Link to post
Share on other sites

Posted (edited)

1 hour ago, Thomasch said:

This sucks a little bit, because it will need more space for additional screws and some additional pinheaders.

When you design a 'control surface' PCB, first thing to think about is the different height of the components, pots, encoders, button+caps and screen. By changing the part (e.g. EC12) and/or reference within the part(e.g. EC12E1220407) you can try to make them match

This must be considered first with stand-off length, panel thickness etc... now you know. ;)

 

1 hour ago, Thomasch said:

It's a MIOS8 core on a PIC18F4585.
Maybe @TK. can tell us if it might work?

But he didn't reply after I don't know if it was working for him.

Best regards

Edited by Antichambre

Share this post


Link to post
Share on other sites

Posted (edited)

I have a question regarding Eeschema (i use KiCad).
I wired all Vs connections to the bus, is that ok or should i use ground symbols instead of connecting Vc to the bus?
I ask, because i have no clue, if Kicad might build it's ratnest differently, when it has to wire a ground line, or maybe theres any other reason i didn't tink of, not to wire Vc to a bus.

MBFM_Frontpanel_PCB_ v.03.pdf
MBFM_Frontpanel_PCB v.03.sch

Edited by Thomasch

Share this post


Link to post
Share on other sites
5 hours ago, Thomasch said:

I have a question regarding Eeschema (i use KiCad).
I wired all Vc connections to the bus, is that ok or should i use ground symbols instead of connecting Vc to the bus?
I ask, because i have no clue, if Kicad might build it's ratnest differently, when it has to wire a ground line, or maybe theres any other reason i didn't tink of, not to wire Vc to a bus.

MBFM_Frontpanel_PCB_ v.03.pdf
MBFM_Frontpanel_PCB v.03.sch

Seems to be matricing... Could you explain how you connected the leds and switches, which example did you take?(There is a lot here, try BLM as keyword search).
I don't understand why some of the switches are connected to 3 busses and Vc which seems to be... a ground? it can't be with a matrix connection. :/
There's maybe a misunderstanding, you don't need to connect both 'normally open' terminals, check the datasheet cause they are often internally connected and used for PCB routing ease, anyway you need only one terminal.
Seems to miss some diodes for the switches too, there's no pull-up resistors but they are maybe close to the ICs and on an other diagram.
 

@latigid on is better than me for BLM stuff it might be more clear for him ;)  but @Thomasch better if you explain a few first...

Best

Share this post


Link to post
Share on other sites

Posted (edited)

The Pin Headers will connect to a DINX4 and a DOUTX4.
No need to add even more resistors.
Its basicly the standard wiring for the extended Frontpanel.

http://www.ucapps.de/midibox_fm/mbfm_din_default.pdf
http://www.ucapps.de/midibox_fm/mbfm_din_default.pdf

Only difference is that i used 24 dpdt switches for the 4x6 matrix.
To be true, its not really a button matrix. In the original design every row has a switch and every column too.
My dpdt switches will work as if you press 2 buttons, (a row and a cloumn button) on the original design.
So if i press any of the button in the first column, one of the double poles on the switch will always connect the MCol1 labeled pin to Vs. (DINX4)
The other pole of the switch will connect MRow (DINX4) and MRow1, MRow2, MRow3 or MRow4 (DOUTX4), depending on wich of the 4 buttons in the row you have clicked on.

I use the dpdt switches to avoid coding for more shift register inputs, because i have no clue of coding.
Otherwise i would have also changed the "Instr./OP Select" button and the 4 "Instr/OP1-4" buttons to 8 dedicated "Instr1-4" and "OP1-4" buttons.

Edited by Thomasch

Share this post


Link to post
Share on other sites

Posted (edited)

@Thomasch it's clear now... Rows are matriced, Columns are not.
 

17 hours ago, Thomasch said:

I wired all Vc connections to the bus, is that ok or should i use ground symbols instead of connecting Vc to the bus?

I suppose you talk about Vs instead of Vc, and yes it's a ground, you can connect Vs bus to ground or Swithes pin directly to ground, it doesn't matter.

You can maybe put all the ICs(DIN/DOUT) on this PCB, and connect your CS directly to the Core. It will be cheaper, it will take less space and limit the number of interconnections.

Edited by Antichambre

Share this post


Link to post
Share on other sites
10 minutes ago, Antichambre said:

@Thomasch it's clear now... Rows are matriced, Columns are not.
 

I suppose you talk about Vs instead of Vc, and yes it's a ground, you can connect Vs bus to ground or Swithes pin directly to ground, it doesn't matter.

You can maybe put all the ICs(DIN/DOUT) on this PCB, and connect your CS directly to the Core. It will be cheaper, it will take less space and limit the number of interconnections.

Ups yes, that was a typo, i meant Vs, i will fix it in the original post.
It's not a bad idea, to include the DIN/DOUT directly to the frontpanel pcb. But on the other hand, i have DINX4/DOUTX4 boards still in use with the actual setup of my MIDIbox FM, so no need to build it again.

 

Share this post


Link to post
Share on other sites
Just now, Thomasch said:

Ups yes, that was a typo, i meant Vs, i will fix it in the original post.
It's not a bad idea, to include the DIN/DOUT directly to the frontpanel pcb. But on the other hand, i have DINX4/DOUTX4 boards still in use with the actual setup of my MIDIbox FM, so no need to build it again.

 

Better too if you're happy with it and want to share a few. Cheaper for everybody, and just the price of some cheap components more for you. SO package on bottom side sounds good for your CS.

Share this post


Link to post
Share on other sites

Posted (edited)

Yeah, in case i would do that, i would only use SO-16 packages, the DIL-16 used on the DINX4/DOUTX4 are way to big.
Using smd resistors would be mandatory too, to be able to fit that to the board.

Do you think theres someone who want to build one of these boards too?
If anybody want to join in, just write a message here.

Unfortunately my programming skills are near zero,but in case someone could help out and adapt the code for more inputs, i could change the whole approach with spst switches instead of the dpdt ones and some additional changes to the button layout.
I would just have to chain some more shift registers.
Anyway, i still do not know if that is even possible, because from what i remember reading here, the actual code is using almost all memory with some lonely free bits left.

Edited by Thomasch

Share this post


Link to post
Share on other sites

I tried to create something with the SRs directly on the board - there is really little space between all the switches. :D
With a classic Diode Button matrix it would make much more sense and i could choose between much more available switches/button caps.
Not to say, that spst switches might be cheaper and easier to wire.
It would also make much sense, to change the wiring of switches and encoders to different SR and SR pins, to bring the SRs closer to where they needed and to avoid a spidernet going from everywhere to everywhere across the board.

I made a new schematic utilizing a 4x6 diode button matrix, that might be more efficient than the standard wiring.

MBFM_Frontpanel_PCB v.05.pdf

It uses 4x 74HC165 SRs (DIN) and 3x 74HC595 SRs (DOUT). I will use SO-16 Packages.
For the resistors i'm not sure which package might fit best, maybe a resistor array might be the best choice, for the ease of soldering.
Atm i'm just sourcing which package type for the array might take the least space, while still being solderable by hand. Any advices?

In a next step i would like to change the behavior of the "Ins/Op Select" and the 4 "Ins/OP [1...4]" buttons and would like to replace them with a 2x4 matrix for 8 dedicated "Instr [1...4]" and "OP [1...4]" buttons.

But all this is worth nothing and becomes a dead end eventually, as long as i'm not able to modify the code.
I downloaded Notepad++ and the toolchain explained in the wiki, but when i dig into the files i do understand nearly nothing, i'm a complete programming rookie...
I didn't even understand how to compile - but i'll try hard.

Is someone willing to help me with the configuration and compiling of the code?
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now