Duet 3 6HC + Expansion - Issue with Bltouch / Z homing

  • Hi,

    I'm having an issue getting my z homing working. My bltouch appears to be working perfectly - I can test it - deploy it - retract it - get a trigger when I press it and it's deployed etc.

    However - z homing just continues past the trigger.

    I wonder if the firmware limitations here - https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations - apply (I'm running the latest stable releases of everything). The firmware limitations suggest that applied to RC2 - but I don't see any update that suggests they are all resolved.

    Specifically - my config is that I am driving my 3 Z steppers from the expansion board but I am using my bltouch on the main board.

    The firmware limitations

    Endstop switches connected to the main board cannot control motors on an expansion board.

    Z probes connected to expansion boards are not supported.

    Suggest that this might be the issue.

    Is that right? And if so - is there a solution?

    Kind Regards,


  • Moderator

    It would help if you posted your config files along with more detail on how everything is wired up. It's impossible to say if something is working properly or not without first verifying the configuration is correct.

  • Well I was asking if the firmware limitations apply because that would explain my issue without other people having to spend time helping me debug it.

    config,g (relevant bits).

    ; Drives
    M569 P0.0 S1 ; physical drive 0.0 goes forwards
    M569 P0.1 S0 ; physical drive 0.1 goes backwards
    M569 P0.2 S1 ; physical drive 0.2 goes forwards
    M569 P0.3 S0 ; physical drive 0.3 goes forwards
    M569 P1.0 S1 ; Drive 5 goes backwards Front Left Z
    M569 P1.1 S1 ; Drive 6 goes backwards Rear Left Z
    M569 P1.2 S1 ; Drive 7 goes backwards Right Z

    M671 X-10:-10:333 Y22.5:277.5:150 S7.5 ;Front left, Rear Left, Right S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew

    M584 X0.0 Y0.1 Z1.0:1.1:1.2 E0.3 ; set drive mapping

    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
    M92 X200 Y200 Z1600 E837 ; set steps per mm
    M203 X24000 Y24000 Z900 E3600 ; set maximum speeds (mm/min)
    M201 X3000 Y3000 Z100 E1500 ; set accelerations (mm/s^2)
    M906 X1400 Y1400 Z1000 E800 I60 ; set motor currents (mA) and motor idle factor in per cent
    M566 X1000 Y1000 Z100 E1500 ; Maximum jerk speeds mm/minute
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z-0.5 S1 ; set axis minima
    M208 X330 Y350 Z650 S0 ; set axis maxima

    ; Endstops
    M574 Y1 S1 P"io1.in" ; configure active-low endstop for low end on X via pin io1.in
    M574 X1 S1 P"io2.in" ; configure active-low endstop for low end on Y via pin io2.in
    M574 Z0 S2 ; configure Z-probe endstop for low end on Z

    ; Z-Probe

    M950 S0 C"io7.out"
    M558 P9 C"io7.in" H10 F120 T3600 ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X2 Y40 Z0.8


    ; generated by RepRapFirmware Configuration Tool v2.1.5 on Mon Jan 13 2020 13:41:08 GMT+0000 (Greenwich Mean Time)

    G91 ; relative mode
    G1 H2 Z4 F200 ; raise head 4mm to ensure it is above the Z probe trigger height
    G90 ; back to absolute mode
    G1 X100 Y100 F2000 ; put head over the centre of the bed, or wherever you want to probe
    G30 ; lower head, stop when probe triggered and set Z to trigger height

    Bltouch is in io7 (on the main board) per the instructions. Z steppers are 1.0,1.1,1.2 (eg the three drivers on the expansion).

  • Just by way of additional information.

    Moving the bltouch to the expansion board (1.io0) didn't work. It no longer seemed to work at all.

    Moving it back to 0.io7 and it works again fine (responds to M401 / M402)

    The obvious thing would be to move my z steppers to the main board but I have a cable length issue.

  • @stonewater I think that is a current limitation with expansion boards. I know that there are certain combinations of motors and end stops if or probes using expansion boards that are not yet supported but I'm a long way from home with only my phone in front of me.
    Edit. Looking back through a conversation with @dc42 on another channel, I can confirm that having motors on an expansion board but the end stop switch on the main board is currently unsupported.

  • @deckingman thank you for that. I assume it's also true you can't run z probes on an expansion board (still).

    It's not the end of the world I just have to extend the wiring for all three of my z steppers and move them to the main board.

    I wonder if @dc42 could comment as to when either of the above will be solved (or indeed it they are solved in the current beta).

  • administrators

    The limitation on endstops connected to the main board not being able to control motors on expansion boards also applies to Z probes connected to the main board (which is the only place you can connect a Z probe at present).

    If you have a spare driver on the main board then you may be able to get it working by declaring 4 Z motors: the real 3 on the expansion board plus a dummy one on the main board.

    If that results in Open Load messages for the dummy motor, the solution is: configure 4 Z motors in M584; set the Z motor current to a very low value (e.g. 100mA) using M906; then configure just the real 3 motors; then set the real motor current; then configure 4 motors again. As long as you don't use M906 or M913 to change the Z motor current, that will leave the 4th motor set to a low current, which will suppress the open load detection.

  • @dc42 and that'll be what gets you the reputation you have in these parts !

    Thank you for the quick reply. I am too tired to try it tonight but I will do so tomorrow and report back / mark resolved assuming it works !

    I don't know if you want to rename the thread to make finding that answer easier.

    I looked pretty carefully and it wasn't advice I found elsewhere.

    Thanks again !

  • So that worked very easily - thank you @dc42 - for anyone else wanting to do the same - I used this in config.g.

    M584 X0.0 Y0.1 Z0.2:1.0:1.1:1.2 E0.3 ; set drive mapping with dummy driver on mainboard (0.2)
    M906 X1400 Y1400 Z100 E800 I60 ; set to low power

    M584 X0.0 Y0.1 Z1.0:1.1:1.2 E0.3 ; set drive mapping for the real z steppers
    M906 X1400 Y1400 Z1000 E800 I60 ; set a sensible power level

    M584 X0.0 Y0.1 Z0.2:1.0:1.1:1.2 E0.3 ; add the dummy drive (still at 100mA) back to the group.

    This does break automatic bed leveling since RRF3 now thinks I have 4 independent z's and I'm only declaring 3 in bed.g - I don't think there is any easy solution for that but if anyone has a good suggestion...

    Thanks !

Log in to reply