Half the car is dead :-(
Discussion
FarmyardPants said:
Brilliant progress! Is it event driven or do you have to poll the inputs? I've not worked with Arduinos before.
The Arduino basically runs in an infinite loop and you just pole the buttons every iteration to check for changes - I'm also using the Bounce2 de-bounce library to ensure that we get clean presses of the buttons, rather than noiseI've put the source code as is today up on my GitHub account and here's the bounce library for a bit of reference
This week I've been studying the indicator cancellation PCB as this is an interesting bit of kit, using two optical switches much like the optical spinners of 1980's arcade games such as Tron and Tempest
In the original SWFCU +12V is supplied on pin 7 of the 10 pin ribbon connector and then the two outputs of the optical switches fed back to the unit on pins 8 and pins 9 (with GND on pin 10 to complete the circuit)
As the Arduino is +5V not +12V I've added some test code to put pin 7 into Output mode and pull it HIGH (=+5V) and to put pin 10 into Input mode and pull it LOW (=GND).
So far this code is written blind, but in theory and from reading quite a few slotted optical switches datasheets many of them support +5V as well as +12V so we might be lucky and be able to power them this way
The slotted disc on the steering wheel (I'm theorising) goes through the corresponding optical switch as you turn the wheel in the direction that you are indicating, and then we need to track it coming back through the same optical switch as this will in effect be the cancelation effect we want to trigger
I think the only way I'm going to be able to really test this is jack up both sides of the front and then run in debug with the steering wheel and do multiple turns of the wheel etc to monitor the output of these optical switches. I've also put the code into Digital mode as, in theory, they should either be open or closed, but we can run them as Analogue inputs if we need to and look for a threshold change to indicate the open / close state
For a short term solution I'm going to add some code that has a second trigger of each indicator to act as the cancel - this way you can indicate, turn the car and then bounce the indicator again to cancel the event - not perfect but means I can drive and indicate
Finally here's some good images that I borrowed from this thread and this thread which show the board and it's connectors
From the bottom photo you can see the 4 pin connector that comes in from the indicator stalk, and the 3 pin connector that comes in from the hazard switch. These are simply passed through to the 5 way ribbon cable, but the PCB acts as a junction for all of the connectors to meet and travel down to the SWFCU
The PCB is also pretty well labelled and you can see the input resistors and diodes, as well as the output resistors and the connection from the WHEEL and going to the ECU
Top
Bottom
Circuit Diagram
]
PinOut
Indication Cancellation Sensor PCB
10 Pin Ribbon
10 - GND
9 - CANCEL RHT IP
8 - CANCEL LEFT IP
7 - +12V
6 - N/C
5 - N/C
4 - HORN INPUT
3 - DIP / MAIN
2 - WASHER INPUT
1 - WIPER INPUT
5 Pin Ribbon
5 - N/C
4 - HAZARD W/L
3 - HAZARD SWITCH
2 - INDICATOR RIGHT
1 - INDICATOR LEFT
3 Pin Connector
3 - RIGHT TURN (W)
2 - GND
1 - LEFT TURN (G)
4 Pin Connector
4 - N/C
3 - N/C
2 - GND
1 - HAZARD SWITCH
Steering Wheel ECU Replacement - Ongoing investigation
So for the output side of our Arduino replacement Steering Wheel ECU we need to match the socket on the original unit, so that the plug that is on the car already can be connected to it without having to either a. cut and rewrite all the wiring or b. take out the pins and try and rehouse them
Digging around through Google images using the original socket shot, I found these lovely people over at automotiveconnectors.com who identified the socket as a "17 Way TE Connectivity M.I.C Mark II Natural (.118) Female"
So I ordered some of these along with their matching pins however when I got them to the car there is a small problem...
The sockets and plugs that TVR used are very very similar to the TE Connectivity ones however the TVR ones have an added 'wing' on the top sides of the plug and extra corners on the top sides of the socket. Here's a photo showing one of the plugs on the car
So I went back to the guys at automotiveconnectors.com to see if they stocked those, but they don't and I can't find them anywhere else, so I ended up with the cunning plan of let's get out a sharp craft knife and turn the new sockets into matching sockets for the original plugs
If you look at the photo the difference is the 'wings' and the two key elements in the middle are offset from each other in the originals, but not in the new ones
So here's the final new ones with extra cut outs for the wings versus the original
and with an extra bit removed to make the keys match
Now to do the wiring and the crimping and then we can actually test the new unit on the car
So for the output side of our Arduino replacement Steering Wheel ECU we need to match the socket on the original unit, so that the plug that is on the car already can be connected to it without having to either a. cut and rewrite all the wiring or b. take out the pins and try and rehouse them
Digging around through Google images using the original socket shot, I found these lovely people over at automotiveconnectors.com who identified the socket as a "17 Way TE Connectivity M.I.C Mark II Natural (.118) Female"
So I ordered some of these along with their matching pins however when I got them to the car there is a small problem...
The sockets and plugs that TVR used are very very similar to the TE Connectivity ones however the TVR ones have an added 'wing' on the top sides of the plug and extra corners on the top sides of the socket. Here's a photo showing one of the plugs on the car
So I went back to the guys at automotiveconnectors.com to see if they stocked those, but they don't and I can't find them anywhere else, so I ended up with the cunning plan of let's get out a sharp craft knife and turn the new sockets into matching sockets for the original plugs
If you look at the photo the difference is the 'wings' and the two key elements in the middle are offset from each other in the originals, but not in the new ones
So here's the final new ones with extra cut outs for the wings versus the original
and with an extra bit removed to make the keys match
Now to do the wiring and the crimping and then we can actually test the new unit on the car
Polly Grigora said:
Please have you any updates?
Sorry - I have - just been busy with other projects and didn't get a chance to update the thread!Steering Wheel ECU - On going replacement
So in order to drop the +12V Battery positive power supplied on B4 of the 18 pin connector we're going to use a buck/boost convertor as previously mentioned, but we need to tune it before connecting it to the Arduino so that we have the exact power level we want, even if the car is charging (+14V potentially) or just turned on (+12V) or running the starter motor (<+12V potentially)
To do this I grabbed a 240V AC -> +12V / +5V DC linear power supply as used on modern arcade machines, and ran the +12V output into the bbc to see what the default output was
Out of the box it's boosting the voltage to around +27V as per this picture
The bbcs have a little variable resistor on them which can be turned with a screwdriver to adjust the output voltage so first step is to drop this down to a steady +5.0V / +5.1V for cleanly feeding the Arduino
BTW just in case anyone is wondering why we don't use the fact that the Arduino Mega itself has a voltage regulation circuit itself that could reduce the +12V to +5V it's because it would produce a lot of heat and as we have this unit potentially powered up for a number of hours it's cleaner just to provide it with a clean power feed
Also bang/boost converters are super cheap so if that packs in we don't really care, where as Arduinos are more expensive ;-)
So now that we've got the unit powered let's have a think about how to case this as we want to dissipate heat and provide some protection for the unit
Luckily both of the units together have a pretty small form factor
Because we're going to have our connectors coming in the top of the Arduino we need a super slim case so I found this one that allows access to the top pins but still gives a lot of protection
So let's put everything together, power it up with +12V and then after a final check we're ready to plug it into the car for initial live testing.
BTW I haven't crimped on the proper plug pins at this point as I'm going to test it with crimp pins and then just replace those once it's all working as expected
Next update in a couple of weeks when I'm back in the same location as my car
Polly Grigora said:
Update is much appreciated
Are you planning on connecting the steering switches Arduino outputs directly to the rear ECU?
No, not exactly - the steering wheel ECU does some clever stuff in between where it adds modes to the switches so for example pressing the wiper button once does a slow sweep by powering B6 - WIPER 1 SIGNAL and then a second press connects the output to A6 - WIPER 2 SIGNAL, and similar with the headlight button so my Arduino module needs to do the sameAre you planning on connecting the steering switches Arduino outputs directly to the rear ECU?
On update news I'm back with my car in London next week so will try it out for real
Edited by Juddder on Wednesday 16th March 11:37
Polly Grigora said:
Sorry, I didn't make that at all clear
Are you connecting the dip and main beam outputs directly from the Arduino directly to the lights ECU?
Ah, yes I think I get what you meanAre you connecting the dip and main beam outputs directly from the Arduino directly to the lights ECU?
Yes my plan was to have the Arduino outputs drive the rear other ECU inputs, such as the lights ECU, directly as the +5V high of the Arduino outputs should match the +5V output of the original TTL circuit as that wasn't using relays or anything like that to drive the inputs just direct from the +5V supply on the board with some resistor banks iirc
Anything I'm missing?
Juddder said:
Polly Grigora said:
Sorry, I didn't make that at all clear
Are you connecting the dip and main beam outputs directly from the Arduino directly to the lights ECU?
Ah, yes I think I get what you meanAre you connecting the dip and main beam outputs directly from the Arduino directly to the lights ECU?
Yes my plan was to have the Arduino outputs drive the rear other ECU inputs, such as the lights ECU, directly as the +5V high of the Arduino outputs should match the +5V output of the original TTL circuit as that wasn't using relays or anything like that to drive the inputs just direct from the +5V supply on the board with some resistor banks iirc
Anything I'm missing?
Your above reply has possibly shown up a problem. I think that the relays in the lights ECU are 12 volts and they will need more than 5 volts to energise them, very likely to be in the region of 9 volts and a minimum of 2 volts to hold them in
Are the above mentioned relays 12 volts, I think they are but could be wrong ?
Hadn't even thought about the arduino outputs voltage of 5 volts, have had nothing to do with arduino projects
Also hadn't considered the lights ECU relays being anything other than 12 volts. Thinking out loud it could have been the size of the output cables from the steering ECU to the lights ECU that that got me thinking 12 volts or an image of an ECU relay that I viewed somewhere
Getting back to a big problem that that I came up against recently - low level switching with relays
Am using the following post as an example because it's a very good one from this topic and something that I hadn't given any thought about until recently
Juddder said:
I quite like the idea of putting two of these fused relay boxes in the front wings and removing the rear boxes completely like @RichVr did in this thread or at least disabling the Dim/Dip like @alinton in this thread
If carrying out the above modification the lights ECU would need to be removed, disabling the dim dip wouldn't be good enough, some if not all of the relays in the lights ECU will have contacts that are capable of switching several amps, the dip and main relays definitelyThe problem with the above is that once the current switched by a relays contacts is lowered from several amps to several milliamps the relays contacts won't last the length of time that they are designed to last
Relays designed to switch several amps have contacts of a different material to those relays that are designed to switch milliamps
We all spend plenty of time making sure that relays are up to the job of switching a number of amps, searching for a relay minimum acceptable/allowed contact load is as important but often overlooked
The whole problem is a proper pain due to having to spend much time finding the correct relay with the contacts configuration needed that will also switch several milliamps
Am now sorted with the relay problem that recently set me back much and wouldn't wish it on thee or anyone else, it's horrible
Anyway, all of this post could be of no use whatsoever but if it is it was worth posting
Now hoping that you understand why the question was popped
Sorted, found the relay information
Coil Magnetic System : Monostable, DC
Coil Power Rating Class (mW): 300 – 400
Coil Power Rating DC (mW): 400
Coil Resistance (Ω): 360
Coil Special Features : UL Coil Insulation Class F
Coil Voltage Rating (VDC): 12
Luckyone said:
Ok so I've been doing some testing my self, I'm reasonably sure these bits are for:
The RTD14012 (the orange things) are just two way relays. One just turns the lights on, the other is the one that cuts the power to the dips when you put on the main beams.
I can't find any info on the VTA00112 (the green things) but they seem to be just a different type of relay. I was only bothered because the dip beam output runs to one of them, but it seems to be the fog light relay, seems logical as you need the dips on to have the fog light on. To back up my thinking I realised that should mean the fog light turned off when you put the main beam on - it did!
So it seems all I need to do is connect these two points permanently together (they are the normally closed terminals)
I tried gingerly shorting them with the main beam on, nothing blew up & I heard the fans of the LEDs kick in so it's looking good. Just need to pluck up courage to make a permanent connection now.
Relay RTD14-012 https://www.te.com/usa-en/product-6-1393238-2.htmlThe RTD14012 (the orange things) are just two way relays. One just turns the lights on, the other is the one that cuts the power to the dips when you put on the main beams.
I can't find any info on the VTA00112 (the green things) but they seem to be just a different type of relay. I was only bothered because the dip beam output runs to one of them, but it seems to be the fog light relay, seems logical as you need the dips on to have the fog light on. To back up my thinking I realised that should mean the fog light turned off when you put the main beam on - it did!
So it seems all I need to do is connect these two points permanently together (they are the normally closed terminals)
I tried gingerly shorting them with the main beam on, nothing blew up & I heard the fans of the LEDs kick in so it's looking good. Just need to pluck up courage to make a permanent connection now.
Coil Magnetic System : Monostable, DC
Coil Power Rating Class (mW): 300 – 400
Coil Power Rating DC (mW): 400
Coil Resistance (Ω): 360
Coil Special Features : UL Coil Insulation Class F
Coil Voltage Rating (VDC): 12
Ah - OK I get your point
Basically that the 40 ma from the +5V output of the Arduino won't be enough to drive the +12V relays in the boot boxes from their datasheet, so we will need to use our own relays or transistors and the +12V power source instead of a direct connection as per this helpful video
I may therefore need to do a bit more fiddly wiring as we will need to link the +12V from the Steering Wheel Functions Control Unit pin B4 battery to each of the relays as a normally open circuit (NO) or transistors
Feels like designing a PCB to do this would be best, but for the moment I'm going to get some pinned low Amp Arduino relays as per the shot below and put one in-line to see if that works correctly
This is the same concept with a transistor which will require a PCB but work much more efficiently I think
Both images from Mario's Ideas as linked above
Additional:
I think using one of these would do the trick as they have a low 5-20mA Driver Current and can easily cope with +12V on the relay side
Basically that the 40 ma from the +5V output of the Arduino won't be enough to drive the +12V relays in the boot boxes from their datasheet, so we will need to use our own relays or transistors and the +12V power source instead of a direct connection as per this helpful video
I may therefore need to do a bit more fiddly wiring as we will need to link the +12V from the Steering Wheel Functions Control Unit pin B4 battery to each of the relays as a normally open circuit (NO) or transistors
Feels like designing a PCB to do this would be best, but for the moment I'm going to get some pinned low Amp Arduino relays as per the shot below and put one in-line to see if that works correctly
This is the same concept with a transistor which will require a PCB but work much more efficiently I think
Both images from Mario's Ideas as linked above
Additional:
I think using one of these would do the trick as they have a low 5-20mA Driver Current and can easily cope with +12V on the relay side
Edited by Juddder on Thursday 17th March 16:21
Ok then
Mario didn't mention about low level switching with a relay and it is doubtful that the relays linked to will handle such low currents (those of relays activating relays)
Some relay manufacturers don't give minimum allowable current draw figures and it is this current draw that keeps the contacts working cleanly
Mario didn't mention about low level switching with a relay and it is doubtful that the relays linked to will handle such low currents (those of relays activating relays)
Some relay manufacturers don't give minimum allowable current draw figures and it is this current draw that keeps the contacts working cleanly
TVR Cerbera Steering Wheel Functions Control Unit Emulator: Day quite-a-lot
I've been a bit quiet as I moved my car from London out to the country on a loader as a. there is literally no point anymore having a car like a TVR in London as the speed limit is now 20mph and you get fined every time you want to drive it and b. I can spend more time on it if it is nearer to where I am most of the time
So today I checked that the engine still starts, drives and works (which gratefully is does very well) and then put some finishing touches to the bench testing of my TVR Cerbera Steering Wheel Functions Control Unit Emulator
In the video below I'm connecting a test pin to pin 43 which I have setup as the horn input pin, and I've updated the behaviour for the horn and washer buttons so they are not latching buttons as per the rest, but are only active when pressed (which connects them to ground)
Testing pin 43 by connecting it to GND you can see that this then triggers the output pin 7 to LOW which drives the relay for the horn to power on and connect the two output pins of +12V on the car (not connected) to the horn drive pin which should then turn the horn on
Releasing the connection to GND let's the Arduino's internal pull-up resistor come into play and pull the current to +5V which drives the horn drive pin 7 to HIGH which turns the relay off again
Next step is to velcro the boards to the steering wheel undertray, connect it all to the output of the car and try the same test - if this works as planned I will be able to honk the horn, which means that making the rest work is easy from there
More updates when I get it together and start in-car testing!
TVR Cerbera Steering Wheel Functions Control Unit Emulator
I've been a bit quiet as I moved my car from London out to the country on a loader as a. there is literally no point anymore having a car like a TVR in London as the speed limit is now 20mph and you get fined every time you want to drive it and b. I can spend more time on it if it is nearer to where I am most of the time
So today I checked that the engine still starts, drives and works (which gratefully is does very well) and then put some finishing touches to the bench testing of my TVR Cerbera Steering Wheel Functions Control Unit Emulator
In the video below I'm connecting a test pin to pin 43 which I have setup as the horn input pin, and I've updated the behaviour for the horn and washer buttons so they are not latching buttons as per the rest, but are only active when pressed (which connects them to ground)
Testing pin 43 by connecting it to GND you can see that this then triggers the output pin 7 to LOW which drives the relay for the horn to power on and connect the two output pins of +12V on the car (not connected) to the horn drive pin which should then turn the horn on
Releasing the connection to GND let's the Arduino's internal pull-up resistor come into play and pull the current to +5V which drives the horn drive pin 7 to HIGH which turns the relay off again
Next step is to velcro the boards to the steering wheel undertray, connect it all to the output of the car and try the same test - if this works as planned I will be able to honk the horn, which means that making the rest work is easy from there
More updates when I get it together and start in-car testing!
TVR Cerbera Steering Wheel Functions Control Unit Emulator
Edited by Juddder on Sunday 10th April 19:30
So a bit quiet on the updates but finally had some time to test out my prototype board today
The good news
All the power logic works and I can run everything happily off of the core wiring
The needs improvement news is that my thoughts were wrong on using digital logic to power the switches won't work as the outputs need either floating or ground to trigger / untrigger
Also the Arduino runs to ground when the board is powered off but connected to the power circuit so I will need relays in-between
Here's a couple of photos from the testing today
The good news
All the power logic works and I can run everything happily off of the core wiring
The needs improvement news is that my thoughts were wrong on using digital logic to power the switches won't work as the outputs need either floating or ground to trigger / untrigger
Also the Arduino runs to ground when the board is powered off but connected to the power circuit so I will need relays in-between
Here's a couple of photos from the testing today
Gassing Station | Cerbera | Top of Page | What's New | My Stuff