- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear community,
I am testing the Infineon BLDC Shield with TLE9879QXA40 for Arduino in FOC mode. My interest is to drive a 1 pole pair 24VDC sensorless BLDC motor with 40.000rpm maximum speed.
It seems that the current software is limited for 12V applications and limited in speed's variable size.
Someone already modified the software in order to supply with 24VDC and to drive until 40.000rpm? If so, how please?
Many thanks in advance.
Best Regards,
Julien
Solved! Go to Solution.
- Labels:
-
MOTIX™ MCU
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Raj,
Thank you for your help. I modified ADC1 and ADC2 and after some optimizing, now my motor is not blocked at 24VDC and run (for BEMF project, for FOC project I still have issue after 20VDC):
Also I have issues to drive smoothly my 1 pole pair 24VDC sensorless BLDC motor with 30.000rpm maximum speed. Behavior is very rough and consumes a lot and also I cannot reach the maximum speed even if I change the configuration file... Do you have any tricks or recommendation to help me to finely parameter the projects around my motor please?
Many thanks!
Best Regards,
Julien
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Julien33
Thank you for posting on Infineon Community.
You can share your Arduino code with us. We can run the code, test it and find out the issue. Finally we can provide you with the modified code
Thanks and Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello RupakC,
Here is my software, it is based from the "\Infineon-BLDC_Shield-Software-v01_00-EN\02_example_sketches\bldc_shield_single_motor_test" Infineon example so there is for the moment no big change. The settings have been changed for the using of a bldc sensorless 24VDC 40.000rpm motor and we want to drive it from 100 to 40.000rpm.
// Include the Shield library to your Arduino project
#include "TLE9879_Group.h"
// Declare Shield group object
TLE9879_Group *shields;
int set_speed;
int ByteReceived;
void setup()
{
Serial.begin(9600);
// Initialize the Shield group object with the
// number of Shields in the stack
shields = new TLE9879_Group(1);
// Set the desired mode (FOC, HALL, BEMF)
shields->setMode(FOC);
shields->setParameter(FOC_R_PHASE, 1.27, BOARD1); //motor resistance (default 0.36)
shields->setParameter(FOC_L_PHASE, 0.09, BOARD1); //motor inductance (default 0.0002)
shields->setParameter(FOC_NOM_CUR, 1.2, BOARD1); //nominal current (default 5)
shields->setParameter(FOC_MAX_SPEED, 40000, BOARD1); //max speed (default 2000 )
shields->setParameter(FOC_START_CUR_IF, 1, BOARD1); //open loop start current (default 2)
shields->setParameter(FOC_MIN_POS_REF_CUR, 1, BOARD1); //closed loop low speed pos_rot current (default 3)
shields->setParameter(FOC_MAX_POS_REF_CUR, 2, BOARD1); //closed loop high speed pos_rot current (default 4)
shields->setParameter(FOC_END_START_SPEED, 2300, BOARD1); //open loop end speed (default 800)
shields->setParameter(FOC_MAX_CUR_SPEED , 2500, BOARD1); //closed loop pos_rot switchover speed (default 1000)
shields->setParameter(FOC_POLE_PAIRS, (0x1u), BOARD1); // #define FOC_POLE_PAIRS (0x8u)
// Set the desired motor speed (RPM)
set_speed = 0;
shields->setMotorSpeed(set_speed);
}
void loop()
{
if (Serial.available() > 0)
{
ByteReceived = Serial.read();
Serial.println(char(ByteReceived));
if (ByteReceived == '1') // Single Quote! This is a character.
{
shields->setMotorMode(START_MOTOR);
}
if (ByteReceived == '0')
{
shields->setMotorMode(STOP_MOTOR);
}
if (ByteReceived == '+')
{
if (set_speed < 40000) set_speed = set_speed + 100;
shields->setMotorSpeed(set_speed);
}
if (ByteReceived == '-')
{
if (set_speed >= 100) set_speed = set_speed - 100;
shields->setMotorSpeed(set_speed);
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have same issue on the TLE 9879 EvalKit v1.4 PCB where it is not possible to drive correctly the 40000 rpm 24VDC bldc sensorless motor in FOC through the potentiometer. It starts but shake a lot and run abnormally with an high current consumption.
I try to adapt the "foc_defines.h" file and also to change sint16 to sint32 for the speed variables but the result is without positive improvement.
My Keil µVision TLE 9879 EvalKit v1.4 PCB main function:
void Poti_Handler(void)
{
uint16 mV;
/* Read the value at Ch4 (Poti) in mV - values between 0 and 5000 are possible */
if (ADC1_GetChResult_mV(&mV, ADC1_CH4) == true)
{
//Emo_setspeedreferenz(mV / 2);
//To other direction, replace 'Emo_setspeedreferenz(mV / 2)' with 'Emo_setspeedreferenz(-mV / 2)
Emo_setspeedreferenz(mV * 8); // 5000 * 8 = 40000 rpm
if (mV > 250) //1000//250
{
Main_lStartMotor();
}
else if (mV < 200) //800//200
{
Main_lStopMotor();
}
else
{
/* do nothing */
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Julien33,
Please, ensure the following settings for the operation above 24V.
For supply voltages above 17.3V, you need to adapt some settings such as:
-ADC2->TH0_3_UPPER.CH2 (VSD overvoltage threshold)
-ADC2->TH0_3_UPPER.CH1 (VS overvoltage threshold)
-MF->VMON_SEN_CTRL.VMON_SEN_SEL_INRANGE (attenuator factor for VDH monitoring)
The equations for the desired thresholds can be found in the TLE987x User Manual.
Since VDH is monitored by ADC1, the reference voltage for the calculation of VLSB is VAREF (not VBG). The data width also needs to be adapted accordingly ( 8 or 10 Bit width).
In addition to these settings ensure settings for the VDH1 as follows:
Please, let us know if the above settings work.
Thank you
Best Regards
Raj Chaudhari
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Raj,
Thank you for your help. I modified ADC1 and ADC2 and after some optimizing, now my motor is not blocked at 24VDC and run (for BEMF project, for FOC project I still have issue after 20VDC):
Also I have issues to drive smoothly my 1 pole pair 24VDC sensorless BLDC motor with 30.000rpm maximum speed. Behavior is very rough and consumes a lot and also I cannot reach the maximum speed even if I change the configuration file... Do you have any tricks or recommendation to help me to finely parameter the projects around my motor please?
Many thanks!
Best Regards,
Julien
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Julien33,
For operation at a higher speed please increase the Pole pair numbers in the FOC SW (Even if the actual pole pair is 1). Please, check and let me know if it increases the speed.
Thank you
Best Regards
Raj Chaudhari
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Raj,
Indeed I saw that it affects the maximum speed thank you! But the FOC SW is still very unstable and perhaps you can help me to tune the Config Wizard parameters to drive this sensorless motor from 100 rpm to 30,000 rpm through the main software:
Can it be directly operable through these functions?
Emo_setspeedreferenz(100);
Emo_setspeedreferenz(30000);
Many thanks for your support.
Best Regards,
Julien
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Julien33,
1) You can change the speed using the above commands. But the speed will be different than the actual ref speed because the number of poles pairs is changed in the config wizard. Please, set the speed according to it.
2) For configuring the config KP, KI values follow these steps:
The KI and KP parameter can be calculated as follows:
The optimized Ki and Kp set can also be gained by taking a look at the response of the controller:
Please, let us know if this helps to stabilise the system.
Thank you
Best Regards
Raj Chaudhari
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, when I try to follow the instructions on using Config Wizard to adjust the ADC1 and 2 in uVision I get an error message saying " your configuration is supported by config wizard 1.x only, pls download at Infineon.com". How do I find that version or how to convert to 2.7 version of the config files?
The software is Infineon-BLDC Shield-Software-v01_00 EN\03_shield_software\uVision_project_files\FOC\Sensorless_FOC.uvprojx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content