My question is more related to inner working of ESC than coding. Particularly how to activate a particular protocol like DShot600 or Dshot150. Assuming a generic BLHELI ESC has all these protocols. I am using 3 different ESCs which says they are ready for different protocols. A bit of background:
I have coded my own Flight Controller and everything was great but I recently moved to BLHeli32 ESC. I coded the driver for BLHeli32 ESC and able to spin the motors using the protocol DShot600 and DShot150 but it seems despite I send data in the form of Dshot600 or DShot150, the ESC is not fully recognizing the protocol. As it even spins the motors for values less than 48. I have attached an image of the signal I am sending to ESCs. BLHELI suite settings are attached too.
It seems ESCs take my inputs as oneshot or multishot protocol and only look for bits (1s) and spins the motors when find enough 1s. I am concluding this because the speed is higher when it sees a number like 63 ( many 1s) than 64( just one high bit).
My understanding is and as mentioned in https://www.hobbywing.com/products/enpdf/XRotorMico60ADShot1200en.pdf "Dshot signaling is supported at any rate up to at least Dshot1200. The input signal is automatically detected by the ESC upon power up.
Which means I don't need to tell ESC the signal I am sending is DShot, based on the frequency the ESC activates a particular protocol. In my case it needs to be DShot600.
Also I assumed each ESC supports all the protocol, Dshot and multishot at the same time or so I read in different ESCs documentations ? I am using 3 different ESCs for my testing. These are:
- Hobbywing XRotor Micro 60A 4in1 BLHeli-32 DShot1200 3-6S ESC
- Skystars BL32-45A 55A 60A 4IN1 3-6S ESC BLheli32 DShot1200 4-in-1 ESC support Dshot1200/600 Multishot and
- Tekko3 F3 4IN1 Mini supporting DShot600/Multishot etc
I saw some old videos of betaflight and people activate DShot600 etc but that I guess activation of drivers and has nothing to do with the ESC itself.
To summaries my questions:
- Do I need to send something to an ESC to use Dshot600 protocol
- What to send if I have to
- If not, why my ESCs behaving strange and not detecting type of protocol I am sending my data for.
Thanks in adv for your answer