bird-sanctuary / bluejay

:bird: Digital ESC firmware for controlling brushless motors in multirotors
GNU General Public License v3.0
292 stars 30 forks source link

Inaccurate eRPM feedback when eRPM>200k #195

Open wjxway opened 4 weeks ago

wjxway commented 4 weeks ago

Describe the issue

I have been developing a custom ESC that is used for research project, and have managed to get Bidirectional Dshot working. However, i noticed that when I am spinning the motor at extremely high speed (>200keRPM), while the motor can speed up and down properly, the eRPM feedback is no longer accurate. Specifically, when I change the throttle by a bit, while I can hear that the motor speed changed, the eRPM feedback stays the same.

Also I figured that everytime the eRPM returned actually corresponds to the measurement at the LAST Dshot command, instead of the just sent one, not sure if this is a feature, but could be more clearly documented.

Bluejay version

0.19.2

ESC variant

P_H_10

PWM frequency

96

DShot bitrate

300

Bidirectional DShot

On

FC firmware

Custom

Motor size

1103

Configurator debug log

No response

stylesuxx commented 4 weeks ago

Technically we are limited by 510k eRPM - also see here. So theoretically you should still have some overhead. So you are saying the eRPM feedback caps out at a certain value? If so, which value would that be? Do you have any logs?

Does this happen with only your custom ESC or have you tested with an off the shelf one? We would be curious to replicate this. This is also consistent, no matter the PWM value? Generally we do not recommend running 96kHz since the upside is minuscule in comparison to 48.

Could you tell us more about the specific setup you are running? Motor specs like KV?

Also I figured that everytime the eRPM returned actually corresponds to the measurement at the LAST Dshot command, instead of the just sent one, not sure if this is a feature, but could be more clearly documented.

I am not sure if I understand this correctly: We report eRPM value we have available at the time of sending the response. Usually this will not yet reflect the current sent command, but this depends on a lot of factors. I would not use the eRPM value received as a "confirmation" of the sent DSHOT command but simply as an "as is right now" value.