Unable to get sensorless homing working....
-
@Chriss H is nothing to do with number of steps it is a speed threshold, basically stall detection is not enabled until the motor is moving faster than this threshold. That allows you to use a more sensitive S setting without it triggering during the acceleration phase of the move. If you are not getting the stall detection pretty much immediately with a S setting of -63 then there is probably something wrong elsewhere. You could take a look at our stm32 documentation, it may help, ignore all of the stuff about board.txt settings. https://teamgloomy.github.io/sensorless.html
-
@gloomyandy Thanks for the explanation.
I did not find any new information from your page. I still think that I do it the right way.M915 P1:2 S-64 R1 F0 H10 ok G1 H4 X260 F10000 Warning: Driver 1 stalled at Z height 0.00 Warning: Driver 2 stalled at Z height 0.00 ok
And it does not move anymore. That is expected I guess. But it does not stop when I use S-10:
M915 P1:2 S-10 R1 F0 H10 ok G1 H4 X260 F10000 Warning: Driver 1 stalled at Z height 0.00 Warning: Driver 1 stalled at Z height 0.00 Warning: Driver 2 stalled at Z height 0.00 ok
The First message came right at the moment the roolhead reached the physical limit, the other two at the end of the G1. There must be something totally wrong. I will write a simplifies config.g with the absolute minimum settings I need to test with that, it seems to me that I lost control of my config.
Cheers, Chriss
-
@Chriss said in Unable to get sensorless homing working....:
I did not find any new information from your page. I still think that I do it the right way.
I think you may have missed some things. In particular, the sample homing file that we provide. Using stealthchop for homing can be a little tricky because there are various "automatic" settings that need to be taken care of for correct operation. All of the various steps (like performing a small motor move at the start of the process and the various delays and waits) are there for a reason and are based on the recommendations from the TMC datasheets (which I'd strongly recommend you take a look at). I'm not saying that not having these is the cause of your current problems, but we have found that most/all of them are needed to ensure a reliable, safe and repeatable homing operation.
In your example if the head does not move with S-63 then it sounds like the endstops are actually working. Perhaps S-10 is simply not sensitive enough. As above I'd also say that a value of H10 is probably too low, the default of 200 was selected for a good reason by the Duet folks.
Anyway good luck!
-
Anyway good luck!
That did the trick.
For reference: I changed the config to a bare minimum, and yes, I saw the pauses and the M400 from your config example. I decided not to test with them because all of the timeouts are lower than I need to write or copy and paste the code to the telnet session.
I got it working now with V40 at the M569:
M569 P0.2 S1 D3 V40 M569 P0.1 S0 D3 V40 M201 X1000 Y1000 M913 X60 Y60 M566 X0 Y0 M201.1 X1000 Y1000 M915 P1:2 S-20 R0 H200
That is not very much tuned but it is "working" now and the toolhead stops where it is supposed to stop. I think that I have underestimated the impact of the V parameter at M569.
I should spend a bit more time in finding the "optimal" settings for the speed etc but this should be a peace of a cake since I have a working setup now. It was frustrating to turn the screws and did not get anything to work, this is over now luckily and I can start with the tuning and the polishing.
.Thanks for your technically and mentally support.
Cheers, Chriss
-
@gloomyandy Let me ask me one more question please.....
I came a step further but there is still a strange behaviour.
This is my curernt homex.g:
M915 P1:2 S64 R0 H200 ; Reduce stall detection sensitivity M98 P"/macros/print_scripts/xy_current_low.g" ; Lower AB currents G91 ; relative positioning M400 ; Wait for all moves to stop G1 H2 X0.01 ;Z0.01 ; Move X a small amount to enable M400 ; Wait for all moves to stop G4 P200 ; Delay to allow TMC to detect stopped state G1 H1 X-20 F8000 ; Back away from endstop M400 ; Wait for all moves to stop M915 P1:2 S-20 R0 H200 ; Configure motor stall detection G4 P200 ; Delay to ensure settings are made G1 H4 X260 F8000 ; Move towards endstop until it stalls M400 ; Wait for all moves to stop
It works so far that the motor stops when it hits the physical end and the axis is homed after that execution in 90% of the cases. But the X position is totally random after that, sometimes it is 372, the next time 273,1 etc.
I do not understand how that can happen, my config.g is clear here:
; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X249 Y257 S0 ; set axis maxima
I still play with a minimal config.g for now
; Hardware: Duet Mini 5+ ; Toolboard 1.1 LC ; PalenlDue 7" PanelDueFirmware-logo-3.5.0-rc8-7.0i.bin ; Stepper XY = LDO 0,9° 2Amax LDO-42STH40-2004MAC ; Stepper Z = LDO 1,8° 2Amax LDO-42STH48-2004AC ; Stepper E = LDO 1,8 1Amax LDO-42STH20-1004ASH ; Enable network if {network.interfaces[0].type = "ethernet"} M552 P0.0.0.0 S1 else M552 S1 ; Network M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S1 ; enable Telnet M98 P"/sys/variables.g" ; Source the varaibles files G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"v2" ; set printer name M669 K1 ; 1=select CoreXY mode 0=Cadasian G4 S1 ; wait 1s for expansion boards to start ;;; Drives ;X M569 P0.2 S1 D3 V10 ; physical drive 0.2 goes forward M584 X0.2 ; Map the stepper to X ;Y M569 P0.1 S0 D3 V10 ; physical drive 0.1 goes backward M584 Y0.1 ; Map the stepper to Y ; Stepper settings M350 X16 Y16 I1 ; configure microstepping with interpolation M92 X160 Y160 ; set steps per mm (800 from manuall, measured 823 M98 P"/macros/print_scripts/speed_printing.g" ; Accelerations and speed M906 X1400 Y1400 I30 ; set motor currents (mA) and motor idle factor in per cent (E stepper max 1A) M201.1 X1000 Y1000 ; Set reduced acceleration for special move types M84 S120 ; Idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X249 Y257 S0 ; set axis maxima ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Endstops -- Display status with: M119 ; Old endstops with HAL sensors ;M574 Y2 S1 P"0.io5.in" ; Y ;M574 X2 S1 P"!0.io6.in" ; X ; Stall detection M574 Y2 S3 ; Y Sensorless M574 X2 S3 ; X Sensorless ;M915 P1:2 S-20 R0 H200 ; Configure motor stall detection M915 P1:2 S-20 R0 H200 ; Configure motor stall detection
Should I change the home behaviour to home at 0 and not on max anymore? Would that make any difference?
Cheers, Chriss
-
@gloomyandy
Forget it..... I just found that in the docu:sets the X and Y endstops to sensorless homing at the axes low end. This is required.
Cheers, Chriss
-
@Chriss Actually I think your problem is this line:
G1 H4 X260 F8000
You are using a H4 move you need to be using a H1 move. See: https://docs.duet3d.com/User_manual/Reference/Gcodes#g0g1-h-and-s-parameter
Oh and where was the line you quoted in the documentation?
-
@gloomyandy True.. you are right... two mistakes... the G1 and the endstops at the wrong side.
Is that not true anymore?
Cheers, Chriss
-
@Chriss Honestly I'm not sure, that statement in the docs is a little ambiguous and I can't think of any reason why stall detection would only work on the low end. Having said that I've never used it on the high end. Try it and see if it works.
-
@gloomyandy
I tried it all the time with the high end and we know now that it is working after the parameter "nightmare". Maybe something for @droftarts ? I will play a bit more with x at the low end for now. I would like to have Y on the high end for optical reasons. Let's see how it works there than.Cheers, Chriss
-
-
-
@droftarts I will do. Let's wait what David will tell us.
-
-
@droftarts I can tell you that it is working on the high end. My problem came from the G1 H4 instead of using G1 H1.
-
@gloomyandy i use high end sensorless homing ok. i use Y high , x low
-
@Chriss the sentence is "For example, M574 X1 S2 and M574 Y1 S3 sets the X and Y endstops to sensorless homing at the axes low end". It's an example. However, it's unclear to me what the following sentence "This is required." refers to, or why it's there at all.
-
@dc42 It was in the dozuki page, seems to refer to it being a requirement to set M574 to S3, now I reread it. Not that sensorless homing has to be at the low end. I'll edit the text to make that clear.
Ian
-
I think that the "This is required" reveres to the part 'Change your endstop type to "sensorless" in config.g. T' when I read now slowly through it. Anyway, it is a bit misleading, at least for none native speakers and I would remove it.
And the next step is not 100% correct in my opinion, it says: ". Do not press "yes" for restart. There are other changes that must still be made."
Yes, other changes are required, but none oof them are in the config.g and can be done without a reboot or a reread of the config.g.Cheers, Chriss
-
@Chriss I've changed the wording on those steps. As it's all required, I took out the 'required'! Also made it clear sensorless homing can be either end of the axis, and that a restart is optional at that point.
https://docs.duet3d.com/en/User_manual/Connecting_hardware/Sensors_stall_detection#configuring-sensorless-homingIan