XK8 / XKR ( X100 ) 1996 - 2006
Sponsored by:
Sponsored by:

Servo assistance control.

Thread Tools
 
Search this Thread
 
  #1  
Old 07-28-2015, 02:32 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default Servo assistance control.

Hi
I have been lurking around for a good couple of months now (ever since i bought my 2000 Jaguar XKR) but this will be my first thread and post for that matter. I have attempted to follow the introduction information to the best of my abilities but if i'm missing something in my profile etc. please let me know.
(Yes i have intentionally kept the level of shared information to a minimum as i'm not fond of being tracked more than necessary)

I'm currently working on reverse engineering the ZF Servotronic control module to allow me to control the level of servo assist. (if you're reading this odds are you know why )

I will try to keep it short and reduce the level of techno babble but as this is electronics there's bound to be some.

I did quite a bit of reading, took the module apart and did a fair number of measurements on the control module itself.
I picked up a couple of interesting things reading up on this.
1. The vehicle speed signal is basically 1 pulse per 1 km per hour.
2. The resistance of the solenoid in the steering rack should be around 4 Ohms.
3. This "issue" isn't just restricted to Jaguar. Audi, BMW and even the odd Ferrari use the same ZF system.

Measurements:
1. The range of servo assistance goes from (0 mA at 220 Km/h) to (680 mA at 220 Km/h)
2. The duty cycle of the Solenoid output ranges from (0% at 220 Km/h) to (70% at 220 Km/h)
(I have a lot more information but i won't bore everyone with it. If you're interested please let me know)
Please see ZF-Curve for details.

My initial idea was to "intercept" the vehicle speed signal and do an inline translation to a number of static settings as well as a some preset servo assist curves.
(this would work just fine but i find the solution a bit crude)

The next option was to basically remove the vehicle speed input pin on the microprocessor as well as the PWM output and basically replace them with a microprocessor of my own design. The benefit of this is that the existing module would handle the level shifting from car 12-15V to the MCU's 5V TTL logic.

Now here comes the problem (to me at least) the vehicle input is pretty easy to trace and ends up on pin 19 of the Custom Motorola/ZF MCU in the bowels of the control module.
The output however is unfortunately beyond my skill set. it seems to be made up of two signals. Pin 15 and Pin 16 which is inverted but the timing seems off compared to the output of the control module.
(this may be down to the level of equipment i have available but still)
Please see ZF-Pinout for details.

Has anyone in here successfully reverse-engineered this module?
Has anyone attempted this?
Any information regarding this is highly welcomed.

Hope i haven't bored you too much.
Best
/Stig.
 
Attached Thumbnails Servo assistance control.-zf-pinout.jpg   Servo assistance control.-zf-curve.jpg  
The following 4 users liked this post by XKR1975:
Johnken (07-28-2015), Toli0002 (04-11-2020), volkris (04-01-2019), WhiteXKR (07-28-2015)
  #2  
Old 07-28-2015, 03:12 AM
dibbit's Avatar
Veteran Member
Join Date: Oct 2010
Location: Spain
Posts: 1,204
Received 459 Likes on 331 Posts
Default

Interesting project. Why do you consider it too crude simply to modify the speed input? I would at least try that first to see what the results feel like, even if it doesn't give you the level of control you want.

BTW, is this speed range correct?

1. The range of servo assistance goes from (0 mA at 220 Km/h) to (680 mA at 220 Km/h)
2. The duty cycle of the Solenoid output ranges from (0% at 220 Km/h) to (70% at 220 Km/h)
 
The following users liked this post:
XKR1975 (07-28-2015)
  #3  
Old 07-28-2015, 03:21 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Hi Dibbit

The crude part is basically just a feeling To me it means working around the problem instead of fixing the root cause. But i'm beginning to lean towards just going for it.
You're absolutely right. i have a couple of typo's in the measurement part.

Now... if i could just get to editing the original post. i'll correct it as soon as i figure out how.

Thank you for letting me know.

Best
/Stig.
 
  #4  
Old 07-28-2015, 03:22 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Edit to above measurements:
Measurements:
1. The range of servo assistance goes from (0 mA at 220 Km/h) to (680 mA at 10 Km/h)
2. The duty cycle of the Solenoid output ranges from (0% at 220 Km/h) to (70% at 10 Km/h)
 
  #5  
Old 07-28-2015, 03:29 AM
dibbit's Avatar
Veteran Member
Join Date: Oct 2010
Location: Spain
Posts: 1,204
Received 459 Likes on 331 Posts
Default

That makes more sense. . Presumably its a logarithmic curve?
 
  #6  
