Understanding and using quadrature encoders - The Byte Sized Engineer | DigiKey

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น • 15

  • @earthlightsmusic2743
    @earthlightsmusic2743 10 หลายเดือนก่อน +1

    This is a good beginning. The ultimate is where your ISR handles a change of state on either input A or input B, so you get the maximum possible resolution of encoder position.

  • @f-s-r
    @f-s-r 10 หลายเดือนก่อน +1

    That's surprinsingly easy and very clever. Great explanation!!

  • @parkesdj
    @parkesdj 10 หลายเดือนก่อน +3

    Great video very clearly explained. I have a question though. If you are using CHANGE to trigger the interrupt, won’t it double count because you will trigger on both the rising and falling edges.

  • @shashikantsingh6555
    @shashikantsingh6555 3 หลายเดือนก่อน

    Wow!! This is so far the best explanantion for encoders

  • @paulz8750
    @paulz8750 10 หลายเดือนก่อน

    Great video.
    Wish I'd seen it sooner.
    Just like you, I've spent days too, looking at everything else thinking the problem is elsewhere.

  • @bob_mosavo
    @bob_mosavo 10 หลายเดือนก่อน +1

    Thanks, Zack 👍

  • @jeremiahbullfrog9288
    @jeremiahbullfrog9288 10 หลายเดือนก่อน

    Don't you also need to use an atomic_block to prevent the ISR from updating the long variable in the middle of trying to read it in the main loop? ...or does the arduino framework handle this autmotically?

  • @JonathanRansom
    @JonathanRansom 10 หลายเดือนก่อน

    I need to play with some encoders. Great video!

  • @danielatbasementtech
    @danielatbasementtech 10 หลายเดือนก่อน

    Very clearly explained ... great lesson.

  • @larrybud
    @larrybud 10 หลายเดือนก่อน +2

    Great stuff!

  • @JonitoFischer
    @JonitoFischer 10 หลายเดือนก่อน

    There are microcontrollers that have a dedicated peripheral to handle your quadrature encoder without handling gpio interrupts and checking pin state manually.

  • @saddle1940
    @saddle1940 10 หลายเดือนก่อน +2

    Watch out, the code doesn't miss pulses, it can now add phony pulses. Lots of jobs with quadrature encodered motors need to halt and hold position, but if yours bounces back and forward on the single interrupt edge, you may miss it being a pulse opposite to the last one.
    The best way to do this is to interrupt on one line, then change the interrupt to the other line. That way you can bounce up and down on one line, but after the first change, it will ignore it. You only look at the stable, non-interrupt input.
    The code should be: On an interrupt on line A, record the state of line B and change the active interrupt to line B. On an interrupt on line B, record the state of line A and change the active interrupt to line A. The recorded AB states tell you the rotation direction at each interrupt.
    Had many problems with software interrupted quadrature counting on long lead screws that "ring" (rotationally vibrate) as they hit a physical end stop or work piece.

  • @DanielSimu
    @DanielSimu 10 หลายเดือนก่อน

    I'm confused about the comment that it's a bad idea to use mechanical switches. Aren't most basic dial encoders (the ones you typically turn by hand) operated somewhat like this? (but with contacts instead of bumps)
    Also, as for magnetic encoders, what's the benefit of using a quadrature encoder when it's also cheap and effective to read absolute position using a diametric magnet?

    • @LubosMedovarsky
      @LubosMedovarsky 10 หลายเดือนก่อน +1

      Simply put, mechanical contacts make sparks, which translates to chaotic sequence of ones and zeros. This erroneous state is then interpreted incorrectly as missed counts and incorrect direction. Engineers prefer being sure instead.

  • @SweSausage
    @SweSausage 9 หลายเดือนก่อน

    Very good video, thank you