Cutting foam sheets... with a needle!

Bristolian

New member
Hi all, just dropped in to say thanks to David and the other contributors here for a fascinating thread. I’ve read all of it over the last year or so and have used your experience to make my own design machine shown here. The starting requirements were (1) large size to take up to 1250x800 sheets, and (2) lightweight, quickly and easily dismantled (I need the space!).
20180427_142803.jpg 20180427_171638.jpg
So the rails are aluminium angle and box section, the green bits 3D printed and running on 22mm skate bearings. The lightweight requirement led to a Core XY design which seems to work well despite the long belts.

The needle (0.55mm) runs in a 0.6x1.2mm tube inside a drilled 5mm brass rod, with an aluminium heatsink (cut from an old model engine cylinder head!) and has very little sideways movement giving very good accuracy, albeit with a lot of heat generation, but the heat sink seems to cope.

After much messing around with flywheels, with designs from here and my own, accompanied with many broken needles, I gave up and returned to David’s original peg-spring method. Which just works flawlessly…

Control is by an Arduino Uno with CNC shield as cheaply available on ebay, running GRBL. Alongside it is a second Arduino (Nano) which reads the Z-stepper pulses and motor PWM, and maps them to the servo and ESC respectively. The needle cutter assembly clips on to the Y-axis carriage, so is easily interchanged with the pen plotter. Gcode M8 is used to signify the pen.

The user interface is bcnc running on a Raspberry Pi with 7” touch screen (although I rarely touch it, much easier with mouse & keyboard!). Very impressed with bcnc, I keep finding little useful touches, just the rather limited jogging that lets it down (in my opinion anyway).

The cable supports are sprung CF rods with the tension adjustable through worm & spur gears.

Hold down is just small lead weights which are pushed out of the way by the needle head. So far I’ve not had to use tabs on the parts, they tend to get slightly ‘stitched’ to the blue foam backing board and don’t really move.

Finally today I got the courage to go beyond test pieces and gave it a full 1000x700 sheet full of bits for my next park jet. It worked perfectly, and for the next 2 sheets as well. Very satisfying!

So once again, thanks to all here.
Ian.
 

dkj4linux

Elite member
Welcome, Ian! Thank you for your kind words. And, perseverance to read such a lengthy thread... does it really take a year?

You have built yet another of the most interesting machines seen in this thread. I'm genuinely impressed... and fascinated with the entire thing. I can't believe you are getting anything close to a useful lifetime out of the crank-pin needle drive... mine usually cut/wear through the pin within just a few sheets (at best) of foamboard. If you're handy -- and you obviously are -- that's not such a big deal as it can be easily repaired/replaced but still... yours seems the most successful of that style to date. Don't give up on the flywheel idea just yet, though... I still think it has the most potential for a robust, longer-lasting needle cutter.

I absolutely love your CoreXY setup. Especially the light weight and ease of assemble/disassembly ideas... and your servo-powered Z-lift mechanism. Add in all the neat 3d-printed parts and I'm sure you're gonna have people interested in duplicating your work. Do you have plans to release the STLs and point people to sources for the angle and box section? Is this by chance the same stuff carried in the big Orange and Blue box stores?

Anyway, thanks for sharing, Ian. Please tell us more about your machine... anything and everything, especially details about the "clip-on" tools and, of course, the needle cutter itself. I think this will be of great interest to most of the folks here ;)

-- David
 

dkj4linux

Elite member
Getting into the Raspberry Pi stuf again, I've recently added a couple of Pi3B's and ZeroW's, Pi-cameras, and touch-screens to my stable of original Pi parts. I've been thinking of using Octopi and CNC.js to remotely control my 3d printers and CNC machines.... and it's time I joined the 20th (21st?) century with this stuff. Octopi is perfectly fine for the 3d printers, of course, but, at this time, CNC.js seems a bit unwieldy and awkward for my basic Marlin-based MPCNC's. However, I also have a GRBL-based C-Beam plate machine, built and ready to go, that would be perfect to set up as Ian has set up his just-introduced CoreXY needle cutter machine above.

Obviously, Ian and myself... and Jason, I'm sure. Anybody else messing with this more advanced stuff and ready to share their thoughts and ideas with the rest of us? I'm a mere beginner at this point... little to offer and much to learn... but would love to see and hear how you guys are moving - or have moved - away from just the basic machine controls discussed in the past. Any interest? -- David
 

ironkane

Member
Awesome job Ian! I love how you pulled together so many ideas from here and come up with an even better one. Have you tallied up your costs? Sub $200?
 

jhitesma

Some guy in the desert
Mentor
Love it Ian, would love to see some more details!

