May 01, 2020
05:55 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 01, 2020
05:55 AM
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.
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.
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.
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.
- Tags:
- IFX
10 Replies
May 04, 2020
08:05 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 04, 2020
08:05 AM
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.
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.
May 04, 2020
11:04 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 04, 2020
11:04 AM
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.
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.
May 05, 2020
12:46 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 05, 2020
12:46 AM
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.
I think it would be better you share your schematic directly, so to have a quick look at it.
May 05, 2020
01:07 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 05, 2020
01:07 AM
Hi! here is the my circuit.
May 06, 2020
12:44 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 06, 2020
12:44 AM
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.
The simplest thing you could do is to connect the same supply to VS and VSD.
May 06, 2020
01:02 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 06, 2020
01:02 AM
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?
in the application circuit. What can be the other problem?
May 06, 2020
06:14 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 06, 2020
06:14 AM
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
Regards
May 07, 2020
01:33 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 07, 2020
01:33 AM
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.
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.
May 19, 2020
02:40 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 19, 2020
02:40 AM
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
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
Jun 18, 2020
11:37 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jun 18, 2020
11:37 AM
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.