Old 07-28-2015, 03:37 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

If you take a look at the attachment "ZF curve" in the initial post you'll see that it's actually not a logarithmic curve but rather a linear curve with a bent bit in each end
 
  #7  
Old 07-28-2015, 03:56 AM
dibbit's Avatar
Veteran Member
Join Date: Oct 2010
Location: Spain
Posts: 1,204
Received 459 Likes on 331 Posts
Default

In which case you might try adding one, rather than relying on those bent bits.
 
  #8  
Old 07-28-2015, 04:04 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

I'm sorry but i don't quite understand what you mean.
Could i have you elaborate a bit on that?

Best
/Stig.
 
  #9  
Old 07-28-2015, 07:12 AM
dibbit's Avatar
Veteran Member
Join Date: Oct 2010
Location: Spain
Posts: 1,204
Received 459 Likes on 331 Posts
Default

Rather than having a linear (inversely proportional) relationship between the speed and the assistance, you could try a logarithmic one, so that the assistance falls off more quickly at first. I.e. you get maximum assistance at parking speeds, but that quickly falls off as you speed up.

There will be lots of tweaking required to get what you want.
 
  #10  
Old 07-28-2015, 07:22 AM
WhiteXKR's Avatar
Veteran Member
Join Date: Apr 2010
Location: Arlington VA USA
Posts: 7,652
Received 2,981 Likes on 2,123 Posts
Default

Wow...what a great bit of investigation. Thank you for this data!

This is something I have been planning to do for sometime. (See Upcoming Products - TheJagWrangler). My main issue is just allocating the time amongst other projects.

I would have to agree that there is no reason to re-invent the servo controller. I was planning on doing a speed input translation. I also was planning on direct selection and various settings and a set of alternate characteristic curves. I was considering an 'ALT' mode for the cruise control buttons to make selections and possibly intercepting the LCD display to give visual feedback.
 
  #11  
Old 07-28-2015, 07:48 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

@ Dibbit
Ahhhh now i get it . I think i'll give it a shot and see what happens. The logarithmic option being one.
Thank you very much for the idea.

@ WhiteXKR
You're very welcome. Glad i can help out.
Let me put it this way... if you'd have had your product ready i wouldn't be doing this

I actually contacted you a while back. Right before i bought the car and you where the one who suggested to me that i have a look at a thread on this forum and have the dealer pull the No. 12 Fuse.
And i would like to thank you immensely for that.
As a result i'm now fiddeling with this.

My needs however are slightly less than what you're planning.
I don't need to be changing the setting all the time i pretty much just need to get it right so i was planning on adding a rotary switch to the control module which allows me 10 different settings. i figure 5 static and 5 different dynamic curves but i'll be figuring that out as i get to testing.

Now it's time for some breadboard work to get the initial inline translator up and running.

I'll keep you posted.
 
  #12  
Old 08-03-2015, 08:48 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

So.. for anyone who might be interested here's a small update.

It's been a while since i coded an MCU and it shows i've been having some issues with interrupts in order to get the output pulse train looking reasonable and i've been using way too much time on it.

The result being that i have done the first part which is simply putting out static pulse train (vehicle speed) but the speed is selected by a rotary switch. The effect of this is that it allows me to select a given steering weight regardless of speed.

I have done the PCB layout and i'm about ready to make the first prototype

The "hardware" layout is made so that i can come back in and change the code when i get the interrupt thing sorted.

I'll let you know when the next stage has been reached.

Best
/Stig.
 
  #13  
Old 08-05-2015, 01:34 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Time for yet another small update.

This seems to be turning into a build blog but i guess that's what happens
Things are coming along nicely.

I still haven't done stage two of the coding but i did build the hardware and it's functioning as expected.
It's basically built from bits and pieces i had lying around mounted on a single side PCB with a couple of jumper wires.
The PCB is home built (which shows ) and i had forgotten how long this sort of thing takes in real life but i'm getting there.

Unfortunately it's too large to fit inside the existing Servotronic case so the next up is building an enclosure and mounting it in the car.

i'll keep you posted.

Best
/Stig,



 

Last edited by XKR1975; 08-05-2015 at 01:42 AM.
  #14  
Old 08-06-2015, 06:29 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

The "Magic" black-box has arrived
It's bench tested and working as expected (on the bench at least)
Next up is actual mounting in the car.

As with the other updates.
I'll report back when i have news.

Best
/Stig.






 
  #15  
Old 08-07-2015, 03:07 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Success at last

