Delta Homing issue. Error:A hit floor

Hi, I am not sure if the issue I have is a firmware or host issue, so I apologise if I have this in the wrong category.  I have successfully used Repetier before with a print head mounted on my CNC machine.  That was very slow, so I have built a large Delta printer and am now having great difficulties in setting it up.
Using standard Arduino Mega and Ramps 1.4 with A4988 stepper drivers,  Repetier Host v1.5.4.  Firmware 0.92.3.
Issue is that when homing, all 3 servos operate as expected (except that the A/X servo runs faster than the other two.  A/X homes first, then the B/Y and C/Z.  Motors then drive sliders down the designated 5 mm, then home again to activate the end stops again, but only the A/X motor drives at normal speed.  The other two motors go very slowly, about one step per second until the endstops are eventually triggered.
Only the max endstops are enabled.
I have tried many combinations but am not getting anywhere.  I suspect I am doing something very stupid, but I don't know what it is.
Any advice greatly appreciated.
The log shows:
13:02:55.748 : N33 G28 *3
13:02:55.766 : Error:A hit floor
13:02:59.427 : Error:A hit floor
13:04:29.619 : X:0.00 Y:0.00 Z:400.000 E:0.0000
13:04:30.045 : Resend:52

Regards
Paul

Comments

  • Strange thing. "A hit floor" means pos. A is so low, that the slider hits the floor at the bottom and you are at homing position thus quite far away from it.

    // Margin (mm) to avoid above tower minimum (xMin xMinsteps)
    // If your printer can put its carriage low enough the rod is horizontal without hitting the floor
    // set this to zero. Otherwise, measure how high the carriage is from horizontal rod
    // Also, movement speeds are 10x to 20x cartesian speeds at tower bottom.
    // You may need to leave a few mm for safety.
    // Hitting floor at high speed can damage your printer (motors, drives, etc)
    // THIS MAY NEED UPDATING IF THE HOT END HEIGHT CHANGES!
    #define DELTA_FLOOR_SAFETY_MARGIN_MM 15

    During homing or z moves all motors MUST run at the same speed or something is wrong. You should check if all have the same microstepping set. 1 step per second also sound extremely slow. I home with 50 mm/s which is with 80 steps per mm = 4000 steps per second. Do not use the slow settings from cartesian z for deltas - they are normally faster.
  • Hi Repetier, thank you for responding.
    The printer is quite large, about 1200mm high with working height 900mm.  The arms are quite long, at some stage I will probably make them shorter, but they will not be horizontal.  Below sections of the config that may be involved.

    // XYZ movements
    #define X_ENABLE_ON 0
    #define Y_ENABLE_ON 0
    #define Z_ENABLE_ON 0
    #define DISABLE_X 0
    #define DISABLE_Y 0
    #define DISABLE_Z 0
    #define DISABLE_E 0
    #define INVERT_X_DIR 1
    #define INVERT_Y_DIR 1
    #define INVERT_Z_DIR 1
    #define X_HOME_DIR -1
    #define Y_HOME_DIR -1
    #define Z_HOME_DIR 1
    #define X_MAX_LENGTH 200
    #define Y_MAX_LENGTH 200
    #define Z_MAX_LENGTH 400
    #define X_MIN_POS 0
    #define Y_MIN_POS 0
    #define Z_MIN_POS 0
    #define DISTORTION_CORRECTION 0
    #define DISTORTION_CORRECTION_POINTS 5
    #define DISTORTION_CORRECTION_R 100
    #define DISTORTION_PERMANENT 1
    #define DISTORTION_UPDATE_FREQUENCY 15
    #define DISTORTION_START_DEGRADE 0.5
    #define DISTORTION_END_HEIGHT 1
    #define DISTORTION_EXTRAPOLATE_CORNERS 0
    // Movement settings
    #define FEATURE_BABYSTEPPING 1
    #define BABYSTEP_MULTIPLICATOR 1

    #define DELTA_SEGMENTS_PER_SECOND_PRINT 180 
    #define DELTA_SEGMENTS_PER_SECOND_MOVE 70 
    #define EXACT_DELTA_MOVES 1

    // Delta settings
    #define DELTA_DIAGONAL_ROD 532 // mm
    #define DELTA_ALPHA_A 240
    #define DELTA_ALPHA_B 300
    #define DELTA_ALPHA_C 120
    #define DELTA_RADIUS_CORRECTION_A 0
    #define DELTA_RADIUS_CORRECTION_B 0
    #define DELTA_RADIUS_CORRECTION_C 0
    #define DELTA_DIAGONAL_CORRECTION_A 0
    #define DELTA_DIAGONAL_CORRECTION_B 0
    #define DELTA_DIAGONAL_CORRECTION_C 0
    #define END_EFFECTOR_HORIZONTAL_OFFSET 0
    #define CARRIAGE_HORIZONTAL_OFFSET 0
    #define DELTA_MAX_RADIUS 140
    #define ROD_RADIUS 262.4145
    #define PRINTER_RADIUS 262.4145
    #define DELTA_HOME_ON_POWER 0
    #define STEP_COUNTER
    #define DELTA_X_ENDSTOP_OFFSET_STEPS 0
    #define DELTA_Y_ENDSTOP_OFFSET_STEPS 0
    #define DELTA_Z_ENDSTOP_OFFSET_STEPS 0
    #define DELTA_FLOOR_SAFETY_MARGIN_MM 550
  • One problem with such big printers is that the coordinates can not be stored squared in 32 bit integers. On 8 bit cpus it will therefore use less precise floating computations. If you upgrade to due based boards it would use the 64 bit integer. Limit is diagonal near 65534 steps. So with 80 -100 steps per mm you might come away, for higher resolutions it will switch.

    Anyhow none of this shows a problem. As I said check speed and microstepping of your drivers. This is a hardware switch so not visible in config.

    DELTA_MAX_RADIUS 140 sounds low for 532 mm diagonals and 262 mm horizontal radius.
Sign In or Register to comment.