Logo
Builders' Plan Gallery  |  Hip Pocket Web Site  |  Contact Forum Admin (Account/Technical Issues)  |  Contact Global Moderator
September 26, 2020, 10:01:14 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with email, password and session length
 
Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Low cost CNC foam wings cutter  (Read 515 times)
0 Members and 1 Guest are viewing this topic.
egejce
Bronze Member
***

Kudos: 1
Offline Offline

Macedonia, The Former Yugoslav Republic of Macedonia, The Former Yugoslav Republic of

Posts: 14

Topic starter


Ignore
« on: August 17, 2020, 07:29:03 AM »

Hi,

I'v made a CNC foam cutter that cost me around 25 EUR for the parts that I needed to buy and actually worked very nice.

Here is a link form the first try: https://youtu.be/LQi7Cs1GQOU

- flat parts for the construction are from 6mm Plexiglas.
- guides for x-axis are 10mm(9,7mm) aluminium rod.
- guides for z-axis are 8mm(7,7mm) aluminium rod.
- Stepper motors are from two old EPSON printers LX300+
EM 326 for x-axis (200 steps/rev)
EM 323 for z-axis (92 steps/rev)
- threaded rod M6 for x-axis and threated rod M5 for z-axis
- as a controller I used arduino nano with motor drivers L9110H (x-axis) and L293D (z-axis)
- for power supply I'm using PC-PSU that I'm using with my battery charger. For the arduino and motors 5v and for the hot wire I'm using the buttery charger that has the hot wire cutting option and is using the 12v from the PSU.

In the code for arduino I'm using the number of steps the motors have to make as a array.
Here is the code for the arduino, it is simple:

// MultiStepper.pde
// -*- mode: C++ -*-
// Use MultiStepper class to manage multiple steppers and make them all move to
// the same position at the same time for linear 2d (or 3d) motion.

#include <AccelStepper.h>
#include <MultiStepper.h>

long xl[74]={0,3979,4109,4492,5113,5956,6999,8223,9609,11134,12781,14531,16368,18276,20238,22232,24236,26227,28190,30103,31948,33710,35374,36922,38343,39625,40760,41739,42559,43216,43709,44032,44096,44149,44186,44200,44189,44148,44093,44009,43904,43590,43002,42220,41248,40090,38756,37256,35605,33818,31915,29915,27842,25719,23569,21417,19289,17209,15202,13293,11505,9862,8386,7096,6012,5149,4520,4134,4003,1000,1000,4003,4003,400};
long yl[74]={1319,1319,1328,1355,1406,1481,1579,1697,1830,1972,2118,2260,2395,2518,2628,2724,2804,2865,2903,2919,2909,2874,2815,2732,2625,2496,2347,2181,2001,1813,1620,1433,1379,1320,1260,1209,1151,1097,1058,1015,976,893,795,713,647,598,566,550,548,560,582,614,653,698,746,796,846,895,940,980,1015,1042,1062,1075,1082,1084,1083,1081,1080,1080,1800,1800,240,240};
long xd[74]={0,3979,4109,4492,5113,5956,6999,8223,9609,11134,12781,14531,16368,18276,20238,22232,24236,26227,28190,30103,31948,33710,35374,36922,38343,39625,40760,41739,42559,43216,43709,44032,44096,44149,44186,44200,44189,44148,44093,44009,43904,43590,43002,42220,41248,40090,38756,37256,35605,33818,31915,29915,27842,25719,23569,21417,19289,17209,15202,13293,11505,9862,8386,7096,6012,5149,4520,4134,4003,1000,1000,4003,4003,400};
long yd[74]={1319,1319,1328,1355,1406,1481,1579,1697,1830,1972,2118,2260,2395,2518,2628,2724,2804,2865,2903,2919,2909,2874,2815,2732,2625,2496,2347,2181,2001,1813,1620,1433,1379,1320,1260,1209,1151,1097,1058,1015,976,893,795,713,647,598,566,550,548,560,582,614,653,698,746,796,846,895,940,980,1015,1042,1062,1075,1082,1084,1083,1081,1080,1080,1800,1800,240,240};