David, my grbl setup is still on the bench. I wasn't able to get out to the shop at all this past week, you may have seen on the news the situation with the teacher strike here in AZ...well...since my wife is a reporter at the local paper who's beat is education...she's been awful busy this past week which means I've been on kid duty and can't get out to the shop to play in the evenings since she's been working late :(

And this weekend I spent most of it it gluing bits of our dash back together in the truck. It actually came out better than I expected. Devcon "Plastic welder" is pretty amazing stuff. Apparently it's a methacrylate adhesive similar to what's used for "white" fillings in teeth. Very tough stuff, bonds great to all kinds of plastic, sets quick enough you don't need clamps but slow enough it's easy to work with (5 minute pot life, 15 minute to stable bond, 1 hour to "cure" but full strength is achieved in 24 hours.) Only real bummer is it's cream colored so I had to be careful not to let it show on the black bezel. I later learned you can color it by mixing it on the bottom of a colored solo cup it will dissolve the colorant and suck it up :D There are still some broken parts of the dash but they can wait until fall when it cools down again since they're right up against the windshield and a real pain to deal with in the heat.

And I'm super glad I got the bezel back on because having those vents back makes the AC work even better. 95 out today and I actually had to turn the AC down because it was getting too cold after just 10 minutes of driving around :D

Hopefully thing slow down this week. I have to cut some low rider parts again (I sold mine last week, and may cut another set or two to sell since Ryan is out of stock and gave me a green light to offer some for sale...so might use a bit of machine time to earn some extra hobby funds.) but once I'm done with that I'll be itching to get back to trying GRBL. This just gives me a bit more time to read and research on GRBL again ;)
 

grasskisser

New member
Gentlemen - Thanks for your good advice. - Have a couple of home engineering CNC routers and will only need to bolt on needle cutter.

For an initial "toe in the water" about to print Jason Hiteman`s V2 design in ABS and will add a needle holder and lubricator. Just a lipo and a servo tester for speed control on first trials.

Still unclear about best substrate to cut onto. Use MDF spoil boards normally and skim for good XY surface. - Can I needle cut onto MDF? - Also advice on hold down gratefully received. Being in the UK I wish to cut film backed 6mm Depron to begin, Available cutting area is 600x600mm with minimum 100mm periphery for clamping/sticking down. Use a small vacuum table, but too small for aircraft plans. Could make a max. size one if it is considered to be an advisable way to go ??
For the cut through, fold cuts and marking cuts I guess it must be held fairly flat for accuracy. Just a thought but has a push down foot been tried to ensure the sheet is kept flat ??
 

Bristolian

New member
Thanks all. I may have spoken too soon about the peg-spring method. Although it looked OK, following David’s comments I looked more closely and there is indeed wear, I hadn’t used it enough for this to show up so far. So either I lay in a stock of pegs :) or I persevere with the flywheel. I think some of my problems with flywheels are related to the Z-lift method where the unsupported length of the needle changes. My first design was taller but more compact with the servo under the motor, this had a resonance on the needle when the axis lifted, which broke the needle in seconds. Lowering the motor by 16mm in the current design has removed the resonance but still broke the needle once, perhaps I just need to tweak it a bit. I do like the idea of the flywheel bearing with 3D printed keeper which just needs a straight needle with a single bend.
20180430_101435.jpg 20180428_143135.jpg 20180430_101532.jpg 20180430_101612.jpg 20180430_101751.jpg
Some more details shown here; the carriers for the needle cutter and pen holder clip on to the edges of the Y-carriage; printed in PLA there is just enough flexibility to tightly snap in place. The needle cutter also has magnets for security, not needed with the pen. Ignore the diamond-shaped holes, they were for an earlier fixing idea no longer used.
I wasn’t planning on publishing the STLs as (1) they’re rather specific to my setup, (2) there are a few minor design errors which I’ve just worked around rather than fixed, and (3) it’s still an evolving design which I may change a bit in the future. But if anyone wants anything specific I am of course happy to share. The aluminium sections are 20x20x1.5mm box and 25.4x25.4x3.2mm angle, bought from one of the online retailers here in the UK (did I mention I’m in the UK? North Somerset, England UK) metals4u.co.uk.
The cable support turned into a minor project in itself, it took some time to find cycloid gears (where the worm gear is curved to keep several teeth in contact with the spur gear and hence reduce tooth loading), finally found one on GrabCad. Rather to my surprise it printed OK and works.
Printed bits done using my Original Prusa Mk2, I think David also has one, excellent machine.
The intention is eventually that the control screen with the mini-keyboard will sit above the electronics box thus freeing up the adjacent worktop, but that hasn’t happened yet:(
That’s about it, but I’ll post updates if anything changes.

Ian.
 

rockyboy

Skill Collector
Mentor
Gentlemen - Thanks for your good advice. - Have a couple of home engineering CNC routers and will only need to bolt on needle cutter.

For an initial "toe in the water" about to print Jason Hiteman`s V2 design in ABS and will add a needle holder and lubricator. Just a lipo and a servo tester for speed control on first trials.

