Non-circular boring. (Linuxcnc fun)
Andy created a hex on his lathe by slaving his x axis to the spindle rotation. I wondered if I could do something similar on the mill....
bore a hex hole anyone?
https://www.youtube.com/watch?v=c9tWtEG1Exc
I created a hal component (realtime module within linuxcnc) that takes the spindle angle and calculates where x/y needs to be to create a polygon. (hex in this case but you can do almost any sided polygon)
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
This machine is being run with a rpi4+mesa 7i92.
working well so far.
Re: Non-circular boring. (Linuxcnc fun)
First couple tries in plastic. (painfully slow - just testing) (and the hole size should be way closer to the inscribed polygon diameter...)
https://youtu.be/X1ma_TsItMk
http://electronicsam.com/images/gree...310_190102.jpg
This is the hal component for linuxcnc... WIP use at your own risk.
Code:
// This is a component for Linuxcnc HAL
// Copyright 2020 Sam Sokolik <[email protected]>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
component polygon "Create a spindle synced motion that carves a polygon using eoffset inputs. Assumes positive rotation.";
pin in bit enable;
pin in unsigned numsides=3 "Number of sides in the polygon";
pin in float inscribedradius=1 "inscribed radius of the polygon";
pin in float cutterdiam "cutter diameter";
pin in float eoffsetscale "scale that eoffset is set to.";
pin in float toolang "angle difference between index and actual tool poition";
pin in float spindlepos "Spindle position scaled to 1 per rev";
pin out float spindlerad "Spindle postion in radians";
pin out float polyradius "radious of the polygon at given spindle position";
pin out float xoffset "x offset to send to offset componant";
pin out float yoffset "y offset to send to the offset componant";
pin out signed xeoffset "x eoffset output";
pin out signed yeoffset "y eoffset output";
pin out bit isindex "set index enable only once";
pin io bit indexenable "hooked to index enable of encoder";
function _;
license "GPL";
;;
#include <rtapi_math.h>
#define PI 3.14159265358979323846
float spinang;
float scale;
float spinangoffset;
if (!enable) {
xoffset=0;
yoffset=0;
xeoffset=0;
yeoffset=0;
isindex = false;
return;
}
// only set index enable once
if (enable && !isindex) {
isindex = true;
indexenable = true;
return;
}
// wait for spindle index before actually enabling
if (enable && isindex && indexenable){
return;
}
//convert spinangoffset to ratio.. for adding to spindle pos - plus a couple rotations
//so the spindle position isn't negative
spinangoffset = (toolang/360)+2;
//formual I found is for circumscribed - convert to inscribed - makes more sense.
scale=inscribedradius/cos(PI/numsides);
spinang = ((spindlepos + spinangoffset) - (int)(spindlepos + spinangoffset))*2*PI;
polyradius = (cos(PI/numsides)/cos((fmod(spinang, (2*PI/numsides))-PI/numsides)))*scale-cutterdiam/2;
//actual offsets applied - could be used for offset componant.
xoffset = cos(spinang)*polyradius * -1;
yoffset = sin(spinang)*polyradius;
//counts for use with eoffset functionality
xeoffset = xoffset / eoffsetscale;
yeoffset = yoffset / eoffsetscale;
spindlerad = spinang;
Re: Non-circular boring. (Linuxcnc fun)
OK, that's a new one on me. Very clever.
You need a servo-controlled spindle for it: mine cannot do that.
Cheers
Roger
Re: Non-circular boring. (Linuxcnc fun)
No... The axis are slaved to the spindle. You see me.turnung the spindle by hand and the 2 axis moving.
Re: Non-circular boring. (Linuxcnc fun)
Encoder on the spindle then?
Cheers
Roger
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
Added the ability to change the radius of the polygon by moving the X axis. (so you can create profiles..) The resolution of the spindle encoder is visible in the cut you could also just do round profiles. Sort of like lathe turning profiles on a mill.
http://electronicsam.com/images/gree...1080_scrot.png
http://electronicsam.com/images/gree...314_182353.jpg
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
another high quality video..
https://youtu.be/LWLcFdObLvA
Re: Non-circular boring. (Linuxcnc fun)
surprised how well it worked considering what I am working with mechanics wise...
http://electronicsam.com/images/gree...317_152032.jpg
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
OK, aluminium: now seriously impressed!
Cheers
Roger
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
Keep that up and fairly soon people will be refusing to believe the photos!
Cheers
Roger
Re: Non-circular boring. (Linuxcnc fun)
Re: Non-circular boring. (Linuxcnc fun)
Pay no attention to the man behind the curtain....
Quote:
Originally Posted by
RCaffin
Keep that up and fairly soon people will be refusing to believe the photos!
Cheers
Roger
Re: Non-circular boring. (Linuxcnc fun)
Lathe mode
https://www.youtube.com/watch?v=P0RP7s-rDsg
- - - Updated - - -
start at upgrading the spindle encoder...
https://youtu.be/VmWeXS6y-lg