The objective of this project was to create the firmware necessary for driving an existing SLM metal 3D printer and a GUI for users to be able to operate it.
Sponsored By: Deuxpan Art Company
Team Members
James Gursky | Stephen D’amico | Isaiah Harshbarger | Al-Zahir Rahemtulla | | | | | | | |
Project Poster
Click on any image to enlarge.
Project Summary
Overview
Overview
Our sponsor, Nick, built a SLS-style 3D printer from scratch using his own design. His design uses a rotating, cylindrical print chamber and cleverly improves upon some of the design shortcomings of mainstream SLS printers. However, he was only able to create the hardware for the printer and needed the software that would drive the various parts of the printer in unison to actually conduct a print. He tasked us with creating the software “brains” of the printer, and we attempted to do so using a Chinese software development kit which enabled us to control the different parts of the printer through software calls. The SDK and laser controller software came with a sample 3D printer program that we decided we’d use as our starting point. Unfortunately, this code almost totally lacked documentation and came riddled with bugs. Reading its source code to try and understand the program was less than straightforward, especially because we had to Google translate the comments from Chinese to English in order to read them. Additionally, this semester itself obviously came with some hurdles and physical limitations that prevented us from ever meeting as a team with the printer. As a result, trying to understand the physical machine to the extent necessary to be able to write software for it proved to be quite complicated over video call.
Objectives
We needed to find a way to control the laser, print bed, and powder delivery system in unison via software. The most complex job of the software is the laser encoder, the system that tracks the 3D model being printer as the print bed moves so that the laser can be accurately directed to where it should be sintering. Finally, the user of the printer must obviously be able to control it, so another one of our tasks was creating a GUI that allows users to operate the machine.
Approach
⦁ Met with our sponsor via Zoom to get a better understanding of the printer and how it worked
⦁ Researched existing SLS style 3D printers and the software that controlled them
⦁ Learned how to use an SDK from the company JCZ which provides for axis and laser control
⦁ Tried to understand the workings of the JCZ sample program and modify it as necessary
⦁ Figure out how to link DLLs from the SDK into our project written in C#
⦁ Translate given template user interface from Chinese to English
⦁ Write program to translate cartesian coordinates to polar coordinates and test this polar conversion function using a gcode file from a sample CAD model
⦁ Met with sponsor via Zoom to test various functions from the SDK to ensure it worked correctly
⦁ Test the SDK’s ability to control each of the four axis motors
⦁ Calibrate laser to center of the working print area
⦁ Test the printer by uploading a CAD file to the user interface, which is contained in our project written in C#
Outcomes
⦁ The printer is not yet able to conduct prints
⦁ The SDK purchased by Deuxpan works properly but given the constraint of COVID, we lacked the ability to test the code on the actual printer for ourselves
⦁ The sponsor now has the ability to set the parameters for and control each of the four axis motors
⦁ The next tasks would be to make each of the axes be able to run infinitely so that their parameters can be finetuned for the spreading of layers of powder
⦁ After layers of powder can be correctly spread, the next task would be to write the laser encoder that tracks the 3D model of the part being printed as the print bed moves with respect to the laser
⦁ Finally, the last main task would be to pass cartesian coordinates to the activated laser which would result in a 3D metal print
Objectives
-We needed to find a way to control the laser, print bed, and powder delivery system in unison via software.
-The most complex job of the software is the laser encoder, the system that tracks the 3D model being printer as the print bed moves so that the laser can be accurately directed to where it should be sintering.
-Finally, the user of the printer must obviously be able to control it, so another one of our tasks was creating a GUI that allows users to operate the machine.
Approach
-Met with our sponsor via Zoom to get a better understanding of the printer and how it worked
-Researched existing SLS style 3D printers and the software that controlled them
-Learned how to use an SDK from the company JCZ which provides for axis and laser control
-Tried to understand the workings of the JCZ sample program and modify it as necessary
-Figure out how to link DLLs from the SDK into our project written in C#
-Translate given template user interface from Chinese to English
-Write program to translate cartesian coordinates to polar coordinates and test this polar conversion function using a gcode file from a sample CAD model
-Met with sponsor via Zoom to test various functions from the SDK to ensure it worked correctly
-Test the SDK’s ability to control each of the four axis motors
-Calibrate laser to center of the working print area
-Test the printer by uploading a CAD file to the user interface, which is contained in our project written in C#
Outcomes
-The printer is not yet able to conduct prints
-The SDK purchased by Deuxpan works properly but given the constraint of COVID, we lacked the ability to test the code on the actual printer for ourselves
-The sponsor now has the ability to set the parameters for and control each of the four axis motors
-The next tasks would be to make each of the axes be able to run infinitely so that their parameters can be finetuned for the spreading of layers of powder
-After layers of powder can be correctly spread, the next task would be to write the laser encoder that tracks the 3D model of the part being printed as the print bed moves with respect to the laser
-Finally, the last main task would be to pass cartesian coordinates to the activated laser which would result in a 3D metal print