• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

Linear Quadrature Encoder Calibration Error

Scheduled Pinned Locked Moved
General Discussion
4
12
298
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    btmclain
    last edited by 25 Mar 2025, 22:13

    Hello,

    We are trying to get a linear encoder and magnetic encoder setup with our 1HCL V1.0a expansion board. We have the magnetic shaft encoder setup and are trying to get the linear encoder configured. We are using a Phidgets ENC4110_0 quadrature encoder.

    The process we have been using is as follows:

    1. Boot duet and home axis in open loop configuration.
    2. Switch to closed loop configuration.
    3. Perform calibration tuning move on magnetic encoder.
    4. Perform calibration tuning move on linear encoder. This is where the error arises. The error we receive is "M569.6 P50.0 V1 Error: M569.6: Driver 50.0 basic tuning failed, the measured motion was inconsistent Warning: Driver 50.0 warning: tuning/calibration failed".

    Our configuration file along with m122 for attached board is below. Thank you in advance!

    code_text
    ```M569.1 P50.0 T1 S200 R40 I0 D0 C1000; Configure the 1HCL board at CAN address 50 with a quad shaft encoder,
    ;M569 P50.0 D4 S1;set drive 0 go forward, address 50, spreadcycle, CLOSED LOOP
    M569 P50.0 S1 D2;set drive 0 go forward, address 50, spreadcycle, OPEN LOOP
    M584 X50.0; set X drivers
    M917 X0 ; Set the closed loop axes to have a holding current of zero
    M350 X16 ; 16 microstepping
    M92 X640.00 ; set steps per mm
    M566 X100.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X3000.00 ; set maximum speeds (mm/min)
    M201 X10.00 ; set accelerations (mm/s^2)
    M906 X4000 I50 ; set motor currents (mA) and motor idle factor in per cent
    M574 X2 S1 P"!50.io0.in"
    M915 X S3 F0 R0

    The commands to perform calibration are as follows

    M569 P50.0 D4 S1 ;closed loop
    M569.6 P50.0 V2 ;magnetic encoder calibration
    M569.6 P50.0 V1;quadrature encoder calibration

    And our m122 response is:

    M122 B50
    Diagnostics for board 50:
    Duet EXP1HCL rev 1.0a or earlier firmware version 3.5.4 (2024-11-24 10:39:28)
    Bootloader ID: SAME5x bootloader version 2.4 (2021-12-10)
    All averaging filters OK
    Never used RAM 45676, free system stack 178 words
    Tasks: EncCal(1,nWait 6,0.1%,175) Move(3,nWait 7,0.0%,131) CLSend(3,nWait 6,0.0%,147) HEAT(2,nWait 6,0.0%,105) CanAsync(5,nWait 4,0.0%,66) CanRecv(3,nWait 1,0.0%,31) CanClock(5,nWait 1,0.0%,64) TMC(4,nWait 6,62.3%,321) MAIN(1,running,36.5%,253) IDLE(0,ready,0.1%,29) AIN(2,nWait 2,1.0%,255), total 100.0%
    Owned mutexes:
    Last reset 00:15:31 ago, cause: software
    Last software reset data not available
    Driver 0: pos -200674, 640.0 steps/mm, tuning/calibration failed, SG min 26, mspos 1000, reads 44823, writes 44595 timeouts 0, steps req 0 done 13441
    Moves scheduled 1, completed 1, in progress 0, hiccups 0, segs 3, step errors 0, maxLate 0 maxPrep 14, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0, ebfmin 0.00 max 0.00
    Peak sync jitter -6/8, peak Rx sync delay 185, resyncs 0/0, next timer interrupt due in 4 ticks, enabled, next step interrupt due in 3691560387 ticks, disabled
    VIN voltage: min 24.2, current 24.2, max 24.3
    V12 voltage: min 12.0, current 12.1, max 12.1
    MCU temperature: min 31.9C, current 39.2C, max 39.2C
    Last sensors broadcast 0x00000000 found 0 207 ticks ago, 0 ordering errs, loop time 0
    CAN messages queued 7691, send timeouts 0, received 4882, lost 0, errs 0, boc 0, free buffers 38, min 38, error reg 0
    dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 278, adv 37137/37137
    Closed loop driver 0 mode: closed loop, pre-error threshold: 2.00, error threshold: 4.00, encoder type linearComposite, position -32
    Shaft: Encoder reverse polarity: no, full rotations 0, last angle 10911, minCorrection=-30.7, maxCorrection=26.1, agc 117, mag 4559, no error
    Lin: Encoder reverse polarity: no, raw count 65504
    Tuning mode: 0, tuning error: 0x10, collecting data: no
    Control loop runtime (us): min=5, max=66, frequency (Hz): min=24, max=17857
    Accelerometer: none
    I2C bus errors 12, nak
    undefined 1 Reply Last reply 26 Mar 2025, 08:37 Reply Quote 0
    • undefined
      dc42 administrators @btmclain
      last edited by 26 Mar 2025, 08:37

      @btmclain we've seen this once before. The cause was identified as high backlash in the drive chain between the motor and the axis. In the version 3.6.0-rc.1+3 binaries at https://www.dropbox.com/scl/fo/geqmn8gbn97n6b587mkbk/AJ2hBIqO-L57_QpR_uqHJ9c?rlkey=fw37wycbp2gil8rvxhe7aopy7&dl=0 I've increased the amount of backlash allowed when using a linear composite encoder, so that version might work for you. To use it you will need to update your whole system to firmware 3.6. If you are running in SBC mode then update to 3.6.0-rc.1 first, then you can install the 3.6.0-rc.1+3 binary on the 1HCL.

      Duet WiFi hardware designer and firmware engineer
      Please do not ask me for Duet support via PM or email, use the forum
      http://www.escher3d.com, https://miscsolutions.wordpress.com

      1 Reply Last reply Reply Quote 0
      • undefined btmclain marked this topic as a question 27 Mar 2025, 05:17
      • undefined btmclain marked this topic as a regular topic 27 Mar 2025, 05:17
      • undefined
        btmclain
        last edited by 27 Mar 2025, 18:47

        @dc42 Thank you for the reply!

        We went through the steps that you recommended and tried the binaries but still are facing the same error. We have noticed that there is a jerk at the beginning of the quadrature calibration that may be causing us to skip steps. We do not see this jerky motion during normal operation or during the magnetic encoder calibration. Do you have any idea of what could be causing this? Our driver configurations are all listed above.

        undefined undefined 2 Replies Last reply 28 Mar 2025, 17:48 Reply Quote 0
        • undefined
          ironhydroxide @btmclain
          last edited by 28 Mar 2025, 17:48

          Have you tried the calibration steps manually?

          once you have the magnetic encoder calibrated once you should not have to calibrate it again unless you change the mounting or magnet.

          undefined 1 Reply Last reply 28 Mar 2025, 22:05 Reply Quote 0
          • undefined
            btmclain @ironhydroxide
            last edited by 28 Mar 2025, 22:05

            @ironhydroxide Is there a way to manually perform the calibration for the linear encoder? It is my understanding that we cannot use the system until both encoders have been calibrated. Thank you for the reply!

            undefined 1 Reply Last reply 31 Mar 2025, 14:25 Reply Quote 0
            • undefined
              ironhydroxide @btmclain
              last edited by 31 Mar 2025, 14:25

              @btmclain By "manually" i mean not in a homing macro, but by sending the gcode manually either in the DWC console or connected SBC.
              But after rereading your first post, I assume that's what you've done.

              I think your issue may lie in the initial configuration of the encoder. the C parameter should be the number of cycles from the quadrature encoder per motor revolution.
              I don't see anywhere you specify the motion relationship between motor and linear encoder, the linear encoder you specify has a 5um/pulse output, (20um/cycle)
              With your C value of 1000 that works out to a movement of 20mm/motor rotation. is that correct?

              Are you doing a small motor movement in open loop mode before attempting calibrations?

              When playing with my setup I was able to somehow get the system to move in closed loop with only a magnetic encoder calibration, then I was able to confirm the linear encoder cycles/rotation value (i had to iterate a few times as the documentation says Pulses per revolution, I believe it should say cycles/revolution instead as that is what I ended up at to get the correct movement) Once I had the C value in the ballpark I was able to get the system to calibrate the Quadrature encoder (M569.6 V1) successfully.

              undefined 1 Reply Last reply 31 Mar 2025, 17:55 Reply Quote 1
              • undefined
                dc42 administrators @btmclain
                last edited by 31 Mar 2025, 17:07

                @btmclain there should not be a jerk at the star of encoder calibration. Please post a video showing exactly what you mean.

                If you configure the system to use just the magnetic encoder, does your system behave correctly, and is motion smooth?

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                undefined 1 Reply Last reply 31 Mar 2025, 17:59 Reply Quote 0
                • undefined
                  btmclain @ironhydroxide
                  last edited by 31 Mar 2025, 17:55

                  @ironhydroxide Thank you for the reply. Our system is currently setup to do 5mm/rev of travel. Yes, we have been doing some small motor movements before beginning the calibration. We tried your suggestion of implementing cycles/rev instead of counts/rev for the C parameter but unfortunately no luck.

                  1 Reply Last reply Reply Quote 1
                  • undefined
                    btmclain @dc42
                    last edited by 31 Mar 2025, 17:59

                    @dc42 We have recorded a video showing both calibration routines but I am unable to post a link because of my reputation. Do you have another option for getting the video link to you?

                    The motion is fine and smooth for operation during the magnetic cycle. You can hear a loud jerk at the beginning of the linear encoder calibration cycle, quickly followed by the calibration failing.

                    Thank you!

                    undefined 1 Reply Last reply 31 Mar 2025, 18:49 Reply Quote 2
                    • undefined
                      droftarts administrators @btmclain
                      last edited by 31 Mar 2025, 18:49

                      @btmclain said in Linear Quadrature Encoder Calibration Error:

                      We have recorded a video showing both calibration routines but I am unable to post a link because of my reputation.

                      I've upvoted a couple of your posts, so you should be able to post it. It's a forum anti spam measure.

                      Ian

                      Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                      undefined 1 Reply Last reply 31 Mar 2025, 19:49 Reply Quote 0
                      • undefined
                        btmclain @droftarts
                        last edited by 31 Mar 2025, 19:49

                        @droftarts Excellent thank you!

                        Here is the video. It first runs through the magnetic encoder calibration which sounds smooth. You can hear the jerk at the beginning of the linear encoder calibration.

                        https://photos.app.goo.gl/6C1YT96pYNYoVGq28

                        undefined 1 Reply Last reply 1 Apr 2025, 12:00 Reply Quote 0
                        • undefined
                          ironhydroxide @btmclain
                          last edited by 1 Apr 2025, 12:00

                          @btmclain I see you have standstill current at 0% (M917 X0), have you tried commenting out this line, or increasing the standstill current value?

                          on my system when I add the M917 X0 I also get this clunk. Removing it and I have no clunk when tuning.

                          1 Reply Last reply Reply Quote 2
                          4 out of 12
                          • First post
                            4/12
                            Last post
                          Unless otherwise noted, all forum content is licensed under CC-BY-SA