Automotive Throttle Body Driver...

Hello!

I could really use some help! I'm trying to figure out how to get the TLE5205-2 motor driver IC to drive a brushed motor from an electronic throttle body, but the results are all wacky.

When I first hooked up the TLE5205-2 to my power source and my arduino, I got it to work, but it took a considerably long time to move the throttle flap from 0 deg to 90 deg. The travel time was somewhere on the order of 2 or 3 seconds -which is unacceptable. These throttle flaps should move as fast as is shown in the youtube link posted below. The throttle motor was also pulsating and chattering -even when the pins were placed as HIGH with no PWM signal. I verified that the brushed motor was working properly by hooking it straight up to the 12v power source and it opened in an ideal fashion (rapidly without chatter).

I suspect that this problem is related to the spring assembly in the throttle body, which is always forcing the throttle flap back toward its resting position. When the PWM signal goes to LOW, the spring immediately pushes the throttle plate back down. But i'm confused as to why this would happen even with the PWM signal at HIGH.

My goal is to get this throttle flap to open quickly and smoothly. I dont have access to Eagle or any other circuit diagram software, but my circuit is about as basic as it can be. I have direct connections for everything -no cap, resistors, diodes, or anything. 12 power source going directly to the V-in of the TLE5205-2; output signals from the TLE5205-2 going directly to the throttle motor; logic level inputs from the arduino going directly to the TLE5205-2. The code is rudimentary as well.

Does anyone have any suggestions for how to deal with this problem? Perhaps

A few details of the problem:

  • I'm driving a high-stall brushed DC motor
  • I'm using TLE5205-2 H-Bridge Motor Driver IC with logic level input
  • The TLE5205-2 uses two logic level inputs: IN1 accepts the PWM signal; IN2 accepts HIGH or LOW inputs to determine direction
  • I'm supplying the TLE5205-2 with a max bench power of 12vdc @ 7a
  • The motor moves the throttle plate between 0 deg and 90 deg
  • The motor has a spring attached to it which forces the throttle plate to naturally rest at ~15 deg

If you want more information about what I'm trying to do, heres a link to a youtube video:

Thanks in advance!

HI,

You are switching some high currents here.

You need good bypass capacitors right at the driver chip, and you need keep the high-current stuff a physical distance from the motor and high-current cables.

This sounds like you are having Electromagnetic interference problems.

This is the datasheet I found for the TLE5205-2...

http://www.infineon.com/dgdl/tle5205-2.pdf?folderId=db3a304412b407950112b4381da46a3c&fileId=db3a304412b407950112b4381e296a3d

I can find no evidence that the TLE5205-2 supports pulse width modulation. As far as I can tell, it has four modes: clockwise, counter-clockwise, brake, open circuit detection.

I think you're right terryking228. I noticed some odd electrical interference problems but didnt connect the dots that it could be EMI. I'll separate everything physically.

As for the capacitor, do you have any recommendations? Infineon has a 100 uF bypass capacitor in their data sheet, would that be sufficient?


Hello Coding Badly. Thanks for the input and I know that the data sheet doesnt say anything regarding PWM. I decided to use this IC anyway because a few people online have driven it with PWM successfully and without drama.

But I'm open to alternative control suggestions. How would you suggest I control this motor driver IC? I'm a novice at programming languages but I'm willing to learn.

I am willing to help (bear in mind I may not be able to help) but there is a condition. You have to agree to publish the bit of code that drives the TLE5205-2 and a brief description of how well the code works.

Assuming you agree... Which board are you using?

What happens to the throttle when you apply LOW to both IN1 and IN2?

What happens to the throttle when you apply LOW to IN1 and HIGH to IN2?

What happens to the throttle when you apply HIGH to IN1 and LOW to IN2?

Hello Coding Badly,

Thank you very much for the offer! I am totally willing to agree to that. I would actually prefer to make this information available to the public. I'd like to offer this information to anyone who needs it so they dont end up in the same situation I have. FYI, I blew out the FET's in the TLE5205-2 so we'll have to wait another couple of days before I can start experimenting again, but I will post the successful code as soon as we figure this out.

