Most of the pro multicopter set-ups have feedback from the ESCs so the controller knows the status of the motors. This is useful for all kinds of reason including:
1. debugging the causes of crashes - the controller could log when a motor has stopped running.
2. allows faster and better reaction to a motor failure perhaps saving you from a crash at least for hexas and octas.
3. automatic generation of a linear thrust curve which makes life easier for the attitude controllers.
As a first step towards trying to make that functionality available for the hobby/diy market I've managed to hack a hobbyking RedBrick50Amp and load it with a modified SimonK firmware so that it sends back timing information using the SPI bus to an APM2. This modified SimonK firmware is in my clone in the spi_feedback2 branch and the changes were pretty minor as you can see here.
Here's a picture of the set-up:
Now, it's really a first step, there are a few issues:
- It only works on the RedBrick50Amp because that's one of the few ESCs that is not using the SPI bus's slave select pin to control one of the FETs also you can see I needed to do some careful soldering to attach a pin directly onto the Atmega8. To make it available to all we'd need specially manufactured ESCs.
- Using the SPI bus would mean a lot of wires to the APM2. 5 wires from each ESC (mosi, miso, reset, slave select, clock) and 4 wires + 1 wire per esc on the APM2 side. I might look into trying to use I2C instead which would be just 2 wires per ESC.
- the feedback is the timing (in nanoseconds?) from when the ESC last switched the polarity of power to one of the wires. So the feedback is non-linear..you get very accurate feedback when it's moving slowly, but lose accuracy as it gets to the high end of it's range.
Still, a step in the right direction I think. All feedback and advice welcome!