Page 14 of 18

Posted: Sun May 07, 2006 3:27 pm
by Bruce Bowling
I have received some emails regarding the stepper circuit, particularly the overcurrent protection and jumpering the 1 ohm resistors. Here is a quickee on the 2916 circuit.

First, the DC coil resistance of the GM stepper motor (either coil) is roughly 50 ohms. Applying 12 volts to a winding and waiting for a while for the winding to current saturate will yield: 12volts/50 ohms = 0.24 amps. Scales with voltage, but even 20 volts gives approx 0.4 amps saturation current.

Next, the 2916 current limit circuit:

Image

The lower part of the circuit is the overcurrent protection. Io and I1 are both active (low in this case) when the stepper is enabled by MS2. This gives a current trip threshold point equal to: Vref/(10*Rs). For the MS2 circuit, Vref =5 volts and Rs = 1 ohm. So with our values we get 5/10 = 0.5 amps.

What this means is that the stepper motor current must be greater than 0.5 amps before the PWM current circuit kicks in. So it appears that with a GM stepper the most current draw is under 0.4 amps at 20 volts, this is lower than the 0.5 trip threshold point. So the PWM circuit should never activate...

But, in reality, there are things that can cause the PWM circuit to kick in. Long wires, winding flyback pulses, noise during the off time, etc. can cause a instantaneous voltage spike whih can trip off the PWM circuit.

In the circuit there is a Rc and Cc components. In MS2 they are not there (i.e. Cc is 0 and Rc = 0 ohms). These components can be introduced in the circuit to help filter out short spikes. MS2 did not use these values because they need to be tuned to a specific situation, depending on wire lengths, routing, etc. Wrong values can cause instabilities and even oscillation (trust me on this). The PWM is called a modified hysteretic oscillator, what it does is when the coil current exceeds the trip point it turns off current for a period of time governed by the product of Rt and Ct, then the current is reapplied. During the off time the current decays below the trip point.

If the situation comes up where the PWM circuit gets triggered, what we have been advising is to jumper out the 1 ohm Rs resistor. What this does is disable the PWM overcurrent detection. What occurs with the jumper Rs the resistance goes to zero, so there is no voltage generated across it and the sense terminal stays at 0 volts. So the current trip point cannot be reached. Now - with Rs jumpered there is no current limiting for short circuit situations - be aware about loose wires shorting to ground, this can take out the chip. If I was to design the stepper circuit again, I would remove Rs and short this out, and use polyfuse protection on the stepper leads. Hysteretic current limit is nice when there is a nice controlled environment with the same stepper motor/wire lengths/routing/etc.

A little on the values of Rt and Ct. I have had some correspondence with Allegro on this, and what I am waiting for is the current sourcing capability at the RC point. The datasheet alludes to a Rt min range of 20K, even though this is not a hard definition in the electrical specification (only a test condition). Early datasheets did not define this Rt range. Note that the time that the current is disabled is governed by the RC product. In our case, Rt is 1K and Ct is 0.056uf, this gives a RC time constant of 56 usec. The test specification values were 820pf and 56K, which gives 45 usec, very close to the MS2 RC time constant. The only issue that I would potentially see is if the RC current source point is loaded down with the 1K resistor. In this case the charge time of Ct would be extended, meaning that the stepper current is turned off longer than 56usec. I put in an known inductive load that would trip the overcurrent and scoped the Toff time and it is very close to 60 usec.

The thing to note is if the Rs resistor is jumpered then the Rt and Ct do not come into play because the current trip point is never reached.

- Bruce

Posted: Sun May 07, 2006 5:56 pm
by Joethemechanic
I decided not to completelly give up on MSII, so I loaded 2.66,

Here is what I can decern:


IAC controll IS acivated on initial COLD start, I.E. it has a high idle.
However, it will stay at that high idle point, or close to it, until WE mode is de-activated.

this is to say, I started it several times ( 6-10 ) befoe it got out of WE, it always stuck at a high idle. once the WE LED went out, it started at what I assume is My start up value then decreased to fully closed.

Point being that the stepper motor does not appear to function at all durring warm-up, once warmed up (<160 ) it seems to work fine.
I am beginning to think that this is realy a code issue, as far as I can tell once the temp is over 160 the IAC works fine.
Joe

Posted: Mon May 08, 2006 6:36 am
by grippo
oe,

There were no changes to stepper motor logic between 2.3 and 2.6 versions. In both versions there are two modes which can act to make the stepper look like its not working properly, that is, not following the steps vs temperature table.. The first is that you can force a faster idle than the table supplies during cranking only. The purpose of this is that some people like/ need a fairly wide open stepper during cranking regardless of the temperature, that is even on a hot restart. If this is set, the motor won't close below a certain point until after cranking is done. Cranking rpm is defined by the user.

The second mode - the one that may be most affecting you- is that when the stepper closes to a certain user defined position - the program stops following the table of steps vs temperature and instead switches to a time based logic. The motor gradually closes to the last table position over a user specified period of time regardless of the temperature. I believe this is what you are seeing and that is why the motor is moving after you reach 160 deg. It is only activated when the starting temperature (when you first power MS2) is below a user specified temperature.

Posted: Mon May 08, 2006 8:54 am
by JSC
Here are the waveforms. I recorded 3 separate cold starts on the scope. the first was on the output of the 2916 stepper driver, I noticed the odd beginning steps so I recorded the phase inputs to the 2916 (twice) to see if the problem was in the 2916 or the pulses driving it. Both recordings of the phase inputs looked the same. These waveforms are of the phase inputs to the 2916. The red trace is phase 2 or IAC1 from the CPU and the blue trace is phase 1 or IAC2 from the CPU.