For the record, I do think that terryking228 is right about EMI being the source of much of my problems. Thinking back on my day, I had some unusual physical symptoms like the IC was cutting in-and-out when I would move certain wires around. I was getting conditional performance based on the physical location of the microcontroller and the throttle body motor. I was also noticing that the wires going to the throttle body were magnetically attracted to one-another. I'm not quite sure how far I would need to move the objects to resolve these symptoms, but hopefully my leads are long enough.

That being said, to answer your question:

LOW @ IN1 & IN2 = CW Rotation (~15 deg to fully open);
LOW @ IN1 & HIGH @ IN2 = CCW Rotation (~15 deg to fully closed);
HIGH @ IN1 & LOW @ IN2 = BRAKE (motor held firm at whatever point it was at);

These experimental results were identical to the truth table found in the data sheet. The PWM signals took a little getting use to since 0 = wide open and 255 = closed, but it worked the same.

Do you need any more data?

Infineon has a 100 uF bypass capacitor in their data sheet, would that be sufficient?

That would be good, but I would also put a .1 uf in parallel with it and closest to the chip. It will be better than the 100uf at the highest frequencies.

Also think about Where Ground Is. You need a common ground point where the - side of the motor, The Driver chip ground, the vehicle ground, and Arduino ground come together. The motor - and the chip ground should be close together with short leads. MAYBE that means you need to be able to mount the driver close to the throttle body. THAT means quite an environmental challenge if this vehicle is roaring around all year..

Just how much current does this motor take?

alexxander_foster:
Do you need any more data?

Board?

Hello again terryking228,

Sounds good, I will add both a 100 uF bypass capacitor and a regular 100 nF capacitor then see how the circuit performs.

The motor seems to cap out at about 6a. I will probably put a resistor in the ground supply of the TLE5205-2 to make certain that the motor does not exceed an average amperage draw of 5a.

Regarding the distance of the TLE5205-2 from the motor and ground, thats a very good point. But now I'm confused. I'm mainly experimenting right now, but many of my conclusions and ideas are coming from existing automotive systems (no reason to reinvent the wheel per-say). The vehicle that I'm doing this project for was offered in two variations: a mechanical linkage throttle body and an electronic throttle body. I have actual wiring diagrams from the manufacturer of both types of throttle body systems as well as the pin locations of the ECU. The signal for the throttle motor comes amplified DIRECTLY from the engine computer, travels a distance of 0.5m, is wound up with about 30 other wires both sending and receiving signals, then terminates at the throttle motor. How could the manufacturer have worked around this?

The signal for the throttle motor comes amplified DIRECTLY from the engine computer, travels a distance of 0.5m,

Hmmm.. I would guess that they have some good filtering / bypassing figured out in the ECU module!

sigh well, thanks for all of your help terryking228. I'll do what I can with the current assembly then see what happens. Perhaps I can avoid some drama by using EMI shielded wire or something for the two leads going to the motor. If you think of anything else please let me know. I'm open to any and all suggestions!


To Coding Badly,

I'm using the Arduino Uno SMD. I'm using a laptop charger as my power supply. Attached is a .png of my breadboard layout. The TLE5205-2 wasn't available in my IC library so I just jerry rigged something. The TLE5205-2 is in a TO220-7 package so lets pretend -haha!

While you wait for replacement hardware, do you have access to an oscilloscope or logic analyzer?

You might want to try a TLE5206-2 as its operating logic more closely resembles a typical h-bridge.

[quote author=Coding Badly link=topic=107894.msg810179#msg810179 date=1338358562]
http://www.infineon.com/dgdl/tle5205-2.pdf?folderId=db3a304412b407950112b4381da46a3c&fileId=db3a304412b407950112b4381e296a3d

I can find no evidence that the TLE5205-2 supports pulse width modulation. As far as I can tell, it has four modes: clockwise, counter-clockwise, brake, open circuit detection.[/quote]

The evidence would be found in the reported switching times in the datasheet (page 12, 13, and the first graph on 16). Going from the maximum values only, it shows that when turning the source or sink on ("Output Delay Times") the delay is 20us, and turning off the delay is 5us. For the output to complete the switch ("Output Switching Times") the values are again in the single or double digit picoseconds.

With a little math time I'm sure a trained engineer could quantify the performance with PWM for this chip, but I'm not a trained engineer ;). My quantification would go by comparison to an L293 chip which reports its switching times in hundreds of nanoseconds. There are plenty of examples of users using PWM with that chip, and again by comparison, this Infineon chip should be many times better in performance.

