Announcement

Collapse
No announcement yet.

heinzboehmer's 2002 Topaz 6MT Coupe

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    sweet - all good. I've had a pretty good go through the code, there's a significant number of LLS (idle sync controller) errors that will trigger an EGAS emergency mode, but not all. confirmed as well that this logic is significantly different on the CSL specifically as it doesn't have the HFM (MAF sensor) to fall back on.
    2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace/Apex ARC-8s
    Build Thread | Community Patch | MSS54 DS2 Tool

    Comment


      Also, I couldn't help myself. This is what an ICV looks like on the inside:

      Click image for larger version

Name:	20260611_204140.jpg
Views:	18
Size:	76.1 KB
ID:	358269
      Click image for larger version

Name:	20260611_205129.jpg
Views:	20
Size:	66.1 KB
ID:	358270
      Click image for larger version

Name:	20260611_205616.jpg
Views:	18
Size:	79.3 KB
ID:	358271
      Click image for larger version

Name:	20260611_205726.jpg
Views:	19
Size:	119.0 KB
ID:	358272
      Click image for larger version

Name:	20260611_205951.jpg
Views:	19
Size:	95.4 KB
ID:	358273

      I had to cheat a bit at this point. There's a needle roller bearing at the very end of the casting that supports the top of the shaft that runs through the center of the rotor. But there's also another, bigger ball bearing that's held captive with this retainer:

      Click image for larger version

Name:	20260611_212735.jpg
Views:	17
Size:	87.7 KB
ID:	358274
      Click image for larger version

Name:	20260611_212839.jpg
Views:	17
Size:	90.6 KB
ID:	358275

      The correct way to take this apart would be to insert a sleeve-like tool in between the casting and the rotor to push this retainer out of the way, then pull the rotor out. I don't have this tool and I was unable to get a good grip on the rotor with pliers, so I went the caveman route and cut the top off of the casting. With the shaft exposed, it was pretty easy to tap out.

      Click image for larger version

Name:	20260611_210934.jpg
Views:	19
Size:	64.5 KB
ID:	358276
      Click image for larger version

Name:	20260611_211740.jpg
Views:	18
Size:	81.5 KB
ID:	358277
      Click image for larger version

Name:	20260611_212114.jpg
Views:	19
Size:	137.5 KB
ID:	358278

      Worth going into a bit of detail about the electronics as well. In retrospect, what I learned is obvious, but I was a bit blinded by an assumption I made a long time ago. The first time I saw the three pin connector, I immediately assumed that this was a brushless motor and I guess that idea never left my mind. But if you look closely at the stator, you'll see that there's actually only one continuous winding, with a tap in the middle:

      Click image for larger version

Name:	20260611_210124.jpg
Views:	19
Size:	126.8 KB
ID:	358280
      Click image for larger version

Name:	20260611_210136.jpg
Views:	17
Size:	118.5 KB
ID:	358281

      Looks like this is designed this way so that you don't need to flip the polarity of the voltage going to the actuator to reverse its direction. Instead, you have a common tap in the middle of the winding that you can hold at a static voltage and then actuate the rotor by pulling up/down the other two pins. There's a bit of SW overhead involved with this approach to ensure you don't try to rotate it both directions at once, but it's nothing compared to the HW overhead that would be needed to reverse the polarity of the current going through the stator. I like it.

      Quick look at TIS confirms this. Pin 2 goes straight to fuse 2 in the engine bay. Pins 1 and 3 go to the DME and get pulled down to ground when it wants to spin it one direction or the other.

      If you look closely at the bottom of the casting, you'll see a "track" that a pin in the rotor rides in. This limits the rotor's range of motion, so that all the DME needs to do is energize it one way or another. Kinda crazy to think that this thing is an on/off switch. I always thought there was more fine grained control involved in the idle air circuit, but I guess not. Again, TIS helps confirm this with the descriptions in the DME pinout:

      Click image for larger version

Name:	Screenshot 2026-06-12 at 12.29.16 AM.png
Views:	19
Size:	29.7 KB
ID:	358279

      I guess, technically, the DME could hold the valve in some middle state between open and closed by quickly alternating what pin it's driving, but there's no position feedback anywhere on this thing, so that sounds highly unlikely. It would either need to guess the current position or rely on feedback from the MAF/MAP, which would nowhere near fast enough for this to work reliably.

      I also measured the resistance of each section of the winding and got 11.0 Ω for one and 12.3 Ω for the other. For completeness, I hit the stator with a torch and measured again. Resistance went up as expected, but unfortunately, I found no faults in the wiring related to heat. Nothing really stands out to me here.

      Honestly, at this point, it's looking like this thing is working exactly as expected. It's designed pretty robustly, so not surprised these don't ever go bad (like George Hill was saying).


      There were two things that caught my eye though.

      The first one I noticed before even taking it apart:

      Click image for larger version

