Infineon DC Motor Shield w/ TLE94112EL for Arduino - Review

Table of contents

RoadTest: Infineon DC Motor Shield w/ TLE94112EL for Arduino

Author: atiflz

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?:

What were the biggest problems encountered?: Finding the datasheet and the software. The XMC1100 board has no pin headers.

Detailed Review:

Meet TLE94112EL Shield

The board arrived in a flat box with bubble wraps, together with Infineon's XMC1100 Boot kit board. Although that is an excellent board, I tested the TLE94112EL Shield with an Arduino UNO because I expect that to be the case for most of the users.

 

The information and the code about the board has been a bit scattered around, it took a little bir of searching and link following to gather it all. Here is everything you will need to use it:

 

User manual of the board: https://www.infineon.com/dgdl/Infineon-DC_Motor_Control_Shield_with_TLE94112EL_UserManual-UM-v01_00-EN.pdf?fileId=5546d4…

The schematics and pinout are available in the user manual.

Datasheet of the [chip]: https://www.infineon.com/dgdl/Infineon-TLE94112EL-DS-v01_00-EN.pdf?fileId=5546d462576f347501579a2795837d3e

Arduino library with examples: https://github.com/Infineon/DC-Motor-Control-TLE94112EL

 

Assembly

 

Getting started with the board is pretty easy. If you have a board in standard Arduino form factor, you can just insert the shield. Like many good shields, all the relevant pins are labeled so, so we can easily scope them as we need, or check if there is a collision between this and any other shields we want to use.

One small caution: Arduino boards have the onboard LED attached to pin 13. Since this is also SPI clock pin, we cannot use the LED for any indication when the shield is attached.

If you want to use the XMC1100 board with the shield, you will have to solder female headers to it.

 

The shield comes with two chip select inputs, which we have to set with solder jumpers. If you want to stack two of them, or use pin 9 instead 10 as the chip select for some other reason, you need to remove a 0 ohm resistor and put one at the next slot. That way, we can attach two [shield]s on one arduino and use them independently on the same bus. Actually, the software already has two separate tle94112 objects to setup and control them with ease.

 

To get the library, you can simply clone the repository from github into your Arduino library folder. On a Linux system, that will typically be in ~/Arduino/libraries for the user, or the libraries folder in your Arduino installation for all users.

When the code is in the correct folder, Arduino IDE automatically recognizes it and can include the library or open the examples.

 

The examples are easy to follow and rather straightforward, a good place to start using the board. All the physical tests below are based on slightly modified example code.

 

There were two issues with the code that I had to edit. First, the library did not compile due to symbols TRUE and FALSE not being defined, but that was fixed a few days later, so this is not going to be a problem anymore. The other problem was, that the code is written for the XMC1100 board, which has a couple of onboard LEDs, where Arduino boards do not have them. So I deleted the 3 lines corresponding to them. Everything else worked fine without issues.

 

Features

 

To use the tle94112, you need to learn a little bit of its logical structure. It has 3 independent PWM generators, and 12 independent half bridges. This give quite a bit of flexibility but comes with some limitations.

Each half bridge can be independently set to one of high, low, floating, or one of the PWM generators. So if we are doing some on/off switching, we can omit the PWM generators altogether.

 

Each PWM generator can be independently set to 80, 100, or 200 Hz, and can have an 8-bit duty cycle (256 discrete values). This gives us roughly 0.4% resolution. I would have loved 20+Khz PWM control, but that requires some more complex and expensive power electronics, so it is perfectly understandable why it's not an option. For most use cases, especially with motors of less than 1A, these are good options.

 

So it can control 6 motors independently (or more, with cascading) but what it cannot do is control more than 3 full bridges at different duty cycles. Is this a big limitation? Depends on what you want to do with it. If you want to drive steppers, no issue at all.

 

Analysis

The signals are pretty clean when there is no motor attached, as you can see in the shot below.

image

 

They get slightly messy with motors, but not too bad, considering these noname generic DC motors from China.

image

And here is The board with an Arduino UNO, driving 5 separate H-bridges.

 

When I forcefully stalled two motors and forced 2A current through the chip, it rapidly started getting warm. I did not stall enough to trigger thermal shutdown, but I believe that's what would happen. It is nice to see it can sustain high current for a couple of seconds.

Final thoughts

 

The TLE94112EL is one of the rather interesting pieces of hardware I have got my hands on. Driving 6 DC motors, or 3 stepper motors with only 4 pins is definitely cool. Add one more pin and you can add another shield. In practice, however, I am struggling to find a use case. It is definitely a great tinkering and learning tool. Also it is probably the most compact solution in the market if you want to drive so many motors.

 

It can also be a very convenient LED driver, as it can control 12 channels, or 4 separate RGB strips (or 3 RGBW strips). However, the only 3 independent PWM setting limitation will have an impact. This can be worked around with some clever hacks (like using 3 PWM channels are 3 intermediate levels, and limit the use case to 4 different brightness levels only.)

 

For someone just getting started with robotics, I would recommend using PWM controlled servos and one of those PCA9685 or similar PWM generators. For someone who wants to leave those servos behind and learn more advanced electromechanics, this shield seems like a great option.

 

As a robot developer by profession, I would still prefer something with 6 individual PWM inputs and direction/enable inputs, but that setup would be more expensive and definitely not compact as a TLE94112EL chip. If you can live with the 3 independent generator limitation, this is an excellent device.

Anonymous
  • Good review.

    I found it strange why it would be designed for a number of motors under 0.9A out of the box.

    I suspect the three steppers might be the clue as it makes a very compact controller for 3 Axis control.

     

    The application doc for the chip hints at it's uses.

    • HVAC Flap DC motors
    • Monostable and Bistable relays
    • Side mirror x-y adjustment and mirror fold

     

    Obviously there was a market demand for 12 half bridge power outputs with feedback and protection

     

     

    We are the winners when Infineon decided to make an Arduino shield.

     

     

    Mark

  • Hi. It does not give you current readings, however, the status registers will warn you when you are approaching the overcurrent or overtemperature limits before shutting it down. If you monitor the status register, you can take precautions.

  • Nice review.

     

    Was there anyway to detect the current increase on chip to trigger a software shut down on the affected motors?

     

    DAB