Independent Z Leveling



  • I have three independent z motors driving a kinematic coupled bed and it looks like each time I home the z the level gets worse... Any ideas as to what the issue could be, let me know if more info is required.

    level.PNG

    I have the three points of the screws defined as the locations of the kinematic couplings.

    ; Z-Probe
    M671 X200:-20.6:420.6 Y333.3:14.3:14.3 
    M950 S0 C"duex.e6heat"                         ; create servo pin 0 for BLTouch
    M558 P9 C"zprobe.in+zprobe.mod" H5 F120 T6000  ; set Z probe type to bltouch and the dive height + speeds
    G31 P25 X28.8 Y0 Z3                             ; set Z probe trigger value, offset and trigger height
    

    Here are my probe points.

    G30 P0 X200 Y285 Z-99999 ; probe near a leadscrew
    G30 P1 X65 Y15 Z-99999 ; probe near a leadscrew
    G30 P2 X385 Y15 Z-99999 S3 ; probe near a leadscrew and calibrate 3 motors
    M913 Z100
    


  • Most likely your driver definitions, probe points, and or physical wiring are not in the same sequence. They must all match.

    Working config from 3 Motor bed:

    M584 X0 Y1 U2 Z3:4:5        ; X and Y for CoreXY.  U for toolchanger lock. Z has three drivers for kinematic bed suspension. 
    M671 X300:5:152.5 Y316:316:-14 S10 ; Front Left: (300, 316) | Front Right: (5, 316) | Back: (-14, 152.5)
    

    And since we can't see the wiring sequence, this cannot be entirely debugged via the config files.



  • @Danal Thanks! I think you solved it! I did not think about how it needs to know which motor to adjust. So drive order needs to match probe order? I can change my wiring order to match that of my probe order. I'll let you know how it goes. Thanks a bunch!


  • administrators

    @3DPrintingWorld said in Independent Z Leveling:

    @Danal Thanks! I think you solved it! I did not think about how it needs to know which motor to adjust. So drive order needs to match probe order? I can change my wiring order to match that of my probe order. I'll let you know how it goes. Thanks a bunch!

    The probe order doesn't matter. But the order of the leadscrew coordinates in the M671 command must match the order of the corresponding motor drivers in the M584 command. No need to change your wiring, just correct one of those commands to match the other.



  • @dc42 I wrote the response right before I went to bed and I realized exactly what you said as I fell asleep. lol I'm changing the order now and I'll give it a try.



  • Its going the right way now!

    DEVATION.PNG


  • administrators

    Looks good, but the fact that the corrections end up being all negative and about equal indicates that either bed or the plane that the carriage moves in isn't quite flat. I suggest that after levelling and before printing, you do a single G30 probe at bed centre so that Z=0 is correct there.



  • @dc42 I was wondering about that. The bed is a Mic6 plate so it should be flat to about .15mm but I guess thats the deviation its measuring. I'm trying to understand how you can determine the flatness of the plate from only probing three points.
    I think its probably that all three of the rails are not in parallel to each other. Most notably the back center rail. I may need to work on aligning it better with the other two.


  • administrators

    @3DPrintingWorld said in Independent Z Leveling:

    I'm trying to understand how you can determine the flatness of the plate from only probing three points.

    You can't. I am assuming that you homed Z by doing a single G30 probe near the centre of the bed. That gives a 4th point.



  • @dc42 You are correct. I seem to be saying that with every reply. 😉 It does probe in the center first. I was wondering if that probe was needed and if it is taken into account because its not in "BED" file.

    This looks better! I have two flex plates, I was originally testing on a buildtak and had a thought that there might be bubbles that I cant see bc its black. I switched to my clear PEX sheet and got much better results!
    pex devation.PNG

    Now that I know the bed is flat is there a reason to keep the first probe in the center?


  • administrators

    You don't need to probe in the centre before you do the three G30 probes near the leadscrews, assuming you have homed Z at least once since power up. However, I recommend that you probe the centre (e.g. by doing G28 Z) at the end, in case there is a difference in height between the middle and the edges.



  • I'm not an engineer but
    I became interested in assembling a 3D printer and there were questions on which I have not yet decided. Can I ask you in this forum what is wrong I am writing in the config.g so that the Z sensor starts working


  • administrators

    @Vladimir said in Independent Z Leveling:

    I'm not an engineer but
    I became interested in assembling a 3D printer and there were questions on which I have not yet decided. Can I ask you in this forum what is wrong I am writing in the config.g so that the Z sensor starts working

    Yes of course; but please start a new thread for your post, describe the problem you are having, and include your config.g file with your post.



  • Now I made the record right? is it new thread for my post



  • Good afternoon

    Please help with the Сonfig file for Duet Wi Fi version 2.03
    I assembled a Cartesian printer where XY moves in the same plane with ball screws and 3 step motors
    the Z table is lowered with balls crews and 2 step motors. I connect inductive sensor NPN normally open;( works at a height of about 2 mm from the Al table in my opinion the sensor response level is low to a heated table)
    The problem is that I can’t level Z table with a probe and I can’t get a table map and auto-calibration

    Please help me what am I doing wrong

    kind regards

    ; Configuration file for Duet WiFi (firmware version 2.03)

    ; executed by the firmware on start-up

    ;

    ; generated by RepRapFirmware Configuration Tool v2.1.6 on Tue Jan 14 2020 10:57:13 GMT+0300 (Москва, стандартное время)

    ; General preferences

    G90 ; send absolute coordinates...

    M83 ; ...but relative extruder moves

    M550 P"Gnutik" ; set printer name

    ; Network

    M552 S1 ; enable network

    M586 P0 S1 ; enable HTTP

    M586 P1 S0 ; disable FTP

    M586 P2 S0 ; disable Telnet

    ;***************************************

    ; M564 S0 H0

    ;***************************************

    ; Drives

    M569 P3 S1 ; physical drive 3 goes forwards Extruder

    M569 P0 S0 ; physical drive 0 goes forwards drive Y

    M569 P1 S0 ; physical drive 1 goes forwards drive Y

    M569 P2 S0 ; physical drive 2 goes forwards drive X

    M569 P5 S0 ; physical drive 5 goes forwards drive Z

    M569 P6 S0 ; physical drive 6 goes forwards drive Z

    M584 X2 Y0:1 Z5:6 E3

    ;***********************

    M671 X-27:980 Y21:21

    ;***********************

    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation

    M92 X400.00 Y400.00 Z1280.00 E418.50 ; set steps per mm

    M566 X400.00 Y400.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)

    M203 X6000.00 Y6000.00 Z600.00 E1200.00 ; set maximum speeds (mm/min)

    M201 X400.00 Y400.00 Z10.00 E250.00 ; set accelerations (mm/s^2)

    M906 X1800 Y1800 Z1800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent

    M84 S30 ; Set idle timeout

    ; Axis Limits

    M208 X300 Y200 Z0 S1 ; set axis minima

    M208 X750 Y450 Z500 S0 ; set axis maxima

    ; Endstops

    M574 X0 S0 "X-stop"

    M574 Y0 S0 "Y-stop"

    M574 Z0 S0 "Z-stop"

    ; Z-Probe

    M558 P5 I1 H5 F120 T6000

    G31 X0 Y0 Z0,1

    M557 X30:740 Y0:450 S20 ; define mesh grid

    ; Heaters

    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp

    M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0

    M143 H0 S120 ; set temperature limit for heater 0 to 120C

    M307 H0 B0 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit

    M140 H0 ; map heated bed to heater 0

    M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp

    M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1

    M143 H1 S280 ; set temperature limit for heater 1 to 280C

    M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit

    ; Fans

    M106 P0 S0 I0 F500 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off

    M106 P1 S1 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on

    ; Tools

    M563 P0 D0 H1 F0 ; define tool 0

    G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets

    G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C

    ; Custom settings are not defined

    M501


  • Moderator

    @Vladimir You're still posting inside someone elses topic. Create a new topic from the main forum. https://forum.duet3d.com/category/5/duet-hardware-and-wiring



  • @dc42 If I issue a G28 Z then wont it start to start a cyclic dependency. Since homez has a G32? Or should the G32 only be in home all?


Log in to reply