Saturday, 20 December 2025

Designing an FPGA development board support plate with Freecad for 3D printing

I have been playing with my FPGA development boards again.  I favour the open source programming environment based upon Yosys called Icestudio.  The website is below:

Icestudio

I am a member of their forum and one of the other members wanted a support for their FPGA development board called the Alhambra II:


I already 3D printed one which was very well designed by one of the other members - Fernando Brea.

If anyone wants to buy an Alhambra II to learn FPGA development (I recommend them) they are available here:

Buy the Alhambra 2

The request came up on the forum to make a support for the board without text.  

Fernando very kindly has shared his original design on a github page:

https://github.com/fernandobrea/Alhambra_II_3D_Support

I will state that Fernando's design skills are excellent.  The function of the support without the requirement for screws and cut outs for the buttons is inspired.  I rarely do so well with mechanical design - my primary skill is with electronic design and test and not mechanical design - we cannot be great at everything...but that won't stop me trying😉

There is a version available with text and without text.  The version without text does not have the base extension which is what I believe is what the request is for - the branding on the version with text may not be to everyone's taste.

So to that end I will attempt to create a Freecad design with the base present but without text.  I'm going to share how I achieved this in the hope that others might learn from the experience.  If one is following along with this tutorial they will need to download and install Freecad:

https://wiki.freecad.org/Download

Fernando's Freecad skills far outmatch my own so in an effort to learn something I am going to reverse engineer his design and hopefully reproduce something I can work with.

The Freecad feature tree alone is a testament to the work flow:

This means I can use the information to recreate the design of the base and merge it with the support section providing what is required.  There is in my opinion no right or wrong way to do things as long as the job works and gets completed without taking too much time and money.  Too much of anything is subjective so other people may disagree...

Here is the work flow:

Load up Freecad - I'm using the Windows version but Linux and Mac are also supported.

Start a new design in Freecad in the part design workbench and call it Alhambra II 3D support AL or whatever you would like.

Next create a 'Body' - a container to 'keep' all of the design sections in one place.

Next create a new sketch on the X-Y Plane so that whatever we model is from the bottom up:


Next we need to draw the base plate which goes under the Alhambra 2 printed circuit board:

I looked at the original design and found the dimension of the base portion of the design:

The base is a rectangular shape measuring 82 mm x 75.2 mm.  It has 4 mm radiused corners and a central cut-out feature.

Lets sketch those features:


Starting with the 'Centered Rectangle Tool' - lets create the main part of the base by creating a rectangle measuring 82 mm x 75.2 mm.

The screen should look like this:


 Next we are going to add the corner radii (fillets) - Click on the create fillet tool and select each horizontal and vertical line near the corner.  Do not worry about accuracy:


Do not worry that the sketch is under constrained...we will resolve that later on.  Next we need to make all of the fillets equal.  Hold down the CTRL key and select all four fillets and then click on the 'Constrain Equal' tool or press 'E':


Now lets set a dimension to the fillets by clicking on a fillet and clicking of the smart dimension tool:


Set the fillet radius to 4 mm.  The screen should now look like above and the drawing should be green denoting that the design is fully constrained.  It won't be for long however as we are going to add the central cut out.  This next step isn't strictly necessary but it will save on plastic when we come to 3D print the design.

Click on the 'Centered Rectangle Tool' and create another rectangle within the centre of the sketch.  The rectangle dimensions are: 68.8 mm x 53 mm.


Next we are going to add another fillet to the inner rectangle on the bottom left corner as this was present on the original.  Click on the 'create fillet' tool and click on the inner horizontal and vertical lines where they intersect in the bottom left corner - do not worry about accuracy:


When you have created the fillet it should look like this:


Next we need to dimension the fillet we just created - click on the dimension tool and then click on the fillet and set it to 3.17 mm (the same dimension that Fernando used in his implementation).


In the original design there were two small holes in the top right and bottom left corners - Lets add them.  

Click on the toggle construction geometry tool:


