I have read 20 odd tutorials on rotary encoder. But those miss the philosophy and application of encoders. This video is better than all those 20 videos.
OH, man, you nailed it. well explained with demo integration. Thank you for sharing knowledge and for giving the opportunity to a person like me to evolve and progress. great video with great value
At 9:47, there is an error in explanation: If B is high (should be low) on A's falling edge, then we know that disc is rotating clockwise At 10:02, there is an error in explanation: if there is a falling edge on A and we detect B is low (should be high) then we know that the disc is rotating counter-clockwise
So this is the first time I'm watching a SparkFun video - my first impression was like "whoa this guy with the stereotypical scientist costume... wtf is this a comedy?" but for some reason I kept watching and in the end I subscribed. Well done.
@ 9:51, "If B is HIGH on A's falling edge, then we know that the disk is rotating Clockwise" Wouldn't we be able to tell if the disk is rotating Clockwise when B is LOW on A's falling edge? Using the videos diagram, I think this logic makes sense. If the disk is rotating Counterclockwise, B would read HIGH on A's falling edge. Please correct me if I'm wrong, I would like to make sure I understand the rotary encoder logic.
Thanks soooo much for this. You don't know how hard it was to find a good tutorial on this subject. Its funny but I have about 4 Arduino books on bots and not a one talk about this. They all talk about line following and other easy stuff. SparkFun, you have made a customer today!!!!
If I may share my experience, instead of comparing the rising and falling moments to determine the direction, I'm simply using flags for moving forward, which I set at the end of every direction function and reset at the begining of it. Therefore I always know when my robot is moving forward or spinning/turning to a side, or moving back etc.
Not exactly my point. I'm talking about integers or booleans set or reset every time on every action. Then you will have a "source" for many conditions after.
Hi, thanks for the video. I recently had an idea for the navigation for bot I’m designing using encoders to essentially map a grid for the bot to travel within. I think my idea is doable. What are your thoughts?
Use a good quality encoder. Otherwise go for stepper motor. I personally tried all three. Servo (real rc servo only rotate 180° , 360° servo doesn't have feedback so there just plain dc motors with speed control) , dc motor with encoders and stepper.
Ncheeta Morero read about H bridges. 2 digital output pins for every wheel determine the direction of rotation + 1 pwm output (again, 1 for each wheel) to control the speed of that wheel. This should explain it!
For each motor there are two pins and one pwm pin. For two motors that's 6 pins. There is one standby pin that has to be held high for motor driver to work. And then there are one pin each for encoder output.( If u r using quadrature encoders, then there are 2pins each for a motor). So in total there are 6+1+1+1=9 pins.
@@АльбертИванов-ц4х I'm quite space limited. That's why I was looking for magnetic discs with a hall sensor. But I ordered the ones from Pololu by now and they work perfectly
Can anyone help me? I don't understand this section: // Constrain power to between -255 and 255 power_a = constrain(power_a, -255, 255); power_b = constrain(power_b, -255, 255); Why constrain power between -255 and 255? motor speed only 0-255. Thank you
Yes, if you watch the video at around 7:53 (ruclips.net/video/oLBYHbLO8W0/видео.htmlm53s), you'll see that I set the robot to measure millimeters and stop after it's traveled 1000 mm. For a human-scale example, measuring wheels (like this one www.amazon.com/TR-Industrial-Collapsible-Measuring-Yellow/dp/B01018D7MS/ref=lp_3753421_1_1) work on the same principle. As you walk with it on the ground, a device counts the number of rotations and by knowing the circumference of the wheel, you can figure out how far you've walked with it.
Your explanation for graph at 3:40 is faulty. If one is rising edge and one is falling, what is with the empty space in the schematic? If u are using bipolar hall senzor that explanation is ok but change the simplification animation then.
Many of the last generation of mass production VCR's use them as well. I've taken several from old TV's that had integrated VCR's. They are usually mounted on stands that are easier to incorporate in other hacked designs too. You can also grab the LED's from a remote control and the IR receiver to make your own encoder, although you need the simple kind. A lot of newer IR receivers have integrated IC's in them and that can complicate the design.
Why INT? At least my Arduino doesn't have enough pins that I need int. At least byte thick is enough for me! But as in every example - a few delay and you can use the example for nothing else - congratulations.
Oops, •¿° d x pi =c But won't d vary with weight on the axel? Oh,, and is there a difference between absolute encoder and a gray code... oops. I just dated myself....
The diameter might decrease slightly if your wheels are particularly squishy. A gray code is used to correct the potential issue of an absolute encoder counting false states between two real states (en.wikipedia.org/wiki/Rotary_encoder#Ways_of_encoding_shaft_position).
I don'y get why, with all the popularity of "robots", people are not being taught about feedback. Would you build a temperature control system with no feedback? No! Real encoders feature 3 channels; A, B, Index. The method demonstrated here cannot detect a change of direction. Forget the interrupt counter and grab a LS7366 (SPI). Grab a DC motor with a HEDS encoder and learn about PID control.
Every time I see a quadrature encoder I imagine the inventor smiling when he thinks of it. It's just such a beautiful concept.
I have read 20 odd tutorials on rotary encoder. But those miss the philosophy and application of encoders. This video is better than all those 20 videos.
OH, man, you nailed it. well explained with demo integration. Thank you for sharing knowledge and for giving the opportunity to a person like me to evolve and progress. great video with great value
At 9:47, there is an error in explanation: If B is high (should be low) on A's falling edge, then we know that disc is rotating clockwise
At 10:02, there is an error in explanation: if there is a falling edge on A and we detect B is low (should be high) then we know that the disc is rotating counter-clockwise
yeah i noticed this one too. thanks for mentioning it. a bit confused but overall the whole video explanation is very clear.
Getting me through my Masters degree in engineering, thanks Bud
So this is the first time I'm watching a SparkFun video - my first impression was like "whoa this guy with the stereotypical scientist costume... wtf is this a comedy?" but for some reason I kept watching and in the end I subscribed. Well done.
@ 9:51, "If B is HIGH on A's falling edge, then we know that the disk is rotating Clockwise" Wouldn't we be able to tell if the disk is rotating Clockwise when B is LOW on A's falling edge? Using the videos diagram, I think this logic makes sense. If the disk is rotating Counterclockwise, B would read HIGH on A's falling edge. Please correct me if I'm wrong, I would like to make sure I understand the rotary encoder logic.
This is fantastic, Shawn and team. Well done, thanks.
Thanks soooo much for this. You don't know how hard it was to find a good tutorial on this subject. Its funny but I have about 4 Arduino books on bots and not a one talk about this. They all talk about line following and other easy stuff. SparkFun, you have made a customer today!!!!
Simply superb, good piece of information for new entrants like me in the world of Arduino. Do keep sharing your knowledge....
That was great!Flipped from the very basic to the relatively advanced - lots of info. Thanks
something similar for devs regarding centering a div.
the explanation was very good!
Love it, excellent explanation on the workings of encoders.
Thank you.
If I may share my experience, instead of comparing the rising and falling moments to determine the direction, I'm simply using flags for moving forward, which I set at the end of every direction function and reset at the begining of it. Therefore I always know when my robot is moving forward or spinning/turning to a side, or moving back etc.
Not exactly my point.
I'm talking about integers or booleans set or reset every time on every action. Then you will have a "source" for many conditions after.
This video is gold!
Brilliant! This work is much appreciated. Please keep them coming.
Exactly what I am looking for.
Great lecture! Thank you so much🙏🙏
We're do you buy this encoder in the video
remarkable, well explained. Good work Shawn.
Great tutorial...One step more closer to my Project...Thanks
thank you for that great work ❤
Wow ! So Far your video is so informative about this topic and Even special for me because 1:26 now i know where to find it near by .👍
Hi, thanks for the video. I recently had an idea for the navigation for bot I’m designing using encoders to essentially map a grid for the bot to travel within. I think my idea is doable. What are your thoughts?
Does Sparkfun carry any "thru-shaft" rotor encoders? I'm wondering how to prototype a inverted pendulum without wires creating issues.
How would you mount the disc onto the output shaft?
Can I use a Rotary Encoder in a wind vane circuit for wind direction?
Can we use rotary encoder for sensing the projection's xy coordinates?
As we can use Lidar for the same.
Amazing explanation. Your the best.
Sir how use camera in a remote car using arsduino plz reply
PACKED with info...luv it.
is it the same for optical encoders ?
Do you guys have something with draw wire encoder for Arduino?
would the same code work for optical encoders?
Hi sir
Could u tell me please
Can we use PushPull encoder instead of TTL or HTL
Thanks for this. I was thinking about buying a servo but now I know I could just make a rotary encoder instead.
Use a good quality encoder. Otherwise go for stepper motor. I personally tried all three. Servo (real rc servo only rotate 180° , 360° servo doesn't have feedback so there just plain dc motors with speed control) , dc motor with encoders and stepper.
There is so many pins defined....i only have the two encoders. The others i don't understand what they are, please explain.
Ncheeta Morero read about H bridges. 2 digital output pins for every wheel determine the direction of rotation + 1 pwm output (again, 1 for each wheel) to control the speed of that wheel. This should explain it!
For each motor there are two pins and one pwm pin. For two motors that's 6 pins. There is one standby pin that has to be held high for motor driver to work. And then there are one pin each for encoder output.( If u r using quadrature encoders, then there are 2pins each for a motor). So in total there are 6+1+1+1=9 pins.
where can i buy the magnetic disk and hall effect sensor for this demo?
Hall effect sensor is available on e.g. banggood, eBay or AliExpress. Did you find any magnetic encoder disks?
thanks a lot sir,
i 've a question, is rotary encoder and shaft encoder mean the same thing?
How do you extend the shaft of the yellow motor in order to mount the encoder?, thanks
Francisco José Campos Arizmendi you buy a motor with shafts out both sides.
Where can I get those magnetic encoder discs? I only find those ones from pololu and I'd just like some more options...
Bastian Springer you can take cheap standard optical encoders, the result will be the same
@@АльбертИванов-ц4х I'm quite space limited. That's why I was looking for magnetic discs with a hall sensor. But I ordered the ones from Pololu by now and they work perfectly
I just try the code showed. But why do I get different value of ticks everytime the coding I uplod to arduino board?
Regard,
I'll make a library for this if you want
Are there any rotary encoders that are 0.75 inches?
Can a command from this encoder if connected to a priting head will print a 5meter long tape
This I want to sell in market
Can anyone help me? I don't understand this section:
// Constrain power to between -255 and 255
power_a = constrain(power_a, -255, 255);
power_b = constrain(power_b, -255, 255);
Why constrain power between -255 and 255? motor speed only 0-255.
Thank you
Roinaldo Pho it most probably is because it uses and 8 bit data system and can’t handle more than +/- 255.
@@roguepathfinder2477 microcontroller has an 8bit ADC.
zeus 0101 good to know! And i was almost right, that’s a win in my book.
Very interesting! Good explanations.
hi
how we can make dc motor as servo ? with encoder
or how can i control dc motor shaft to turn 20 degrees 45 degrees 360 degrees etc ?
You can however do not that these encoders are very inefficient.
Is it possible to measure distance using rotary encoders?
Yes, if you watch the video at around 7:53 (ruclips.net/video/oLBYHbLO8W0/видео.htmlm53s), you'll see that I set the robot to measure millimeters and stop after it's traveled 1000 mm. For a human-scale example, measuring wheels (like this one www.amazon.com/TR-Industrial-Collapsible-Measuring-Yellow/dp/B01018D7MS/ref=lp_3753421_1_1) work on the same principle. As you walk with it on the ground, a device counts the number of rotations and by knowing the circumference of the wheel, you can figure out how far you've walked with it.
Awesome video!
i am glad i found your channel. i have subbed looking forward to looking through your videos
How can we use this for raspberry pi? please help
Where can we find these magnetic encoder discs? Do they have a rpm sensing limit?
Depends on the hall effect sensor and the electronics detecting the pulses.
Thank You. You got me off on a I want to learn this stuff start.
Great tutorial
excellent all the way 😍
If I have single shaft bo motor and main motor shaft in no long so what I do.
Thank you so much!!!
Make it with n20 micro gear motor with encoder
Your explanation for graph at 3:40 is faulty. If one is rising edge and one is falling, what is with the empty space in the schematic?
If u are using bipolar hall senzor that explanation is ok but change the simplification animation then.
Awesome !
Nice!!!! Tks so much!
Best video
You didn't show how to adjust the speed of one wheel to keep up with the other. You just said could be done and blew past it.
pretty cool!
Kids, take apart your home printer to see an example of an optical encoder!!
A linear optical encoder (if it's an inkjet)
Many of the last generation of mass production VCR's use them as well. I've taken several from old TV's that had integrated VCR's. They are usually mounted on stands that are easier to incorporate in other hacked designs too. You can also grab the LED's from a remote control and the IR receiver to make your own encoder, although you need the simple kind. A lot of newer IR receivers have integrated IC's in them and that can complicate the design.
amazing
Thanx!
please add english subtitles. thanks in advance
perfect
GREAT
3:21
Why INT?
At least my Arduino doesn't have enough pins that I need int.
At least byte thick is enough for me!
But as in every example - a few delay and you can use the example for nothing else - congratulations.
Speaking about computer mouse, kids this days have no idea about the old school ball mouse
Please normalize your volume
Oops, •¿° d x pi =c
But won't d vary with weight on the axel?
Oh,, and is there a difference between absolute encoder and a gray code... oops. I just dated myself....
The diameter might decrease slightly if your wheels are particularly squishy. A gray code is used to correct the potential issue of an absolute encoder counting false states between two real states (en.wikipedia.org/wiki/Rotary_encoder#Ways_of_encoding_shaft_position).
* odometrie
Anyone else bothered by his rounding on multiple steps?
I don'y get why, with all the popularity of "robots", people are not being taught about feedback. Would you build a temperature control system with no feedback? No!
Real encoders feature 3 channels; A, B, Index. The method demonstrated here cannot detect a change of direction.
Forget the interrupt counter and grab a LS7366 (SPI). Grab a DC motor with a HEDS encoder and learn about PID control.
Nice vid with very annoying background music.
It's hard to believe that people who don't know how an encoder works, would buy anything from your store!
Well, I'm hoping that the video can teach someone about encoders, and it might entice them to look at our store. We were all beginners at one point :)
What a stupid music in the background. Have you heard this in your scool too?
Is this a tutorial or a personal show?
Great tutorial