Virtual Flywheel
I've been considering this idea more and have some ideas that might, possibly work. Not entirely convinced but enough that I've started working on some of the detail.
My plan is a CAN enabled Arduino between throttle and controller.
Controller set to no throttle smoothing.
Micro handles smoothing. Acceleration similar to usual smoothing regimens.
Closing throttle kicks in a routine that calculates the effective 'virtual flywheel' energy at present RPM. That drives a max current limit (throttle value actually) proportional to energy. Note that energy in a flywheel increases by square of rpm.
Also derived from energy is RPM decay rate. This curve is adjustable for experimenting.
The micro reads motor RPM off CANBus.
Now the micro feeds the controller throttle signal to maintain the RPM decay rate. Note that the goal is a constantly decaying RPM regardless of load. This signal is constantly recalculated as long as the throttle is closing or steady.
If the wheel encounters load the micro will increase throttle signal up to the RPM calculated threshold. If load exceeds the ability of that signal to maintain smooth RPM decay the motor torque will be exceeded and the motor will slow more rapidly.
If load is decreased (going airborne say) then the micro will cut throttle signal to try to maintain the rpm decay rate.
My thinking is that this will emulate some of the key features of a physical flywheel. Using a basic energy in a flywheel calculation to drive the throttle is, I think, the key that might make it behave sensibly.
The other key factor is how fast the controller can actually respond. I rather expect that even with all smoothing turned off or set to minimum values there will still be a degree of smoothing to overcome noise, jitter etc. I'll be trying this with a Nucular because that's what I've got that can provide CAN. Maybe another controller like ASI BAC or Silixcon or even CAN enabled Fardriver might give different results.
My Arduino skills are starting from nothing, so who knows if I'll be able to write something that works enough for initial testing. I've started with Simulide to at least see if I can cobble together a few routines into something vaguely promising.
I'm thinking if I make enough progress to see that it might actually eventuate I'll probably start a separate thread for this.
If there's someone who's a whiz with Arduino who wants to help ....
I've been considering this idea more and have some ideas that might, possibly work. Not entirely convinced but enough that I've started working on some of the detail.
My plan is a CAN enabled Arduino between throttle and controller.
Controller set to no throttle smoothing.
Micro handles smoothing. Acceleration similar to usual smoothing regimens.
Closing throttle kicks in a routine that calculates the effective 'virtual flywheel' energy at present RPM. That drives a max current limit (throttle value actually) proportional to energy. Note that energy in a flywheel increases by square of rpm.
Also derived from energy is RPM decay rate. This curve is adjustable for experimenting.
The micro reads motor RPM off CANBus.
Now the micro feeds the controller throttle signal to maintain the RPM decay rate. Note that the goal is a constantly decaying RPM regardless of load. This signal is constantly recalculated as long as the throttle is closing or steady.
If the wheel encounters load the micro will increase throttle signal up to the RPM calculated threshold. If load exceeds the ability of that signal to maintain smooth RPM decay the motor torque will be exceeded and the motor will slow more rapidly.
If load is decreased (going airborne say) then the micro will cut throttle signal to try to maintain the rpm decay rate.
My thinking is that this will emulate some of the key features of a physical flywheel. Using a basic energy in a flywheel calculation to drive the throttle is, I think, the key that might make it behave sensibly.
The other key factor is how fast the controller can actually respond. I rather expect that even with all smoothing turned off or set to minimum values there will still be a degree of smoothing to overcome noise, jitter etc. I'll be trying this with a Nucular because that's what I've got that can provide CAN. Maybe another controller like ASI BAC or Silixcon or even CAN enabled Fardriver might give different results.
My Arduino skills are starting from nothing, so who knows if I'll be able to write something that works enough for initial testing. I've started with Simulide to at least see if I can cobble together a few routines into something vaguely promising.
I'm thinking if I make enough progress to see that it might actually eventuate I'll probably start a separate thread for this.
If there's someone who's a whiz with Arduino who wants to help ....