I mounted the new system in my car yesterday and although it was a bit of a squeeze it went in just fine. Next my wife and i went for a test drive (Parking garage, town/city driving highway and freeway) and repeated the trip for three different settings.

Obviously more testing is needed and i expect to be going on a 500 Km trip shortly where i'll be running the system.

To me at least the steering now feels firm and most importantly predictable but without being too hard and the beauty is that if i should want to change it i can still change the code.

At the current setting it's simulating 130 KM/h continuously which is about a 30% duty cycle at the solenoid.
I may reduce that a bit to make it a bit less firm but at this setting the car feels controllable and installs confidence even under hard acceleration as well as freeway speeds.

Once fully tested i would be willing to do a small batch of 10 to 20 units in an updated layout and in production quality which would be enclosed in the Servotronic control module itself if there's any interest.
(PM me if you want to know more)

But for now i will call it a complete success and wrap up this build blog .

Best
/Stig.
 
  #16  
Old 07-02-2016, 11:46 PM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Update:

I have now been running the module as a daily driver for about a year.
All is well and it hasn't missed a beat.

I ended up at a simulated speed of 110 KM/h after fiddling with it for a couple of days and in the end i didn't get around to doing the second stage of coding as it's pretty much doing exactly what i wanted in the first place which is to deliver predictability and feel.

Also i have received no interest in doing a run of a "Commercial Grade" implementation so i have decided to upgrade the beta to a release and call it a day
(I guess that's why Jagwrangler hasn't finished his product development on this)

Should you have any questions on this please let me know. I'd be happy to share.

Best
/Stig.
 
  #17  
Old 09-24-2017, 12:34 AM
Count Iblis's Avatar
Senior Member
Join Date: Mar 2011
Location: 'Out West', USA
Posts: 660
Received 293 Likes on 163 Posts
Default

Hello XKR1975- I have been swapping out steering control modules on my XJR using an "R performance " version and it's made a little difference but very little. I'd definitely be interested in learning more about your variable device. My servotronic relay code (original) is 7038 900 257. If this doesn't make my XJR feel more like an E39 M5 I'll look into adjusting the castor too. Definitely interested in your improvements. Let me know. Cheers.


 
  #18  
Old 04-11-2020, 12:03 PM
Toli0002's Avatar
Junior Member
Join Date: Apr 2020
Posts: 2
Received 0 Likes on 0 Posts
Default

Hej Stig
Very interesting! Exactly what I would like to do.
Would you like to share more?
Thank's in advance
Regards T Lindehell
 
  #19  
Old 04-12-2020, 12:37 AM
XKR1975's Avatar
Member
Thread Starter
Join Date: Jul 2015
Location: Copenhagen
Posts: 40
Received 17 Likes on 8 Posts
Default

Hej Lindehell

I’m guessing we’re from the same region
Sure thing. First thing out of the way… Yes mine is still mounted and yes it’s still working as expected. And It’s been a while since i worked on this so my memory may be a bit off.

I guess the question is if you’re electronically inclined?
If not this will be a problem as to my knowledge nobody makes anything you can buy.

If yes this can be as simple or as complicated as you’d like.

Simplest version i can think of is as simple as building a 555 timer and setting it to whatever frequency / speed input you want to achieve.
(This will allow you to set a static weight of the steering wheel)

The complex version i guess requires a MCU and fiddling with code. But it would allow you to set any dynamic curve for steering wheel weight you’d like.

Either version requires you take apart the original control box and locate the MCU.
Now you’ll have to verify this but i believe pin 19 is the speed input signal. Just lift that pin from the PCB and solder a wire to it. Whatever you put on that pin is what you’ll get.
I have been using a square wave form and that seems to work fine but i never actually measured the original input signal coming from the instrument cluster.

If you have any specific questions I’d be happy to help.



Best
/Stig.
 
The following users liked this post:
Toli0002 (04-13-2020)
  #20  
Old 04-13-2020, 11:13 AM
Toli0002's Avatar
Junior Member
Join Date: Apr 2020
Posts: 2
Received 0 Likes on 0 Posts
Default

Hej Stig
Thank's for rapid and thorough reply!
Yes, I have some electronic skill but sometimes the easy solution is the best
I really like the idea of using the 555-timer. An easy and therefore quick first test. The more over engineered version could be made later. That could be an ESP32 that reads the original speed values and transform it to whatever we prefer. The ESP32 chip would also give us the opportunity to adjust the "curves" through WiFi.

Is the square wave from 0 to 12V ?

Best TL
Region, Umeå is my place
 


Quick Reply: Servo assistance control.



All times are GMT -5. The time now is 06:12 PM.