am VR6 gibts einen Öltemperatursensor der nur für den Tacho verwendet wird, diesen kann man abstecken und an einen VDO Eingang vom MultiDisplay hängen
Der Tacho hat nachher keine Öltemperaturanzeige mehr!!! Das MultiDisplay darf nicht zum Tacho dazu auf den Sensor gehängt werden!!!
Die Kennlinie stimmt jedoch nicht mit dem der normalen VDO Sensoren überein, deshalb muss am Code was angepasst werden!
Die hier vorgestellte Änderung fügt eine weitere Kennlinie hinzu, es können dann also zu VDO Sensoren der VR6 Öltemperatursensor zusätzlich eingelesen werden.
im Hauptfile: http://code.google.com/p/multidisplay/s ... _002p0.pde
Zeile 288
Einfügen:
Code: Select all
//Lookup Table for the Oiltemperaturesensor on the VW VR6 Engine: (12 Values)
//from 40°C to 150°C Bar in steps of 10°C, the list is in 12Bit Digital Reading when supplyed with 5V and a 220Ohm Resistor in series
//(measuring the Voltage on the Sensor)
//it has a decreasing Resistance with the Temperature.
const unsigned int tempVR6OilTemp[] PROGMEM =
{
2688,
2256,
1843,
1484,
1189,
988,
770,
630,
491,
402,
341,
211
};
Zeile 583
Code: Select all
//Converts the ADW Reading into °C (but only from 40°C, below it shows 0!
int GetVR6OilTemp(int ADWreading)
{
int LookedupValue;
//This searches the 2 surrounding values, and then linear interpolates between them.
for(int i = 0; i<12;i++)
{
if(ADWreading >= pgm_read_word(&tempVR6OilTemp[i]) && ADWreading <= pgm_read_word(&tempVR6OilTemp[i+1]))
{
LookedupValue = ((i)*10) + ((10L *(ADWreading - pgm_read_word(&tempVR6OilTemp[i]))) / ((pgm_read_word(&tempVR6OilTemp[i+1]) - pgm_read_word(&tempVR6OilTemp[i]))));
break;
}
}
LookedupValue += 40; //there is an offset of 40 due to the sensor.
LookedupValue = constrain(LookedupValue,40,150); //Limits the Output from 40 to 150°C, so no error can pass trough
if(ADWreading > 2688)
{
//The Reading is higher as the highest number from the array, so the sensor is below 40°C
LookedupValue = 0;
}
return LookedupValue;
}
Jetzt ebenfalls in der functions.pde
Zeile 379
Code: Select all
VDOTemp1 = GetVDOTemp(AnaIn[VDOT1Pin]);
VDOTemp2 = GetVDOTemp(AnaIn[VDOT2Pin]);
VDOTemp3 = GetVDOTemp(AnaIn[VDOT3Pin]);
Code: Select all
VDOTemp1 = GetVR6OilTemp(AnaIn[VDOT1Pin])