This allows one to add reference features without actually affecting the design.  We are going to use it to place markers where the holes need to be placed.  Fernando did this slightly differently in his implementation - either way is correct.  I like construction geometry.  The holes are 10 mm vertically and horizontally offset from the outer lines of the base.  So if we create centred rectangle which measures 72 mm x 65.2 mm in construction geometry the corner points will be exactly where required in each corner. This was calculated: (82 mm - 10 mm = 72 mm) and (75.2 mm - 10 mm = 65.2 mm)

Lets create the construction rectangle:


We can now add two circles to the top right and bottom left corners of the blue dashed rectangle (construction geometry) which will position the holes where we need them.

Click on the construction geometry tool to turn it off and and then click on the create a circle by centre tool:


Then click on the bottom left vertex of the blue dashed square and create a circle - the size isn't important, repeat the same process for the top right vertex of the blue dashed square:


Next select hold down the CTRL key and select both circles and then click on the 'Constrain Equal' tool or press 'E':


Now lets dimension the circles we have just created to bring the sketch back to fully constrained - click on the dimension tool and select constrain diameter and then click on one of the circles:


Set the diameter to be 1.4 mm which gives the same as that which Fernando used in the original design.

Your sketch should now look something like this:


As the sketch is fully constrained we can exit the sketch although after all of that work I would sincerely suggest we save our work so that we don't lose everything we have created so far:


Lets exit the sketch by clicking on the close button or the leave sketch button and return to the part design work bench:


The screen should now look like this:


We are now going to create the 3D shape by extruding our design to create the base in 3D.  

Click on the 'Pad tool' and set the amount of extrusion to 3 mm:


The shape should now look like this:


If we look at the design from an isometric view point it looks like this:


I actually think this is the best bit about 3D modelling and design - seeing ones idea become reality even virtually is very rewarding.  I believe Nicola Tesla said it best:

"I do not think there is any deeper fulfilment that can capture a human heart than the feeling of an inventor seeing his ideas materialized"

Anyway...lets get on with creating the support...

At this point we can continue to model the original design from scratch or we could copy the files Fernando has shared and merge them with our base plate creating what we require.

I quite like this approach as to re-model all the features from scratch will be quite time consuming and for a beginner difficult to achieve.  I may do this myself as I have moments where I want to practice my Freecad modelling skills and this is an opportunity to do that.  However I know that me documenting those steps will make it very hard to follow for a novice so I have decided to document the short cut version.

If you haven't already please download Fernando's Freecad file for the plate design from here:

https://github.com/fernandobrea/Alhambra_II_3D_Support/blob/master/Alhambra_II_3D_support.fcstd

Open the file and navigate to this body called 'Final Without Text':


Right click and select copy:


Select all and Click 'OK'

We are going to paste this Body into our design and then merge the two things together so create one whole part.

Navigate to our recent design and right click paste next to our body:


The screen should look like this:


We now have the central support section, button and switch cut outs and stand offs which we can join with the base to create the final part.

If we look at the models in isometric we can see that there is a slight issue:


The body we have imported is sitting below the base plate.  Lets resolve that.

Click on the Body icon in the tree so that is is highlighted and then right click and select 'Transform':


Then click on the y transformation arrow and move the base down until the base of our two parts match:


Click Ok once you are happy with the positioning.  

Now...at this point I have to admit my intention was to join these two bodies together using a Boolean Fuse Operation.  That unfortunately did not work.  So I'm going to do something sneaky...

Select everything! Click on the edit menu and choose select all:


Next Click on the file menu and select Export:


Choose to export an STL file and give the file a suitable name:


Click Save.

We have now created and STL file with both bodies and can 3D print the support for our FPGA:

I loaded up the file in Cura however any slicer program will do:


I'm printing mine in PLA but any plastic would probably work as the design is not overly complex.

I will share the results once I have printed it.  Two hours and forty minutes isn't too bad.

There are other ways I could have achieved this result.  I could have exported the central section as a step file and then re-imported it into Freecad and merged the two bodies together.  The proper thing would be to model all of the features like Fernando did so that we have a clean file to begin with.  Fernando's version appears to have issues with the version of Freecad I'm using.

I sincerely doubt any of this will matter as once printed this will work perfectly well.

If people would like the files we created for their own nefarious purposes they are here:

Alhambra 2 Stand - Google Drive Link

That is all for now.... 

Take care always - Langster!




 

No comments :

Post a Comment