Skip to content

Week 12, Machine Building

Assignments

Group assignment

  • Design a machine that includes mechanism + actuation + automation + application
  • Build the mechanical parts and operate it manually
  • Actuate and automate your machine
  • Document the group project

Individual assignment

  • Document your individual contribution

Checklist

  • Documented the machine building process to the group page
  • Documented your individual contribution to this project
  • Linked to the group page from your individual pages, as well as from the group page to the individual page
  • Show how your team planned, allocated tasks, and executed the project (Group Page)
  • Described problems and how they were solved
  • Listed possible improvements for this project
  • Included your design files
  • Create and present a 1 minute video

Individual work

Motor Control Board

This is my contribution to our group work for machine week. As noted on our group machine page, we are working to replicate the Blot plotter. To being, my contribution is to design an PCB to control the machine. As our lab just received an XTool F1 Ultra, I set out to make a PCB using the fiber laser of the F1 Ultra to fabricate the PCB. Given the accuracy of the laser and camera alignment, I planned to make a two sided PCB.

As we are using the Blot plotter as the starting point for our work, the original design files can be seen on their project page.

Blot home page, the inspiration for our work

The schematic and layout are available from the Blot source page. These files were downloaded to look at the specific designs.

Schematic and board design files for Blot plotter machine control

The format for these files is EasyEDA, which is a specific tool for PCB design. This is not routinely used in our lab, so I made an account on easyeda.com. Uploading the schematic results in the following image. All the components and paths needed for the board can be noted.

Motor control board schematic

The board can also be viewed on easyeda.com.

Motor control board PCB design

Based on the Blot design, I made a schematic for a motor control board. Rather than a separate board to provide the necessary 12V to run the motors, the schematics includes Nicolas Decosters QC-Hack as part of the schematic.

Designed schematic

The schematic above incorporates an A4988 motor controller, which is not part of the Fab schematic library. Therefore this needs to be added to the library, including a footprint. At SnapMagic, I could obtain a schematic and footprint for this controller.

Schematic and footprint for A4988

The imported footprint for the A4988 is just a series of holes. Since we will attach pins to the A4988, this footprint needs to have soldering extensions for the sockets we will be using.

Partially modified footprint

Based on the schematic, the board was routed. There are two traces on the back, noted in blue

Routed PCB

Before fabricating, I decided to add a switch

Footprint for the switch

The board was updated adding the switch, as well as mounting holes. In this iteration, mounting holes were added.

Updated PCB

The export of Gerber files was as before. Since there are holes on this PCB design, drill files also need to be exported.

Drill files export

The PCB was cutout and holes drilled with the Roland MX-20. The mill will be much better for these cutting steps, while the laser will be good at etching. To prepare for the laser, it needs to have the traces in PCB format. To keep things aligned, the Gerber files were converted to PNG with Gerber2PNG. The XTool F1 requires SVG files to make the circuit. I started with the PNG for the traces, and they converted that to paths in Inkscape (with Trace Bitmap). That SVG could be used for the laser. The SVG was imported into the XTool software, and then using the camera, it was aligned with the circuit board cutout. The hole are particularly useful for alignment.

For setttings, the fiber laser needs to be used, set at 30Hz, and at 100% power. I also used the highest resolution, which is 300 dpi. To start, I used 10 passes. I had to add 4 additional passes to complete the board. When the fiber laser is removing copper, a green light is evident. When the green is no longer seen, that indiccates completion.

The XTool F1 Ultra is new to our lab, and more specific workflows are likely to be developed. At the moment, we are still exploring parameters.

XTool F1 Ultra in fabrication process

After completion, the 2nd side was fabication. The laser process results in a very clean board.

Front of lasered PCB

Back of lasered PCB

The components for the QC power portion of the board were soldered first. That was tested for voltage output, and 5V was observed rather than the expected 5V. Somehow the board seems to be getting voltage directly from USB. For this reason, the components for the motor control were not added to the board.

Testing voltage

KiCad files for this design. Due to the problems with voltage, there may be undetected issues with this design.

QC Power Board

Due to these voltage problems, I decided to try and make a version of the QC power board alone. This could be used with pins on a separate board with the motor controllers.

I made a schematic just with the power components.

Schematic for QC power board

And then used the PCB editor to make the traces

PCB for power board

This board also read 5V when connected to USB, and also may have a design issue.

QC Power Board

At this point, Evert had a working motor control board. While I need a power board for my project, I put further attempts at making a board on hold.

KiCad files for the QC power board.

Programming the plotter

From the efforts of my teammates, we had a working plotter. While we could use the images on the Blot website, we wanted to make a specific image. We wanted an image of Neil drawn with the plotter. The plotter web interface works with JavaScript. While there are many online options to make plotter ready files from images, they all output SVG. SVG can not be used as a direct input with the plotter in the current working form. We did try to make a program to convert SVG to JavaScript for the plotter, but didn’t have good luck.

With the help of ChatGPT I determined a method to convert images to plotter versions. To accomplish this, I did the following:

  • Provide ChatGPT with an image, and use a prompt that says “Convert the image for use on a plotter, drawing it with multiple paths. Make it fit to 100x100 and maintain the aspect ratio. Output as JavaScript paths.”

While this did output JavaScript, the paths from ChatGPT looked like:

const paths = [
[{x: 59.26, y: 98.52}, {x: 58.52, y: 99.26}, ...],
[{x: 38.52, y: 97.78}, {x: 38.52, y: 99.26}, ...],
...
]

While the appropriate format in the program is:

const paths = [
[[59.26, 98.52], [58.52, 99.26], ...],
[[38.52, 97.78], [38.52, 99.26], ...],
...
]
  • To remove the ‘x:’ and ‘y:’, as well as convert the brackets, I used my IDE to find/replace these characters.
  • I could then used these modified paths in a program for the plotter. The program loops over the paths, and then pushes each path onto the lines to be drawn.

ChatGPT process

The program to draw our hero shot

This results in plotter image of Neil.

Our hero shot

Here is a time lapse video of the plotter in action with this program.

Time lapse of the plotter in action

Here is the Blot program to draw the image of Neil.