Yet another iteration of nothing
Random header image... Refresh for more!

Posts from — November 2015

Rigging (suspension and moving of machine tools)

Rigging (in this context) is the act of safely supporting and transporting machine tools.

Some pointers:

  • Twisted rope has a much higher sliding coefficient (ropes are rougher). It can take a lot more static tension to overcome sticktion.
  • This makes it harder to “synch” up the rigging before hoisting the load
  • Twisted rope frays more easily; more rapidly loses ultimate tensile strength when it frays
  • Harder to spot damage on twisted rope
  • Requires a much larger bending radius
  • Unwinds when a load in placed on it, unless it is anti-rotational rope; automatically gets longer when it unwinds
  • Knots can reduce the ultimate tensile strength by a huge margin
  • Nylon or other man-made fiber webbing is much stronger
  • Nylon can degrade with exposure to UV light, oxygen, some acids, solvents with long exposure

November 30, 2015   Comments Off on Rigging (suspension and moving of machine tools)

KFLOP C Programming Dissection – My Init.c Pendant Code

#include “KMotionDef.h”

// Example Init program that includes “smooth” MPG motion example
// which makes use of the exponential motion command.

// Which Pins were somewhat arbitrary; 11 I/O were needed, so JP4 and JP6 were used. The remainder were wired to level shifting boards and remain unused.
#define SELECTX 24 // KFLOP JP4, Pin 15 (I/O 24):
#define SELECTY 17 // KFLOP JP4, Pin 06 (I/O 17):
#define SELECTZ 19 // KFLOP JP4, Pin 10 (I/O 19):
#define SELECT4 21 // KFLOP JP4, Pin 12 (I/O 21):

#define FACTOR1 23 // KFLOP JP4, Pin 14 (I/O 23):
#define FACTOR10 25 // KFLOP JP4, Pin 16 (I/O 25):
#define FACTOR100 26 // KFLOP JP6, Pin 05 (I/O 26):

#define TAU 0.02 // smoothness factor (Low Pass Time constant seconds)
#define FINAL_TIME 1.0 // Set final dest after this amount of time with no change

#define QA 16 // KFLOP JP4, Pin 5 (I/O 16): define to which IO bits the AB signals are connected; I’ve assumed A+ and B+
#define QB 18 // KFLOP JP4, Pin 7 (I/O 18):
//Note: Dynomotion seems to just use single ended, the pendant is dual/differental; as such, two inputs are not needed, could reduce total to nine from eleven.
//Note: Current assignment of QA and QB results in backwards operation. Swapped lower down in code. Need to verify hardwire assignment correct.

