TinyG stops if G0 has x,y,z coordinates the same

Home Forums TinyG TinyG Support TinyG stops if G0 has x,y,z coordinates the same

Tagged: ,

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #1408
    TimSch
    Member

    Hi –

    I just received my TinyG in the mail (version 0.93 (build 338.11) “Fanny Pack” ) and am unsure if what I’m seeing is expected behavior.

    I’ve got the TinyG set up on a bench with 3 servos attached to ports 1, 2, and 3, 5v and 24v power, and usb attached, nothing else. I’ve set the servos current limit to reliably drive the motors, and have verified that if I send any of the x,y, or z axes a g0 command individually then the servo will reliably rotate.

    If I send a g0x100y100z100 (or g0x10y10z10, or g0x1000y1000z100) then the 3 servos that I have connected to the X,Y, and Z axes begin to rotate, and then after about 1 second they stop, while the status report indicates a position of ~1.2mm on each axis. Sending a ? query after the motors stop indicates that the Machine state is “Run” and if I attempt to send another g0 command with a different position (e.g. g0x0y0z0) the servo LEDs do not light, the servos do not turn, and the machine does not display further status messages.

    If I send a g0 command with different values for x,y,z (i.e. g0x100y100z10) the servos/status reports do not suddenly stop after 1 second, and if I drive two of the three axes (i.e. g0x100y100) then the two servos also run to completion.

    I’ve pasted below a capture from the terminal session, showing the transition from the reset state (that is just after I pushed the reset button) through to the state where the motors are stopped but the system is reporting machine state: “run”

    Hopefully someone can spot something that I am missing/don’t know about and I can have a learning moment here –

    Thanks in advance =)

    #### Loading configs from EEPROM ####
    #### TinyG version 0.93 (build 338.11) “Fanny Pack” ####
    Type h for help
    tinyg[mm] ok> ?

    Line number: 0
    X position: 0.000 mm
    Y position: 0.000 mm
    Z position: 0.000 mm
    A position: 0.000 deg
    Feed rate: 0.000 mm/min
    Velocity: 0.000 mm/min
    Units: G21 – millimeter mode
    Coordinate system: G54 – coordinate system 1
    Distance mode: G90 – absolute distance mode
    Feed rate mode: G94 – units-per-minute mode (i.e. feedrate mode)
    Motion mode: G0 – linear traverse (seek)
    Machine state: Reset
    tinyg[mm] ok> g0x100y100z100
    tinyg[mm] ok> line:1,posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:0.000,vel:0.154,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    line:1,posx:0.012,posy:0.012,posz:0.012,posa:0.000,feed:0.000,vel:31.734,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    line:1,posx:0.081,posy:0.081,posz:0.081,posa:0.000,feed:0.000,vel:118.233,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    line:1,posx:0.261,posy:0.261,posz:0.261,posa:0.000,feed:0.000,vel:259.653,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    line::,posx:0.626,posy:0.626,posz:0.626,posa:0.000,feed:0.000,vel:467.252,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    line:1,posx:1.221,posy:1.221,posz:1.254,posa:0.000,feed:0.000,vel:717.105,unit:1,coor:1,dist:0,frmo:0,momo:0,stat:4
    ?

    Line number: 0
    X position: 1.853 mm
    Y position: 1.853 mm
    Z position: 1.853 mm
    A position: 0.000 deg
    Feed rate: 0.000 mm/min
    Velocity: 842.736 mm/min
    Units: G21 – millimeter mode
    Coordinate system: G54 – coordinate system 1
    Distance mode: G90 – absolute distance mode
    Feed rate mode: G94 – units-per-minute mode (i.e. feedrate mode)
    Motion mode: G0 – linear traverse (seek)
    Machine state: Run

    tinyg[mm] ok> $$
    [fb] firmware_build 338.11
    [fv] firmware_version 0.93
    [si] status_interval 200 ms [0=off]
    [gpl] gcode_select_plane 0 [0,1,2]
    [gun] gcode_units_mode 1 [0,1]
    [gco] gcode_coord_system 1 [1-6]
    [gpa] gcode_path_control 2 [0,1,2]
    [gdi] gcode_distance_mode 0 [0,1]
    [ea] enable_acceleration 1 [0,1]
    [ja] junction_acceleration 100000 mm
    [ml] min_line_segment 0.080 mm
    [ma] min_arc_segment 0.100 mm
    [mt] min_segment_time 5000 uSec
    [ic] ignore_CR (on RX) 0 [0,1]
    [il] ignore_LF (on RX) 0 [0,1]
    [ec] enable_CR (on TX) 0 [0,1]
    [ee] enable_echo 1 [0,1]
    [ex] enable_xon_xoff 1 [0,1]
    [g54x] g54_x_offset 0.000 mm
    [g54y] g54_y_offset 0.000 mm
    [g54z] g54_z_offset 0.000 mm
    [g54a] g54_a_offset 0.000 mm
    [g54b] g54_b_offset 0.000 mm
    [g54c] g54_c_offset 0.000 mm
    [g55x] g55_x_offset 0.000 mm
    [g55y] g55_y_offset 0.000 mm
    [g55z] g55_z_offset 0.000 mm
    [g55a] g55_a_offset 0.000 mm
    [g55b] g55_b_offset 0.000 mm
    [g55c] g55_c_offset 0.000 mm
    [g56x] g56_x_offset 0.000 mm
    [g56y] g56_y_offset 0.000 mm
    [g56z] g56_z_offset 0.000 mm
    [g56a] g56_a_offset 0.000 mm
    [g56b] g56_b_offset 0.000 mm
    [g56c] g56_c_offset 0.000 mm
    [g57x] g57_x_offset 0.000 mm
    [g57y] g57_y_offset 0.000 mm
    [g57z] g57_z_offset 0.000 mm
    [g57a] g57_a_offset 0.000 mm
    [g57b] g57_b_offset 0.000 mm
    [g57c] g57_c_offset 0.000 mm
    [g58x] g58_x_offset 0.000 mm
    [g58y] g58_y_offset 0.000 mm
    [g58z] g58_z_offset 0.000 mm
    [g58a] g58_a_offset 0.000 mm
    [g58b] g58_b_offset 0.000 mm
    [g58c] g58_c_offset 0.000 mm
    [g59x] g59_x_offset 0.000 mm
    [g59y] g59_y_offset 0.000 mm
    [g59z] g59_z_offset 0.000 mm
    [g59a] g59_a_offset 0.000 mm
    [g59b] g59_b_offset 0.000 mm
    [g59c] g59_c_offset 0.000 mm
    X origin offset: 0.000 mm
    Y origin offset: 0.000 mm
    Z origin offset: 0.000 mm
    A origin offset: 0.000 deg
    B origin offset: 0.000 deg
    C origin offset: 0.000 deg
    [1ma] m1_map_to_axis 0 [0=X, 1=Y…]
    [1sa] m1_step_angle 0.900 deg
    [1tr] m1_travel_per_revolution 1.250 mm
    [1mi] m1_microsteps 8 [1,2,4,8]
    [1po] m1_polarity 0 [0,1]
    [1pm] m1_power_management 1 [0,1]
    [2ma] m2_map_to_axis 1 [0=X, 1=Y…]
    [2sa] m2_step_angle 0.900 deg
    [2tr] m2_travel_per_revolution 1.250 mm
    [2mi] m2_microsteps 8 [1,2,4,8]
    [2po] m2_polarity 0 [0,1]
    [2pm] m2_power_management 1 [0,1]
    [3ma] m3_map_to_axis 2 [0=X, 1=Y…]
    [3sa] m3_step_angle 0.900 deg
    [3tr] m3_travel_per_revolution 1.250 mm
    [3mi] m3_microsteps 8 [1,2,4,8]
    [3po] m3_polarity 0 [0,1]
    [3pm] m3_power_management 1 [0,1]
    [4ma] m4_map_to_axis 3 [0=X, 1=Y…]
    [4sa] m4_step_angle 0.900 deg
    [4tr] m4_travel_per_revolution 1.250 mm
    [4mi] m4_microsteps 8 [1,2,4,8]
    [4po] m4_polarity 0 [0,1]
    [4pm] m4_power_management 1 [0,1]
    [xam] x_axis_mode 1 [standard]
    [xvm] x_velocity_maximum 600.000 mm/min
    [xfr] x_feedrate_maximum 600.000 mm/min
    [xtm] x_travel_maximum 475.000 mm
    [xjm] x_jerk_maximum 20000000 mm/min^3
    [xjd] x_junction_deviation 0.0500 mm (larger is faster)
    [xsm] x_switch_mode 1 [0,1,2]
    [xsv] x_search_velocity -500.000 mm/min
    [xlv] x_latch_velocity 100.000 mm/min
    [xlb] x_latch_backoff 2.000 mm
    [xzb] x_zero_backoff 1.000 mm
    [yam] y_axis_mode 1 [standard]
    [yvm] y_velocity_maximum 600.000 mm/min
    [yfr] y_feedrate_maximum 600.000 mm/min
    [ytm] y_travel_maximum 200.000 mm
    [yjm] y_jerk_maximum 20000000 mm/min^3
    [yjd] y_junction_deviation 0.0500 mm (larger is faster)
    [ysm] y_switch_mode 1 [0,1,2]
    [ysv] y_search_velocity -500.000 mm/min
    [ylv] y_latch_velocity 100.000 mm/min
    [ylb] y_latch_backoff 2.000 mm
    [yzb] y_zero_backoff 1.000 mm
    [zam] z_axis_mode 1 [standard]
    [zvm] z_velocity_maximum 600.000 mm/min
    [zfr] z_feedrate_maximum 600.000 mm/min
    [ztm] z_travel_maximum 400.000 mm
    [zjm] z_jerk_maximum 20000000 mm/min^3
    [zjd] z_junction_deviation 0.0500 mm (larger is faster)
    [zsm] z_switch_mode 1 [0,1,2]
    [zsv] z_search_velocity -500.000 mm/min
    [zlv] z_latch_velocity 100.000 mm/min
    [zlb] z_latch_backoff 2.000 mm
    [zzb] z_zero_backoff 1.000 mm
    [aam] a_axis_mode 1 [standard]
    [avm] a_velocity_maximum 3600.000 deg/min
    [afr] a_feedrate_maximum 3600.000 deg/min
    [atm] a_travel_maximum -1.000 deg
    [ajm] a_jerk_maximum 20000000 deg/min^3
    [ajd] a_junction_deviation 0.0500 deg
    [ara] a_radius_value 1.0000 deg
    [asm] a_switch_mode 1 [0,1,2]
    [asv] a_search_velocity -600.000 deg/min
    [alv] a_latch_velocity 100.000 deg/min
    [alb] a_latch_backoff -5.000 deg
    [azb] a_zero_backoff 2.000 deg
    [bam] b_axis_mode 0 [disabled]
    [bvm] b_velocity_maximum 3600.000 deg/min
    [bfr] b_feedrate_maximum 3600.000 deg/min
    [btm] b_travel_maximum -1.000 deg
    [bjm] b_jerk_maximum 20000000 deg/min^3
    [bjd] b_junction_deviation 0.0500 deg
    [bra] b_radius_value 1.0000 deg
    [bsm] b_switch_mode 1 [0,1,2]
    [bsv] b_search_velocity -600.000 deg/min
    [blv] b_latch_velocity 100.000 deg/min
    [blb] b_latch_backoff -5.000 deg
    [bzb] b_zero_backoff 2.000 deg
    [cam] c_axis_mode 0 [disabled]
    [cvm] c_velocity_maximum 3600.000 deg/min
    [cfr] c_feedrate_maximum 3600.000 deg/min
    [ctm] c_travel_maximum -1.000 deg
    [cjm] c_jerk_maximum 20000000 deg/min^3
    [cjd] c_junction_deviation 0.0500 deg
    [cra] c_radius_value 1.0000 deg
    [csm] c_switch_mode 1 [0,1,2]
    [csv] c_search_velocity -600.000 deg/min
    [clv] c_latch_velocity 100.000 deg/min
    [clb] c_latch_backoff -5.000 deg
    [czb] c_zero_backoff 2.000 deg

    #1409
    Riley
    Keymaster

    I think this is a power issue. I have a PCB CNC mill with some “beefy” NEMA 17’s. I had a really junkie extra PC power supply powering TG. My setup did exactly the same thing you are describing.

    My recommendation is get a power supply with a higher current output. If you have another PC power supply laying around try that. I grabbed a server power supply and viola! It was done.

    Let me know how it works.
    Also just to let you know you can always reset tg values to default by issuing.
    $defaults=1 if you want to test with a default state.

    Riley

    #1410
    TimSch
    Member

    Hi Riley.

    Thanks for the reply –

    My first thought was the power supply as well. Supposedly the supply is 24v 10A, but I haven’t actually tested its limits yet. I hooked the TinyG up to a reasonably high quality electronics lab power supply that I have and noted that the current @15v never went above 0.4A before the servos shut down, and shut down without tripping the current limiter on the supply.

    That said – I did as you suggested and reset the defaults and the g0x100y100z100 command now works as expected – so i’ll write this up to user error on my part and will let you know if I find a configuration setting/group of settings that can make this reliably happen.

    Cheers!
    Tim

    #1411
    Riley
    Keymaster

    So its working now? Good!

    Also, finding a “reliable” configuration to replicate your results might be harder than you think. Meaning that outside of TinyG settings we have power supply plus your specific motors as variables in that equation.

    Another note is your motors.. Which are they? Do you have a datasheet? Barclay (another tg customer) has some very very beefy motors that are supposedly rated at 2.5A (the limit of the DRV8811 drivers are 2.5A) that are pulling more than 2.5A. I guess my point is the datasheet is not always accurate to whats really going on.

    Oh and btw TinyG uses stepper motors not Servos. I know what you were talking about, but you might confuse others if they think you are running servos (using pwm vs motors using step dir).

    We always like hearing what people are doing with their tinyg’s too so please let us know!

    tgFX (tinyg gui) is in the works. I plan on having a new beta out by monday as an FYI.

    Riley

    #1412
    TimSch
    Member

    You’re absolutely right – steppers, not servos – some wires must have crossed in my head while I was typing – sorry for any confusion I may have caused.

    Motors are the Sparkfun 68oz inch 1.7A/Phase steppers (got “steppers” right this time 😉 made by Wantai Motor (http://www.wantmotor.com/ProductsView.asp?id=157&pid=80 model 42BYGHM809)

    Naturally the manufacturer doesn’t have an easily found datasheet, so the best I can provide is from Sparkfun: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Robotics/42BYGHM809.PDF (from http://www.sparkfun.com/products/10846)

    I’m inclined to think that it was not a driver current limit issue, as I could reliably send a g0 command to any of the motors individually, or to combinations of them with no problems – but i’m not willing to rule that out as an issue either. I’m still learning all the configuration settings, so I’d be more willing to bet that I had a setting that was entirely incorrect.

    Thanks again for your time – I’m excited to start using TinyG.

    Cheers
    Tim

    #1413
    Riley
    Keymaster

    “I’m inclined to think that it was not a driver current limit issue, as I could reliably send a g0 command to any of the motors individually, or to combinations of them with no problems”

    This specifically makes me think it was driver (current) issue. 3 motors cost 2x more current than 1 🙂

    But if a setting was off who knows. Also lowering your feed rates on g1 commands uses more current than higher feed rates. This is also true for G0 (traverse) if you set the:

    [*vm] *_velocity_maximum 600.000 mm/min
    [*fr] *_feedrate_maximum 600.000 mm/min

    lower vs higher.

    Riley

    #1414
    barclayo
    Member

    Actually, the motors I have are 2.8A/phase wired in parallel, 1.4A/phase wired in serial. I have them wired in serial. The only reason I bring that up is that 1.4A is significantly below the 2.5A limit, but it appears they’re still pulling more than that (or else otherwise generating waaaay too much heat). So the margin of error on my datasheet is quite significant.

    Unrelated Q: is 0.93 officially released? (I’m still on edge, but might switch to .93 if it’s out.)

    #1415
    Riley
    Keymaster

    That is a big difference.

    338.11 (go by build numbers) is the current “release”. Its in master branch.

    Riley

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.