Problem of Running BLDC motor with BEMF sensorless with the application circuit.

Announcements

Webinar: Integrated solutions for smaller, simpler low-voltage motor control design.
Join the webinar to experience!

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

cross mob
User17857
Level 3
Level 3
First like received
Hello,

I am trying to run a bldc motor with BEMF sensorless example program by tle9877a40 without MON directly after starting. I use trinamis qbl 4208-61-04-01 like in the example.I set up the
application circuit without snubber circuit on the mosfet side as in the datasheet. The mosfet I use is infineon IPD50N06S4L-12. I do not use blocking capacitors for VDDP ,VDDC and VAREF,GND_REF and EMC filter on the batery side.
The circuit i use is below. The unused parts are crossed with the red line. 4449.attach

The code which is below run in the tle987 evalboard but do not work in my circuit. The leds i set up works correctly like in the code. But the motor do not run. What can be the problem regarding the circuit?

*******************************************************************************/

/*******************************************************************************
** Revision Control History **
*******************************************************************************/
/*
* V1.0.0: 2016-07-20, ISLE: Initial version
*/

/******************************************************************************/
/** BLDC: Motor Drive with sensorless block commutation (BEMF) **/
/** configured to with the Trinamic QBL 4208-61-04-013 motor **/
/******************************************************************************/
/** runs on MON button press on a speed of 2000rpm **/
/******************************************************************************/

/*******************************************************************************
** Includes **
*******************************************************************************/
#include
#include "Emo_BEMF.h"
#include
/*******************************************************************************
** Private Macro Definitions **
*******************************************************************************/

/*******************************************************************************
** Private Function Declarations **
*******************************************************************************/
static void Main_lStartMotor(void);
static void Main_lStopMotor(void);

/*******************************************************************************
** Globale Variable Definitions **
*******************************************************************************/

/*******************************************************************************
** Private Variable Definitions **
*******************************************************************************/
static uint8 bMotorRun;

/*******************************************************************************
** Private Constant Definitions **
*******************************************************************************/

/*******************************************************************************
** Global Function Definitions **
*******************************************************************************/
/** \brief Executes main test code.
*
* \param None
* \return None
*
*/
int main(void)
{
int i;

i=0;
/*****************************************************************************
** initialization of the hardware modules based on the configuration done **
** by using the IFXConfigWizard **
*****************************************************************************/
TLE_Init();
Emo_Init();

Emo_setspeedreferenz(2000);

for (;;)
{
/* Service watch-dog */
(void)WDT1_Service();

/* Wait for MON button pressed */
i++;


Main_lStartMotor();
bMotorRun = 1u;
PORT_ChangePin(LED1, PORT_ACTION_SET);
PORT_ChangePin(LED2, PORT_ACTION_SET);



/* Start motor to run up to the desired speed */





}
} /* End of main() */


void Main_HandleSysTick(void)
{

} /* End of Main_HandleSysTick */


/*******************************************************************************
** Private Function Definitions **
*******************************************************************************/
static void Main_lStartMotor(void)
{
uint32 Error;
Error = EMO_ERROR_NONE;

if (Error == EMO_ERROR_NONE)
{
Error = Emo_StartMotor();
}

if (Error == EMO_ERROR_NONE)
{
}
else /* Error */
{
}
} /* End of Main_lStartMotor */


static void Main_lStopMotor(void)
{
uint32 Error;
Error = Emo_StopMotor();

if (Error != EMO_ERROR_NONE)
{
}
} /* End of Main_lStopMotor */

Kind Regards,
Murat.
0 Likes
10 Replies
Elettrograffiti
Employee
Employee
Hi! You must use the blocking capacitors for VDDP ,VDDC and VAREF,GND_REF otherwise. The EMC filter and the reverse battery protecton could be skipped.

Furthermore I see that you have eliminated the protection for the phase voltage BEMF detection (P2.0, P2.3, P2.4):
- did you at least connect the motor phases to the pins?
- Did you keep the RC filter as indicated in the EvalKit schematic (linke below, page 13 and 15, pins SH1, SH2, SH3)
https://www.infineon.com/dgdl/Infineon-TLE9879_EvalKit-UserManual-v01_03-EN.pdf?fileId=5546d4626bfb5...

These pins are the ones that detect the BEMF of the phases, so the motor will never run if they are disconnected or not properly filtered.
0 Likes
User17857
Level 3
Level 3
First like received
Hi,

Thank you very much for your answer.

I did not connect (P2.0, P2.3, P2.4) including input protection. Do i have to connect them fot BEMF? I thought only SH1,SH2 AND SH3 would be enough. Also I did not connect Rgate in the circuit.
I have used RC filter like in the circuit that i shared above.
0 Likes
Elettrograffiti
Employee
Employee
Hi! Sorry, no need to connect to the Pins P2.0, P2.3, P2.4. I just meant the SHx pins.
I think it would be better you share your schematic directly, so to have a quick look at it.
0 Likes
User17857
Level 3
Level 3
First like received
Hi! here is the my circuit.

4246.attach
4247.attach
4248.attach
0 Likes
Elettrograffiti
Employee
Employee
Hi! It seems to me that VSD is not connected to any power supply. VSD is the pin that sources the energy to get the internal charge pump running and without charge pump voltage you will not get voltage to the bridge driver.
The simplest thing you could do is to connect the same supply to VS and VSD.
0 Likes
User17857
Level 3
Level 3
First like received
In the pcb that the circuit above implemented You are right it seems it is not connected. But in the plastic board that i have set up all circuit according to application example i have connected vsd to vs as
in the application circuit. What can be the other problem?
0 Likes
User17857
Level 3
Level 3
First like received
In evalboard and in my circuit different type of mosfets are used. What should i change in order to adapt the new mosfet in the software(Charge pump or BDRV settings)?

Regards
0 Likes
User10891
Level 1
Level 1
Hi

I think, you should be the watch BDRV fault register via debug.

when you doing run your program, how are the HSx_OC_STS , LSx_OC_STS , HSx_SUPERR_STS, LSx_SUPERR_STS ,

HSx_DS_STS , LSx_DS_STS register?(it was CTRL1 and CTRL2 register)

in my case , HSx_DS_STS is set and then BDRV shut down.

if you are same case then change the DSMONVTH value.(may be you should be raise it)

I hope that it was helpful.

Thanks.
0 Likes
User17857
Level 3
Level 3
First like received
Hi Elettrograffiti
VSD is connected to VS. Do you think there is any other problem in the circuit?

thank you very much justin.lee. I have increased the dsmonth value without debugging by hoping it would work but it did not. I had some problem about debugging.
But i will solve the problem and let you know.

kind regards
0 Likes
Elettrograffiti
Employee
Employee
before excluding problems related to the schematic I would try to run one of our software examples to run your motor. Did you already try it this way? If the example does not run then I would say you need to focus on the schematic.
0 Likes