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

    Inconsistent results with optical encoder wheel filament sensor

    Scheduled Pinned Locked Moved Solved
    Filament Monitor
    9
    168
    11.8k
    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.
    • alankilianundefined
      alankilian
      last edited by

      @JohnOCFII What version are you running?

      I can make a test build with a "Filter-time" parameter in the setup that ignores multiple edges for a minimum time before counting progress again.

      I think you could set the time to 0.2 Seconds and you'd then get good results.

      How fast were you extruding compared to the range of extrusion speeds you expect to use?

      SeemeCNC Rostock Max V3 converted to V3.2 with a Duet2 Ethernet Firmware 3.2 and SE300

      JohnOCFIIundefined 1 Reply Last reply Reply Quote 0
      • alankilianundefined
        alankilian @JohnOCFII
        last edited by

        @JohnOCFII Or I could make you a test build with a new filament sensor type that says: "Filament is present if I get an edge at least every <Q> millimeters of filament when extruding."

        SeemeCNC Rostock Max V3 converted to V3.2 with a Duet2 Ethernet Firmware 3.2 and SE300

        JohnOCFIIundefined 1 Reply Last reply Reply Quote 0
        • JohnOCFIIundefined
          JohnOCFII @alankilian
          last edited by

          @alankilian said in Inconsistent results with optical encoder wheel filament sensor:

          @JohnOCFII What version are you running?

          Board: Duet 2 Ethernet (2Ethernet)
          Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)

          I can make a test build with a "Filter-time" parameter in the setup that ignores multiple edges for a minimum time before counting progress again.

          I think you could set the time to 0.2 Seconds and you'd then get good results.

          How fast were you extruding compared to the range of extrusion speeds you expect to use?

          That capture was made at 15mm/sec. My standard profile goes up to 150mm/sec for infill.

          1 Reply Last reply Reply Quote 0
          • JohnOCFIIundefined
            JohnOCFII @alankilian
            last edited by

            @alankilian said in Inconsistent results with optical encoder wheel filament sensor:

            @JohnOCFII Or I could make you a test build with a new filament sensor type that says: "Filament is present if I get an edge at least every <Q> millimeters of filament when extruding."

            Hmm... Yes, that might be the most straightforward thing to try.

            1 Reply Last reply Reply Quote 0
            • arhiundefined
              arhi
              last edited by

              bouncing is 70-100ms .. that's long, but if that analog capture is any good the signal is actually pretty straightforward and just using ST as mentioned by @alankilian might solve 99% of the issues ... it will not solve them all, but if that analog part is true ST will get it to usable state.

              74LVT14

              power with 3v3, output will be 0/3v3, and input is 5V tolerable (actually survives up to 7V)

              1 Reply Last reply Reply Quote 0
              • arhiundefined
                arhi
                last edited by

                you are using connlcd3 or ENC_B and that's from what I see PC7 pin

                from the datasheet

                a2e8aeea-13f9-4548-a90d-9ee9163a6af6-image.png

                I think PC7 can be configured and Schmitt input directly in the firmware. I can't find here if we can configure pin as Schmitt input by addingt something to the name like we can for invert and pullup. IMHO any endstop input should be configured with Schmitt input, dunno if it is or not...

                JohnOCFIIundefined 1 Reply Last reply Reply Quote 0
                • JohnOCFIIundefined
                  JohnOCFII @arhi
                  last edited by JohnOCFII

                  @arhi said in Inconsistent results with optical encoder wheel filament sensor:

                  you are using connlcd3 or ENC_B and that's from what I see PC7 pin

                  IMHO any endstop input should be configured with Schmitt input, dunno if it is or not...

                  I'm thinking I should try a different end stop connection to test. I can do that tomorrow afternoon.

                  In the meantime, I was winding down for bed with a little light reading: https://www.digikey.com/htmldatasheets/production/386707/0/0/1/74lvt14.html

                  1 Reply Last reply Reply Quote 0
                  • JohnOCFIIundefined
                    JohnOCFII
                    last edited by

                    Well, this is interesting.

                    I moved the filament sensor from the
                    CONN_LCD connection to the E1_STOP connection. I ran a similar vase mode cylinder (no top or bottom) and my DUET M591 results were much more consistent than anything I've seen. Speed was 15mm/sec.

                    Pulse-type filament monitor on pin e1stop, disabled, sensitivity 1.200mm/pulse, allowed movement 30% to 1500%, check every 5.0mm, measured sensitivity 4.054mm/pulse, measured minimum 28%, maximum 32% over 527.0mm
                    

                    I can update the L parameter to be 4 and try again.

                    I also captured a trace, and the Saleae still sees the messy start and end of the pulse. If these tests hold up, does that imply that the Duet RRF firmware is treating the CONN_LCD connection differently the the other endstops?

                    Here's a link to the Saleae capture for the above test: https://1drv.ms/u/s!ApuOkxTDmZEzgf2ue8OdskJFAV4KT9Q?e=ucEW8v

                    arhiundefined 1 Reply Last reply Reply Quote 0
                    • arhiundefined
                      arhi @JohnOCFII
                      last edited by

                      @JohnOCFII maybe when pin for e1stop is configured the schmitt trigger input is turned on.. or there's input buffer with schmitt trigger input on the board already... but 28-32% seems very good

                      JohnOCFIIundefined 1 Reply Last reply Reply Quote 0
                      • JohnOCFIIundefined
                        JohnOCFII @arhi
                        last edited by

                        @arhi said in Inconsistent results with optical encoder wheel filament sensor:

                        @JohnOCFII maybe when pin for e1stop is configured the schmitt trigger input is turned on.. or there's input buffer with schmitt trigger input on the board already... but 28-32% seems very good

                        Could be. Now to do a few more tests to confirm that wasn't a fluke. I'll do another vase mode test, then move on to a regular print that includes a variety of moves up to 150mm/sec. I may also try the original wheel with more, thinner spokes.

                        John

                        1 Reply Last reply Reply Quote 0
                        • JohnOCFIIundefined
                          JohnOCFII
                          last edited by

                          Here's a longer vase mode cylinder. Not quite as tight as the last one, but still a reasonable range, it would seem.

                          Pulse-type filament monitor on pin e1stop, disabled, sensitivity 4.000mm/pulse, allowed movement 30% to 1500%, check every 5.0mm, measured sensitivity 4.060mm/pulse, measured minimum 86%, maximum 109% over 1023.1mm
                          
                          1 Reply Last reply Reply Quote 0
                          • arhiundefined
                            arhi @arhi
                            last edited by

                            @arhi said in Inconsistent results with optical encoder wheel filament sensor:

                            dunno that sound really bad, maybe move the connection to the C"^e0stop" connector, dunno if it makes a difference but I'm not getting that big span on that pin

                            😄

                            1 Reply Last reply Reply Quote 0
                            • JohnOCFIIundefined
                              JohnOCFII
                              last edited by

                              Sure - I can try e0stop. I'll do that tomorrow. I'd agree the result isn't great - but it was better than those results I had racing above 1000.

                              arhiundefined 1 Reply Last reply Reply Quote 0
                              • arhiundefined
                                arhi @JohnOCFII
                                last edited by

                                @JohnOCFII e0stop is for sure identical as e1stop 😄 no need to test e0stop if you are already found that e1stop will work ok 🙂

                                JohnOCFIIundefined 1 Reply Last reply Reply Quote 1
                                • JohnOCFIIundefined
                                  JohnOCFII @arhi
                                  last edited by

                                  @arhi said in Inconsistent results with optical encoder wheel filament sensor:

                                  @JohnOCFII e0stop is for sure identical as e1stop 😄 no need to test e0stop if you are already found that e1stop will work ok 🙂

                                  Yeah, I certainly hope e1stop and e0stop are treated the same in the firmware.

                                  Now to do more testing and see what sort of range I'll get. I'm sure as I move back to a normal profile with Z-hop, pressure advance, etc, the bounds will get larger. I figure I'll do a few more of these consistent 15mm/sec tests, perhaps with different encoder wheels, to see what range I'll get under ideal conditions. It is also worth watching the logic analyzer to see if I'm getting consistent patterns.

                                  1 Reply Last reply Reply Quote 0
                                  • alankilianundefined
                                    alankilian
                                    last edited by alankilian

                                    [EDIT] I got myself confused into thinking these bounces were incoming signals on this pin and tht the filter would help reduce them.

                                    BUT the bounces are really just threshold-crossings due to a slowly-moving signal and so this filter will not improve it. It actually makes the situation worse (depending on how much is due to the LED/Receiver slowly changing and how much due to noise on the signal wire.)

                                    So, don't listen to what I say below.

                                    @JohnOCFII The schematic shows a lowpass filter on the E1_STOP input pin that is not on the ENC_B pin.

                                    Stop.png

                                    It's got a cutoff frequency of about 8000 Hz which would get rid of some of those bounces.

                                    If you want to, you could try to probe one of C111 or R95 and you could see the signal that's actually getting to the micro controller.

                                    SeemeCNC Rostock Max V3 converted to V3.2 with a Duet2 Ethernet Firmware 3.2 and SE300

                                    JohnOCFIIundefined 1 Reply Last reply Reply Quote 0
                                    • fractalengineerundefined
                                      fractalengineer
                                      last edited by

                                      Wow you've gone hard at it; it's been incredibly valuable going through the thread

                                      I always had wide range but fairly consistent with mine; so I settled with increased tolerances and call it a day

                                      It seems that RRF 3.2 changes the way it deals with filament sensor; could any of the changes be relevant to improving sensor accuracy?

                                      https://github.com/Duet3D/RepRapFirmware/blob/v3-dev/WHATS_NEW_RRF3.md

                                      Railcore II ZL

                                      1 Reply Last reply Reply Quote 0
                                      • JohnOCFIIundefined
                                        JohnOCFII @alankilian
                                        last edited by

                                        @alankilian said in Inconsistent results with optical encoder wheel filament sensor:

                                        [EDIT] I got myself confused into thinking these bounces were incoming signals on this pin and tht the filter would help reduce them.

                                        BUT the bounces are really just threshold-crossings due to a slowly-moving signal and so this filter will not improve it. It actually makes the situation worse (depending on how much is due to the LED/Receiver slowly changing and how much due to noise on the signal wire.)

                                        So, don't listen to what I say below.

                                        So -- it might still be worth building the separate debouncing Schmitt trigger?

                                        alankilianundefined 1 Reply Last reply Reply Quote 0
                                        • alankilianundefined
                                          alankilian @JohnOCFII
                                          last edited by

                                          @JohnOCFII Yes, I think adding a Schimtt-Trigger would be the best way for you to get repeatable results.

                                          Any old Schmitt-trigger input device will work for you as long as it can deal with 3.3 Volts. You don't need a fancy high-speed one.

                                          CD40106 would work well. If you want a DIP package, here's one:
                                          https://www.digikey.com/en/products/detail/texas-instruments/CD40106BE/376602

                                          Also, I had lunch with Otto Schmitt one time. He was an interesting fellow.

                                          If you want help wiring it up, let me know.

                                          SeemeCNC Rostock Max V3 converted to V3.2 with a Duet2 Ethernet Firmware 3.2 and SE300

                                          JohnOCFIIundefined 2 Replies Last reply Reply Quote 0
                                          • JohnOCFIIundefined
                                            JohnOCFII @alankilian
                                            last edited by

                                            @alankilian said in Inconsistent results with optical encoder wheel filament sensor:

                                            @JohnOCFII Yes, I think adding a Schimtt-Trigger would be the best way for you to get repeatable results.

                                            Any old Schmitt-trigger input device will work for you as long as it can deal with 3.3 Volts. You don't need a fancy high-speed one.

                                            CD40106 would work well. If you want a DIP package, here's one:
                                            https://www.digikey.com/en/products/detail/texas-instruments/CD40106BE/376602

                                            Also, I had lunch with Otto Schmitt one time. He was an interesting fellow.

                                            If you want help wiring it up, let me know.

                                            I'll order a couple from DigiKey. Need to think up a few others things to add to the order. It just feels weird to order something for under a dollar, than pay $8 in shipping...

                                            I'll post my guess at wiring after looking at the datasheet and before I power up anything.

                                            Thanks!

                                            John

                                            arhiundefined 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA