Subaru Forester Owners Forum banner

21 - 40 of 80 Posts

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #21
I tried pulling the ABS fuse, and problem disappeared!!! So confirmed no mechanical issues, the car is deciding to apply and when cornering.

Afterward, had the steering angle sensor checked for calibration, and it IS within spec, so no news there.

Sent from my XT1585 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #23
I'm tagging @murfnamedsmurf here to continue conversation that may be relevant

As an update to this thread, I have yet to get around to getting this project working (Arduino intercept). I have however, long since posting, replaced the abs fuse, and instead have the steering angle sensor can bus wires connected with a quick disconnect and leave them disconnected. This disables ALL traction control as well as stability control, but keeps the abs online. Welcome any comments on successes / failures or using Arduino can bus projects with Subies!

Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #24
It's become aware that the link to the ozfoz site doesn't connect, I believe ozfoz is no more. I'll have to share here!!!

Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #25 (Edited)
Background

I had abandoned this project due to other priorities, but eventually wanted to come around to it. I was recently contacted by a member here concerning this thread, and offered a hand helping each other figure out the method used on the broken link from ozfoz.com. After we DM each other a few times in conversation, it's hard to communicate that much info without some pictures and references that we can share and document here!


The broken link a few posts above was from a forum post on ozfoz.com by member "Hired Goon" - where entire credit is due. It spoke of a signal scaler for the VDC's Steering Angle Sensor using an Arduino and 2 Can Bus shields elaborated from a post on NASIOC where a member there built a similar project. I'm going to share some of those pics here to preserve them, and hopefully help others along this to success.

Simply put, with the quicker ratio rack the car thinks that it is turning (physically, at the wheels) roughly 30% quicker than it should be, based on steering wheel angle, and wants to apply ABS / Traction Control.
Sooo, trick the VDC to think the steering wheel is turned 30% further than it is!

I will link below the the sharing site where to find the "sketch" , which is the necessary software. The Readme file there is very descriptive of the project at hand.

When I began first time around, I knew nothing of Arduinos, sketches, CANBUS communication, CANBUS shields for Arduino, or much of the language, but I can wire and solder, and have a good friend who has at least knowledge in Arduino usage and programming, so he was very helpful in research and getting me understanding some of the process involved. Big shout to Frank @ fvsolutions!

Hired Goon of ozfoz, or if anyone knows where they might be, we'd really appreciate some insight or advice....
Input welcome from all knowledgeable in these devices, or seeking some level 101.


Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #26 (Edited)
Link to Arduino sketch and Readme file. I found it useful to print these out, also. I'd have them on hand, and a good place to take notes. The sketch itself was useful to read to help understand the processes in the program.




Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #28 (Edited)
More from Hired Goon and their "box". Note when searching for orientation, remember this is AUDM, so right hand drive. Things will be setup a little different in the states, but not hard to figure out when you study the pictures.


Sent from my E6910 using Tapatalk
 

·
Registered
2003 Forester AT
Joined
·
102 Posts
Replying to sub. I have parts on order and hope to work on this late Nov / early Dec.

Of note, my project will be for a 2012 WRX STI, still using a 2015+ 13:1 steering rack. In my case I'm coming from a 15:1 stock rack, so I anticipate scaling closer to the 13-17% range rather than 30%. Hoping to get SAS lock to lock numbers for my car (rack already installed) as well as a stock one to reduce the guesswork. I think wire colors may be the same, so ultimately the main difference will just be the scaling in the sketch/script.
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #32
Apparently I've lost the ability or permission to edit my posts for continuity, so I'll just quote here.

These pictures are my version of what the original post down under was about building. PLEASE NOTE - at the time I am positive I made mistakes, such as modifying/ damaging the boards before verifying proper operation. I'll elaborate where I can in the picture descriptions.

1. Stock SAS signal wires. To the best of my knowledge, they are Blue CanL and Red CanH. In the pictures of the original project, a 4 wire connector behind the lower steering column cover. I soldered in a quick connector in order to disable stability control system. This will also serve to feed the scaler device(s).

