How to change rpm of 'Permanent Magnet Synchronous Motor Field-Oriented Control'
2 次查看(过去 30 天)
显示 更早的评论
I am using c28035pmsmfoc_ert.slx to drive the attached motor of DRV8312-C2-kit.
How do I change the rpm for this model? I want to change from the default 1200 rpm to 3000 rpm.
I changed Speed_per_unit_scaler to 3000 rpm and set the variable in Desired Speed subsystem to +1.0, but the rpm is only 1500 or more.
6 个评论
Patxi
2021-1-11
Hi Ryo,
the problem was SW3, which is necessary to put in ON (DOWN) position. Now, I can program the Kit by using CCS, MATLAB/SIMULINK and UniFlash.
Thank you very much!
Patxi
采纳的回答
Darshan Pandit
2019-6-7
编辑:Darshan Pandit
2019-6-7
Hi friend,
You are doing the right thing by changing the Speed_per_unit_scaler variable to desired rpm.
Apart from this, there are few more changes that are required. These affect the operation of motor at higher speeds. These are mentioned below:
1) Change Speed_per_unit_scaler
- (You may skip this step, if already completed)
- Type "edit c28035pmsmfoc_data" at your matlab command prompt.
- Update Speed_per_unit_scaler = 3000; (Or desired speed, supported by the motor being used)
- Run the script before generating code.
2) Change position sensing to Hall sensors
- The SMO has limited accuracy at higher speeds to estimate position of the rotor.
- The position sensors, e.g. Halls, QEP, perform better at higher speeds.
- This does not mean that you can't use the SMO, it's just that you may not be able to spin the motor at maximum possible speeds, if you're using the SMO.
3) Update saturation values of Current_PI controllers (both Id & Iq):
- These values limit the maximum voltage fed to motor via inverter.
- Here, sqrt(Vd^2 + Vq^2) = Vdc/sqrt(3) = 1pu.
- Since, the controller cannot provide voltages > 1pu, I'd suggest to limit this to +0.707.
- This is because (0.707^2 + 0.707^2) = 1.
4) Update saturation values of Speed_PI controller
- This limits the maximum allowable current into the motor.
- Here, 1pu = 8.9A. And depending upon the motor's rated current, you may limit this value.
- If you have 1pu as the limits, the hardware may trip at starting transients.
- If you do not know the motor's rated current I'd suggest to limit this to +0.5pu.
5) Take safety precautions
- As soon as the generated code downloads, the motor is going to spin at desired speeds.
- Be careful about sudden speed changes as the fast spinning shafts has hazards.
Hope this helps!
2 个评论
Darshan Pandit
2019-6-14
编辑:Darshan Pandit
2019-6-14
Hey friend,
You are correct. You need to generate the required signal by modifying Per_unit_speed_demand as per your requirements.
There are multiple ways you can achieve this.
All you need to do is: Generate the signal using Simulink blocks.
For example (and this is not the best way), I can quickly use a pulse generator to modify the Per_unit_speed_demand from 0.5 to 0.8 pu for 30% duty in 1sec cycle.
However, as I mentioned, this is not be best implementation. Simulink offers multiple ways to do this. I'd prefer to create the required pulse using either sample based pulse generator, or using counters or a custom logic gates. You might come up with even better approach! Doing so, requires additional time & efforts, however this would make the generated code more efficient.
Hope this helps!
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!