Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

MOTIX™ MCU Forum Discussions

Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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

0 Likes
1 Solution
Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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):

Julien33_0-1649238504343.png

Julien33_1-1649238586623.png

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

 

 

View solution in original post

0 Likes
10 Replies
RupakC
Moderator
Moderator 100 sign-ins 25 solutions authored 50 replies posted
Moderator

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

RupakC
Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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);
                      }
           }
}

0 Likes
Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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 */
                      }
           }
}

0 Likes
Raj_JC
Moderator
Moderator 250 sign-ins 25 likes received 50 solutions authored
Moderator

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:

Raj_JC_0-1648661681133.png

Please, let us know if the above settings work.

 

Thank you

Best Regards

Raj Chaudhari

0 Likes
Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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):

Julien33_0-1649238504343.png

Julien33_1-1649238586623.png

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

 

 

0 Likes
Raj_JC
Moderator
Moderator 250 sign-ins 25 likes received 50 solutions authored
Moderator

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

0 Likes
Julien33
Level 2
10 sign-ins 10 replies posted 5 replies posted
Level 2

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:

Julien33_0-1649249418097.png

Can it be directly operable through these functions?

Emo_setspeedreferenz(100);

Emo_setspeedreferenz(30000);

Many thanks for your support.

Best Regards,

Julien

0 Likes
Raj_JC
Moderator
Moderator 250 sign-ins 25 likes received 50 solutions authored
Moderator

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:

Raj_JC_0-1649399979107.png

 

The optimized Ki and Kp set can also be gained by taking a look at the response of the controller:

Raj_JC_1-1649399979114.jpeg

Please, let us know if this helps to stabilise the system.

 

Thank you

Best Regards

Raj Chaudhari

0 Likes
andeds
Level 1
First like given First reply posted Welcome!
Level 1

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

0 Likes
Raj_JC
Moderator
Moderator 250 sign-ins 25 likes received 50 solutions authored
Moderator

Hi @andeds,

You can download the Config Wizard V1, using the following link.

Please, let us know if you need further support.

 

Thank you

Best Regards

Raj Chaudhari