Hi Dave, Kirk, Chris, Sam A serious thanks for your input. I'm going to outline my thinking below and would be grateful for your feedback, pro or con.
Years ago I converted a new JET Mill (Bridgeport knee knock off) to CNC. The Ball Screw I used (Rockford) was not the stiffest thing on the planet. Although they were a reputable company, I am getting a lot of backlash (apparently flexing the Y arm) during static moves and who knows under load. Also with my current Step Generator and CNC Software supplier I am having to buy a needed new feature upgrade too often. I am hoping EMC2 and linear encoder strips (.0002"XY and .0005"Z) resolution will make all the above problems go away. The Mill is equipped as follows: - Stepper Motors are 4000 inch pound torque direct coupled to the ball screws and knee lift shaft. - Stepper resolution X Y is .00002" and Z is .00001" per step. That's better than the brush less DC servo motors I used recently. - The micro stepper motor drivers use 80 Volt DC motor power which kicks the typically slow stepper motors fast enough for milling. - The spindle VFD is analog 0-5 volts. I plan to a filter a PWM or PDM pin for that. - The tool change is manual with a tool length sensor to correct the Z offset. I plan to use the Probe sensor input and a G Code subroutine to do the offset change in EMC2. Thanks again; I am looking forward to your input. Don PS. Please forgive sending your long email back but I'm getting a Lightening storm, got to go! On Wed, Aug 18, 2010 at 12:31 PM, Dave <e...@dc9.tzo.com> wrote: > I disagree... If I had high res scales available that could keep up > with the slew rates of the axes, I would try to incorporate them into > the system. > > They could compensate for pitch errors in the screws or worn screws. I > still think that any backlash may still cause big problems, but you can > oftentimes tighten or replace nuts > to get rid of that. > > Here is one axis (see below) that is used in a closed position loop system: > > This axis drives a feed roller which feeds a strip into a machine. The > feedback device - an encoder, has a knurled wheel on the encoder shaft > and the encoder wheel is in contact with the strip. > > We went to a closed loop system since the strip drive is friction driven > and tends to slip a little.. With the encoder and the closed position > loop, position control is very good even with high feed rates up to 30 > inches per second. > > This setup uses Mesa hardware...and the Hostmot2 driver. This system > uses a 5i20 PCI board a 7i47 board since using a LPT port at these > speeds is not possible. > > I think you could do the same thing using an LPT port interface but you > would have to go much slower and use the hal components for Stepgen and > the encoder counter, etc but I suspect it would work. > > Dave (Dave911 on the IRC) > > > >>>>>>>>>>>>>> Section of the INI file <<<<<<<<<<<<<<<< > > [AXIS_0] > > # > # Step timing is 2.2 us steplen + 3.3 us stepspace > # That gives 5.5 us step period = 181 khz KHz step freq > # > #5.25 in diameter roller x 3.1415 = 16.485 inches of feed per rev > #16.485/15:1 gearbox = 1.099 inches of feed per rev > # > # at 2500 pulses per rev on the motor encoder, turns out to be 1819.83 > pulses per inch of travel > # > # was 25 max vel and 60 accel > # > #A corrected value is entered below. > > TYPE = LINEAR > MAX_VELOCITY = 30 > MAX_ACCELERATION = 80 > BACKLASH = 0.000 > > # scale is pulses ouput from EMC2 per inch of material travel > SCALE = 2274 > > MIN_LIMIT = -9999999.99 > MAX_LIMIT = 9999999.99 > > #old value > #FERROR = 0.050 > #MIN_FERROR = 0.005 > > FERROR = 10.00 > > > #HOME = 0.000 > #HOME_OFFSET = 0.10 > #HOME_SEARCH_VEL = 0.0 > #HOME_LATCH_VEL = 0.0 > #HOME_USE_INDEX = NO > #HOME_IGNORE_LIMITS = YES > > # these are in nanoseconds > DIRSETUP = 3300 > DIRHOLD = 3300 > STEPLEN = 2200 > STEPSPACE = 3300 > > > Here is the hal file section for that axis: > > # ####################################### > # > # HAL file for HostMot2 with 3 steppers > # > # Derived from Ted Hyde's original hm2-servo config > # > # Based up work and discussion with Seb & Peter & Jeff > # GNU license references - insert here. www.linuxcnc.org > # > # > # ######################################## > > # ################################### > # Core EMC/HAL Loads > # ################################### > > # kinematics > loadrt trivkins > > # motion controller, get name and thread periods from ini file > loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD > num_joints=[TRAJ]AXES > > # only the 7i43 needs this, but it doesnt hurt the others > #loadrt probe_parport > > # hostmot2 driver > loadrt hostmot2 > > # load low-level driver > loadrt [HOSTMOT2](DRIVER) config=[HOSTMOT2](CONFIG) > > setp hm2_[HOSTMOT2](BOARD).0.watchdog.timeout_ns 10000000 > > # Load Classic ladder module that runs in real time > loadrt classicladder_rt numPhysInputs=32 numPhysOutputs=20 numS32in=10 > numS32out=10 numFloatIn=10 numFloatOut=10 > > # load one "not" hal component > loadrt not count=1 > addf not.0 servo-thread > # load one mux2 hal component > loadrt mux2 count=1 > addf mux2.0 servo-thread > loadrt toggle count=1 > addf toggle.0 servo-thread > loadrt scale count=1 > addf scale.0 servo-thread > > # ################################################ > # THREADS > # ################################################ > > addf hm2_[HOSTMOT2](BOARD).0.read servo-thread > addf motion-command-handler servo-thread > addf motion-controller servo-thread > > ### 1 PID added for closed loop control of velocity of motor via step gen > loadrt pid num_chan=1 > addf pid.0.do-pid-calcs servo-thread > > alias pin pid.0.Pgain pid.x.Pgain > alias pin pid.0.Igain pid.x.Igain > alias pin pid.0.Dgain pid.x.Dgain > alias pin pid.0.bias pid.x.bias > alias pin pid.0.FF0 pid.x.FF0 > alias pin pid.0.FF1 pid.x.FF1 > alias pin pid.0.FF2 pid.x.FF2 > alias pin pid.0.deadband pid.x.deadband > alias pin pid.0.maxoutput pid.x.maxoutput > alias pin pid.0.enable pid.x.enable > alias pin pid.0.command pid.x.command > alias pin pid.0.feedback pid.x.feedback > alias pin pid.0.output pid.x.output > > setp pid.x.Pgain 4.0 # was 4.0 > setp pid.x.Igain 0.0 > setp pid.x.Dgain 0.0 > setp pid.x.bias 0.0 > setp pid.x.FF0 0.0 > setp pid.x.FF1 .9 # was 2.5 > setp pid.x.FF2 0.0 # not implemented > setp pid.x.deadband 0.0 > setp pid.x.maxoutput 3000.0 > > > ### End of PID add > > > > addf hm2_[HOSTMOT2](BOARD).0.write servo-thread > addf hm2_[HOSTMOT2](BOARD).0.pet_watchdog servo-thread > > addf classicladder.0.refresh servo-thread > > > # ###################################################### > # Axis-of-motion Specific Configs (not the GUI) > # ###################################################### > > > # ################ > # X [0] Axis > # ################ > > # axis enable chain > newsig emcmot.00.enable bit > sets emcmot.00.enable FALSE > > net emcmot.00.enable <= axis.0.amp-enable-out > net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable > # Enable the PID loop here also > net emcmot.00.enable => pid.0.enable > > # Set stepgen to velocity mode > newsig vel_mode bit > sets vel_mode TRUE > net vel_mode => hm2_[HOSTMOT2](BOARD).0.stepgen.00.control-type > > > # position command from EMC to the PID loop cmd > net pid_cmd <= axis.0.motor-pos-cmd > net pid_cmd => pid.0.command > > # PID output drive the stepgen > net pid_out <= pid.0.output > net pid_out => hm2_[HOSTMOT2](BOARD).0.stepgen.00.velocity-cmd > > > setp hm2_5i20.0.encoder.00.counter-mode 0 > setp hm2_5i20.0.encoder.00.filter 1 > setp hm2_5i20.0.encoder.00.index-invert 0 > setp hm2_5i20.0.encoder.00.index-mask 0 > setp hm2_5i20.0.encoder.00.index-mask-invert 0 > > # The encoder is a 4096 counts per rev with quadrature > # Wheel circumfrence is 12 was 341 counts per inch but is 30/29.75 > short so > # 30/29.75 * 341 = 344 > setp hm2_5i20.0.encoder.00.scale 345 > > net pid_feedback <= hm2_5i20.0.encoder.00.position > net pid_feedback => pid.0.feedback > net pid_feedback => axis.0.motor-pos-fb > > > # timing parameters > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [AXIS_0]DIRSETUP > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [AXIS_0]DIRHOLD > > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [AXIS_0]STEPLEN > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [AXIS_0]STEPSPACE > > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [AXIS_0]SCALE > > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel 0 > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel 0 > > setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0 > > > _____________________________________________________________________________________ > > > > On 8/18/2010 11:38 AM, Kirk Wallace wrote: > > On Tue, 2010-08-17 at 18:11 -0400, Don Stanley wrote: > > ... snip > > > >> Did you recognise it is a CNC converted mill that I > >> wanted to move to EMC2? > >> Thanks again > >> Don > >> > > I still contend that encoder feedback on a stepper system has no proven > > advantage, unless you have a very special stepper driver that drives the > > stepper as a high pole count brushless DC servo with a very high count > > encoder on the motor shaft. Encoders would only be useful for a stepper > > machine with hand wheels, while being used as a manual machine with a > > DRO. EMC2 can be configured to do it, but I consider it an academic > > endeavor, since a plain stepper system would work just as well as is, or > > a standard servo would work just as well, only faster. > > > > I may be wrong, but this is my current understanding. > > > > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users > ------------------------------------------------------------------------------ This SF.net email is sponsored by Make an app they can't live without Enter the BlackBerry Developer Challenge http://p.sf.net/sfu/RIM-dev2dev _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users