Name:	20260611_203151.jpg
Views:	18
Size:	90.1 KB
ID:	358282

      Those streaks make me wonder if some sand or similar got in there and messed up the bore. Could also be causing the valve to sporadically stick.

      The second thing I noticed was a bit more confusing:

      If I turn the rotor all the way to it's fully closed position, it WAY overshoots and lets a bunch of air through. This is what it looks like when it's held against its "fully closed" limit:

      Click image for larger version

Name:	20260611_214051.jpg
Views:	18
Size:	125.8 KB
ID:	358283

      Note that the valve is turning more than it should and not less. If the face of it were longer, it would still be closed. I probably should have taken a video of this, since it's almost impossible to show in a static image, but just trust me on this one.

      I don't know exactly how this valve is blended with the throttle bodies, but I can see why the DME would freak out if it's expecting the valve to be fully closed, but it's actually 1/3 open. I'll have to check if the new part does this same thing or not.

      In a previous picture, you can see small dents at both ends of the feature in the casing that limits the valve's rotation, but I'm not convinced that those account for this in its entirety. Looks to me like the valve overshoots by more than the size of those dents, but it's hard to tell. Surprisingly, I saw absolutely no signs of wear on the pin that slams against these limits.

      So, I've learned how this thing works, but I'm still unsure if it's actually broken. I mean, it's broken now, but maybe it wasn't broken before I started poking at it
      2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

      2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

      Comment


        Thanks for sacrificing this to show us how it's built - super interesting and good to understand how it works.

        Originally posted by heinzboehmer View Post
        Kinda crazy to think that this thing is an on/off switch. I always thought there was more fine grained control involved in the idle air circuit, but I guess not. Again, TIS helps confirm this with the descriptions in the DME pinout:
        It's definitely fine-grained. It's controlled via a 100hz inverse duty cycle.
        2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace/Apex ARC-8s
        Build Thread | Community Patch | MSS54 DS2 Tool

        Comment


          Originally posted by karter16 View Post
          It's definitely fine-grained. It's controlled via a 100hz inverse duty cycle.
          Wait what.

          I believe you, but how does the DME know what the position of the valve is?
          2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

          2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

          Comment


            Originally posted by heinzboehmer View Post
            Wait what.

            I believe you, but how does the DME know what the position of the valve is?
            I don't think it really needs to - the current duty cycle gives a relative position of sorts, but really the idle controller is a fancy rpm-based feedback loop.

            If RPM below target, increase duty cycle proportionally, evaluate response, continue to adjust, etc.

            That's a simplified example, target air mass calculations and all that are in there too, but all inferred from the duty cycle as far as I can tell.
            2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace/Apex ARC-8s
            Build Thread | Community Patch | MSS54 DS2 Tool

            Comment


              That's wild. I'm surprised that control loop works as well as it does. Would have thought the latency of the feedback would be too high for it to be stable.
              2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

              2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

              Comment


                Aha!

                New genuine valve arrived. Bosch, made in Germany, with a manufacture date of late 2019. As far as I can tell, the design is identical to the one that was original to the car.

                I gave it 12V in both directions to observe its limits and found this (apologies for the shitty pics, it was quite hard to hold the valve + wires + phone all at once):

                Idle:

                Click image for larger version  Name:	20260612_140411.jpg Views:	0 Size:	100.1 KB ID:	358330

                Fully open:

                Click image for larger version  Name:	20260612_140510.jpg Views:	0 Size:	102.8 KB ID:	358331

                Fully closed:

                Click image for larger version  Name:	20260612_140408.jpg Views:	0 Size:	97.1 KB ID:	358332

                This one doesn't overshoot!

                I tried pushing it past its fully closed state with a toothpick, but was unable to. It felt like it was at the mechanical limit.

                I can definitely see the DME throwing an error because of this, especially if the control loop is based on RPM/measured air like karter16 confirmed. Flow leading to the error would look something like this:

                DME tells valve to fully close -> valve overshoots and lets a little bit of unexpected air in -> RPMs rise -> DME reacts to RPM rise by telling valve to close more -> valve overshoots more and lets more air in -> RPMs rise more -> DME tells valve to close more -> rinse and repeat -> DME gives up and throws an error

                I'll get this installed and tested soon. I'll be very happy if this solves my recent low speed jerkiness and it turns out that I do know how to drive stick.
                2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

                2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

                Comment


                  Weeell, there goes that theory. Managed to prove it wrong two separate ways:
                  1. The old valve, with the stator clocked like it was prior to disassembly (I marked it), does not overshoot when given 12V. It can mechanically overshoot, but the motor cogs at the fully closed position, since there's no commutator to keep it spinning until it hits the mechanical limits. I'm guessing the limits are purposefully placed further out to avoid having the pin slam into them every single time. This makes sense.
                  2. I was able to force the new valve to overshoot by pulsing the 12V signal to it, effectively causing a positive feedback loop. Looks like the mechanical stops are in the same place as the old one, but it doesn't overshoot when held at a static voltage because of that same cogging effect.
                  Maybe the simpler "dirt was causing it to stick" theory is gonna end up being the winner here? Or maybe this valve wasn't failing after all?

                  I should probably stop messing with this and just put the car back together...
                  2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

                  2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

                  Comment




                    one gallon of this has cleaned all my car’s ICV’s for the last 30 years, whenever I have access to them. Very low effort and cheap preventative.

                    2005 IR/IR M3 Coupe
                    2012 LMB/Black 128i
                    100 Series Land Cruiser

                    Comment


                      Originally posted by Obioban View Post
                      https://www.amazon.com/clp/B00DSMEL2...2R1WD61CA2KYC5

                      one gallon of this has cleaned all my car’s ICV’s for the last 30 years, whenever I have access to them. Very low effort and cheap preventative.
                      I usually spray mine down with electronics parts cleaner, but might need to start doing the soak thing.
                      2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

                      2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

                      Comment


                        Also, WOW. Turns out I'm not a shitty driver (I think), it was the car!

                        Like any good scientist, I changed multiple variables at once before testing, so I'm still not convinced the ICV was fully at fault.

                        In addition to the ICV, I also swapped in new individual throttle pull rods (13547832148). There really wasn't anything wrong with the ones on the car, but I had new ones on hand, so I took the opportunity to refresh them.

                        Here's a quick comparison of the play in the pull rods. Cylinder 1 has a new one, 2 and 3 have old ones. Recommend headphones so you can hear the difference, cause it's practically impossible to tell visually:



                        I didn't even bother taking a picture of new vs old, cause they looked identical.

                        One thing that did change with the new ones is that the ITBs no longer squeak when actuated! Guess there must have been some crud inside one of the pull rods. I'm surprised this was the cause of the noise, since it's always sounded metallic to me, but I'm not complaining.

                        Anyway, after doing this work, I cleared idle/throttle adaptations and took the car on the same test route that had triggered the ICV code before. No more codes and driving impressions are all positive. Here's the stuff that most stood out to me:
                        • Throttle tip in is way smoother. I used to feel a subtle bucking that I attributed to slack in the drivetrain, but that's pretty much gone now.
                        • Pulling away from a stop is also much smoother. I feel like I no longer have to anticipate what the engine will do, since it now does what my foot tells it to. I think the best way to describe this is that it feels like a more modern car now.
                        • The little bit of remaining weirdness at ~1800 rpm is gone, gone. I'm hoping this was the last remaining difference between mine and Bry5on's car.
                        • In general, the engine's response to small throttle inputs feels more "rounded". This is a very welcome change.
                        All of that is subjective, though, but I think the before/after adaptation values tell a pretty clear story:

                        Before:
                        Idle controller adaptation torque: 36.3 Nm
                        Idle controller start torque: 36.3 Nm
                        Idle controller start torque with A/C: -24 Nm
                        Idle controller start air mass: 0.0625 kg/h

                        After:
                        Idle controller adaptation torque: 2 Nm
                        Idle controller start torque: 2 Nm
                        Idle controller start torque with A/C: 3.2 Nm
                        Idle controller start air mass: 0.92188 kg/h​
                        So even though I didn't fully figure out what was wrong, I do think I solved the issue. I need more seat time to know for sure, but I'm happy for now.
                        2002 Topasblau M3 - Coupe - 6MT - Karbonius CSL Airbox - SSV1 - HJS - Mullet Tune - MK60 Swap - E86 Front Triangulation - ZCP Rack - Nogaros - AutoSolutions - 996 Brembos - Slon - CMP - VinceBar - Koni - Eibach - BlueBus - Journal

                        2012 Alpinweiss 128i - Coupe - 6AT - Slicktop - Manual Seats - Daily - Journal

                        Comment

                        Working...
                        X