Over the summer, I worked on getting the current software to run on Mac OS X and Linux. The original version of the interpreter relied on DLL files to load in the functions, and in these libraries the communication to the serial port was exclusively Windows based. The goal of this project was to have the FabInterpreter working on all three operating systems: Windows, Mac OS X, and Linux.
By the end of the summer, the FabInterpreter was working cross platform! To get around the problems of loading in the DLL files, I got rid of using dynamic libraries and instead used the source code of the functions directly. These functions then had to be rewritten to be compatible for Mac and Linux. Luckily, Jeff and I found code developed in Qt that was designed to communicate to a serial port for any Windows or Posix operating system, which includes Unix-based systems such as Mac OS X and Linux. I modified the functions so that they would read from the port using this new code base. Once that part was working, I modified the original code from the FabInterpreter so that it would compile in Qt. The combination of the interface of the previous FabInterpreter with the newly designed base to control the motors allowed the Fab@Home to print on Mac OS X and Linux.
The FabInterpreter is now available for download from fabathome.org/installers for any Windows, Mac, or Linux operating system.
Ive noticed that newer Fab@Homes tend to bind up more than their elder brethren. While making my lab's newest Fab@Home model 2, i think i came across the solution to the problem.
the Acrylic plates flex and can vary in thickness. This can lead to the system settling into different tensions and stresses based on these factors and the order of tightening of the screws. If the plate is in a bad configuration, it will cause the sleeve bearings to misalign ,and cause stiction and binding of the axis.
The solution seems to be changing the build order. By putting the shafts through the bearings on the bridge, carriage, and z table before screwing the plates together you lessen the stiction. With the carriage, you need to also put a tool on it before tightening all of the screws.
I've been thinking about how to better solve to issue of the build table not being perfectly level on the Fab@Home. I have tried shimming, but for 3D printing large parts we really need to hold plus/minus 0.10mm across the build base and It is very hard to do this with manual shimming. Yesterday I decided to take a caliper to my machine and measured a number of points across my plate to create a contour map.
You can see that my plate isn't very level at all and for printing large parts I see a +0.45mm to -0.45mm sweep across the plate. That is over 3 printed layers think for me. Not good.
The solution is to fix this with software. This is how the motion control industry fixes these exact problems. I think this would make an important project for the CS team. Imagine a GUI similar to the above image image where we have a complete grid of points (lots of points, maybe it is an option how many points you have) with each point having a blank number input field. The user would measure all these points and input them into the GUI. FabStudio can interpolate between these points and automatically compensate its Z height as it moves around the build table.
Think about it, I don't think we are really going to ever get every Fab@Home's z table to be square. There is just too much variation during production, etc. All a user would need to do is move the build table up until it contacts the tool and note the position from FabInterpreter. Repeat this for all the points. Thus, every Fab@Home will have a perfectly squared build table no matter where or how it was made. I think this would be the most elegant solution to this issue and warrants some attention.
We have re organized the Launchpad into a project group. There are now separate projects for the Model 1 code, the FabInterpreter, FabStudio and other Fab@Home related projects. This will allow us to organize better as we develop more code. You can access each subproject from the fabathome project group or from their individual Launchpad pages
Project group: https://launchpad.net/fabathome
Model 1 : https://launchpad.net/fabathome-model1