encoder align 90º
Vqd.qV_Component1 = 0;
Vqd.qV_Component2 = 4000;
Weak rotation. Clockwiseencoder align 90º
Vqd.qV_Component1 = 4000;
Vqd.qV_Component2 = 0;
No rotation.encoder align 0º
Vqd.qV_Component1 = 0;
Vqd.qV_Component2 = 4000;
No rotation.encoder align 0º
Vqd.qV_Component1 = 4000;
Vqd.qV_Component2 = 0;
Very weak rotation. Clockwise.I do not know if this can give any clue ...
I had the motor running with Vqd.qV_Component2 = 3000 for ~ 15min.
I turn off the motor and it is super hot! The whole motor is really hot!
Eu fiz alguns testes para tentar entender o que se passa...Code: [Select]encoder align 90º
Weak rotation. Clockwise
Vqd.qV_Component1 = 0;
Vqd.qV_Component2 = 4000;Code: [Select]encoder align 90º
No rotation.
Vqd.qV_Component1 = 4000;
Vqd.qV_Component2 = 0;Code: [Select]encoder align 0º
No rotation.
Vqd.qV_Component1 = 0;
Vqd.qV_Component2 = 4000;Code: [Select]encoder align 0º
Very weak rotation. Clockwise.
Vqd.qV_Component1 = 4000;
Vqd.qV_Component2 = 0;
Google is my friend That is very confusing. You should have torque at least in one of the two situations:
Vqd.qV_Component1 = 0;
Vqd.qV_Component2 = 4000;
Vqd.qV_Component1 = 4000;
Vqd.qV_Component2 = 0;
Maybe try this one as well:
Vqd.qV_Component1 = 3000;
Vqd.qV_Component2 = 3000;
That gives a 45°.
I start thinking if there is something wrong with the motor windings. Very confusing...
I think it will can very difficulty if impossible to have more progress by playing with forms and numbers. Do you have the possibility to make a setup with Hall sensors like I pictured? I think you really need to shed more light on things like electrical and mechanical rotor orientation, encoder output, phase voltages and currents. There is something very weird going on, and remember that was already the case when you tested the ST eval board.
I had the motor running with Vqd.qV_Component2 = 3000 for ~ 15min.
I turn off the motor and it is super hot! The whole motor is really hot!
- place small permanent magnet onto motor shaft/gear
- place Hall sensor in some orientation, such that it triggers once per mechanical rev, connect to scope channel, use it as trigger
- connect oscilloscope between two motor phases
- turn motor by hand and determine voltage zero crossing on scope --> this is your zero phase reference; you can now move the hall sensor such that its trigger point is right at the zero crossing; alternatively you can determine the phase between the two
I'm on the road seeking for new employment, couldn't check emails...
To BLDC: these motors are sort of optimized for 6step commutation, but in my experience that does not improve closed-loop behaviour with velocity control at low speed. It makes things even worse when adding position control and can cause oscillation at standstill, because the motor can only move by 60 degree steps.
If your motor has that huge cogging that it cannot be turned by hand easily then this means to me that it is not optimized for robotics use at all. You want cogging free behaviour for that. I have used Maxxon BLDC for this purpose, they are coreless and turn 100% smooth.With anti-cogging you should be able to improve behaviour with your motors, but don't expect too much. You are limited by their poor construction.
But anyway, there's something wrong with torque generation. When back home tomorrow I will come back with ideas to verify current phase without having to turn the motor manually
I made some adjustments on my board to run this example.
I get a slow and smooth movement ...
http://www.berryjam.eu/2015/04/driving-bldc-gimbals-at-super-slow-speeds-with-arduino/
Good luck!!
What bothers me is that the seller says that he has a controller that regulates the motor speed practically from 0RPM.
I'm pretty sure they use 6-step commutation, but it's hard for me to believe they can do that kind of regulation!
Maybe a mixed control will work.
Low revs
Stepper motor (SVPWM)
High revs
6 step commutation
I understand the control in 6 step commutation, but in low revs I can not figure it out (using SVPWM).
In a stepper motor the switching frequency is related to the speed of rotation, but I can not understand how to make the PWM duty cycle adjustment ...
uint16_t FOC_CurrController(uint8_t bMotor)
{
Curr_Components Iab, Ialphabeta, Iqd;
#if defined(HFINJECTION) || (defined(DUALDRIVE) && defined(HFINJECTION2))
Curr_Components IqdHF = {0,0};
#endif
Volt_Components Valphabeta, Vqd;
int16_t hElAngledpp;
uint16_t hCodeError;
hElAngledpp = SPD_GetElAngle(STC_GetSpeedSensor(oSTC[bMotor]));
// <<<<<<<<<<<<<<<<<
if( StateM1 == RUN )
{
static int16_t k=0; k+=10; hElAngledpp=k;
}
// <<<<<<<<<<<<<<<<<
...
}
One hint: when you try to turn the motor to do the Hall sensor measurements I proposed, can you extend the shaft with locking pliers or similar? I did that with the Maxxon motor, it had a similar output gear as your motor. You can attach the permanent magnet for the Hall sensor to its arm then.