2. Power disrupt switch mounted to dash. The idea is to be able to turn off the device and basically fully disable traction control. Car will have to be restarted in order to reactivate traction control. This switch has an illuminated ring which I can wire separately. My plan was to have the sketch modified to flash and illuminate the light rather than sound the buzzer.

3. Complete wiring harness and overview. Just trying to show things in an exploded view, naturally a project box like the one above would be the end result. I'm also on my first and only attempt, so things will be refined. The 8 pin molex plug is the key. It gives me CanH, CanL, power, and light (+/-) which is an output from the device, not used yet. The 9v battery connector was used for my testing purposes, naturally system would be wired in.

4. A UBEC was soldered in where the main power block was removed. This steps the voltage to 5v for the Arduino to operate.

5. Can bus Shield 1, pin 10, CanL, H - out to car. Pin number is designated in sketch. Note that I have modified this board as circled. Flipped can wire block to other side of board and removed serial cable connector for project box fitment. Soldered 6 pins on top to connect to bottom of the other can bus shield.

6. Can bus shield 2, pin 8, Can L,H - in from steering angle sensor. Pin number designated in sketch. Modifications done to this board include removal of serial cable connectors, jumper from pin 8 to pin 10, removal of pin 10 underneath. My understanding is that the CANBUS shields use pin 10. The Arduino can be assigned, so it sends signal through pin 8, jumped to 10 to be used by the shield.

7. Above-mentioned pin removed

8. Buzzer and jumper on shield 2. Buzzer pin number assigned by sketch. This is where eventually my light ring will illuminate from on the dash if I succeed.


Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #33
How to get this working and goals

Sent from my E6910 using Tapatalk
So, inever got the Arduino CANBUS SAS scaler to work, as in the traction control light remains on. My buddy Frank says that we have properly gone over the sketch to review for accuracy, the proper libraries for the CANBUS shields are recognized, and all we can come up with is it's not.

The Arduino seems to accept the sketch just fine, as the buzzer buzzes when it is supposed to - once on power up and double beep when running in loop.

We've tried the serial monitor function (by "uncommenting" a sketch comand on the Arduino to see if we get any info, but blank. On this note - the baud rate specified on the sketch is not available on our serial monitor on laptop???

I have no idea, or reason to believe for that matter, that I've damaged the can bus shields but I guess it's possible.

Also, "Hired Goon" wired power from two sources, wired together with a diode to power up the Arduino. I can't figure this part out. Said it had something to do with stock system boot up timing like when does the ECU receive info confirmation from SAS compared to key cycle, etc. I tried both ways. Constantly powered prior to starting car, and wired into accessories, no difference in outcome, light still on.

What I want to know
1. Why doesn't it work - duh
2. Power up order - does it matter, why?
3. No serial monitor info, baud rate conflict
4. Is there a necessity to physically twist the signal wires as usually seen in CanBus projects? How tight? Why?
5. Sketch Modification to have the light blink, then stay on while in loop

Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #34
Finally I found the other reference for starting this project:
https://forums.nasioc.com › forums
Web results
2015 STI Steering Rack 13.1!! Anybody Planning to swap ... - nasioc

Member Chinyue post#512

