Hi,
I am trying to develop software for a frequency inverter using InstaSpinFOC.
We already designed our own hardware based on the high-voltage-kit design and it seems to work fine so far. I can drive all our motors using the motorware examples and I have started my own project based on these.
Now I only need to solve a couple of problems resulting from special applications we will be handling. So far I have worked my way through all the f28027 labs and experimented with ctrl and estimator calls that are being used there. But I am still not quite sure what part does what and how deep I am supposed to dig into libraries (I am trying to stick with the motorware style).
So what I need foremost are some hints for which parts of the code i should be looking at.
Controller: F28027
CCS 5.5.0
Compiler 6.2.3
motorware 1.01.00.12
Our hardware is based on the high-voltage-kit (it is similar as far as user.h settings are concerned).
I have used the InstaspinFOC lab3b as a starting point for my project.
Our motors are typically in the 0.5 - 2kW range, 1.5kprm @ 50hz, asynchronous induction motors.
1. Smooth motor start up:
When starting the motor for the first time after setting system enable, it will start up kind of jerky. Afterwards, I can regulate the speed to 0.0 and back up without this happening. I did read up on the motor start topics and force angle startup method here in the forums, but I am not sure what can be done.
I want to get the smooth start up as often as possible of course.
Now the problem is, that in my hardware between the PWM outputs and the IGBTs there is a driver module. As a safety measure, this module can be disabled, effectively cutting the PWM signals from the IGBTs.
The same thing shall happen every time I stop the motor.
So after stopping the motor, I need to make sure that control is not trying to output anything on the pwms, because this will fail.
Simply switching the ctrl_enable to false during motor stop will do that, but it will apparently also reset the information the estimator has about the rotor position. The next start up after this will be of the jerky kind again.
So what I think I need here, is a way to set the ctrl into a passive state, in which it will measure and observe, but will not become active and try to force a speed/torque/position.
Could you give me some pointers at which code I have to look at, based on the lab3b?
2. Starting the motor under load / with a negative torque applied
Some of our motors have to lift a weight. When the motor is switched off, an external brake will keep the weight in place. The brake in this solution is also controlled by my F28027 chip, so I can time the release as needed.
The problem occurs, when I try to start the motor initally with the forced angle method, as described in 1.). As I understand it, this method needs to spin the motor a little bit to 'lock on'. So I have to release the brake.
As soon as I do that, the full weight will start pulling on the motor.
This usually leads to the weight falling some distance before being caught, or (for heavier weights) not being caught at all.
Do you have any ideas what could be done in this situation?
3. Generator mode
Again the situation where a motor has to drive a weight up and down.
In this case I have added a self-locking gear, so that I do not need a brake. Before solving 2.) I can not test this without one.
I am trying to lower the weight at a constant speed, ie the weight is pulling in the same direction as the motor movement. If we did not have the self-locking gear, this would be fully generator mode, but I am not sure if that is the case here.
When doing this, the speed control starts to oscillate: It will start spinning the motor, quickly shoot over the desired speed and then overshoot back in the other direction, stopping the motor completely again.
The result is, the motor does small 'hops' and never enters a contionous movement.
Accelerating the motor at lower rates seems to only help a little.
Is there a 'stiffening' factor in the ctrl loop somewhere, which I can tune?
regards
Maik