int main()
{
double T0, LastX=0, LastY=0, LastZ=0, Tau;
int result;
int BitA,Change1=0,Change2=0, DiffX2;
int PosNoWrap, NewPos, Pos=0, wraps;
int InMotion=FALSE,Axis,LastAxis=-1;
double LastChangeTime=0,Target,Factor=0;

// Add a small amount of Coordinated Motion Path smoothing if desired
// Tau = 0.001; // seconds for Low Pass Filter Time Constant
// KLP = exp(-TIMEBASE/Tau);
KLP=0; // force to 0 to disable
// printf(“Tau=%f KLP=%f\n”,Tau,KLP);

// Main program starts here; includes MPGSmooth subroutines
for (;;) //Main program, cycle forever
{
// Pendant reading code
// convert quadrature to 2 bit binary
//BitA = ReadBit(QA);
//PosNoWrap = (ReadBit(QB) ^ BitA) | (BitA<<1);
BitA = ReadBit(QB);
PosNoWrap = (ReadBit(QA) ^ BitA) | (BitA<<1);

// Diff between expected position based on average of two prev deltas
// and position with no wraps. (Keep as X2 to avoid division by 2)
DiffX2 = 2*(Pos-PosNoWrap) + (Change2+Change1);

// Calc quadrature wraparounds to bring Diff nearest zero
// offset by 128 wraps to avoid requiring floor()
wraps = ((DiffX2+1028)>>3)-128;

// factor in the quadrature wraparounds
NewPos = PosNoWrap + (wraps<<2);

Change2 = Change1;
Change1 = NewPos – Pos;
Pos = NewPos;

// Determine which Axis is selected; Logic tree. If none are selected, disable pendant MPG control, as the unit is in the OFF position
// Pendant purchased did not have a ENABLE switch, no free conductors to install one; this will work fine to function as an erstaz one.

if (ReadBit(SELECTX)) // is x selected?
Axis=0; //X axis in my setup
else if (ReadBit(SELECTY)) // is y selected?
Axis=1; //Y Axis in my setup
else if (ReadBit(SELECTZ)) // is z selected?
Axis=2; //Z axis in my setup
else if (ReadBit(SELECT4)) // is 4th axis selected?
Axis=3; //A axis in my setup
else
Change1 = 0; // Disable Pendant, since OFF is selected (none of the above resolve to TRUE)
Factor = 0; // Force the change factor off (13 Nov 2015)

// Determine which multiplier is selected; unlike above, must be one of the three positions by hardware design
// Factor numbers by design, how much to move per MPG pulse

if (ReadBit(FACTOR1)) // is X1 selected?
// Factor = 1.5748031496062992125984251968504;
Factor = 1;
else if (ReadBit(FACTOR10)) // is X10 selected?
Factor = 10;
//Factor = 15.748031496062992125984251968504;
else if (ReadBit(FACTOR100)) // is X100 selected?
Factor =15;
//Factor =157.48031496062992125984251968504 ;
}

return 0;
}

// Debounce a bit
// return 1 one time when first debounced high
// return 0 one time when first debounced low
// return -1 otherwise
#define DBTIME 300
int Debounce(int n, int *cnt, int *last, int *lastsolid)
{
int v = -1;

if (n == *last) // same as last time?
{
if (*cnt == DBTIME-1)
{
if (n != *lastsolid)
{
v = *lastsolid = n; // return debounced value
}
}
if (*cnt < DBTIME) (*cnt)++;
}
else
{
*cnt = 0; // reset count
}
*last = n;
return v;
}

November 17, 2015   Comments Off on KFLOP C Programming Dissection – My Init.c Pendant Code

KFLOP C Programming Dissection – My Init.c E-Stop Code

#include “KMotionDef.h”

int elast=0,elastsolid=-1,ecount=0; // for debouncing estop pushbutton
int Debounce(int n, int *cnt, int *last, int *lastsolid);
int DoPC(int cmd);

#define ESTOP 168 // set to the external estop input bit
#define TMP 10 // which spare persist to use to transfer data
#include “C:\KMotion433\C Programs\KflopToKMotionCNCFunctions.c”