Feel free to kick me in the nuts if I'm misinterpreting this.

Sorry guys, I got distracted. The replacement IC came a few days ago so I've been tinkering with different types of coding to get the thing to work properly.

First off, I reorganized the breadboard, per terryking228's advice, with some caps. I also putting some physical distance between the power supply, the motor, and the arduino. Lastly, I connected all of the grounds together. After I did all of this the motor driver worked perfectly! Thank you again terryking228!

Also, to squash the debate on this thread, this IC does support PWM :slight_smile:

If anyone is interested, heres my progress thus far:

The ultimate goal is to get the throttle motor to move to a specific position then hold itself there. The throttle body has an internal position sensor. I've been using "if" statements to move the throttle plate to a given position and stay there.

Unfortunately, what's been happening is the throttle motor gets to a position and cant hold itself there. I've been having to deal with this problem in two different ways: PWM and digitalWrite commands.

A big problem is that the throttle plate is spring loaded. The plate wants to close all of the time and the force of the spring increases by some extremely tiny exponential coefficient the further open the throttle motor goes. Additionally, that small exponential coefficient adds to the force with which the throttle motor wants to close when power is released.

In order to overcome the spring to open the throttle plate I have to use a around 80% duty cycle. Once I reach 80% duty cycle PWM, the spring is almost completely defeated and the throttle plate opens fully - albeit very slowly. Increasing the duty cycle further simply increases the speed with which it opens. If I use some level of PWM to open the throttle plate, it ends up being too slow to respond. So, unfortunately, I cant use the resistance of the spring in conjunction with PWM to help articulate a specific movement of the throttle plate.

The other end of the spectrum is using absolute voltage outputs via digitalWrite commands. But this has an odd effect. If I end up using an absolute voltage it ends up having too much torque & speed so it over shoots the target throttle position. I've tried using multiple "if" statements to force it back down when it over shoots, but the motor ends up getting stuck in a chattering pattern. The construction of the throttle body motor involves gears and the lash is fairly considerable. If I try to drive the motor back down because of an overshoot it builds up a bunch of speed and torque while eating up the gear lash, thus overshooting in the opposite direction. It then jumps back an fourth about +/- 1%. I can stop it by hand, so the "if" statement is working, its just being a PITA.

So, here's where I'm at now: I'd like to try and figure out how to manipulate the BRAKE feature of the TLE5205-2, but I'm not really sure how to make it do what I want it to do. When I first experimented with the BRAKE feature I didnt think I could find a use for it so I ignored it. When I activate the BRAKE, it simply slows the speed with which the throttle plate closes, but it wont hold the position. Now that I've had some time to think about it, I really need to take another look at it. After all, Infineon put it in this IC for a reason and this IC was specifically made for driving throttle bodies. Anyway, so my thought is if I use PWM to cycle between the OPEN and BRAKE, I can get the throttle plate to move to a fixed position and stay there. I can just use digitalWrite commands to drive the OPEN function then shift over to the BRAKE function once the target position is reached. I'm also thinking that I should just allow the throttle plate to overshoot the target position and naturally settle. Once I sort out the BRAKE feature I'll probably come back to the rapid CLOSE programming at some future date.

Fyi, the logic to get the TLE5205-2 to move is as follows:
OPEN

  • IN1 = LOW
  • IN2 = LOW

CLOSE

  • IN1 = LOW
  • IN2 = HIGH

BRAKE (slow close)

  • IN1 = HIGH
  • IN2 = LOW

OFF

  • IN1 = HIGH
  • IN2 = HIGH

Thanks again for everyone's help and interest!

I was facing the same problem as mentioned earlier. The motor was rotating smoothly in one direction and erratically in other direction. After some trial and error , now my tle5205-2 is running the motor in one and only one direction what ever the configuration is. Does that mean that my h-bridge has damaged?

I don't know, but you could find out by measuring the output voltages on each pair of pins.