Thanks to Stickybuds for shooting such a sweet overview of what I'm trying to do here! Check out the vid:
So a very exciting weekend this weekend! Bonnie and I ripped down to Nelson BC for a Stickybuds show. This was a dual purpose trip. One, to dance our faces off and listen to some sweet electro-funk and two, to drop off his DJ gear! We met up this morning and I passed along the goods! I'm very confident he'll put this stuff to good use.
I've dropped a few hints, but here's the controller in all it's glory. Really happy with how this came out:
I might have gotten excited and made him a finger drummer too...
Learned a lot and really enjoyed this build. It was a great first big task for the Shapeoko, now that it's all rebuilt and running well. Stay tuned, I'll be embarking on another build very soon...
So last year I ordered a Shapeoko 3 to do all my CNC work. It's easily big enough to do all the work I'd like to do and being the third revision, I thought all the kinks would be worked out. This is 98% true, the machine is excellent. Mechanically, it's a very well thought out and well functioning machine. Defiantly rigid enough to handle all the hardwoods I cut with it. My only gripe with the Shapeoko 3 is the electronics:
So how a stock Shapeoko works is that you have a laptop that streams Gcode over USB to a microcontroller (Atmega328). The microcontroller then interprets the Gcodes and sends the appropriate control signals to the motors, moving the machine. Since the machine has no encoders to read the actual position of the machine (this is called open loop control) you are completely reliant on the USB not screwing up. Here's an example:
The machine is sitting at Z = 0.0". You stream out "G90 G01 Z0.25". This would lift the Z axis to the coordinate Z = 0.25". My laptop has no idea if the machine actually is in that position, as there is no feedback from the machine. A closed loop system would wait for a response from the machine, confirming that it was actually at Z = 0.25" before issuing the next command, but not the Shapeoko. So now, imagine the "G90 G01 Z0.25" never arrived. If the next command is to plunge by 0.5", the machine would plunge from 0.0" to -0.5" rather than plunging from 0.25" to -0.25". This is obviously a problem if you're trying to be accurate to a couple thousands of an inch.
So, this means you are completely reliant on the USB not screwing up at all over the course of an entire job. Well, as it turns out, it's pretty easy to mess up USB. Just start a large shop-vac on the same circuit and the inductive spike will very likely screw up a few bits. This is a problem if you want to do any kind of dust control. USB logic levels are only ~3V apart, so you don't need a ton of noise to mess up the signal. As RS232 logic levels are -15V to +15V I thought it might be more immune to noise. (I also have some theory's about the USB software layer, but haven't been able to confirm this).
So, I built a custom circuit board to test this idea. Here's the hardware chain:
1. Laptop RS232 Com Port 2. MAX232 signal conditioning (RS232 - TTL) 3. Atmega328p UART 4. Sparkfun Big Easy Drivers
I have one of these boards installed on my Shapeoko now and haven't had a problem since switching. I run 1.5hr jobs (cutting Finger Drummers) almost daily and have yet to have a problem. I also run a 6A dust collector, 1500 watts of baseboard heat and two laptops on the same phase with no problems. I've even fired up my lathe while a job is running. The only major difference between my PCB and the stock Shapeoko 3 PCB from Carbide Motion is the use of RS232 rather than USB. Here's some pics:
Atmega328 and MAX232 section. The DB9 connector is on the left:
Voltage regulators. Connection points for a fan and power:
Limit switch and spindle connections along the top. I included switch debouncing with Schmidt triggers:
And of course the Big Easy Stepper drivers. Each one is socketed with female headers, so if you burn out an axis, you can just drop in another Big Easy Driver:
Please get in touch if you'd like to get your hands on a PCB, I'm working on a version that is the same form factor as the stock Shapeoko PCB and has the same connectors, so it should be plug and play. Just e-mail email@example.com
Here's the latest finger drummer! Really happy with the way this one came out. It's Red Oak, with laser engraved graphics (by Greasy Sega aka. Dylan Stinson). It's also got a new PCB on the bottom. I've switched the components to the hidden side of the PCB, just to give the silkscreen'd "Finger Drummer" more of a blank canvas. All the IC's, resistors and capacitors can be pretty visually busy. It's a toss up for me and I'm still not sure which design I'll stick with... I really like the exposed electronics.
OK! Update time! So I have been working very hard lately on this GB Midi project, as I'm now finished (hurray!) my basement suite project! Some controllers I've been working on for quite some time are coming to a close, which has been very satisfying (stay tuned...). I've also been working very hard getting my shop streamlined and my tools in order. The CNC side of this project can be very consuming at times. I have now completely rebuilt my CNC router with my own custom electronics, a new control interface, custom control PCB's, my own control software, dust collection and a brand new power system. I also finally broke down and ran a proper 60A feed to my shop in order to solve some brown out issues (dust collector + heat + CNC router > 15A). Things are getting much more organized around here!
(a little preview of whats to come...)
Here's my CNC gantry mill with new control electronics working well. I was having issues with the USB control so I've switched to RS232. Sometimes the old ways are best. I'm very excited. This controller has been a while in the making, but it's coming to a close now. Much sanding and finishing to do, but should only be a week or two until it's done.