Operating BLDC motor with Infineon TLE9879Qx Motor driver


I am trying to drive a BLDC motor (BL17E19-01D-03RO) using infineon TLE9879Qx shield and Arduino Uno (Please refer the attached links for component details).

BLDC Motor

Infinieon Motor driver

Arduino Uno

We are facing some issue and would like to post here for a solution.

1.) We have operated the motor in FOC mode, but we were not able to get a speed feedback. I have referred the example codes provided and could not find any library function for getting the motor speed feedback. So is there a specific function for this purpose?

2.) As stated in the motor description, the rated voltage is 24 V, but we were not able to operate the motor at that particular voltage. Rather, the motor is operating at around 22 V (At a lower speed). Can we operate the motor with the shield at 24V?

3.) When we tried to operate the motor in hall mode, it was not operational, rather it was stuttering and stops. Should we tweak any particular parameters to make it work? If so, could you recommend what they are? Also, is it possible to get hall sensor feed back? (Any Functions from Library)

4.) Apart from Arduino Uno, we have also tried to operate the motor using Arduino Mega, but the motor is not starting although the pins connected are the same as Uno. Should we modify anything?

Thanks in advance!

Dear @Shuren,

Looking at the manual for the board, it looks to run from 5.5 ~ 28V. It makes me think your supply might not be able to supply enough current if it can only run at 22V. If you have it running at 22V and increase it to 24V, does it keep running? If so, your supply may not be able to deliver enough current during the motors’ start as the inrush current is often many times what the running current is.

Also, I see that the board has Overcurrent Protection as a feature. If your supply has current to spare, you may need to adjust it in software…

If you have yet to visit this page, BLDC_SHIELD_TLE9879 - Infineon Technologies I’d encourage you to see Getting Started as well as exhausting the other resources provided.

Hello @Shuren,
I worked with the TLE9879QX BLDC shield and example code with the Arduino Uno and recommended Trinamic motor when in the process of writing the post
Driving a BLDC Motor with Infineon’s TLE9879Qx 3-Phase Motor Driver Shield
. I did not work with it extensively but based on the info I found wanted to provide some feedback to your questions.
Regarding 1, there is no function I found for getting motor speed feedback, you just set the speed with the command setMotorspeed.
Regarding 2, like Brian German mentioned, it’s up to you to provide the necessary motor power supply.
Regarding 3, I suspect you need to modify the parameters as you suggested but I have not worked with BLDC motors much and don’t have any specific suggestions. One thing that I did find useful though was to download the zip file “BLDC Shield for Arduino with TLE9879QXA40” at BLDC_SHIELD_TLE9879 - Infineon Technologies. This file includes the source code for the TLE9879QX used in the BLDC shield which includes define files for the default motor settings for FOC, HALL, BEMF parameters used in the example code. Have you verified you have your hall sensor connected correctly?
Regarding 4, I have not tried testing with other Arduinos so don’t have feedback. I would start with verifying the SPI connections are set correctly for the Mega.
Best Regards,
Scott Raeker

Thanks for your reply @ScottRaeker and @Brian_German.

Further I tried operating the motor with the same procedure as I mentioned above (In FOC mode). But somehow, the motor is not driving (The Blinky example code is also not operational). I checked the arduino uno and that’s working fine.

1.) So, is there a way to check if my TLE9879Qx motor driver board is working fine?
2.)Do you think there is any particular reason it is not functioning as before?


One thing that pops to my mind would be to make sure you are using the version of Arduino that Infineon used.

@Brian_German I am using the same Arduino version

Hello @Shuren,
I am in process of trying to get my old setup with the BLDC shield and Arduino running. I was able to get blinky to work but having issues with the example code driving the Trinamic motor. While doing some searching I came across a post on the Infineon community that discusses a need to change the shield firmware if you want to operate above 17.3 volts.

Infineon link is at https://community.infineon.com/t5/MOTIX-MCU/BLDC-Sensorless-FOC-TLE9879-Arduino-Kit-24VDC-and-high-speed/m-p/343561#M832

I suspect the issues I am having may be related to the Arduino version since I last worked on the example code over a year ago. Will update this thread as I get more info.

Hello @Shuren,
My Windows laptop is getting quite dated so I tried testing on a newer Windows 10 laptop with Arduino 2.0 IDE installed. Both the “bldc_shield_blinky_test” and “bldc_shield_single_motor_test” worked fine as provided. You may want to try out 2.0 to see if you have better luck.