This week we learned about project management using Git and GitLab, and then talked about two kinds of computer-controlled cutting: vinyl cutting and laser cutting. Both of these processes are purely 2D, and the various machines are controlled using print drivers in CoralDRAW. Each machine has a dedicated PC running this program; our job is to provide it with a suitable file, usually a *.dxf or *.pdf. After import, we use CoralDRAW to set various process parameters: power, speed, and pulses-per-inch for the laser cutter, speed and force for the vinyl cutter. We had three assignments: (1) cut something on the vinyl cutter; (2) characterize the laser cutter as a group; and (3) laser cut a press-fit cardboard construction kit.
Big thanks to John and Tom for taking the time to train us on these machines. Y'all have an exceptional surplus of patience, and it is appreciated.
I have used Git and GitLab (/Hub) for some time to manage files, so I didn't intend to include much in this section. Then I screwed up.
During the recitation, Erik gave a great overview of using Git and GitLab to pull, push, commit, merge, and generally manage projects. He also dug deep into basic HTML-based web design, showing a few class examples and talking about design strategies and frameworks. At some point, one of the in-class commits gave me an issue pulling fresh copies of the repo onto my brand-new Windows 10 laptop. A student had accidentally named a folder with a partial HTML tag, and Git's Windows command line interface couldn't figure out what was going on.
I asked Erik for some help, and he quickly pulled down a fresh repo and didn't have any issues. Clearly, it was time to put Ubuntu on my new laptop. I previously used Linux Mint as my sole operating system on my old X220, but had kept Windows on the new machine so I could use Fusion 360. Time to partition my hard drive and install Ubuntu and ..
.. oh no.
Yup, I screwed up the partioning. I'm not sure exactly what happened; my guess is it has something to do with UEFI booting, Grub, and Windows 10 security stuff. In any case, I thoroughly nuked my Windows 10 installation and now could only boot to Ubuntu.
MIT's IT department helpfully provides Windows 10 *.iso files, so I downloaded one (5ish gigabytes!). Then I spent an inordinate amount of time burning the *.iso to a spare USB thumb drive. I eventually settled on using a utility called WoeUSB, after reformatting the USB stick to use an NTFS file system. It took a few tries to get right, each of which lasted quite some time. Of course, the silver lining is that nearly everything I've done so far for HTM(A)A, and CBA generally, has been backed up via GitLab.
vinyl cutting
The Roland GS24 is an unexpected delight. Loading material is simple, and the machine automatically checks the dimensions of the piece and reports these measurements back to CoralDRAW. I decided to make a 3-layer vinyl sticker for my new laptop, using an old circuit board layout I had lying around and KiCad's handy *.svg export function. The finished product looks pretty great rendered in native PcbNew colors (red is top Cu, green is bottom Cu, yellow is outline and vias):
Getting the file to this point took a decent bit of tedious work. The *.svg files produced by KiCad saves traces as lines of various weights, each of which is a separate segment and grouped by component. This prints and renders well enough, and makes sense data-structure-wise as it allows users to quickly change trace widths, but doesn't map to a vinyl cutter; I need to cut _around_ each trace. Here's what it would look like as-is, with two traces "fixed" to lines:
I can revert back to the previous width and use the "Stroke to Path" command (Ctrl+Alt+C) to make everything an outline, but the segments still aren't connected:
With all the segments and the pad still selected, I can use the "Union" command (Ctrl++) to combine the outlines as shown here:
I added a few registration circles per Tom's suggestion, saved each layer from Inkscape as a *.pdf, imported them into CoralDRAW, set the line weights to 'hairline', and loaded material into the vinyl cutter. At one point, I didn't push the material in far enough and it got caught in the mechanism:
The cutter head's LED turned red and the machine displayed an error, which I cleared by shutting the machine down, manually removing the offending vinyl, and restarting the Roland. After that, everything cut pretty well:
[command: ffmpeg -i VID_20190913_123558.mp4 -vf scale=800:-1 -ss 00:00:00.0 -t 00:00:04.0 -c:a copy out.mp4]
Getting the second and third layers aligned was a bit dicey but ended up working well enough:
A few other learnings from the process:
You really need to cut the vinyl larger than expected. For the green (first) layer, I ended up scrapping a few chunks because I tried to minimize wasted material. Add 10 cm per side!
I scrapped a few red pieces because the cutter wasn't going all the way through, even when I bumped the pressure up (normally at 80 gf, up to 150 gf). Tom showed me how to change the blade; when I took the old one out it was pretty gunked up but cleaned well enough. After that I was able to cut at a lower pressure again.
I initially scaled this a bit smaller but the lines were just too thin to easily cut. Seems like the Roland isn't a great fit if your features are smaller than a millimeter or so. Even then, I don't expect this sticker to last in its current state; the finer features will likely scrape off in my bag.
laser cutter characterization
Aubrey, D., Patricia, Jiri, and I gathered one morning in the laser cutter lab to characterize the GCC Sprit GLS, a 30-watt CO2 laser cutter with a 960 x 610 mm work area. Our goals were to familiarize ourselves with the laser cutter workflow, and to quantify the effects settings like power, PPI (pulses-per-inch), and speed have on the machine's kerf. We started by creating a coupon that compared a single piece to four cut pieces in order to visualize kerf stack-up:
The difference between five kerfs (right) and two kerfs (left) was apparent, but we had trouble getting reliable measurements as the cardboard pieces were difficult to align. The small coupons were also a bit fussy; they were just small enough to fall through the grid on the laser cutter bed. After this point, we started cutting out standard 20 x 20 mm squares, varying process parameters one at a time and recording dimensions and cut quality:
As we updated our design parameters, we kept the same CoralDRAW screen open and left old cuts on the page to prevent overlaps. Using the Print Selection command (after selecting the desired parts to cut) meant we only laser cut newly designed parts. First we tried a wide range of cut powers, keeping speed and PPI constant:
coupon ID
cut speed
cut power
pulses per inch
cut through?
A
2.5
100
200
yes
B
2.5
50
200
no
C
2.5
25
200
no
D
2.5
12
200
no
E
2.5
6
200
no
Next, we explored the upper range of cut power:
coupon ID
cut speed
cut power
pulses per inch
cut through?
F
2.5
100
200
yes
G
2.5
90
200
yes
H
2.5
80
200
partial
I
2.5
70
200
partial
J
2.5
60
200
no
Next, we tried holding power and PPI constant, varying speed; we hypothesized that speed and power would exhibit similar (but inverted) relationships, which proved true:
coupon ID
cut speed
cut power
pulses per inch
cut through?
K
2.5
100
200
yes
L
2.8
100
200
yes
M
3.2
100
200
partial
N
3.6
100
200
partial
O
4.0
100
200
no
Next, we tried varying PPI while holding the other parameters constant, which didn't have much effect (all the coupons came out roughly the same size, too):
coupon ID
cut speed
cut power
pulses per inch
cut through?
P
2.5
100
100
yes
Q
2.5
100
150
yes
R
2.5
100
200
yes
S
2.5
100
250
yes
T
2.5
100
300
yes
As expected, it seems that an appropriate cardboard setting for the GCC is the suggested 2.5 speed, 100 power, 200 PPI that we saw in training. Either way, confirming this was a great exercise.
Next, we used a pair of calipers to measure the cardboard's thickness and read 4.40 mm. We measured a quantity of 20 x 20 mm nominal coupons cut at the recommended settings, and observed an average kerf of 0.18 mm. In order to design a good cardboard press-fit joint, Jiri used OpenSCAD to design a test 'comb' that varied the nominal cut on either side of 4.40 mm:
After a few more iterations to drop the lower bound a few tenths of a millimeter, we settled on 3.9 mm as an ideal chamfered press-fit slot. We cut a few test coupons to verify and found the fit to be snug and secure:
press-fit cardboard construction kit
I made a dodecahelmet:
But first, I explored a number of compliant press-fit joint designs. I enjoy polyhedra, but I didn't like the idea of having dedicated angle connectors for each type; rather, I wanted the kit to be as universal as possible. That means joint compliance. I started by adding lattice hinges and pivots to a test joint in a constrained and parameterized FreeCAD drawing:
I used the Epilog laser cutter (speed 30, power 80, frequency 300) to cut two of these parts along with a simple 180 degree connector for testing:
I bent the joint as far as I dared without breaking it and traced lines in my notebook to quantify its flexibility:
Okay, I bent it once to a reasonable point (144.5 degrees, or 25.5 degrees of flexure) and then bent it quite a bit further (127.9 degrees, or 52.1 degrees of flexure). Alas, it was not to be; the lattice hinge was long enough that it would have forced the side length to 200+ mm, which would have wasted a ton of cardboard. While I mulled over this issue, I realized that I may not need quite that much compliance. I jotted down the edge angles of a few polyhedra, as taken from their respective Wikipedia pages:
polyhedron name
solid type
edge angle (degrees)
triangles
squares
pentagons
tetrahedron
Platonic
70.5
4
none
none
square
Platonic
90
none
6
none
octahedron
Platonic
109.5
8
none
none
dodecahedron
Platonic
116.6
none
none
12
icosahedron
Platonic
138.2
20
none
none
cuboctahedron
Archimedean
125.3
6
6
none
icosidodecahedron
Archimedean
142.6
20
none
12
I ended up designing a connector with a 125 degree dihedral angle; this isn't right in the middle, but I didn't initially plan to make a tetrahedron or a square. At the same time, I switched to Fusion 360 for modeling. I don't like non-free software, and I really don't like programs that force you to use their cloud, but Fusion 360 does many other things really well; in this case, it allowed me to (relatively) easily design one half of a symmetrical joint, mirror it, add it to the three key shapes, merge the solids, and extract outline drawings for fabrication. FreeCAD can do this too, it's just a lot easier in Fusion 360. Here is the finished model, showing the V-shaped clearance slots that give each joint +/- ~15 degrees of flexure:
... and here is a quick clip of the Epilog cutting out one of many triangles:
[command: ffmpeg -i VID_20190916_194201.mp4 -vf scale=800:-1 -c:a copy out.mp4]
After making the aforementioned dodecahelmet, I pulled off a few pentagons to make a dodecabasket to carry the rest of the parts upstairs:
And finally, I assembled and stacked up the rest polyhedra to make a beautiful smelly tower:
I ran out of time to cut squares, so this tower lacks a cube and a cuboctahedron. These polyhedra fall within the range of demonstrated dihedral angles, so I have no reason to doubt they would work given enough cardboard and laser cutter time.