On Sunday 11 October 2009, Kirk Wallace wrote:
>On Sun, 2009-10-11 at 10:27 -0400, Gene Heskett wrote:
>... snip
>
>> A far at the pair of 50's is concerned, they will also stop it fairly
>> quickly. Mine is maybe 2 or 3 turns from the full 2500 rpms, and some
>> might call that a little brutal, but I have been doing it for at least a
>> year with no ill effects that I have detected. A single 50 would
>> probably be fast enough, and certainly easier on the PM fields of the
>> motor.
>
>That brings to mind, my Hardinge has a screw style chuck mount which
>seems like Russian roulette when using aggressive decelerations.
That might depend on how heavy it is, and how tightly it locks into home when
it is installed. Certainly a 50 pound or more chuck, unscrewed and still
spinning 1900 rpms, could do a lot of damage to both the person and the
equipment. My chucks are smaller of course, and normal change is to unbolt
them from a face plate, but that face plate is still screwed to the spindle
at whatever size thread is on a 7x12's spindle. I believe I took it off once
but don't recall now how I managed to get it loose as there is not a ready
method to lock the spindle in that little machine.
That thought does beg for some method of locking it onto the spindle nose
though, and one that would not effect the accuracy of the mounting, so set
screws are probably out. As is double nutting, no space for the inner nut.
To change the subject a wee bit, does anyone have a link to someone selling
prefabbed optical pieces I could use with the attached piece of .ngc that
cuts the encoder wheel I have installed on my 7x12? Its hole spacing does
not lend itself well to individual interrupters on perfboard.
>An A5
>spindle is on my wish list.
>
>Another thought, for DC spindle motors, I've done a bench setup with a
>tread mill motor and Jon's PWM drive. With a minor modification, it
>worked very well. With its four quadrant feature, I suppose it could
>allow some axis capability. If one needs a new DC (or universal) drive,
>this could be a cost effective way to get one. Plus you don't need to
>monkey with an analog signal.
>
--
Cheers, Gene
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
The NRA is offering FREE Associate memberships to anyone who wants them.
<https://www.nrahq.org/nrabonus/accept-membership.asp>
Your true value depends entirely on what you are compared with.
( spindle-encoder.ngc )
( by Lawrence Glaister VE7IT )
( Sept 15 2007 )
( lerman - thankyou for named variables and owords.... very cool )
( Cut from arborite stock with 0.049" endmill. )
( This encoder ring mounts on the lathe spindle drive pulley. )
( Ring encoder provides A,B,Z phases using 3 H21TLB slot sensors. )
( The H21TLB sensor use 5v and can directly drive parallel port pins. )
( The sensor apeture is 0.035", so I used double that for the slot length )
( to allow for some runout on mounting the ring. )
( The main constraint is that the main track opto has to be able to physically )
( read the inner track... reaching over the outer index track )
( To preview what it will look like, set _endmill_dia = 0.0 below. )
( With a high speed spindle you may be able to cut to depth in 1 pass. )
( This example only cuts to -0.020... this can be edited and the program )
( rerun to do 2 passes )
(======================================================================)
(============================= Subroutines ============================)
( cuts a circle at request diameter around x,y to requested depth )
o100 sub
(Subroutine to do a circle)
( P1=X center P2=Y center P3-diameter P4=depth P5=feedrate )
g0 z#<_safe_Z>
g0 x[#1-[#3/2]] y#2
g1 F[#5/2] z#4
g2 F[#5] x[#1-[#3/2]] y#2 i[#3/2] j0
g0 z#<_safe_Z>
o100 endsub
(======================================================================)
(=================== Define Constants/Variables =======================)
#<_endmill_dia> = 0.047 ( endmill diameter )
#<_safe_Z> = 0.100 ( safe Z height )
#<_Zcut> = -0.050 ( Z depth to cut encoder
elements )
#<_feedrate> = 5.0 ( cutting feedrate )
( define characteristics of encoder and index tracks )
#<_main_track_dia> = 7.250 ( diameter of main signal
track )
#<_index_track_dia> = [#<_main_track_dia> + 0.140] ( diameter of index track )
#<_inside_cutout> = 5.500 ( diameter of interior cutout ==
inside of pulley)
#<_outside_cutout> = 7.525 ( diameter of exterior cutout
~= enough space for tracks)
#<_encoder_cycles> = 90 ( number of slots to cut 180
* 4 == 1/2 degreee resolution)
#<_slotlen> = 0.090 ( finished slot length for 1 encoder
element ~= sensor aperture + runout )
( define 3 params for the mounting arrangement )
#<_mount_circle> = 6.000 ( mounting bolt
circle diameter )
#<_mount_holes> = 6 ( number of
holes to mill for mounting bolts )
#<_mount_hdia> = 0.130 ( sloppy #6 or a #8
bolt )
#<_PI> = 3.14159
#<_endmill_rad> = [#<_endmill_dia>/2.0] ( endmill radius )
#<_encoder_theta>=[360.0/#<_encoder_cycles>] ( angular step around circle -
degrees)
(======================================================================)
(========================= Start of Main Code =========================)
G20 G90
G64 P.002
G0 z#<_safe_Z>
G0 X0 Y0
m0(DEBUG,spindle_encoder.ngc: #<_encoder_cycles> cycle disk uses
#<_endmill_dia> dia endmill, material top,center at 0,0,0 ... unpause[S] when
ready)
o100 call [0.0] [0.0] [#<_outside_cutout>+#<_endmill_dia>] [#<_safe_Z>] [30.0]
( cut the main encoder slots )
( compute angular size of cutter at cutting extremes )
#<inner_dia> = [#<_main_track_dia> - #<_slotlen> + #<_endmill_dia>]
#<outer_dia> = [#<_main_track_dia> + #<_slotlen> - #<_endmill_dia>]
#<icutter_deg> = [#<_endmill_dia>*360.0/[#<inner_dia>*#<_PI>]]
#<ocutter_deg> = [#<_endmill_dia>*360.0/[#<outer_dia>*#<_PI>]]
#<slot_deg> = [#<_encoder_theta>/2.0 ]
#<slots> = #<_encoder_cycles> ( counter for cutting this many slots )
#<angle> = 360 ( starting angle to cut )
( rough check to see if cutter dia and disk resolution are feasible )
o5 if [#<icutter_deg> GT #<slot_deg>]
(print,icutter_deg= #<icutter_deg>, slot_deg= #<slot_deg>)
(DEBUG, Unable to cut encoder because #<_endmill_dia> cutter is too large for
a #<_encoder_cycles> cycle #<_main_track_dia> dia disk)
m2
o5 endif
( check to see if we can machine mounting holes )
o7 if [ #<_mount_hdia> LE #<_endmill_dia> ]
(print,Unable to machine mounting holes as #<_endmill_dia> endmill is too big
to cut #<_mount_hdia> dia holes )
(DEBUG,Unable to machine mounting holes as #<_endmill_dia> endmill is too big
to cut #<_mount_hdia> dia holes )
m2
o7 endif
( main loop to cut encoder slots around disk )
o10 do
#<centerx> = [#<_main_track_dia>/2.0 * cos[#<angle>]] ( x center of slot )
#<centery> = [#<_main_track_dia>/2.0 * sin[#<angle>]] ( y center of slot )
g0 z#<_safe_Z>
g0 x[#<centerx>] y[#<centery>]
( do a cut to the final depth at the cw inner corner of the slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] z[#<_Zcut>] f[#<_feedrate>/2.0] ( decend to cut depth
)
#<myangle> = [#<angle> + [#<slot_deg>/2.0] - [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
#<myr> = SQRT[#<myx>*#<myx> + #<myy>*#<myy>]
g3 x[#<myx>] y[#<myy>] r[#<myr>] f[#<_feedrate>] ( cut inside edge of slot )
#<myangle> = [#<angle> + [#<slot_deg>/2.0] - [#<ocutter_deg>/2.0]]
#<myx> = [#<outer_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<outer_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] ( cut ccw edge of slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<ocutter_deg>/2.0]]
#<myx> = [#<outer_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<outer_dia>/2.0 * sin[#<myangle>]]
#<myr> = SQRT[#<myx>*#<myx> + #<myy>*#<myy>]
g2 x[#<myx>] y[#<myy>] r[#<myr>] ( cut outer edge of slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] ( cut back to inner cw point of slot )
g0 z#<_safe_Z>
#<slots> = [#<slots> -1]
#<angle> = [#<angle> - #<_encoder_theta>]
o10 while [#<slots> GT 0]
( cutout index hole)
( compute angular size of cutter at cutting extremes )
#<inner_dia> = [#<_index_track_dia> - #<_slotlen> + #<_endmill_dia>]
#<outer_dia> = [#<_index_track_dia> + #<_slotlen> - #<_endmill_dia>]
#<icutter_deg> = [#<_endmill_dia>*360.0/[#<inner_dia>*#<_PI>]]
#<ocutter_deg> = [#<_endmill_dia>*360.0/[#<outer_dia>*#<_PI>]]
#<slot_deg> = [#<_encoder_theta>/2.0 ]
#<angle> = 360 ( starting angle to cut )
#<centerx> = [#<_index_track_dia>/2.0 * cos[#<angle>]] ( x center of slot )
#<centery> = [#<_index_track_dia>/2.0 * sin[#<angle>]] ( y center of slot )
g0 z#<_safe_Z>
g0 x[#<centerx>] y[#<centery>]
( do a cut to the final depth at the cw inner corner of the slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] z[#<_Zcut>] f[#<_feedrate>/2.0] ( decend to cut depth )
#<myangle> = [#<angle> + [#<slot_deg>/2.0] - [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
#<myr> = SQRT[#<myx>*#<myx> + #<myy>*#<myy>]
g3 x[#<myx>] y[#<myy>] r[#<myr>] f[#<_feedrate>] ( cut inside edge of slot )
#<myangle> = [#<angle> + [#<slot_deg>/2.0] - [#<ocutter_deg>/2.0]]
#<myx> = [#<outer_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<outer_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] ( cut ccw edge of slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<ocutter_deg>/2.0]]
#<myx> = [#<outer_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<outer_dia>/2.0 * sin[#<myangle>]]
#<myr> = SQRT[#<myx>*#<myx> + #<myy>*#<myy>]
g2 x[#<myx>] y[#<myy>] r[#<myr>] ( cut outer edge of slot )
#<myangle> = [#<angle> - [#<slot_deg>/2.0] + [#<icutter_deg>/2.0]]
#<myx> = [#<inner_dia>/2.0 * cos[#<myangle>]]
#<myy> = [#<inner_dia>/2.0 * sin[#<myangle>]]
g1 x[#<myx>] y[#<myy>] ( cut back to inner cw point of slot )
g0 z#<_safe_Z>
( mill some mounting bolt holes )
#<holes> = #<_mount_holes>
#<myangle> = 0
o20 do
#<myx> = [#<_mount_circle>/2.0 * cos[#<myangle>]]
#<myy> = [#<_mount_circle>/2.0 * sin[#<myangle>]]
( X ) ( Y ) ( Diameter ) ( Depth )
( Feed )
o100 call [#<myx>] [#<myy>] [#<_mount_hdia>-#<_endmill_dia>] [#<_Zcut>]
[#<_feedrate>] ( one mounting hole )
#<myangle> = [#<myangle> + [ 360.0/#<_mount_holes>] ]
#<holes> = [#<holes> -1]
o20 while [ #<holes> GT 0 ]
( cutout encoder ring )
( X ) ( Y ) ( Diameter ) ( Depth ) ( Feed )
o100 call [0.0] [0.0] [#<_inside_cutout>-#<_endmill_dia>] [#<_Zcut>]
[#<_feedrate>] ( interior cutout )
o100 call [0.0] [0.0] [#<_outside_cutout>+#<_endmill_dia>] [#<_Zcut>]
[#<_feedrate>] ( exterior cutout )
M2
------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users