I’ve set my F030 controller up for angle control with low torque. I wanted to simulate a rowing machine, which automatically rolls back to the target angle.
It worked quite good, but I’ve noticed that, if I spin the motor too fast, the (holding-) torque would suddenly drop to zero. ( it wasn’t actually very fast, how fast can you turn a hub-motor by hand?)
My guess is, that I overstepped a certain limit, but not sure which?
PID or LPF?
I wanted to play with
motor.velocity_limit, but I can’t change that value over serial?
I also noticed a weird sound from the controller when I spun too fast and sometimes the serial-connection was lost.
I am not killing my controller, do I?
I guess, you need to take care of BEMF if you pull too strong. If you don‘t, you may kill your controller.
Maybe I should use a battery instead of PSU. It’ll easily swallow the voltage spikes. A 12V starter battery from a 50cc Vespa perhaps.
Downside of the battery is that you cannot easily limit the current of course, plus you will need to charge it. I went for an active shunt solution as proposed by @Valentine.
what does your hardware look like?
For now it’s just a hoverboard motor in his regular aluminum-cast housing. It’s just a simulation.
The plan is to build a multi-purpose fitness station without iron weights. Just based on two or more hoverboard motors and a control-panel to set various use cases.
@Grizzly I want to add a hometrainer to charge the battery.
I wonder if the rowing machine would also charge the battery while I’m pulling? I’m pulling with more force than the motor torque, wouldn’t that be like regen braking?
Can I visualize the current-curve? I don’t have current sensing on board. Just an external DC current meter
I am no expert on batteries, but would say that this depends on your battery management system. Without a BMS or, even worse, by mis-powering the BMS, you may well destroy things. Depending on your motor, BEMF can be very high in your use case.
In my simulator I had similar problems and tamed it a lot by choosing a low kv motor, a better control algorithm (would be equivalent to a reciprocal training mode in your case), detailed monitoring (supply voltage, temperature, sensor) and of course the active shunt. Since then, no more burnt ESCs. I’d say, that makes for the famous 80% work for the last 20% of a project, although I would also recommend to invest these right at the start (would have saved me a lot of ESCs…).
I want to use a Lead Acid SLA battery. No BMS. They can take quite a lot of charge current and the Voltage will not rise much, because the Ri of the battery is so low. It will be translated into charge current.
With lead acid batteries you are probably safe.
During further tests the motion felt unrealistic, because there was no moving mass involved.
I wonder, if I can implement a virtual flywheel which is based on the acceleration from integrating the shaft_velocity?
E.g. for a hometrainer it would be important, otherwise the pedals will always stop at the bottom of the move.
motor.shaft_acceleration already exist?
If not, which SW-module would be the best place to modify accordingly?
The main loop
You have access to all the information, you can control torque/velocity/angle, what else do you need ?