04/08/2018 at 02:01 •
I have ran my first test prints with the software application. The application successfully completed several print jobs autonomously.
[Figure 1: Print Queue Test with Software Application]
04/08/2018 at 01:58 •
I have finished the first draft of the software application.
The software application has an intuitive UI that allows users to add/edit/delete print jobs from a queue. The queue can be sent to the 3D printer via USB communication.
The front end is a simple desktop app made with Electron.
[Figure 1: UI Interface Main Menu with Print Jobs]
[Figure 2: UI Interface Settings Menu]
[Figure 3: UI Interface Main Menu]
[Figure 4: Using Software Interface - Sending Print Jobs]
[Figure 5: Using Software Interface - Finished Print Jobs]
The back end is a python module that provides serial communication.
04/08/2018 at 01:39 •
I have wrote a simple python script that runs 3D print jobs.
The code is quite simple. First, it establishes a serial connection to the 3D printer, with the Serial library. The program then sends the G-code file line by line to the 3D printer.
The program has callbacks to check for sending errors.
04/08/2018 at 01:35 •
It turns out 3D printers are configured to accept raw G-code.
After connecting to a 3D printer via serial port, you literally send the exact G-code that you want the printer to follow. No additional parsing is required.
This means I can literally just send the G-code of a file line by line to a 3D printer.
04/08/2018 at 00:31 •
I am now developing a software application that will allow users to make a queue of print jobs for the WorkHorse 3D Printer.
The software application should have an intuitive interface that allows users to add/edit/delete jobs from the print queue.
The software should provide helpful real time metrics on the print jobs, such as print time, material usage, and G-code position.
The project has three main components.
- I need a software module that will parse the G-code file. The module will read the G-code line by line and send the code to the 3D printer.
- I need some means of communicating with the 3D printer. Most likely, I will have a USB connection that allows a computer to communicate via serial port.
- I need an easy to use UI that has a sleek modern design.
04/07/2018 at 21:39 •
I have added the shear to the front of the conveyor to ensure all parts are successfully removed. Additionally, I have cutout unnecessary lines from the G-code.
[Figure 1: WorkHorse 3D Printer Part Ejection]
The WorkHorse 3D Printer has successfully printed over 100 parts at this point
04/07/2018 at 21:35 •
I finally was able to use the machine to autonomously print a series of jobs.
I manually stitched together the G-code of different 3D parts as one file. Before the printer starts a new print, the print head homes itself by hitting all of the end stops. This turns the conveyor motor on and ejects the previous part.
[Figure 1: Autonomously Printing Series of Parts]
I uploaded the collated file to the 3D printer and successfully printed a series of parts.
Two things should be improved with the system.
- A person should be able to print a series of jobs without manually stitching the G-code files together. There should be some software application that allows users to make a queue of files to print. The software application should allow users to still edit/add/delete files from the queue after the queue has been sent to the printer.
- The G-code should be optimized for mass production printing. Right now the G-code forces the printer to cool down after every part is finished and then reheat for the next job. This drastically increases the total print time.
04/07/2018 at 21:21 •
Instead of me pressing a button to turn the motor on, the motor needs to turn on autonomously. I decided to add a limit switch to the end stop of the printer. Whenever the limit switch is pressed, the motor runs for a period of time. The logic is implemented with a separate Arduino Uno. Both the limit switch and motor are connected to the Arduino. The motor is connected to an H-Bridge first.
[Figure 1: Pressing Limit Switch Turns Motor on For Period of Time]
This was a quick solution, but it is also inefficient. I added another limit switch to the top of the 3D printer even though there are already three in that location. It would have been better to multipurpose one of the existing limit switches instead. Additionally, I used a separate Arduino when a microcontroller is already controlling the other motors of the 3D printer. Instead of adding an entirely separate cortex, I should just edit the firmware of the original microcontroller. These lazy decisions over complicate the mechanism and make it difficult to change design later on.
Right now, my goal is to prove that conveyor belts are an effective method for part ejection. Eventually, I plan on scrapping the Delta system altogether and using a Cartesian system instead.
04/07/2018 at 21:09 •
I have attached a motor to the front roller. This task contained two components: Physically attaching the motor to the axle and implementing a controller for the motor.
I upcycled the motor from an old robotic vacuum. The motor is a simple 12 V DC motor. The motor had an integrated optical sensor, but I was too lazy too incorporate this into my mechanism.
[Figure 1: Motor Salvaged from bObsweep Robotics Vacuum]
I designed a simple adapter that connects the motor to the front axle. I connected the motor to the axle and then I designed the mount that connects the motor to the bed. This order ensures that the motor axle is concentric to the roller axle.
[Figure 2: Axle Adapter Attached to Motor-]
[Figure 3: 8-32 Hole for Adapter]
[Figure 4: Motor Connected to Front Roller]
[Figure 5: Motor Secured to Bed with Motor Mount]
I powered the motor with an upcycled 120V computer power supply. Before adding logic to the circuit, I ran a few tests with the motor.
[Figure 6: Testing Printing on Conveyor Belt]
[Figure 7: Testing Ejection System]
It is important to note that the skirt of the print is not ejected by the conveyor in the shown example. After adding the shear, the skirt is also removed consistently.
04/07/2018 at 03:42 •
I recalibrated the 3D printer to match the height of the conveyor belt.
I then printed a few parts on the conveyor belt and manually rotated the belt forwards. The parts stuck well to the belt during the printing period, but they would not peel off while I tried to eject.
I have added a stationary shear to help the parts people off. With the stationary shear, the parts peel off perfectly.
[Figure 1: Stationary Shear Tool]
[Figure 2: 3D Printing Stationary Shear]