Getting Started with Sensorless Field Oriented Control of BLDC Motors and Infineon

Electric motors are everywhere, in our homes, workplaces, and vehicles. Take a typical modern automobile for example, an average of around 35 motors can be found distributed throughout the vehicle. Both standard DC and brushless DC (BLDC) motors are used for applications ranging from fuel pumps to window lifts (Figure 1).

Figure 1. Typical applications for DC and brushless DC (BLDC) motors. (Image source: Infineon)

With the growth in electric and hybrid electric vehicles, the trend is toward even higher numbers of motors per vehicle. Besides automotive, DC and BLDC motors are widely used in many industrial automation, control, and robotics applications.

BLDC motors are generally used in more demanding applications because of their performance advantages over brushed DC motors. BLDC motors provide higher efficiency, longer lifespan, and higher torque per weight ratio as compared to DC motors. BLDC disadvantages include their higher cost and requirement for additional controller circuitry.

On a personal note, I recently upgraded my battery-powered drill and impact driver from brushed to brushless DC motor technology. The improvement in torque and battery life was outstanding and well worth the extra cost.

BLDC Motors

BLDC motors are a variation of a traditional standard DC motor. The basic difference being the BLDC motor requires the commutation to be performed by electronic means rather than mechanical brushes. The rotor of a BLDC motor consists of permanent magnets, and the stator is wound with a corresponding set of poles. A control circuit is used to energize the windings and generate a rotating field. Motion and torque are generated as the rotor magnets try to align with the rotating stator field.

Sensorless Field Oriented Control (FOC)

Sensorless Field Oriented Control (FOC) is one of the methods used to control a BLDC motor’s speed and torque. Field oriented control (also known as vector control) is a technique used to generate a 3-phase sinusoidal modulation which then can be controlled in frequency and amplitude. Calculations are used to transform the three-phase signals into two phases that are easier to control and implement in the motor control circuit. Sensorless control eliminates the position sensors and instead measures back electromotive force (EMF) to determine rotor position.

Implementing Sensorless FOC in a Microcontroller

Implementing sensorless FOC requires taking signal measurements and performing math calculations. A microcontroller with the necessary performance and peripheral set is a good fit to implement this functionality. Infineon’s TLE9879QXA40 is a single chip 3-phase motor driver SoC that integrates an Arm® Cortex®-M3 core (Figure 2).

Figure 2. TLE9879x Application Block Diagram. (Image source: Infineon)

It includes six fully integrated NFET drivers optimized to drive a 3-phase motor via six external power NFETs, a charge pump enabling low voltage operation, and programmable current along with current slope control for optimized EMC behavior. Its peripheral set includes a current sensor, a successive approximation ADC synchronized with the capture and compare unit for PWM control, and 16 bit timers. A LIN transceiver is also integrated to enable communication to the device along with a number of general purpose I/Os. It includes an on-chip linear voltage regulator to supply external loads.

Infineon’s TLE9879QXA40 is a good solution for implementing field oriented control of BLDC motors. It has the performance and feature set to implement a high-performance, cost-effective BLDC motor driver in minimal board space. The in-depth application note “Sensorless Field Oriented Control with Embedded Power SoC” details FOC theory and how the algorithm can be implemented.

Getting Started

Infineon’s BLDC_SHIELD_TLE9879 low-cost evaluation board is an easy way to get started with sensorless FOC. It is based on the TLE9879QXA40 and designed to drive BLDC motors in combination with an Arduino compatible baseboard. When combined with an Arduino Uno and compatible BLDC motor, you can be up and spinning the motor in less than an hour (Figure 3).

Figure 3. BLDC_SHIELD_TLE9879 mounted on Arduino Uno baseboard. (Image source: Infineon)

Schematics, Arduino library, and complete documentation for the BLDC_SHIELD_TLE9879 are available at While researching this blog I spent time working with the Uno and shield to familiarize myself with driving a BLDC motor. Configuration steps, test code, and document references are included in my Driving a BLDC Motor with Infineon’s TLE9879Qx 3-Phase Motor Driver Shield project posted on Digi-Key's TechForum.

Application Development

For those interested in digging deeper into TLE9879Qx based design and development, Infineon provides additional resources. As a starting point, source code for the firmware flashed on the BLDC shield is available as Keil uVision project files. The project files are included in the software download “BLDC Shield for Arduino with TLE9879QXA40” from Infineon at link BLDC_SHIELD_TLE9879 on the shield project page. Additionally, besides the BLDC shield, the REF_WATERPUMP100W pump reference design, and REF_ENGCOOLFAN1KW fan reference design are available from Digi-Key.


Infineon’s BLDC_SHIELD_TLE9879 evaluation board provides a quick, low-cost way to get started using sensorless FOC to drive BLDC motors. The board is also a good resource for more advanced users interested in evaluating the TLE9879QXA40 and starting with the source code provided.

External References

1 – Infineon. “Motor Handbook”

Achtergrondinformatie over deze auteur

Image of Scott Raeker

Scott Raeker, Principal Application Engineer bij Digi-Key Electronics, is sinds 2006 in dienst en zijn voornaamste verantwoordelijkheid is het ondersteunen van klanten bij draadloze toepassingen. Hij heeft meer dan 35 jaar ervaring in de elektronische sector en is afgestudeerd in Elektrotechniek aan de Universiteit van Minnesota. Scott geniet in zijn vrije tijd van het opknappen van zijn oude boerderij.

More posts by Scott Raeker