Unfortunately, the picture links are gone :-(

Sent from my E6910 using Tapatalk
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #35
Replying to sub. I have parts on order and hope to work on this late Nov / early Dec.

Of note, my project will be for a 2012 WRX STI, still using a 2015+ 13:1 steering rack. In my case I'm coming from a 15:1 stock rack, so I anticipate scaling closer to the 13-17% range rather than 30%. Hoping to get SAS lock to lock numbers for my car (rack already installed) as well as a stock one to reduce the guesswork. I think wire colors may be the same, so ultimately the main difference will just be the scaling in the sketch/script.
Doing the math, the 13:1 rack turns lock to lock 880 degrees (got that from Chinyues post mentioned above). A 15:1 rack would become 1015 degrees. A difference of 15%. I'd use that in the sketch.

Sent from my E6910 using Tapatalk
 

·
Registered
2003 Forester AT
Joined
·
102 Posts
Awesome, thanks. I didn't have the lock to lock info but just comparing the ratios that's about what I came up with as well. It's probably going to be a pain to get SAS/VDC outputs for my car and a stock one - I'd like to eventually do that just to confirm, but like you I think I'm just going to start with 1.15 and see how it does.

The last of my boards are supposed to come in today, so I should at least be able to mock things up before I go back to work. I think I might look into a different connector than what I got, but otherwise I think I have everything. I plan to wire in the buzzer initially until I see how things go, but I think I'll also either switch to an LED instead of a buzzer, or perhaps I'll comment out the beeping for normal operation and only allow it to beep in the event of an error.

Interesting about the dual power sources, I was curious what was going on there as well.
 

·
Registered
MY03 Forester X
Joined
·
10 Posts
Hey guys, Hired-Goon from OzFoz here.

I found that powering the Arduino using ACC would cause it to restart during cranking and powering it with ON means it wouldn't boot fast enough for the VDC unit. I used 2 diodes and both power sources to ensure a constant supply through cranking. Since my initial design, another guy had the idea of using a timed relay to trigger off door open or similar to ensure ample boot time.

If you have the Arduino constantly powered before the engine is switched to ON and you're still having troubles, it likely means there's a signal problem of some kind.
Note that you need to start the engine for the dash lights to turn off and see if the signal is making it through.

Change the serial baud rate in the sketch to match whatever rate your system supports. I had trouble during testing with low baud rates due to the quantity of data being output. If you're only outputting the steering angle sensor signal a lower baud rate should work fine (I was outputting all CANBUS signals). That being said, even with the baud rate mismatching, you should probably still see output although garbled. If you're not seeing any output at all it probably means you're either not connecting to the right serial port or your serial.prints are not ever being called.

I went through a few iterations of full system testing to ensure the system was working as I was developing it. My main troubleshooting method:
1. Reconnect the normal angle sensor connectors, start the engine and ensure the VDC light disables - VDC/angle sensor working fine
2. Intercept with the Arduino, set it to pass through all CAN signals without modifications, start engine and ensure VDC light disables - Arduino/connectivity is fine
3. Apply scaling to the angle sensor signal, start engine and ensure VDC light disables and stays disabled when the steering wheel is turned
4. Drive test
This process identifies where the problem is, my guess is that you've got connectivity problems, either from damaged Arduino/CAN boards or incorrectly wired signal cables.

To test that, add some more Serial.print lines into the sketch to get logging at various points in the code to help track the path the signal is taking.
My email's inside the comments at the top of the sketch if you want to share your modified sketch with me.
 

·
Registered
2009 Forester XT
Joined
·
624 Posts
Discussion Starter #38
Hey @Hired-Goon , I've wanted to get a hold of you for over a year now, but wasn't sure how. So glad you found the conversation and reached out...hope you don't mind me sharing your work here, and I hope I've done it justice.
Ive certainly got questions, some of which you addressed above but I'm hard headed and takes a while for me to put things together.

First, the power up. Which two sources did you use?

Also, I had rigged up a 9v battery to connect while testing. If the Arduino device is already powered and running at vehicle key in and start, will that mess with the VDC, that it will fail?

When you say "baud rate of system", are you referring to the car or device? How do I determine baud rate of system?

As for your testing steps, VDC works fine when my SAS is hooked up normal, but step 2 how to hook up Arduino without scaling? Rewrite sketch to 1.0 scaling, or just have the device wired in and powered off?



Sent from my E6910 using Tapatalk
 

·
Registered
2003 Forester AT
Joined
·
102 Posts
Hey guys, Hired-Goon from OzFoz here.

I found that powering the Arduino using ACC would cause it to restart during cranking and powering it with ON means it wouldn't boot fast enough for the VDC unit. I used 2 diodes and both power sources to ensure a constant supply through cranking. Since my initial design, another guy had the idea of using a timed relay to trigger off door open or similar to ensure ample boot time.

If you have the Arduino constantly powered before the engine is switched to ON and you're still having troubles, it likely means there's a signal problem of some kind.
Note that you need to start the engine for the dash lights to turn off and see if the signal is making it through.

Change the serial baud rate in the sketch to match whatever rate your system supports. I had trouble during testing with low baud rates due to the quantity of data being output. If you're only outputting the steering angle sensor signal a lower baud rate should work fine (I was outputting all CANBUS signals). That being said, even with the baud rate mismatching, you should probably still see output although garbled. If you're not seeing any output at all it probably means you're either not connecting to the right serial port or your serial.prints are not ever being called.

I went through a few iterations of full system testing to ensure the system was working as I was developing it. My main troubleshooting method:
1. Reconnect the normal angle sensor connectors, start the engine and ensure the VDC light disables - VDC/angle sensor working fine
2. Intercept with the Arduino, set it to pass through all CAN signals without modifications, start engine and ensure VDC light disables - Arduino/connectivity is fine
3. Apply scaling to the angle sensor signal, start engine and ensure VDC light disables and stays disabled when the steering wheel is turned
4. Drive test
This process identifies where the problem is, my guess is that you've got connectivity problems, either from damaged Arduino/CAN boards or incorrectly wired signal cables.

To test that, add some more Serial.print lines into the sketch to get logging at various points in the code to help track the path the signal is taking.
My email's inside the comments at the top of the sketch if you want to share your modified sketch with me.
Thanks for replying!

Good to know about the power, I wondered why there were two sources. (Skirby, I think he used ACC switched + key ON switched near the steering column harness). Once you said that, I was thinking the same thing that maybe a large enough capacitor or other delay circuit powered from ACC would work as well. However, the dual power wires is probably the simplest solution.

Thanks for the testing procedure, great stepwise approach. Would you try 500k baud if the 250k doesn't seem to be working? I think a lot of Subaru canbus runs at 500k? (Skirby, where it says "Serial.begin" in the sketch, the number within parentheses is the baud rate (250,000 in goon's version).