int main()
{
double T0, LastX=0, LastY=0, LastZ=0, Tau;
int result;
int BitA,Change1=0,Change2=0, DiffX2;
int PosNoWrap, NewPos, Pos=0, wraps;
int InMotion=FALSE,Axis,LastAxis=-1;
double LastChangeTime=0,Target,Factor=0;

// Main program starts here; includes ESTOP, MPGSmooth subroutines
for (;;) //Main program, cycle forever
{
WaitNextTimeSlice();

// Handle ESTOP interrupts
result = Debounce(ReadBit(ESTOP),&ecount,&elast,&elastsolid);
if (result == 0)
{
DoPC(PC_COMM_ESTOP);
printf(“Local ESTOP Active!\n”);
MsgBox(“Local ESTOP ACTIVE!”,MB_OK|MB_ICONEXCLAMATION);
}
}

// Debounce a bit
// return 1 one time when first debounced high
// return 0 one time when first debounced low
// return -1 otherwise
#define DBTIME 300
int Debounce(int n, int *cnt, int *last, int *lastsolid)
{
int v = -1;

if (n == *last) // same as last time?
{
if (*cnt == DBTIME-1)
{
if (n != *lastsolid)
{
v = *lastsolid = n; // return debounced value
}
}
if (*cnt < DBTIME) (*cnt)++;
}
else
{
*cnt = 0; // reset count
}
*last = n;
return v;
}

November 17, 2015   Comments Off on KFLOP C Programming Dissection – My Init.c E-Stop Code

Using USB Microscopes for Optical Comparators, Edge Finding, Centreing

with the rise of inexpensive optical cameras, people have been adapting them for machine tool use.

Technitoys – Machine Camera

 

Hobby Machinist – Cheap Optical Comparator

http://BangGood (China) USB Microscope

 

Microscope Camera for Mill

November 10, 2015   Comments Off on Using USB Microscopes for Optical Comparators, Edge Finding, Centreing

One of the better threads summarizing a new CNC purchase

CNC Zone – Help Choosing CNC

The big question you need to ask yourself is what do you intend to do with it? I’ll be honest…owning a cnc is sort of like owning a boat. As soon as you buy it you immediately need a bigger one. So by trying to define what it is you wish to do with it, you can shop for a machine that will a least suit your initial requirements. Next you have to figure out what your budget is and see if it will cover the cost of the machine you need. If it doesn’t, then I will be honest; save your pennies till you have enough and resist the urge to purchase a lesser machine. Always allow at least 20% more for shipping/odds and ends/tax etc.

Next but not least by any means is the controller and the software. For the controller there are really two types of configurations: DSP and Windows based. DSP is a hand held unit hard wired to the controller. Windows based means you have controlling software such as Mach 3 or WinCNC running on a dedicated computer. Both have pros and cons. But the controller software does cost dollars. As for the design software it ranges from free to 2k US for a package like Vetric’s Aspire. You get what you pay for.

As Awerby said CNC machines vary tremendously. It can be particularly troublesome in Canada as the choices for the serious hobbyist are some limited compared to the American market given the state of the dollar. While we do have some choice there are a lot of holes in the selection. On one hand you have the Intellicarve which is available at Busy Bee and the Shark by Rockler distributors on the entry level end. These are really a carving machines that vary in price from approximately $2499.00 to $5499.00. On the other end of the scale you have The Professor HDX available at Canadian Woodworking made by CWI weighing in at around $8500.00 for the serious hobbyist/light production, but by the time you add the stand/tooling/software you are north of $11,000.00. It also depends if you want a Windows based or DSP based controller. Some of the nice machines available in the US are Shopbot and CamMaster but due to the weakness of the Canadian dollar you probably be on the other side of $15k by time you got through with the exchange/import/gst for an entry level machine. If you could give us an idea as to what you are looking to do with it and what your budget is then we could offer much more salient advice.

 

November 10, 2015   Comments Off on One of the better threads summarizing a new CNC purchase

Machine Design: Whitepapers

One of the better papers out there on machine design: Principles of Rapid Machine Design.

Good source of information stating how machine tools are accurately measured, scraped into precision: Foundations of Mechanical Accuracy

Introduces basic machining operations, setups, procedures: Machining Fundamentals

 

 

 

November 7, 2015   Comments Off on Machine Design: Whitepapers

When CNC is overkill

A great example of what can be accomplished without CNC.

Youtube Link – Paoson Luthier and Woodwork – 3D Router

direct links: PlansInstructable.

 

November 4, 2015   Comments Off on When CNC is overkill

CNCZone – DIY 4th Axis from First Principles (quite similar to my own ideas)

Ironically, I’m not the only one who’s done this.

CNC Zone – Building a 4th Axis from First Principles

This thread post-dates my own efforts by over 26 months, but, most pleasingly, echos my own logic to a most satisfying level. He states he already has a high speed lathe function, and has chosen a differing harmonic drive, but his approach has all the checkpoints mine did, and more (such as testing the harmonic before use). Even better, he is a PhD in measurement, and this reflects well on my thought processes.

There is excellent information on bearings, building philosophies, engineering trade offs, final operations.

 

 

November 3, 2015   Comments Off on CNCZone – DIY 4th Axis from First Principles (quite similar to my own ideas)