Jump to content
TnF

REQUEST/IDEA - Control multiple features via a single Analog input (or DI, CAN, Serial etc.)

Recommended Posts

Hello. This is something i've been thinking long ago, even before i bought my Link G4+ xtreme black ecu. I am not sure if you will flip me off because it will probably be much work for you guys but on the other hand i believe no-one has such a feature and it goes more into OEM one-off applications we see in newer cars. 

So to get going, my idea is a feature where in the simplest form is to use a single Analog Input to control multiple parameters (in the activate-deactivate sense) like launch control, anti-lag, traction control, map switching etc so to spare DI for other stuff. Normally if you want to have control over these features/parameter you require to add switches wired to DI's for every one of these things you want to control. However assuming your analog inputs have 10bit ADC's it gives 2^10=1024 individual voltage steps from a range of 0-5V (5/1024=0.0048V per step) which gives 10 possible combinations of parameters you can control (ideally, in reality the ADC might be too sensitive so we go down to less parameters (5 parameters for a 0.02V voltage step). So from Link's side you essentially need to construct a "table" where you can set 10 different parameters to control on and off. To simplify this let's go down to 3 parameters to make this easy to visualize:

                                        0V  | 0.5V | 1V | 1.5V | 2V | 2.5V | 3V | 3.5V |

launch control (A)   |       |    x     |       |           |   x   |     x   |       |   x   |   

wot shift (B)              |       |           |  x   |           |   x   |          |   x   |   x   |   

ALS   (C)                     |        |          |        |   x      |       |     x   |   x   |   x   | 

where x means the function is activated and blank means it is deactivated .

Of course it doesn't have to to be a table with voltages like that since if using 10 parameters will require 1024 columns for the voltage steps. The proper way to do this is via binary counting since you can easily index all combinations and calculate the state of each parameter (on or off) without an array which would take lots of space. As a follow up to the example above where we set n=3 as the total number of the parameters to control we need a binary value of n (3 in this case) digits. If we set 1st digit as parameter A, 2nd as B, and 3rd as C we have the following combinations that will always hold true (index the same) for any n number of parameters we want to control:

Decimal pattern    Binary number
0                                000
1                                001
2                                010
3                                011
4                                100
5                                101
6                                110
7                                111

 Thus we can easily calculate and control any parameter directly through the ADC value of the analog input. This works great for both sides (Link ecu and client side of which i will go into detail later in the post). To simplify again how this should work lets break it down. In this case let's say we use all 10bits of the ADC.

PcLink should have a table that you can set 10 parameters to control. It is important that these parameters are entered with the same order for both PcLink and client side. Let say we set:

A: Function 1
B: Function 2
C: Function 3
D: Function 4
E: Function 5
F: Function 6
G: Function 7
H: Function 8
I: Function 9
J: Function 10

 Let's say i want to activate B and H. This means i need to convert the binary 0100000100 (note where i put 1's, B is 2nd, H is 8th). If i do the conversion i end up with the decimal value of 260. Then the client side DAC sends a signal of about 5V * 260 /1024 = 1.27V. The link ecu receives this voltage on the analog input (ADC) and measures it as decimal 260. Converting back this decimal to binary we get 0100000100. The ecu sees the 2nd and 8th digits of the binary value are 1 so it activates functions B and H. I hope this makes it clear. We can go into more detail why this not work perfectly and the ADC might read 259 or 261, thus why i said we might need to use less than 10 parameters depending on the sensitivity of the ADC. Also you are not limited to using a single ADC. If you have 2 analog inputs connected you can potentially control 10x10 = 100 parameters.

Of course we are not limited to using analog inputs for this feature, we can do this via a DIGITAL INPUT, SERIAL, CAN etc. Client wise this is very easy to do. What i personally plan to do is use a microcontroller (an arduino for example), an oled screen and some push switches to make a nice, user friendly interface where you can select what to control at any moment without having to add lots of switches and knobs. I am also planning to control more things, like boost target since a $5 arduino microcontroller gives you lots of I/O. Plus it only costs $10-$20 in materials total. I will freely provide code, schematics and diagrams if this thing is implemented. It's not that i can't at the moment, it's just i will run out of AN's and DI's which should be reserved for sensors, not for controlling FEATURES. 

SO PLEASE PLEASE PLEASE MAKE THIS HAPPEN! NO OTHER AFTERMARKET EMU (i know of) has such a feature and would add greatly to your products. And while you could release such a module yourself's please do not make it proprietary, we want to have the flexibility as end users (afterall that's why we bought an aftermarket ecu in the first place!)

AFTERTHOUGHT: I bought an aftermarket ecu not to make more power - you only require air, fuel and right timing for that - but to get and control more features. This is so that i can modernize the car and make it more relevant as a daily and even give more flexibility for a motorsport application. All the above and more can be done really easily nowadays - you can get a cheap windows tablet connect it via usb and run PcLink on it if you want. And this is another way we should think my idea. Maybe you want to use it as to monitor stuff without a laptop, control things, think of R35 dash for example. Why bother to use OBD when you can do so much more via direct USB? It is not like hardware changes are needed, you can do this via software alone. So please consider this :)  

 

  

Share this post


Link to post
Share on other sites

Hi,

Thanks for taking the time to write out your suggestion and explain it well. I'll happily forward it on to our engineering team for consideration. Generally the feature requests that get implemented sooner (rather than later or never) are the ones that have the most demand. So if other users want this or other features they need to let us know.

Scott.

Share this post


Link to post
Share on other sites

Hi,

Thanks for taking the time to write out your suggestion and explain it well. I'll happily forward it on to our engineering team for consideration. Generally the feature requests that get implemented sooner (rather than later or never) are the ones that have the most demand. So if other users want this or other features they need to let us know.

Scott.

Yes sure, that's why i posted it here so people can see it. You can move it into the Features requests forum after, but still i think there is food for thought here for Link's engineers :P I hope they are reading the posts :) 

Share this post


Link to post
Share on other sites

This is the same type of functionality I requested here: :)

Yes that's exactly the concept i mean, i just went into more technical info regarding the types of control you can have and how to do it :) 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...