Timer counter increasing/decreasing by 4 because it counting each edges from both channels, if you change config for this timer then you should see increasing/decreasing by 2
Change Encoder Mode to T1 or T2 not both if I remember correctly that means which channel is master and it is depend when timer CNT will increase for CW or CCW
I can see how using T1 or T2 alone could work but how will it identify the jitters ? Since it only rely on the signal from 1 channel and then compare it with the signal from another channel at that particular instant, how will it know if it was a deliberate movement or a jitter
@@ControllersTech in t1 or t2 mode timer incrementing CNT by 2 so also you will have jitter filtering, but for sure it will not be so effective like in t1 and t2 mode. From reference if you use t1 or t2 one input is used as a clock and timer increasing/decreasing CNT depends on second input level, in t1 and t2 both inputs working as a clock (edge trigger f/r) and also as a signal (low/high), if edge will occured on t1 then timer "checking" t2 level and if edge will occured on t2 timer "checking" t1 level.
@@ControllersTech Manual says : Programmable counting rate x4: normal mode, all edges active a 1000 lines encoder will give 4000 counts per revolution x2: counts on input A (or B) only, but direction still determined with A and B “velocity mode”: encoder clock can be further prescaled if needed
the counter increases by 4 because the callback function is called upon the encoder mechanical zero, and because you used rising & falling edge detection. In the reference manual: "the user can obtain dynamic information (speed, acceleration, deceleration) by measuring the period between two encoder events using a second timer configured in capture mode. The output of the encoder which indicates the mechanical zero can be used for this purpose."
6:28 Why you think the prescaler will not work? Is it some documents about it? I use prescaller with value 3, and dont need to divide counter value by 4 in the future.
Your counts per click depends on the type of rotary encoder. My alps encounter does one count per click. I also have an encoder like yours which does 4 counts per click.
Thanks a lot for your great videos. It would be great if you could please make a video on how to read encoder with DMA. I think it is very helpful for high res encoder application
Hi @ControllersTech I've watched many videos of yours and I have to tell that you are amazing. Very understandable and interesting videos. I have one question about the encoder: why sometimes I see, between one step and another of the encoder, the timer reads 3 or 5 steps, instead of 4?
Thanks for sharing this video that is useful for me. I am wondering what software you used to code and to compile on this video. Can you share this software name to me, thanks in advance.
Hello, do you also know how to count an encoder like this with LL and not HAL? So functions won't start than with HAL_TIM_.... but with LL_TIM_..... We would like to know this because the names are a bit different then.
There is more to LL than just replacing the characters "HAL" with "LL". You need to have good understanding of the peripheral. Read the reference manual for that
It start counting clicks only after second click, after rotation start. If I do only one click, it is not counts it. STM32F413VG. P.S. Sorry, it was no name chinese encoder. Encoder from Bourns do it well, from the first click.
Hi Arun would you be interesting to have a real encoder , i have SICK encoders that can be programmed the number of pulses per revolution ,TTL or HTL outputs . let me know your preferences and will send it to you for more of your videos and experiments Jorge
Timer counter increasing/decreasing by 4 because it counting each edges from both channels, if you change config for this timer then you should see increasing/decreasing by 2
Change Encoder Mode to T1 or T2 not both if I remember correctly that means which channel is master and it is depend when timer CNT will increase for CW or CCW
I can see how using T1 or T2 alone could work but how will it identify the jitters ?
Since it only rely on the signal from 1 channel and then compare it with the signal from another channel at that particular instant, how will it know if it was a deliberate movement or a jitter
@@ControllersTech in t1 or t2 mode timer incrementing CNT by 2 so also you will have jitter filtering, but for sure it will not be so effective like in t1 and t2 mode. From reference if you use t1 or t2 one input is used as a clock and timer increasing/decreasing CNT depends on second input level, in t1 and t2 both inputs working as a clock (edge trigger f/r) and also as a signal (low/high), if edge will occured on t1 then timer "checking" t2 level and if edge will occured on t2 timer "checking" t1 level.
@@ControllersTech Manual says :
Programmable counting rate
x4: normal mode, all edges active
a 1000 lines encoder will give 4000 counts per revolution
x2: counts on input A (or B) only, but direction still determined
with A and B
“velocity mode”: encoder clock can be further prescaled if
needed
Incredible explanation, this channel deserves more subs
Very well explained! A lot of good information in a short video, thank you!
I cannot thank you enough. Your Videos are amazing.. thank you!
the counter increases by 4 because the callback function is called upon the encoder mechanical zero, and because you used rising & falling edge detection.
In the reference manual: "the user can obtain dynamic information (speed, acceleration,
deceleration) by measuring the period between two encoder events using a second timer
configured in capture mode. The output of the encoder which indicates the mechanical zero
can be used for this purpose."
6:28 Why you think the prescaler will not work? Is it some documents about it? I use prescaller with value 3, and dont need to divide counter value by 4 in the future.
Your counts per click depends on the type of rotary encoder.
My alps encounter does one count per click.
I also have an encoder like yours which does 4 counts per click.
That's much better version, definitely you deserve for more subs :P
Thanks sir for this wonderful video.❤️
for increasing/decreasing by 4 problem, try Prescalar(PSC) value as 4 🤗
Not 4, but 4-1=3. It really works!
Thanks for very detailed explanation. Very helpful. Can you make video for PID motor control with Encoder.
Thanks.👍
Thanks a lot for your great videos. It would be great if you could please make a video on how to read encoder with DMA. I think it is very helpful for high res encoder application
Very good thank you
It posible to used incremental encorder ABI?? 600 until 2500ppr?? But i want to used CPR
Hi @ControllersTech I've watched many videos of yours and I have to tell that you are amazing. Very understandable and interesting videos.
I have one question about the encoder: why sometimes I see, between one step and another of the encoder, the timer reads 3 or 5 steps, instead of 4?
Good work !
Please make a video on PID control.
Really great channel! Like the voice
Thanks for sharing this video that is useful for me. I am wondering what software you used to code and to compile on this video. Can you share this software name to me, thanks in advance.
Does this work for optical encoders too?
hello why in void HAL_TIM_IC_Capture...( ... )
{ ....}
you do not use htim2, but using htim?
How to use another timer to periodically trigger DMA to capture the value of the rotary encoder ?
Thank You so much man
Hello, my live expressions value change 0 and 1. How can I solve it ? Do you have any ideas ?
I don't know why it not works on my board. I have to change to TIM1 and everything works as expected. Probably hardware problems.
could you please make a video on encoder with DMA. thanks
Hello, do you also know how to count an encoder like this with LL and not HAL? So functions won't start than with HAL_TIM_.... but with LL_TIM_..... We would like to know this because the names are a bit different then.
There is more to LL than just replacing the characters "HAL" with "LL".
You need to have good understanding of the peripheral.
Read the reference manual for that
how would we write the same program for 2 encoders. Especially the capture function for two different timers? Can someone please paste the solution
Some one video configuration DMA, I can't to do it
thanks
Thanks . Can you make video for stepper motor speed and direction control with rotary encoder .
There is already a video for stepper speed and direction. Just connect this one to that..
👏
how can i make it track the distance traveled
use maths (RPM, circumferece, etc..)
It start counting clicks only after second click, after rotation start. If I do only one click, it is not counts it. STM32F413VG.
P.S. Sorry, it was no name chinese encoder. Encoder from Bourns do it well, from the first click.
Sir, kindly request you to make a video on timer triggerd adc dma and uart.
Muito bom. Parabéns
Thanks for this! What application are you using to view the PDF? I like the way it shows the index. Please let me know.
Okular
Hi Arun
would you be interesting to have a real encoder , i have SICK encoders that can be programmed the number of pulses per revolution ,TTL or HTL outputs . let me know your preferences and will send it to you for more of your videos and experiments
Jorge
Yeah sure. It would be nice to work with something like that
@@ControllersTech How can I send 2 encoders ?
My project is not work. Can y send me your project, please!
Can I get the code
Master, how may i get the direction of the encoder? Has some hal function that returns the encoder direction? Many thanks!
It's explained in the video.. see how the count is decreasing..