• Tags
  • Documentation
  • Order
  • Register
  • Login
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.0k
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
    JohnOCFII @alankilian
    last edited by 1 Nov 2020, 22:14

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

    Hmmmmm.

    How do you know if that's supposed to have 5 Volts or 3.3 Volts?

    And if it is supposed to pull the signal high or low?
    And if you need to add an extra resistor or not?

    (I'll do some googling and see if I can answer my own questions.)

    🙂 I don't. Just going off the recommendations of the guy who designed this filament sensor project: https://www.thingiverse.com/thing:4445504

    Good thing I consider this just a learning experience. Because even at the end of the day, Best case it seems I'll be stuck with a 20-40mm "window" of filament passage before it'll trigger an issue. Might just go back to the switch for "filament out". It won't catch jams, but it'll reliably catch the case of filament out.

    But first, I'd like to figure out why my results are so much worse than what @fractalengineer sees. 🙂

    1 Reply Last reply Reply Quote 0
    • undefined
      JohnOCFII @arhi
      last edited by 1 Nov 2020, 22:23

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

      @JohnOCFII I'm more interested to see the levels you see on the duet board so measuring voltage between the signal pin (connlcd.encb) and gnd using voltmeter while slowly moving the encoder so to see what you have there for 0 (when that signal led is off) and what you have there for 1 (when that signal led is on) .. as I don't see a reason why would RRF detect these impulses for me and not for you unless there's something fishy with the voltage levels there ... how the cable is crymped etc etc..

      Voltage settles out at 3.2 when I pass a solid object between the optical sensor "arms." When nothing is between the arms, the voltage is not a clean, solid 0.0 but hovers in the 0.300-0.400 range.

      And also remember, this optical sensor board has an LED that is lit when there is no object breaking the beam, which turns off when the beam is broken.

      It seems like the sensor is sending what amounts to "on" or "off" but the Duet isn't dealing with it properly. This is firmware 3.1.1 on a Duet 2 Ethernet board.

      undefined undefined 2 Replies Last reply 1 Nov 2020, 23:33 Reply Quote 0
      • undefined
        arhi @JohnOCFII
        last edited by 1 Nov 2020, 23:33

        @JohnOCFII dunno I don't understand why firmware is not reading those pulses if they are around 0.2V and 3.2V they should be read properly on the input pin. Maybe @dc42 can shed some light on what might be happening, and how to test/debug. I'm clueless at this point

        1 Reply Last reply Reply Quote 0
        • undefined
          alankilian @JohnOCFII
          last edited by 1 Nov 2020, 23:37

          @JohnOCFII Those are perfect values for this sensor and the Duet should have no problems detecting them as pulses.

          I'll take a look deeper and we can see what the waveforms look like when you have the logic analyzer.

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

          1 Reply Last reply Reply Quote 0
          • undefined
            JohnOCFII
            last edited by 2 Nov 2020, 21:13

            The Logic Analyzer arrived! Here's some data. 🙂

            Screen Shot 2020-11-02 at 3.11.26 PM.png

            undefined 1 Reply Last reply 3 Nov 2020, 03:48 Reply Quote 1
            • undefined
              arhi @JohnOCFII
              last edited by 3 Nov 2020, 03:48

              @JohnOCFII that looks ok, signals are more/less clean ... should work 1/1

              if you grab a longer piece, do you see that during constant extrusion move signals are evenly spaced as one would expect?

              levels seem ok, ~3V and ~0V, timing seem ok .. using the "extruder endstop" input is the only other idea I have.. don't see why would that make any difference but I use the encoder endstop input and it works for me 🙂 ... now I still have some variance but I never reproduced this with many impulses and still "no data" on the sensor reading... @dc42 wrote that part of the code iirc and he should be able to say what might be wrong, the code for the pulse sensor itself, I looked month or two ago (and for laser sensor too) and I did not find anything weird there but..

              1 Reply Last reply Reply Quote 0
              • undefined
                alankilian
                last edited by 4 Nov 2020, 15:00

                That waveform looks OK.

                Can you try commanding something like a 120mm extrusion slowly and then turn the wheel so that you have 100 notches pass and see if you get near the right amount of detected extrusion?

                While capturing using the Saleae so we can also see the signal?

                If you could then post the Saleae capture file anyone can download the Saleae software and take a look at it with you.

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

                undefined 1 Reply Last reply 4 Nov 2020, 17:59 Reply Quote 0
                • undefined
                  JohnOCFII @alankilian
                  last edited by 4 Nov 2020, 17:59

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

                  Can you try commanding something like a 120mm extrusion slowly and then turn the wheel so that you have 100 notches pass and see if you get near the right amount of detected extrusion?

                  With the unit assembled, I can't visually see the encoder wheel. I can certainly run 120mm and we can see what the Logic Analyzer sees.

                  If you could then post the Saleae capture file anyone can download the Saleae software and take a look at it with you.

                  So far, my Saleae experience is connecting lead 0 and ground to the ground and signal connection to the optical sensor. I hit the big green button to start capture.

                  I need to do a bit more reading to see if there is anything else I should be setting up for a good capture.

                  Progress might be slow until Sunday, but I'll do what I can to make progress.

                  I really appreciate your hanging with me on this, @arhi and @alankilian

                  John

                  undefined 1 Reply Last reply 4 Nov 2020, 18:41 Reply Quote 0
                  • undefined
                    alankilian @JohnOCFII
                    last edited by 4 Nov 2020, 18:41

                    @JohnOCFII You don't need to connect lead #0 to ground.

                    You can just connect one of the GND leads to ground and lead #0 to your signal and then you can turn off the other signals for capture.

                    You can capture as slowly as the analyzer will run to make your capture files small.

                    Make sure you're set to 3.3 Volts also.

                    Then green-arrow and extrude.
                    Stop and File->Save Capture and you can post it.

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

                    undefined 2 Replies Last reply 4 Nov 2020, 20:11 Reply Quote 0
                    • undefined
                      JohnOCFII @alankilian
                      last edited by 4 Nov 2020, 20:11

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

                      You can just connect one of the GND leads to ground and lead #0 to your signal and then you can turn off the other signals for capture.

                      Yes that is what I did - I described it poorly.

                      You can capture as slowly as the analyzer will run to make your capture files small.

                      Make sure you're set to 3.3 Volts also.

                      Then green-arrow and extrude.
                      Stop and File->Save Capture and you can post it.

                      Sounds good. I've been slammed with meetings the last couple of days. I'll see if I can set this up tonight.

                      1 Reply Last reply Reply Quote 0
                      • undefined
                        JohnOCFII @alankilian
                        last edited by JohnOCFII 11 May 2020, 04:01 5 Nov 2020, 03:36

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

                        Then green-arrow and extrude.
                        Stop and File->Save Capture and you can post it.

                        I set up a capture during a vase mode cylinder print. Speed was 15mm/sec doing the vase. This was about the first 1/3rd of a 30 minute print. I know this isn't quite as controlled an example as a pure feed of 1000mm, but I needed to run the print anyway.

                        I captured this using the new Saleae Logic alpha software, version 2.3.13.

                        The capture is about 390 MB compressed (on disk). It's got both the digital and analog capture. I suppose I could have turned off the analog and saved some space.

                        Here's a link to the capture file: https://1drv.ms/u/s!ApuOkxTDmZEzgfznb3Mf2-ULLBN65XQ?e=cKZycH

                        And here's a timelapse: https://youtu.be/FcXaF9faE70

                        John

                        undefined 1 Reply Last reply 5 Nov 2020, 04:01 Reply Quote 0
                        • undefined
                          arhi @JohnOCFII
                          last edited by 5 Nov 2020, 04:01

                          @JohnOCFII that singnal is uber ugly and need to be debounced 😞

                          look at your capture here:

                          https://youtu.be/qrbtWI5o7Ik

                          question is if duet sees this many impulses but it's seen some of them for sure ... you need to add some debouncing circuit between duet and that encoder

                          1 Reply Last reply Reply Quote 0
                          • undefined
                            alankilian
                            last edited by 5 Nov 2020, 13:04

                            I agree that it's the slow rise-time of the signal causing multiple events to be detected.

                            I didn't realize you were going to get one full pulse every six seconds.

                            So, how to deal with it?

                            A good way to do it would be to add a "Schmitt trigger" inverter chip. Would wiring up one IC to power and your signal be too intimidating?

                            You could also try just doing a resistor-capacitor debounce circuit and it might work until your wheel stops at just EXACTLY the wrong place and then your print will fail.

                            Here's a beginner explanation on the math you can use to decide resistor and capacitor values:

                            https://www.allaboutcircuits.com/technical-articles/switch-bounce-how-to-deal-with-it/

                            Here's one from more of an expert:
                            http://www.ganssle.com/debouncing.htm
                            http://www.ganssle.com/debouncing-pt2.htm

                            It would also be possible to make some firmware changes (As described in Ganssle part 2. Probably listing 1 since we've got a very powerful processor.)

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

                            undefined 1 Reply Last reply 5 Nov 2020, 14:23 Reply Quote 0
                            • undefined
                              JohnOCFII @alankilian
                              last edited by 5 Nov 2020, 14:23

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

                              A good way to do it would be to add a "Schmitt trigger" inverter chip. Would wiring up one IC to power and your signal be too intimidating?

                              Fascinating!

                              Wiring up a solution would be a fun challenge. Finding the "recipe" of correct components, etc., will be the difficult part for me.

                              I'm curious what others trying to use an optical sensor are seeing? I don't think @fractalengineer ever saw the wild results I'm seeing. Do I just have a particularly bad batch of optical sensors?

                              Anyway, I'll read through those links in more detail when time permits.

                              Thanks to you both!

                              John

                              undefined 1 Reply Last reply 5 Nov 2020, 17:55 Reply Quote 0
                              • undefined
                                arhi
                                last edited by 5 Nov 2020, 15:58

                                I am not sure ST alone will be a solution with a bounce so long. I think a comparator is something you'd wanna add here with ne555 circuit for proper debouncing ... on the other hand, instead of all that you could use some attiny44 or pic12f508 or something similar and make programmable debouncing circuit that one would embed in the sensor... in that case you could see what's the output of the laser/magnet sensor as they communicate with duet instead of just sending pulses

                                1 Reply Last reply Reply Quote 0
                                • undefined
                                  alankilian @JohnOCFII
                                  last edited by 5 Nov 2020, 17:55

                                  @JohnOCFII I think adding a "sample frequency" parameter to the filament motion sensing code would be useful to the largest number of people.

                                  I'll download the code and see if I can make any suggestions there.

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

                                  undefined 1 Reply Last reply 5 Nov 2020, 18:00 Reply Quote 0
                                  • undefined
                                    JohnOCFII @alankilian
                                    last edited by 5 Nov 2020, 18:00

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

                                    @JohnOCFII I think adding a "sample frequency" parameter to the filament motion sensing code would be useful to the largest number of people.

                                    I'll download the code and see if I can make any suggestions there.

                                    As I mentioned WAY up thread, I think all we really need to know is "is the wheel turning?" If yes, assume everything is fine. If no, tell the Duet to pause. Only variable is how long does the state of "not turning" need to be present before pausing?

                                    John

                                    undefined 1 Reply Last reply 5 Nov 2020, 19:07 Reply Quote 0
                                    • undefined
                                      alankilian @JohnOCFII
                                      last edited by 5 Nov 2020, 19:07

                                      @JohnOCFII Can you just set the "Over" amount to a huge value?

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

                                      undefined 1 Reply Last reply 5 Nov 2020, 20:07 Reply Quote 0
                                      • undefined
                                        JohnOCFII @alankilian
                                        last edited by 5 Nov 2020, 20:07

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

                                        @JohnOCFII Can you just set the "Over" amount to a huge value?

                                        Hmm... Perhaps.

                                        Here's another odd data point. The two very first runs I did were within 200%. After than, I had days of testing where it would go from 30% to 3000%. But then, I started seeing those crazy high numbers, we'll above 10,000%. I do wonder if I'm chasing multiple issues.

                                        undefined 1 Reply Last reply 5 Nov 2020, 20:15 Reply Quote 0
                                        • undefined
                                          alankilian @JohnOCFII
                                          last edited by 5 Nov 2020, 20:15

                                          @JohnOCFII Is this the wheel that you have applies the sticky copper tape to and cut out windows?

                                          The sharper the windows are, the better results you'll get.

                                          You might also try taping copper tape to both the emitter and receiver and only have a narrow (1/16 inch) slot in the copper cover. That and a narrow (1/16 inch) opening windows in the encoder wheel might help.

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

                                          undefined 1 Reply Last reply 5 Nov 2020, 20:42 Reply Quote 0
                                          77 out of 168
                                          • First post
                                            77/168
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA