Hello everyone!
When I execute “torque”_ voltage_ control" code, the motor can rotate normally and the temperature of the motor is not high. But the motor drive board (l6234d) is very hot(110℃), is this normal?Thanks
Hardware:
Arduino mini pro(328p 16mhz 5v)
BaseCam yaw motor driver
2207 1700KV BLDC(0.6Ω)
AS5047P by SPI with Arduino
Hi @Leonardo.
In voltage loop, what is the voltage target you set?
L6234D can handle 4A
with peaks of 5A
. With a resistence of 0.6Ω
, voltage limit have to be at most 2.5V
.
DG
Hi,0.6Ω is the internal resistance of the motor
My DC power supply is set to 12V
The target voltage in the picture is set to “2”
Should I use a special motor for gimbal? Because this motor is the power motor on the quadrotor. When I use the Gimbal motor, the FOC command can work normally nd the torque is constant.
110 °C seems high, but I don’t know what temperatures are generally reached by the L6234D.
For lower speed, I suggest gimbal motors with lower KV. I would use your motor (1700KV) for high speed application.
DG
L6234d will go into thermal shutdown at 150c. Personally, I wouldn’t run it hotter than ‘that hurts’ temperature (80c).
@Leonardo you’ll find that most people are using the shield with gimbal motors but some are using the SimpleFOC library with drv83xx + mosfets and bigger motors. Sounds like you might need to be thinking about the latter? Have a look at some of the threads with drv83xx in their names.
Just looked at your pic with the L6234d in it. Where did you get that board from?
The L6234d board from BaseCam simpleBGC ,I bought it from AliExpress when 3 years before.
Never drive this power motor with l6034!
I use l6234 to drive a 4110 motor (kv4xx), 12V power supply, the motor shakes a few times, “l6234d” in a few seconds …“bom…” burst!!!
OK,Thanks guys!
I found a MOSFET driver board,it is high integration and higher current.
All the well now!
@Antun_Skuric
@Owen_Williams
Hello,guys! I have new problem
I bought a DRV8302 board,I downloaded “drv8305_driver” The motor has a lot of noise. And can’t rotate.
I know that this motor (6215 180kv) does not meet the requirements, but I want to use simplefoc for power motor. How can I complete it?
Thanks!
Hey @Leonardo,
You have an exciting setup, I am really looking forward to see it work!
What is the sensor you are using?
What is the library version you are using?
If the motor is not moving at all then most probably you have a sensor problem, did you try to output the sensory data, the motor angle for example, can you check if it updates?
Maybe the motor and the sensor are not oriented in the same direction, this you can easily overcome by switching any two motor wires.
Or you can download the developmental version of the library where @Owen_Williams has implemented auto-detection of the sensor direction. Here is the link:
In this developmental version of the library you will also find the open loop control examples. So you can try turning the motor without sensor.
You can find examples in:
examples
> motion_control
> open_loop_motor_control
If you don’t want to use dev version, don’t worry. Everything will work without it as well. It just offers a bit more functionalities.
Here is an example code of the open loop motor control which you can use with the regular library. You just need to copy paste the the drv8302 code.
@Antun_Skuric
Thanks for your help!
I found that the problem was that my PI control parameters were too high,
Now PI is like this, I successed to make the motor turn
motor.PI_ velocity.P = 0.1;
motor.PI_ velocity.I = 5;
pole pair number is 14
The encoder uses as5047u and is connected through SPI
The current library version is 1.3.0
But the starting current of the motor is 18A (after MOT: Enable.), so I limit the current on DC power to less than 5A, which will cause noise during starting.!!
I’m using the motor of the aircraft with an internal resistance of 0.2 ohm.
(Please watch this video for details,The “Target voltage” and “Target angle” are adjusted through the serial port in the video screen)
(There will be a clicking noise when the motor is highspeed)
- List item
Hey @Leonardo, thats cool!
Ok, so from the video I see that you might still need to tune your PID parameters a bit but at least it works.
During the initialization the motor pushed in a set of discrete positions from which we can calculate the necessary offsets. For this to happen we set certain voltage to the motor coils in predefined angles. So in your case the voltages are just too high and you have immense currents. You can change this by adding this line before motor.initFOC()
:
motor.voltage_sensor_align = 1; // defualt is 6 volts
Change the voltage to reduce the noise.
The other thing you can try to avoid this from happening is the new feature that is not yet documented but is implemented in dev version of the library. ( I think you are using the dev version already)
First go to the examples and run the find_sensor_offset_and_direction.ino
examples
> utils
> find_sensor_offset_and_direction
This code will give you sensor offset and direction value.
In this example you will need to copy the DRV8302 specific code and maybe use the line above to limit the volatge
Once when you have the offset and the direction, then in your code from the video instead of the line
motor.initFOC();
write:
// sensor offset is a float number
// sensor direction is either Direction::CW or Direction::CCW
motor.initFOC(sensor_offset, sensor_dirrection );
This line will allow the alignment to happen without moving the motor and you will not have to deal with limiting currents and voltages for alignment.
OK ,I manually set the sensor offset and motor direction, and now I can start the motor quickly.
I’ve been debugging the PID for a long time, but it’s still choppy. I think the internal resistance of aircraft motor is too small (< 1 Ω) and the power is very high, so it is difficult to achieve perfect linear control. When I change to gimbal motor (10 Ω). It’s very smooth.
motor.PI_velocity.P = 0.1;
motor.PI_velocity.I = 0.12;
motor.P_angle.P = 1.5;
Hey @Leonardo,
I would not go with I
component lower than 10
.
Is this motor connected to DRV board or SimpleFOC shield?
This motor connected to driver board is High power DRV8302 board,and I have the bare board of simplefoc shield, but I was afraid that simplefoc shield would be burned .So it hasn’t been welded yet.
Are you using SinePWM or SpaceVectorPWM?
Try FOCModulationType::SpaceVectorPWM
.
DG
yeah,I’ve been using SpaceVector PWM
Hello, everyone!
I’m using the 6215 motor again,the driver is High power DRV8302 board and arduino mini pro
is the code is “velocity_ motion_ control”
“Target velocity:” is quiet at low speed (1-30),But when it’s over 35, there’s noise
I try to change the PID, phase PWM frequency, AS5027U sensor SPI frequency, and use other routines to make noise during fast rotation.
Thank guys very much for your answers.
Can you paste the code you are using?
DG