Still unclear about best substrate to cut onto. Use MDF spoil boards normally and skim for good XY surface. - Can I needle cut onto MDF? - Also advice on hold down gratefully received. Being in the UK I wish to cut film backed 6mm Depron to begin, Available cutting area is 600x600mm with minimum 100mm periphery for clamping/sticking down. Use a small vacuum table, but too small for aircraft plans. Could make a max. size one if it is considered to be an advisable way to go ??
For the cut through, fold cuts and marking cuts I guess it must be held fairly flat for accuracy. Just a thought but has a push down foot been tried to ensure the sheet is kept flat ??

I use another piece of foam for the spoil board - MDF would be way too tough and break needles. The spoil board I use is oversized and goes beyond the work area where I can grab it with a couple of C-clamps. I hold the main workpiece to the spoil board with a half dozen T pins put in at an angle. Once I learned to put the foam 'crown side down' and pin down the corners I haven't had any problems with accuracy of the cut through or score segments.

And somewhere back in this thread there was a foot design using a plastic spoon that seemed to work very nicely.
 

dkj4linux

Elite member
Gentlemen - Thanks for your good advice. - Have a couple of home engineering CNC routers and will only need to bolt on needle cutter.

For an initial "toe in the water" about to print Jason Hiteman`s V2 design in ABS and will add a needle holder and lubricator. Just a lipo and a servo tester for speed control on first trials.

Still unclear about best substrate to cut onto. Use MDF spoil boards normally and skim for good XY surface. - Can I needle cut onto MDF? - Also advice on hold down gratefully received. Being in the UK I wish to cut film backed 6mm Depron to begin, Available cutting area is 600x600mm with minimum 100mm periphery for clamping/sticking down. Use a small vacuum table, but too small for aircraft plans. Could make a max. size one if it is considered to be an advisable way to go ??
For the cut through, fold cuts and marking cuts I guess it must be held fairly flat for accuracy. Just a thought but has a push down foot been tried to ensure the sheet is kept flat ??

Grasskisser,

It sounds as though you just need the needle cutter and you're good to go. Your spoilboard will need to be a layer of foam sheet of some kind... the MDF would destroy your needle in short order. But you're in luck...

You've come to the right place. You sorely need a vacuum table also... and our own Jason (jhitesma) created a video detailing a layered foamboard vacuum table build -- using the needle cutter itself to cut the channels and holes -- that would be perfect for your need


We had a pretty good discussion about a layered DTFB vacuum setup back around post #470 or so... several ideas were presented and all are workable.

Jason and Mark (moebeast) both have articles here on FliteTest about their foam cutting systems. I know Mark uses a foamboard vacuum hold-down system on both the systems he details... one MPCNC-based and the other is LowRider-inspired. Another great foam-cutting system, using vacuum hold-down is this one by Curtis (CartCurt)

134269_721fb0460539f4f20479790b55b109ef.jpg


Hopefully this will give you some ideas and we're all excited to see what you come up with. Please keep us up to date with your progress :)

-- David
 

dkj4linux

Elite member
Thanks all. I may have spoken too soon about the peg-spring method. Although it looked OK, following David’s comments I looked more closely and there is indeed wear, I hadn’t used it enough for this to show up so far. So either I lay in a stock of pegs :) or I persevere with the flywheel. I think some of my problems with flywheels are related to the Z-lift method where the unsupported length of the needle changes. My first design was taller but more compact with the servo under the motor, this had a resonance on the needle when the axis lifted, which broke the needle in seconds. Lowering the motor by 16mm in the current design has removed the resonance but still broke the needle once, perhaps I just need to tweak it a bit. I do like the idea of the flywheel bearing with 3D printed keeper which just needs a straight needle with a single bend.
View attachment 106610 View attachment 106609 View attachment 106611 View attachment 106612 View attachment 106613
Some more details shown here; the carriers for the needle cutter and pen holder clip on to the edges of the Y-carriage; printed in PLA there is just enough flexibility to tightly snap in place. The needle cutter also has magnets for security, not needed with the pen. Ignore the diamond-shaped holes, they were for an earlier fixing idea no longer used.
I wasn’t planning on publishing the STLs as (1) they’re rather specific to my setup, (2) there are a few minor design errors which I’ve just worked around rather than fixed, and (3) it’s still an evolving design which I may change a bit in the future. But if anyone wants anything specific I am of course happy to share. The aluminium sections are 20x20x1.5mm box and 25.4x25.4x3.2mm angle, bought from one of the online retailers here in the UK (did I mention I’m in the UK? North Somerset, England UK) metals4u.co.uk.
The cable support turned into a minor project in itself, it took some time to find cycloid gears (where the worm gear is curved to keep several teeth in contact with the spur gear and hence reduce tooth loading), finally found one on GrabCad. Rather to my surprise it printed OK and works.
Printed bits done using my Original Prusa Mk2, I think David also has one, excellent machine.
The intention is eventually that the control screen with the mini-keyboard will sit above the electronics box thus freeing up the adjacent worktop, but that hasn’t happened yet:(
That’s about it, but I’ll post updates if anything changes.

Ian.
Ian,

I can't see enough in the pictures to tell... is the box-section gantry riding the angle rails using just gravity to keep it in place; i.e. the bearing "trucks" at the end of the gantry don't enclose, capture, or wrap around, the angle in any way? I suppose the gantry is probably heavy enough to not bounce around during cutting with the needle cutter...

I'm sorry for the alarm regarding the crank-pin wear issues. Hopefully, you've made your machine modular enough that the needle cutter itself may be the only thing impacted if you decide to reconfigure it for a flywheel setup. I really need to revisit my flywheel design... I'm sure it could be improved greatly.

I think your machine design is straight-forward enough that we on this side of the pond should be able to find suitable aluminum bits to come close to duplicating it. While your STLs might not be an exact fit, I think they would serve as great models to mimic and I, for one, would love to see them. Your design appears to be an inexpensive and light-weight alternative to extrusion-based machines and perfect for carrying light loads... needle cutter, pen, laser, drag-knife, etc.

-- David
 

ironkane

Member
Yep, just how my dash used to look. When there are a 10" hole in the center, I replaced it with an after-market ABS dash. Next Ram gets a carpet.
 

jhitesma

Some guy in the desert
Mentor
What they said ^^^^

MDF is too hard as a spoil board for the needle cutter. I used a 1" thick piece of pink house insulation foam for a long time - put the board down crown down (so the corners stick up if it's not flat) then pin the corners with some T-pins. Worked very well and wasn't that big of a pain to setup sheets on.

The vac table is way quicker. But...it's noiser...the vacuum is louder than the needle cutter, even my dinky $20 1gal vacuum. And I'm not sure an all DTFB vac table is really the best way to go. I've had some issues with mine warping when not being used. It still works ... but I either have to let it sit flat under some weights for a few days before use or add some weights to two of the corners or use my bigger vacuum to get enough suction to keep it flat...and even then I sometimes need to add some weight.

I'm debating gluing it to a sheet of 1/4" MDF to help keep it flat. But I'm also tempted to go back to my original plan and cut the plenum out of the 1" pink foam then just make the top spoil layer with the holes out of DTFB.

Also - the stacked DTFB isn't quite as consistent for Z. With the waves in the foam and the variation in thickness from sheet to sheet it's ok for cutting foam planes - but I can't really use the vac table for other work. And I'm really itching to use it for cutting some bigger chunks of MDF. So I may be making a new and improved vac table soon...if I find time :D
 

jhitesma

Some guy in the desert
Mentor
Yep, just how my dash used to look. When there are a 10" hole in the center, I replaced it with an after-market ABS dash. Next Ram gets a carpet.

Yeah, I had a bit more than a 10" hole:

20180429_100851.jpg


That chunk in the center was also broken out - and it's totally protected from UV since it's buried under the top piece and the bezel...so I'm pretty sure it's heat more than UV that's causing a lot of the deterioration. (Kind of like how the hard vacuum lines all get brittle under the hood.)

That center piece that the HVAC controls screw into was totally shattered, I had to rebuild it from about 7-8 pieces :(

Final result isn't pretty...but is functional:
20180429_155447.jpg


The ugliest part is that nasty white mess from the CA I tried originally. The cream colored plastic welder did ooze through a little above the stereo...I figure I can go over it with a black sharpie to hide it better :D The cracks in the top surface aren't pretty...but they're holding strong. THere's still a lot more to repair up near the windshield...but with it being 95f out already here working up there is hot and nasty ... and those pieces aren't adding much strength so I'll wait until Fall to glue them back together.
 

ironkane

Member
Thanks all. I may have spoken too soon about the peg-spring method. Although it looked OK, following David’s comments I looked more closely and there is indeed wear, I hadn’t used it enough for this to show up so far. So either I lay in a stock of pegs :) or I persevere with the flywheel. I think some of my problems with flywheels are related to the Z-lift method where the unsupported length of the needle changes. My first design was taller but more compact with the servo under the motor, this had a resonance on the needle when the axis lifted, which broke the needle in seconds. Lowering the motor by 16mm in the current design has removed the resonance but still broke the needle once, perhaps I just need to tweak it a bit. I do like the idea of the flywheel bearing with 3D printed keeper which just needs a straight needle with a single bend.
View attachment 106610 View attachment 106609 View attachment 106611 View attachment 106612 View attachment 106613
Some more details shown here; the carriers for the needle cutter and pen holder clip on to the edges of the Y-carriage; printed in PLA there is just enough flexibility to tightly snap in place. The needle cutter also has magnets for security, not needed with the pen. Ignore the diamond-shaped holes, they were for an earlier fixing idea no longer used.
I wasn’t planning on publishing the STLs as (1) they’re rather specific to my setup, (2) there are a few minor design errors which I’ve just worked around rather than fixed, and (3) it’s still an evolving design which I may change a bit in the future. But if anyone wants anything specific I am of course happy to share. The aluminium sections are 20x20x1.5mm box and 25.4x25.4x3.2mm angle, bought from one of the online retailers here in the UK (did I mention I’m in the UK? North Somerset, England UK) metals4u.co.uk.
The cable support turned into a minor project in itself, it took some time to find cycloid gears (where the worm gear is curved to keep several teeth in contact with the spur gear and hence reduce tooth loading), finally found one on GrabCad. Rather to my surprise it printed OK and works.
Printed bits done using my Original Prusa Mk2, I think David also has one, excellent machine.
The intention is eventually that the control screen with the mini-keyboard will sit above the electronics box thus freeing up the adjacent worktop, but that hasn’t happened yet:(
That’s about it, but I’ll post updates if anything changes.

Ian.
Consider this Gartt700Kv.jpg Gartt 700Kv and your needle wire wrapped around these 3x7x3mm Precision Ball Bearings and attached to the prop mount holes. You'll have to use a Dremel to cut the shaft flush with the face. I used blue painters tape to mask off the motor to prevent the grinder dust from getting into the motor. It went a lot easier that I thought. I filled the other 3 holes with Locktighted set screws as counterbalancing weight. I don't think it needed it, but every little bit helps. The large diameter motor works great. No guides, no needle keepers, no flywheels. Yes, it's twice as expensive as most motors at $30, but I think it's worth it. I have some initial videos of it a couple of pages back. I'll see if I can't do a new video tonight since I'm waiting on a new drag chain.

Speaking of drag chains (not a comment on your setup), to those considering using them: Make sure that you get one that is of sufficient size so that it's not so stuffed that it actually creates drag! Testing my X & Y individually, my axis movement is smooth as teflon. But when I executed a diagonal movement, there was too much resistance on the drag chain side and it was causing me to lose steps and get that fun growling noise. This may also need to have the voltage pot on that driver tweaked. I'll find out Wednesday after the new drag chain is in place.

I'd be really interested if you could share your GRBL PWM solution. I gave up on it for now and have integrated a servo controller into my CNC controller case. This works, but I'm still in love with the idea of it all running from gcode.
 

dkj4linux

Elite member
What they said ^^^^

MDF is too hard as a spoil board for the needle cutter. I used a 1" thick piece of pink house insulation foam for a long time - put the board down crown down (so the corners stick up if it's not flat) then pin the corners with some T-pins. Worked very well and wasn't that big of a pain to setup sheets on.

The vac table is way quicker. But...it's noiser...the vacuum is louder than the needle cutter, even my dinky $20 1gal vacuum. And I'm not sure an all DTFB vac table is really the best way to go. I've had some issues with mine warping when not being used. It still works ... but I either have to let it sit flat under some weights for a few days before use or add some weights to two of the corners or use my bigger vacuum to get enough suction to keep it flat...and even then I sometimes need to add some weight.

I'm debating gluing it to a sheet of 1/4" MDF to help keep it flat. But I'm also tempted to go back to my original plan and cut the plenum out of the 1" pink foam then just make the top spoil layer with the holes out of DTFB.

Also - the stacked DTFB isn't quite as consistent for Z. With the waves in the foam and the variation in thickness from sheet to sheet it's ok for cutting foam planes - but I can't really use the vac table for other work. And I'm really itching to use it for cutting some bigger chunks of MDF. So I may be making a new and improved vac table soon...if I find time :D
Jason,

Possibly a little more trouble than simply gluing the DTFB stack to a piece of MDF... a light-weight aluminum frame could be constructed for the stack using window-screen framing and simple 3d printed corners. The frame and stack could then be lightly clamped down when you want to use it... and held more flatly(?) away when not. I started playing with this stuff back when I was messing around with the Phlatprinter-style foam cutter system... and was pretty impressed at how easily and accurately a fairly strong, yet light-weight, frame could be constructed. I even started a small vacuum frame, envisioning using aquarium air-line and 3d printed fittings... but of course lost interest before ever developing it further.

20180430_144459.jpg 20180430_144444.jpg

I've also thought making up lightweight machine enclosure panels would be a simple matter... using 3d printed corners and hardware to construct a box that would completely surround your machine. Of course, one might simply find a large cardboard box to use... or, for slobs like me, don't sweat it at all. But I did find it a fun, relatively inexpensive, and easy way to make some pretty nice looking, lightweight panels that have got to be good for... *something*. ;)

-- David
 

Bristolian

New member
Ian,

I can't see enough in the pictures to tell... is the box-section gantry riding the angle rails using just gravity to keep it in place; i.e. the bearing "trucks" at the end of the gantry don't enclose, capture, or wrap around, the angle in any way? I suppose the gantry is probably heavy enough to not bounce around during cutting with the needle cutter...

I'm sorry for the alarm regarding the crank-pin wear issues. Hopefully, you've made your machine modular enough that the needle cutter itself may be the only thing impacted if you decide to reconfigure it for a flywheel setup. I really need to revisit my flywheel design... I'm sure it could be improved greatly.

I think your machine design is straight-forward enough that we on this side of the pond should be able to find suitable aluminum bits to come close to duplicating it. While your STLs might not be an exact fit, I think they would serve as great models to mimic and I, for one, would love to see them. Your design appears to be an inexpensive and light-weight alternative to extrusion-based machines and perfect for carrying light loads... needle cutter, pen, laser, drag-knife, etc.

-- David
Yes, the box section gantry just sits on the X-rails using gravity. My target was specifically the needle cutter and pen, and (possibly in future) a laser, but nothing more. There is no movement off the rails when cutting.
I'm glad you warned me about the crank-pin wear, better to find out now than in the middle of a long cut! Yes, the flywheel is a straight replacement with no other changes so I will have another go.
OK, you've convinced me! I'll put the STLs and some notes together and publish them somewhere, probably Thingiverse would be best? Will probably be in a week or so.
 

Bristolian

New member
Consider this View attachment 106627 Gartt 700Kv and your needle wire wrapped around these 3x7x3mm Precision Ball Bearings and attached to the prop mount holes. You'll have to use a Dremel to cut the shaft flush with the face. I used blue painters tape to mask off the motor to prevent the grinder dust from getting into the motor. It went a lot easier that I thought. I filled the other 3 holes with Locktighted set screws as counterbalancing weight. I don't think it needed it, but every little bit helps. The large diameter motor works great. No guides, no needle keepers, no flywheels. Yes, it's twice as expensive as most motors at $30, but I think it's worth it. I have some initial videos of it a couple of pages back. I'll see if I can't do a new video tonight since I'm waiting on a new drag chain.

I'd be really interested if you could share your GRBL PWM solution. I gave up on it for now and have integrated a servo controller into my CNC controller case. This works, but I'm still in love with the idea of it all running from gcode.
Interesting suggestion, thanks. Would need a re-designed carrier I think due to the shorter motor length, but I'll bear it in mind if I can't get the flywheel solution to work.
The PWM solution is an Arduino Nano which reads the PWM output from the CNC shield and outputs to an ESC. The code is here, hope this helps, basically just an interrupt to catch the PWM rise & fall and save the pulse length, and the main loop to map that to servo/ESC. (This is the whole code, ignore the Z-servo & Pen parts!)
C-like:
// To control Nano for Depron CNC
// Inputs:
//  1. Z-stepper Dir & Step - pins 2 & 4
//  2. CNC Spindle control - PWM on pin 3
//  3. CNC Coolant - indicates needle or pen
//
// NOTES:
//  1. Activate Z-limit switch when servo limits reached
//
#include <Servo.h>
Servo zServo, escServo, penServo;

// Input pins
// ****** NOTE spindle & z-limit are swapped on CNC shield due to GRBL 1.1 changes ******
int spindlePin = 2;  // External interrupt
int zStepPin = 3;  // External interrupt
int zDirPin = 4;
int coolPin = 5;  // Coolant Enable, to be used for Needle / Pen select

// Output pins
int zServoPin = 6;  // Servo for Z control
int escPin = 7;  // ESC output, seen as a servo
int penPin = 8;  // Pen lift servo
int zLimitPin = 9;

//Global Needle servo variables
int zMin = 44;
int zMax = 140;
int zInc = 1;
volatile int zMinCount = 0;
volatile int zMaxCount = 0;
volatile int zGlobal = zMax;  //Z Servo start-position
// Global Pen variables
int penMin = 65;
int penMax = 120;
// Global variables for reading spindle speed PWM
volatile unsigned long startTime = 0;
volatile unsigned long pulseLength = 0;
volatile unsigned long cycleTime = 0;
volatile unsigned long lastRead = 0;
 
// ------------------------------------------------------------------------------
void setup() {
  pinMode(zServoPin,OUTPUT);
  pinMode(escPin,OUTPUT);
  pinMode(penPin,OUTPUT);
  pinMode(zLimitPin,OUTPUT);

  attachInterrupt(digitalPinToInterrupt(zStepPin), HandleStep, RISING);
  attachInterrupt(digitalPinToInterrupt(spindlePin), HandlePWM, CHANGE);
 
  zServo.attach(zServoPin);
  escServo.attach(escPin,988,2006);
  penServo.attach(penPin);

  zServo.write(zMax);    // z Start position
  escServo.write(0.0);      // Spindle speed zero
  penServo.write(penMax);      // Pen start position

//  Serial.begin(19200);
//  Serial.println("Ready");
}

// ------------------------------------------------------------------------------
// Interrupt Service Routines (ISR)

void HandleStep()
// Called on Z step
{
    zMaxCount = zMinCount = 0;
  // set global variable
  if(digitalRead(zDirPin) == HIGH) {
    if(zGlobal < zMax)
      zGlobal+= zInc;
    else
      zMaxCount++;
  }else {
    if(zGlobal > zMin)
      zGlobal-= zInc;
    else
      zMinCount++;
  }
}

void HandlePWM() {
// Called on PWM pulse rising & falling edges
  lastRead = micros();
  if(digitalRead(spindlePin) == HIGH) {
    cycleTime = lastRead - startTime;
    startTime = lastRead;
  }
  else {
    pulseLength = lastRead - startTime;
  }
}

// ------------------------------------------------------------------------------
void loop() {
  static unsigned long oldLastRead = lastRead;
  int spindleSpeed = 0;
  int  dutyCycle = 0;
  static int zMinC, zMaxC, zGlob;
  int penPos;
  unsigned long pLen, cTime, lRead;

  noInterrupts();
  zMinC = zMinCount;
  zMaxC = zMaxCount;
  zGlob = zGlobal;
  interrupts();
  if(zMaxC > 0 || zMinC > 0)
    digitalWrite(zLimitPin, LOW);
  else
    digitalWrite(zLimitPin, HIGH);

  if(digitalRead(coolPin) == LOW) {

    // PART 1 - set Z position}

    zServo.write(zGlob);
 
    // PART 2 - set spindle speed if Needle in use
    // interrupts used to read PWM
 
    noInterrupts();
    if(micros() < lastRead) lastRead = micros();  // guard against micros() wrap-around every 70 mins or so
    lRead = lastRead;
    pLen = pulseLength;
    cTime = cycleTime;
    interrupts();
    if(micros() - lRead < 5000) {
      dutyCycle = 100 * pLen / cTime;
    } else {    // no interrupt for 5ms means either 0% or 100%
      if(digitalRead(spindlePin) == LOW)
        dutyCycle = 0;
      else
        dutyCycle = 100;
    }
    
    spindleSpeed = map(dutyCycle, 0, 100, 0, 179);     // scale it to use it with the esc (value between 0 and 180)
//    spindleSpeed*= float(zMax - zGlob) / float(zMax - zMin);  // then scale with Z position so max at full down.
    escServo.write(spindleSpeed);
  } else {
    
    // PART 3 - Pen in use - map pen position to Z position and ignore needle servo & PWM
    
    penPos = map(zGlob,zMin,zMax,penMin,penMax);
    penServo.write(penPos);
  }
//  delay(2);
}
 

ironkane

Member
Love my vacuum table, hate my vacuum. It's on my To-Do List to make a sound reducing enclosure for it.
I tried using a 2.5CFM Vac Pump from Harbor Freight. The noise level was very tolerable, but the vacuum was insufficient. I think doubling the CFM might work, but too much money.

I like that aluminum frame idea David. Fairly easy to make. Could even be cut by hand. Although my setup is pretty much always going to require a vacuum table and a permanent installation is better for my purposes.

I had a minor inspiration. Buy a sheet of foam insulation and some MDF, glue them together, cut the channels by hand down to the MDF and then frame it. Need to size it all so that your peeled DTFB waste board lays flush with your frame. It needs to be bolted down though to keep it flat or the MDF can warp.
 

ironkane

Member
Interesting suggestion, thanks. Would need a re-designed carrier I think due to the shorter motor length, but I'll bear it in mind if I can't get the flywheel solution to work.
The PWM solution is an Arduino Nano which reads the PWM output from the CNC shield and outputs to an ESC. The code is here, hope this helps, basically just an interrupt to catch the PWM rise & fall and save the pulse length, and the main loop to map that to servo/ESC. (This is the whole code, ignore the Z-servo & Pen parts!)
C-like:
// To control Nano for Depron CNC
// Inputs:
//  1. Z-stepper Dir & Step - pins 2 & 4
//  2. CNC Spindle control - PWM on pin 3
//  3. CNC Coolant - indicates needle or pen
//
// NOTES:
//  1. Activate Z-limit switch when servo limits reached
//
#include <Servo.h>
Servo zServo, escServo, penServo;

// Input pins
// ****** NOTE spindle & z-limit are swapped on CNC shield due to GRBL 1.1 changes ******
int spindlePin = 2;  // External interrupt
int zStepPin = 3;  // External interrupt
int zDirPin = 4;
int coolPin = 5;  // Coolant Enable, to be used for Needle / Pen select

// Output pins
int zServoPin = 6;  // Servo for Z control
int escPin = 7;  // ESC output, seen as a servo
int penPin = 8;  // Pen lift servo
int zLimitPin = 9;

//Global Needle servo variables
int zMin = 44;
int zMax = 140;
int zInc = 1;
volatile int zMinCount = 0;
volatile int zMaxCount = 0;
volatile int zGlobal = zMax;  //Z Servo start-position
// Global Pen variables
int penMin = 65;
int penMax = 120;
// Global variables for reading spindle speed PWM
volatile unsigned long startTime = 0;
volatile unsigned long pulseLength = 0;
volatile unsigned long cycleTime = 0;
volatile unsigned long lastRead = 0;

// ------------------------------------------------------------------------------
void setup() {
  pinMode(zServoPin,OUTPUT);
  pinMode(escPin,OUTPUT);
  pinMode(penPin,OUTPUT);
  pinMode(zLimitPin,OUTPUT);

  attachInterrupt(digitalPinToInterrupt(zStepPin), HandleStep, RISING);
  attachInterrupt(digitalPinToInterrupt(spindlePin), HandlePWM, CHANGE);

  zServo.attach(zServoPin);
  escServo.attach(escPin,988,2006);
  penServo.attach(penPin);

  zServo.write(zMax);    // z Start position
  escServo.write(0.0);      // Spindle speed zero
  penServo.write(penMax);      // Pen start position

//  Serial.begin(19200);
//  Serial.println("Ready");
}

// ------------------------------------------------------------------------------
// Interrupt Service Routines (ISR)

void HandleStep()
// Called on Z step
{
    zMaxCount = zMinCount = 0;
  // set global variable
  if(digitalRead(zDirPin) == HIGH) {
    if(zGlobal < zMax)
      zGlobal+= zInc;
    else
      zMaxCount++;
  }else {
    if(zGlobal > zMin)
      zGlobal-= zInc;
    else
      zMinCount++;
  }
}

void HandlePWM() {
// Called on PWM pulse rising & falling edges
  lastRead = micros();
  if(digitalRead(spindlePin) == HIGH) {
    cycleTime = lastRead - startTime;
    startTime = lastRead;
  }
  else {
    pulseLength = lastRead - startTime;
  }
}

// ------------------------------------------------------------------------------
void loop() {
  static unsigned long oldLastRead = lastRead;
  int spindleSpeed = 0;
  int  dutyCycle = 0;
  static int zMinC, zMaxC, zGlob;
  int penPos;
  unsigned long pLen, cTime, lRead;

  noInterrupts();
  zMinC = zMinCount;
  zMaxC = zMaxCount;
  zGlob = zGlobal;
  interrupts();
  if(zMaxC > 0 || zMinC > 0)
    digitalWrite(zLimitPin, LOW);
  else
    digitalWrite(zLimitPin, HIGH);

  if(digitalRead(coolPin) == LOW) {

    // PART 1 - set Z position}

    zServo.write(zGlob);

    // PART 2 - set spindle speed if Needle in use
    // interrupts used to read PWM

    noInterrupts();
    if(micros() < lastRead) lastRead = micros();  // guard against micros() wrap-around every 70 mins or so
    lRead = lastRead;
    pLen = pulseLength;
    cTime = cycleTime;
    interrupts();
    if(micros() - lRead < 5000) {
      dutyCycle = 100 * pLen / cTime;
    } else {    // no interrupt for 5ms means either 0% or 100%
      if(digitalRead(spindlePin) == LOW)
        dutyCycle = 0;
      else
        dutyCycle = 100;
    }
   
    spindleSpeed = map(dutyCycle, 0, 100, 0, 179);     // scale it to use it with the esc (value between 0 and 180)
//    spindleSpeed*= float(zMax - zGlob) / float(zMax - zMin);  // then scale with Z position so max at full down.
    escServo.write(spindleSpeed);
  } else {
   
    // PART 3 - Pen in use - map pen position to Z position and ignore needle servo & PWM
   
    penPos = map(zGlob,zMin,zMax,penMin,penMax);
    penServo.write(penPos);
  }
//  delay(2);
}
Thanks Ian! i want to revisit this after everything else is finished off. I tried a PWM to PPM converter chip the other day. It did initialize the ESC, but RPM's were way too slow. So I tabled it for now. It's good to have a Plan C.
 

dkj4linux

Elite member
Love my vacuum table, hate my vacuum. It's on my To-Do List to make a sound reducing enclosure for it.
I tried using a 2.5CFM Vac Pump from Harbor Freight. The noise level was very tolerable, but the vacuum was insufficient. I think doubling the CFM might work, but too much money.

I like that aluminum frame idea David. Fairly easy to make. Could even be cut by hand. Although my setup is pretty much always going to require a vacuum table and a permanent installation is better for my purposes.

I had a minor inspiration. Buy a sheet of foam insulation and some MDF, glue them together, cut the channels by hand down to the MDF and then frame it. Need to size it all so that your peeled DTFB waste board lays flush with your frame. It needs to be bolted down though to keep it flat or the MDF can warp.

These frames are incredibly easy to make... I use my miter saw and stop blocks to insure identical length pieces. I used Onshape to design custom corner pieces... which turned the frame pieces on edge (90*), allows fixing rack sections to the frame in my rack-and-pinion drive, and gave me a deeper frame (about 3/4"... 4 sheets of stacked DTFB). For kicks, I also thought the handy groove of this particular vacuum frame should accept a small pane of window glass I had on hand. I don't know... the idea just seemed fraught with possibilities to me. ;) -- David

20180430_175653.jpg 20180430_175815.jpg