|
Xoutpost server transfer and maintenance is occurring.... |
Xoutpost is currently undergoing a planned server migration.... stay tuned for new developments.... sincerely, the management |
|
LinkBack | Thread Tools | Display Modes |
#1
|
|||
|
|||
Seat Module, my $5.90 'fix'
I don't personally own an X5, so apologies for the long winded post, but this info is pretty useless just about anywhere else. I have friends with a 2002, 3.0i and when something is wrong with it I typically get a phone call about it and head over to check it out. I've already been thru a lot of the 'typical' X5 issues with it, and now the seat module is the latest to crop up. The seat module died on them a little over a month ago, and while looking around a bit I've seen this is a get a new expensive part and replace it to fix the problem kind of thing. Well a new seat module was a bit too expensive for their liking with the way things are at the moment, and I had no clue at all how it worked, so I decided to open her up and see what was going on in there. I couldn't find any info on the guts of this thing, at most was talk about the Relays in it going bad (from info 5+ years ago) and while I knew they weren't the issue, they were the very first thing that I did remove and check out, and they were all fine. The real culprit is the Motorola CPU in the thing, or more specifically the fact that they just wear out after years and years of use as they only have so many read/write cycles in them to save information. So every time the seat is moved, even if the Memory feature isn't used, that position data of where the seat/wheel is changes, and has to be saved in case the Memory feature were to be used on that data. After so many years, or from a lot of adjusting, the CPU just wears out and you get parts of the thing that don't work, or it just dies all together. With them heading out for vacation in another month, and an 8 hour drive there and then back, they would have liked this to have not happened so they could trade off on the drive down/back, but what ever breaks when you really have the time/money to deal with it? So after looking inside it a bit and reversing the entire thing to make up a schematic.. PDF of schematic - http://www.acidmods.com/RDC/X5/X5%20...Controller.pdf I've figured out most of what is doing what in there. I pulled the Motorola CPU (MC68HC711E20CFN2) off the PCB and coded up a PIC (16F1519) to deal with just the 'basics' of the seat. The seat movement is done with 3 Relays (Tyco V23084-C2001-A303 ++023411E Portugal) that are actually dual SPDT relays, so there are technically 6 SPDT Relays used in there. One of them (2 SPDT) is used to invert the power/ground polarity of the common motor line and the common line for the other Relays, so that the motors can run forward/backward, then the other 2 Relays (4 SPDT) are for turning on/off the 4 different motors, Incline, Slide, Height and Backrest. Now getting the seat to move again wasn't too difficult. It's just a matter of reading which button is pressed, and then turning on the Relays in the correct order, ie; set the power/ground polarity for the switch direction that is pressed, then turn on the Relay for that motor. The 8 seat switches are connected to an 8 channel data selector (MC14512) so that only 4 IO of the CPU need to be used instead of 8 IO. This is a code snip of how one of the switches is read and then the Relays for it turned on/off. Code:
A = 0; B = 0; C = 0; // Select switch 0, Seat Forward delay_us(10); if (Z == 0) // If the switch is pressed { // Set RLY_1 and RLY_2 for polarity, 10 or 01 depending RLY_1 = 0; RLY_2 = 1; delay_ms(10); // Wait for Relay to turn on while (Z == 0) // While the switch is pressed { RLY_4 = 1; // Turn on RLY_x for that switch } RLY_4 = 0; // Turn off RL_x for that switch // Set RLY_1 and RLY_2 to Neutral (polarity ground/ground) RLY_1 = 0; RLY_2 = 0; delay_ms(10); } This is one of the Column motors, the other being pretty much the exact same thing except the gearbox is mirrored.. http://www.acidmods.com/RDC/X5/ColumnMotor.jpg Now, where the Seat motors are controlled by Relays, the Column motors have that little black box on them that contains an H-bridge so that it's able to change direction, and that H-bridge is controlled by an Elmos 10017 chip. http://www.acidmods.com/RDC/X5/BMWColumnTop.jpg http://www.acidmods.com/RDC/X5/BMWColumnBottom.jpg This chip has no data available on it, so like the seat module it was taken apart and a schematic made up to get a better idea of what's going on in there. PDF of schematic - http://www.acidmods.com/RDC/X5/X5%20Colum%20Motor.pdf From what I've been able to tell it's some type of 1 wire motor controller, possibly with position and current feedback. So the control for the 2 Steering Column motors is all done over 2 wires (1 per motor) back to the seat module, which is also where the switch for the Column is connected at, from Column switch to Seat back to Column, brilliant. I was lucky enough that this thing still somewhat worked when I tried it out on the bench, despite it being pretty much dead in the X5, so I was able to get some Logic Analyzer grabs of what commands where being sent to these Column motors to tell them to move. These were taken from the CPU pins, 28 Send, 34 Receive, as it's setup to deal with the different logic levels (5v CPU and 12v Column motor controller) and it's also in a multiplex layout so these pins can be used to control multiple motors. There seems to be a 10bit command sent to the motor, then it sends back a 16bit reply. There is also a certain number of times these commands are sent, and in a certain order, to get the thing to make the motor run. This is what that looks like on the Logic Analyzer, running the motor in just one direction for a little bit. http://www.acidmods.com/RDC/X5/LAColumn.jpg Then the start of the above Logic Analyzer image zoomed in. http://www.acidmods.com/RDC/X5/LAZoom.jpg So as of now I can move the Seat and Column motors, though it does have it's short comings. What does work.. - The Seat can be moved, Incline, Slide, Height and Backrest all work. - The Column can be moved in all 4 directions. What does not work.. - K-bus integration, so there is no automatic wheel out of the way movement. - Current detection, to tell if something is obstructing the seat while it's moving. - Feedback for reporting position. - Memory settings. (all of the current/feedback needs figured out first) Now what does work to me far outweighs the issues of what does not, as none of that fluff was on power seats back when power seats were all new and fancy anyway, you had a circuit breaker and that was it. The Memory positions they never used, and the auto wheel option wasn't paid much attention to. Then if you can't tell the seat motor is at the end of it's travel or something is jamming it up then you probably shouldn't be using it. Now having said that, I am tinkering with trying to get most everything working. The way the current draw for the Seat motors work I have figured out already, just not implemented it yet. The feedback for the Column motor's position is a bit more technical and is mostly figured out now as well. The only part I haven't looked into is the feedback for position sensing for the seat, so that the Memory function can at least be implemented there, but since I don't have access to the car 24/7 these are things that may never really get done. I also have no real desire to reintegrate it with the K-bus either. Here is the PIC mounted on a PCB I designed to just replace the Motorola CPU, and still have access to all of the original pads for later testing. The wires there run off to a programming header so I can reflash the PIC if needed. http://www.acidmods.com/RDC/X5/X5SeatModule.jpg So far this has been in the X5 for a few days now and there have been no issues with moving the seat/wheel to wherever they want. Last edited by RDCX5; 10-31-2022 at 08:30 PM. |
Sponsored Links | |
|
#2
|
||||
|
||||
Sounds overly complicated and my eyes started to hurt just trying to understand all the terms; but seems like you are mechanically or electrically inclined and know what you're doing.To me it just makes more sense to just buy the new part that will last at least 15 more years.take off, install, done!
__________________
2006 X5 4.8is LeMans Blue / creambeige interior Prod.date: 2006-06-21 |
#3
|
||||
|
||||
You do understand that for the average X5 owner, without close friends who happened to be Electrical Engineers with time on their hands, the cost will be significantly more than $5.90. Correct???
__________________
2003 3.0i White/Black 5 speed Manual. Options: PP, SP, DSP, NAV, XENON. Mods: Aluminum Running Boards, 4.6 Body Kit, 20" Style 132 Wheels, Eisenmann Sport Exhaust with Oval tips, Aluminum pedals, Xenonmatch Fogs, M3 Steering Wheel. Can I have a sip of that HATERADE you're chuggin? |
#4
|
|||
|
|||
You do understand the thread title was 'my' $5.90 fix, not 'the' $5.90 fix, correct???
I'm also not an EE, I just happen to like figuring out how things work and learning new ones when the opportunity arises and time permits. It seems the average X5 owner has the money time and again to replace expensive parts on their vehicle when they fail, at least one however does not anymore. I just figured the info might be of interest to someone out there, as it would have been extremely helpful in my case had I happened across it, amidst the posts upon posts on multiple forums about the seat module. |
#5
|
|||
|
|||
I think what the OP has done is both informative and really cool. As these cars age out, it becomes increasingly unwise to pay high prices for single component failures, especially nice-to-have functionality that isn't critical to continued operation. Evenutally the engine and tranny will go, and all that OEM money put into seats, mirrors, nav, etc will seem pretty foolish. I'd rather keep mine going for $5.90 if I can and then save the difference for the eventual replacement vehicle.
To each his own, but I like this approach! |
#6
|
||||
|
||||
Thanks but I like my car to be fully functional
Like I said, really cool you can do all that electrical work but real life experience is something else And trust me I'm don't being a douche, I really appreciate people that are smart enough to do this kind of job I'm not one of them
__________________
2006 X5 4.8is LeMans Blue / creambeige interior Prod.date: 2006-06-21 |
#7
|
|||
|
|||
First post updated a bit.
Since this thing is back in the X5 now, if anyone has a bad seat module still around or are swapping one out, please PM me about it as I'd be interested in it to continue working some on this. |
#8
|
||||
|
||||
Its not clear from the original post, but it appears you fixed the module that controls the power seat positioning [front back up down]. Is this correct? I don't know how common a problem this is, unlike the old and very common E36 problem with a gear in the power seat, a mechanical fix. I admire your electronic ingenuity, for sure!
__________________
2006 X5 3.0 6-spd w/Evo UUC ssk sport/premium pkgs born Valentine's Day, 2006. |
#9
|
|||
|
|||
What does work..
- The Seat can be moved, Incline, Slide, Height and Backrest all work. - The Column can be moved in all 4 directions. What does not work.. - K-bus integration, so there is no automatic wheel out of the way movement. - Current detection, to tell if something is obstructing the seat while it's moving. - Feedback for reporting position. - Memory settings. (all of the current/feedback needs figured out first) |
#10
|
|||
|
|||
Thanks for digging into this so far. I'm an EE so your efforts aren't lost here. For me it comes down to available time at the time of the repair. If I have a backup vehicle and I'm not on the road a lot, I can afford to take the X5 down and do the repairs myself. I also have a neighbour who prefers to work with a soldering iron instead of a wrench, so I cook up the ideas and he makes them happen. Made up my first ADS cable for the E36 that way.
__________________
Daily Drivers: - 2008 535i, 290,000km - 2004 X5 4.4, 01/2004 production, 380,000km - 1998 328i, 370,000km Track: - 1996 328i, track/race car, ~300,000km Winter: - 2013 Ski-Doo MXZ X 800 E-TEC, trail can - 2001 Ski-Doo MXZ 600 w/800 engine, exhaust - 1978 Ski-Doo Olympique 340 (vintage race sled) - 1977 Ski-Doo Olympique 340E |
Bookmarks |
Thread Tools | |
Display Modes | |
|
|
|