As a side note, in my searching I happened upon another thread where someone had transplanted an electric steering rack from a newer WRX to an older model and had to really mess with the canbus system to get it functioning. Haha, at least we can know we don't have to go quite that far.
 

·
Registered
MY03 Forester X
Joined
·
10 Posts
I tapped the head unit ACC for one power source and the power window ON for the other. Any ACC source will work but you need to use an ON source that stays live through cranking. This was the easiest to set up, most certain method other than leaving it on permanently or pushing a manual switch before turning the keys. I leave my car parked for days at a time and run a parking mode dashcam so my battery drains while parked, I didn't want to leave the car for a week and have the Arduino slowly drain it too low due to being always on. My family also drive my car and they'd forget to push the button to turn it on if it was manual.

When powering the Arduino for testing you shouldn't need to use a battery or anything else, it can be powered over USB. Plug USB into your laptop before putting the keys in the car and it'll be ready to go once you start the car. I would recommend leaving the car-sourced power disconnected while testing, powering it only via USB.

The baud rate in Serial.begin(250000); doesn't have anything to do with the CAN signal rate or the car, it's the serial port communication rate from Arduino -> computer/laptop/etc. Connect to the Arduino via USB, open the Arduino software, set it to the correct serial port and open the serial monitor. Inside the serial monitor you can specify the baud rate your serial port will use. As long as the sketch and serial monitor specify the same rate, everything should work fine change both to be the highest option you can choose in the serial monitor.

To have the CAN signals retransmitted unmolested, comment out the entire if block (not just this line):
Code:
if ((canId == 0x02) && (buf[1] != 128)) {
Or if you aren't sure about that you can change that line in the sketch to this:
Code:
if ((canId == 0x02) && (buf[1] != 128) && (false)) {
That should ensure that the condition is never met so it skips all the scaling math. Setting the scaling coefficient to 1 could still alter the signal if your CAN signals are different to my AUDM one somehow, so it's preferrable to skip it all rather than do that.
 
21 - 40 of 80 Posts
Top