// EG X-Y position bed driven by 2 steppers
// Alas its not possible to build an array of these with different pins for each :-(
AccelStepper stepper1(AccelStepper::FULL4WIRE, 0, 1, 2, 3);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 8, 9, 10, 11);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 16, 17, 18, 19);
AccelStepper stepper4(AccelStepper::FULL4WIRE, 12, 13, 14, 15);

// Define the Pins used
#define home_switch_xl 6
#define home_switch_yl 7
#define home_switch_xd 4
#define home_switch_yd 5

// Stepper Travel Variables
long Travel_xl; 
int move_finished_xl=1;
long initial_homing_xl=-1;
long Travel_yl; 
int move_finished_yl=1;
long initial_homing_yl=-1;
long Travel_xd; 
int move_finished_xd=1;
long initial_homing_xd=-1;
long Travel_yd; 
int move_finished_yd=1;
long initial_homing_yd=-1;

// Up to 10 steppers can be handled as a group by MultiStepper
MultiStepper steppers;

void setup() {
  //Serial.begin(9600);

  pinMode(home_switch_xl, INPUT_PULLUP);
  pinMode(home_switch_yl, INPUT_PULLUP);
  pinMode(home_switch_xd, INPUT_PULLUP);
  pinMode(home_switch_yd, INPUT_PULLUP);

  delay(10);

  // Configure each stepper
  stepper1.setMaxSpeed(400);
  stepper2.setMaxSpeed(240);
  stepper3.setMaxSpeed(400);
  stepper4.setMaxSpeed(240);
  stepper1.setAcceleration(100.0);
  stepper2.setAcceleration(100.0);
  stepper3.setAcceleration(100.0);
  stepper4.setAcceleration(100.0);

  // Start Homing procedure of Stepper Motor at startup

  //Serial.print("Stepper Xl is Homing . . . . . . . . . . . ");

  while (digitalRead(home_switch_xl)) {  // Make the Stepper move CCW until the switch is activated   
    stepper1.moveTo(initial_homing_xl);  // Set the position to move to
    initial_homing_xl--;  // Decrease by 1 for next move if needed
    stepper1.run();  // Start moving the stepper
    delay(5);
}

  stepper1.setCurrentPosition(0);  // Set the current position as zero for now
  stepper1.setMaxSpeed(200.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper1.setAcceleration(100.0);  // Set Acceleration of Stepper
  initial_homing_xl=1;

  while (!digitalRead(home_switch_xl)) { // Make the Stepper move CW until the switch is deactivated
    stepper1.moveTo(initial_homing_xl); 
    stepper1.run();
    initial_homing_xl++;
    delay(5);
  }
 
  stepper1.setCurrentPosition(0);
  //Serial.println("Xl Homing Completed");
  //Serial.println("");

    //Serial.print("Stepper Yl is Homing . . . . . . . . . . . ");

  while (digitalRead(home_switch_yl)) {  // Make the Stepper move CCW until the switch is activated   
    stepper2.moveTo(initial_homing_yl);  // Set the position to move to
    initial_homing_yl--;  // Decrease by 1 for next move if needed
    stepper2.run();  // Start moving the stepper
    delay(5);
}

  stepper2.setCurrentPosition(0);  // Set the current position as zero for now
  stepper2.setMaxSpeed(120.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper2.setAcceleration(100.0);  // Set Acceleration of Stepper
  initial_homing_yl=1;

  while (!digitalRead(home_switch_yl)) { // Make the Stepper move CW until the switch is deactivated
    stepper2.moveTo(initial_homing_yl); 
    stepper2.run();
    initial_homing_yl++;
    delay(5);
  }
 
  stepper2.setCurrentPosition(0);
  //Serial.println("Yl Homing Completed");
  //Serial.println("");

      //Serial.print("Stepper Xd is Homing . . . . . . . . . . . ");

  while (digitalRead(home_switch_xd)) {  // Make the Stepper move CCW until the switch is activated   
    stepper3.moveTo(initial_homing_xd);  // Set the position to move to
    initial_homing_xd--;  // Decrease by 1 for next move if needed
    stepper3.run();  // Start moving the stepper
    delay(5);
}

  stepper3.setCurrentPosition(0);  // Set the current position as zero for now
  stepper3.setMaxSpeed(200.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper3.setAcceleration(100.0);  // Set Acceleration of Stepper
  initial_homing_xd=1;

  while (!digitalRead(home_switch_xd)) { // Make the Stepper move CW until the switch is deactivated
    stepper3.moveTo(initial_homing_xd); 
    stepper3.run();
    initial_homing_xd++;
    delay(5);
  }
 
  stepper3.setCurrentPosition(0);
  //Serial.println("Xd Homing Completed");
  //Serial.println("");

        //Serial.print("Stepper Yd is Homing . . . . . . . . . . . ");

  while (digitalRead(home_switch_yd)) {  // Make the Stepper move CCW until the switch is activated   
    stepper4.moveTo(initial_homing_yd);  // Set the position to move to
    initial_homing_yd--;  // Decrease by 1 for next move if needed
    stepper4.run();  // Start moving the stepper
    delay(5);
}

  stepper4.setCurrentPosition(0);  // Set the current position as zero for now
  stepper4.setMaxSpeed(120.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper4.setAcceleration(100.0);  // Set Acceleration of Stepper
  initial_homing_yd=1;

  while (!digitalRead(home_switch_yd)) { // Make the Stepper move CW until the switch is deactivated
    stepper4.moveTo(initial_homing_yd); 
    stepper4.run();
    initial_homing_yd++;
    delay(5);
  }
 
  stepper4.setCurrentPosition(0);
  //Serial.println("Yd Homing Completed");
  //Serial.println("");
 
  delay(5000);

  stepper1.setMaxSpeed(400);
  stepper2.setMaxSpeed(240);
  stepper3.setMaxSpeed(400);
  stepper4.setMaxSpeed(240);
  stepper1.setAcceleration(100.0);
  stepper2.setAcceleration(100.0);
  stepper3.setAcceleration(100.0);
  stepper4.setAcceleration(100.0);

  // Then give them to MultiStepper to manage
  steppers.addStepper(stepper1);
  steppers.addStepper(stepper2);
  steppers.addStepper(stepper3);
  steppers.addStepper(stepper4);


    long positions[4]; // Array of desired stepper positions
 
  for (int i=0; i<=73; i++)
  {

positions[0] = xl;
positions[1] = yl;
positions[2] = xd;
positions[3] = yd;

  steppers.moveTo(positions);
  steppers.runSpeedToPosition();

  }
 
}

void loop() {


 
}




Attached files Thumbnail(s):
Low cost CNC foam wings cutter
Low cost CNC foam wings cutter
Low cost CNC foam wings cutter
Low cost CNC foam wings cutter
Low cost CNC foam wings cutter
Low cost CNC foam wings cutter
Logged
skyraider
Platinum Member
******

Kudos: 93
Offline Offline

United States United States

Posts: 1,314

WWW

Ignore
« Reply #1 on: August 17, 2020, 09:59:33 AM »

Very nice job!!  Always admire those who can think outside the box.

Skyraider
Logged
gman
Bronze Member
***

Kudos: 3
Offline Offline

United Kingdom United Kingdom

Posts: 74



Ignore
« Reply #2 on: August 17, 2020, 10:58:21 AM »

That's amazing, all built from scrapped hardware. Love it, just wish my brain didn't go to mush when it gets all digital...
Just think of the wing building jigs and foam DBox cores you could make. Shame I'm an old mechanical engineer.

Gavin
Logged
SP250
Gold Member
*****

Kudos: 12
Offline Offline

United Kingdom United Kingdom

Posts: 494



Ignore
« Reply #3 on: August 17, 2020, 12:45:30 PM »

Yeh me too Gavin (old Mech Eng)
I just made a drop arm one out of scrap bits in the shed - cost £0 just a bit of time and an internet download for the plan, works a treat with out all the hassle of digital controlling etc.

John M
Logged
egejce
Bronze Member
***

Kudos: 1
Offline Offline

Macedonia, The Former Yugoslav Republic of Macedonia, The Former Yugoslav Republic of

Posts: 14

Topic starter


Ignore
« Reply #4 on: August 17, 2020, 02:25:04 PM »

Hi folks,

Guess what? I’m a mechanical engineer too. Not that old Smiley

Believe me the electronics and the code for this CNC are piece of cake for us. Just remember what stuff you had to calculate to get that diploma from the university Wink

Anyway if anybody wants to build something like this I’m on disposal if he needs help with something.

Vasil C.
Logged
dosco
Gold Member
*****

Kudos: 7
Offline Offline

United States United States

Posts: 931



Ignore
« Reply #5 on: August 24, 2020, 10:40:24 AM »

That's super neat!

-Dave
Logged
faif2d
Platinum Member
******

Kudos: 31
Offline Offline

United States United States

Posts: 1,252


Sun came up I was here to see it = good day



Ignore
« Reply #6 on: August 24, 2020, 02:41:19 PM »

I had a friend that built one years ago.  To tell you how long ago it was I sent him an Atari 400 to drive it!
Logged

I used to like painting with dope but now I can't remember why!    Steve Fauble
OZPAF
Palladium Member
********

Kudos: 186
Offline Offline

Australia Australia

Posts: 5,813



Ignore
« Reply #7 on: August 24, 2020, 07:47:03 PM »

Thanks for that Eg - it's very interesting!.

Quote
I just made a drop arm one out of scrap bits in the shed
Yes they can work well - however the ability to not have to worry about templates is a temptation with a CNC hot wire cutter.

John
Logged
bentodd
Bronze Member
***

Kudos: 2
Offline Offline

United States United States

Posts: 39



Ignore
« Reply #8 on: September 05, 2020, 12:14:34 AM »

i am impressed,  it took me four nights to write enough code for a tach with one interrupt, copying most of it from the internet.  Well it took three nights to realize my light sensor was bad and over triggering.

i love the way it makes round leading edges. 

this will be on my bucket list
Logged
SP250
Gold Member
*****

Kudos: 12
Offline Offline

United Kingdom United Kingdom

Posts: 494



Ignore
« Reply #9 on: September 05, 2020, 05:06:39 AM »

OZPAF

Yes John, the templates are a pain, but I bought one 3m long sheet of kitchen worksurface laminate for £25 and in addition to the offcuts Russ Lister gave me I have enough for the rest of my modelling lifetime.  And I know I cannot get my head around digital stuff - tried and gave up a number of times with Cad programmes, fancy radio transmitter programming and such.

John M
Logged
fred
Gold Member
*****

Kudos: 7
Offline Offline

Canada Canada

Posts: 556



Ignore
« Reply #10 on: September 05, 2020, 04:19:31 PM »

The CNC Hot wire gizmo has attraction... I started on one  ~ 20 years ago.. then lost interest when it proved a Too difficult for me task  :-)
Sober 2nd thought though made me realize that it was basically a tool for cutting Fuse sections.. Former to former.. then gluing the stack together.. then fettling it .
Certainly useful, but hardly indispensable.
 Wings?  I didn't need a CNC for cutting cores.
 Then saw fellows using CNC routers to Carve entire Airframes out of DOW foam billets.
  Inside and Out.. in Thin clamshell style.
 This seemed as the ideal usage. Only drawback is the Foam Snowstorm resulting.    It gets everywhere.. Seriously !
If you have 'wife complaints' problems , this raises it to a whole new level.
Beyond that CNC  routers are a simpler construct..more mainstream.. so parts and programs are widely available, readily found.
Even decent, albeit smallish, plug n play routers for ~200$ .
Lotsa roads to similar ends
Logged
mick66
Gold Member
*****

Kudos: 12
Offline Offline

United Kingdom United Kingdom

Posts: 456



Ignore
« Reply #11 on: September 05, 2020, 04:39:03 PM »

That's very smart indeed ... I like it ... I like it a lot!

Fred ... there might be lots of roads to a particular end but this road looks just great, and someone already built it.

Cheers

Mike
Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!