Multiple z axis lead screws

edited February 2018 in Motor Control
So I have three lead screws and want to control them with three independent drivers to get auto bed leveling with a nozzle bed contact based probing. I have the three steppers on a CNC shield and then using jumpers from the steps/enable/dir of each stepper over to the main ramps board using the aux connector for the additional steppers. The issue that I am having is the compilation of the firmware. The compilation fails on "DIOORIG_E4_ENABLE_PIN_WPORT". I'm not sure what this means(google/repetier forum search). The only guess I can gather from this is either the D4 which is attached to the z-probe or Extruder 4 which is what I selected for the Z axis steppers (4,5,6). I didn't see a spot to define them by pin or driver when selecting the axis stepper, it just shows the xyz axis and extruders. I have attached my configuration.h in a compressed zip the forum wouldn't let me upload the *.h.


  • so I added:
    #define ORIG_E4_STEP_PIN    59
    #define ORIG_E4_DIR_PIN     63
    #define ORIG_E4_ENABLE_PIN  58
    #define ORIG_E5_STEP_PIN    64
    #define ORIG_E5_DIR_PIN     40
    #define ORIG_E5_ENABLE_PIN  58
    #define ORIG_E6_STEP_PIN    44
    #define ORIG_E6_DIR_PIN     42
    #define ORIG_E6_ENABLE_PIN  58

    This removes the previous error that I was getting but now I get an error.
    Printer.cpp:1883: error: invalid type argument of unary '*' (have 'float')

  • Please also show the content of Printer.cpp where error happens so we can guess what causes this. My version might have different line numbering then yours.
  • It was around the portion of zHomePreRaise. This was my own fault for this error. I set it up for a -10 pre-raise, of which was the wrong direction to pre-raise. I got messed up because its a corexy and raise means lower. However, the negative value that was set in the configuration tool didn't transfer over it was just left with a blank ending define(#define zhomepreraise, when it should have been #define zhomepreraise -10 ).  Thank you for your time to message back Repetier. If I have more issues with this then I'll post back here.  
  • So, I got the firmware uploaded. However, no movement on the z axis.
  • Alright. I got it figured out. I looked at another thread about the spark cube. I went in and  moved where my define was in the configuration.h. However,  the real issue was the cnc daughter board didn't have 5v connected to it. Whoops. Once again thanks for the help and being the sound board to let me find my way. 
  • edited February 2018
    Once again a brick wall. I can't seem to get it to go down for the probe. In the output log for Repetier-Host  I get "info: Autoleveling disabled" on the screen, it shows "Calibrating Bed *** Please wait ***". After homing and moving into position it just sits like this forever. I'm going to try a fresh config file and see if all of my mucking around has jacked this file up. 
  • Alright back at this again. I didn't see too many posts before this one so necroing it. I have the motors moving independently and I have bed leveling attempting to work. However, it never makes it level. It usually ends up less level. I am using 3 point probe with 3 independent z lead screws mounted on a CNC shield and then jumpered over to the ramps. I have the one axis that doesn't move during the leveling closest to the origin (0,0). The other two I have swapped a couple of times. I tried to use a mesh sense pattern and that seemed to work but it took way to long. Here is the config.
  • If you use motorized leveling yo need to set the 3 fixture points according to the motors. G1 X0 Y0 is the reference coordinate. These points do not require to be reachable but must match the motor or the correction will happen on the wrong motors making it worse.
  • edited April 2018
    Isn't that what this section is for? 
    #define BED_MOTOR_1_X -35
    #define BED_MOTOR_1_Y -70
    #define BED_MOTOR_2_X 330
    #define BED_MOTOR_2_Y -70
    #define BED_MOTOR_3_X 147
    #define BED_MOTOR_3_Y 298

  • Yes and motor 1 is the fixed motor that does not move.
  • edited April 2018
    Right, still getting the opposite reaction of what I would expect the autolevel to do. I'm sure that its something that I'm doing wrong I just can't figure out what I'm doing. This is the latest config file.
  • At this point I would ok with bounting this out. Its been months I just a want a printer that works. 
  • edited April 2018
    Here is a top view of what the printer looks like. Everything Homes to max so X+ Y+ Z+

  • edited April 2018
    I set the z height at 120 even though its a bit higher otherwise the build plate just crashes into the hotend even with the probe triggering it will still crash. 

    This is a N grid of 3 x 3.

    13:20:54.321 : Info:Autoleveling disabled
    13:21:25.305 : Z-probe:16.750 X:70.00 Y:70.00
    13:21:46.487 : Z-probe:17.907 X:70.00 Y:155.00
    13:22:10.631 : Z-probe:19.047 X:70.00 Y:240.00
    13:22:34.293 : Z-probe:16.887 X:155.00 Y:70.00
    13:22:55.533 : Z-probe:17.966 X:155.00 Y:155.00
    13:23:19.640 : Z-probe:19.035 X:155.00 Y:240.00
    13:23:43.485 : Z-probe:17.071 X:240.00 Y:70.00
    13:24:04.889 : Z-probe:18.091 X:240.00 Y:155.00
    13:24:29.287 : Z-probe:19.104 X:240.00 Y:240.00
    13:24:29.291 : plane: a = 0.0011 b = 0.0127 c = 15.8450
    13:24:32.527 : Printer height:122.00
    13:24:32.527 : CurrentZ:15.85 atZ:13.85
    13:24:57.346 : Z-probe:16.292 X:70.00 Y:70.00
    13:25:19.193 : Z-probe:18.571 X:70.00 Y:155.00
    13:25:52.458 : Z-probe:20.862 X:70.00 Y:240.00
    13:26:15.743 : Z-probe:16.438 X:155.00 Y:70.00
    13:26:37.573 : Z-probe:18.560 X:155.00 Y:155.00
    13:27:10.108 : Z-probe:20.719 X:155.00 Y:240.00
    13:27:33.511 : Z-probe:16.626 X:240.00 Y:70.00
    13:27:55.632 : Z-probe:18.644 X:240.00 Y:155.00
    13:28:28.083 : Z-probe:20.714 X:240.00 Y:240.00
    13:28:28.087 : plane: a = 0.0005 b = 0.0254 c = 14.5921
    13:28:33.944 : Printer height:122.74
    13:28:33.947 : CurrentZ:14.59 atZ:13.85

    This will continue iterating the same changes. Pushing the build plate further from flat. So if its negative it will make it more negative and if its positive it will make it more positive. The x and y positions are about where they need to be in physical space. 

  • So, where motors are declared I had to select invert direction. It would iterate 5 times each increasing its distance from what would be flat directly proportional to the opposite of the direction it should go. I have leveled it a few times and it either barely moves or when I force it out of flat then it flattens back in.   
  • Why do you have 3 motor drivers:
    #define NUM_MOTOR_DRIVERS 3
    #define MOTOR_DRIVER_1(var) StepperDriver<59,63,58,0,0> var(800,2)
    #define MOTOR_DRIVER_2(var) StepperDriver<64,40,58,0,0> var(800,2)
    #define MOTOR_DRIVER_3(var) StepperDriver<44,42,58,0,0> var(800,2)

    Motor at position 1 is fixed and only position 2 and 3 are moved by motor driver 0 and 1. I guess that is the main problem here. If the ymove in wrong direction, you need in to invert direction of the motor drivers.
Sign In or Register to comment.