WF1; This is the beginning of 190 steps retracting to position (0) after ignition on. Notice the first step in both phases are in sync, also they're about 2v, voltage rising on power up, don't know that this is an issue but maybe a short delay on power up before stepping? The remainder of the 190 retract steps are perfect.

WF2; This is the beginning of 100 steps extending to cranking position.
Both trace are in sync on the first couple steps, the remainder of the 100 extend steps are perfect.

WF3; This is after start, extending from the cranking position to the value called for in the IAC Step Table. Notice both traces are in sync on the first step.

WF4; This is the next step as the engine is warmming up. Or is this 2 steps? This simultaneous change of both phases happens every time the red trace is 0 and the blue trace is 1 prior to stepping. When both phases change at the same time, the motor should rotate 180 deg, but which direction? I believe it could result in -2 steps.

WF5; These are the next 2 steps on warmup. All looks good to me.

WF4 and WF5 repeat as warmup continues. If WF4 results in -2 steps and WF5 results in +2 steps, the net result is 0 (if I remember my math). This, to me explains why the IACs don't work well on warmup, but doesn't explain why the 2 MSII that I changed the RC components on, work quite well on warmup (not perfect, but usable).

Hope this helps.

Scott

Posted: Mon May 08, 2006 8:57 am
by JSC
Couldn't get all 5 to go on one post. Here's the other two.

Scott

Posted: Mon May 08, 2006 9:55 am
by BottleFed70
JSC wrote:Here are the waveforms.
I owe you a beer!

Thanks JSC for capturing and posting this.

Posted: Mon May 08, 2006 7:24 pm
by Perry
Just wanted to chime in as also having IAC problems and tell yall about an interesting observation.
I have MS II V2.35 firmware, V3 board, no relay board, square connector GM IAC (tried 2 different ones). I have not jumpered the resistors, and have run all 3 modes at different times (currently 15 minute)
Here are my observations:
I also sometimes have a high idle at cold start that only comes down by letting it run a few seconds then restating. sometimes it takes a few restarts to get it down.
it does not move little steps, only big ones.
it seems to sometimes change directions randomly, producing a higher idle when I put in a value that should lower it.

Tonight (before reading this post) I was trying to get the idle working again (it has never worked well but was way off after a reconfigure to get rid of a corrupt msq file..) anyway I ended up plugging in a spare IAC so I could see what happens at key on, cranking, and running (car was warmed up by the time i made my observations).
Key on- retracts fully, presumably because my start value is big enough to run the entire sweep of the IAC. does this everytime reliably.
Cranking- pintle extends, and a bigger cranking value results in a more 'open' or retracted position (high idle) than a smaller cranking value does.
Running, it does transition to the table value over the transition time, a value that is lower than the cranking value results in a lower idle and a value that is higher than the cranking value yields a higher idle. This matches the behavior of the cranking value.
Then it usually stops working, presumably because the steps are changing in small slow steps. But, if you put a new value in the idle steps table it responds by moving backwards from it's transition from cranking, in other words a high step value in the table lowers the idle. I think this has caused much of my confusion in the past.
Setting the cranking and idle steps values (all of them) to the same number of steps yields a mostly reliable idle speed but of course removes any usefulness of the IAC. i think for now I will unplug it entirely to avoid burning up the stepper chip until yall can figure things out. Also it will be nice not to have the occasional 4500 rpm idle first thing in the morning.
Also note that it seems that no matter how many steps i put in, I cannot get an idle below 1200 rpm, and as I increase the number of steps in the idle steps table the idle will lower to 1200 then start to rise.. This is with a restart in between each adjustment of the table.
Perry

Posted: Tue May 09, 2006 4:22 am
by Joethemechanic
oe,

There were no changes to stepper motor logic between 2.3 and 2.6 versions. In both versions there are two modes which can act to make the stepper look like its not working properly, that is, not following the steps vs temperature table.. The first is that you can force a faster idle than the table supplies during cranking only. The purpose of this is that some people like/ need a fairly wide open stepper during cranking regardless of the temperature, that is even on a hot restart. If this is set, the motor won't close below a certain point until after cranking is done. Cranking rpm is defined by the user.

The second mode - the one that may be most affecting you- is that when the stepper closes to a certain user defined position - the program stops following the table of steps vs temperature and instead switches to a time based logic. The motor gradually closes to the last table position over a user specified period of time regardless of the temperature. I believe this is what you are seeing and that is why the motor is moving after you reach 160 deg. It is only activated when the starting temperature (when you first power MS2) is below a user specified temperature.
Is this the case even on " IAC moving only " ? I treid using "15 min warm up " but it seemed the motor quit working at all. I was going to ask you, as I am still a little confused as to how that is designed to work, if you could just give me some base settings for the variuos coolant temps/steps, not the table, but the time based afterstart settings ?

I dont have a two channel scop handy, but it sounds like Scott is onto something. I am going to make up an LED visual confitmation circuit so I can watch the commands being set to the IAC.
Joe

Posted: Tue May 09, 2006 5:00 am
by bluetrepidation
Scott,

Interesting. I'll have to get my scope out again when I get more time. As for now what can we do next?

A.J.

Posted: Tue May 09, 2006 6:25 am
by S.Bretz
I just blocked the stupid Idle motor off and use the timing advance to speed the engine back up. It works pretty well.

I noticed that he IAC motor moved around with transfers from boost to vac...that was giving me real inconsistancey. The MS lost track of the pindle location.

SO I decided to make the pindle location more permanet :D