[GaugeConfigurations] ;------------------------------------------------------------------------------- ; Notes on some of the gauges. ; ; The accelEnrichGauge is now a composite of both acceleration enrichment ; and deceleration enleanment numbers. See the definition of the variable ; accDecEnrich in the OutputChannels section. ; ; David Hooke contributed the lambda gauge and associated transfer ; function files. ; ; "The lambda gauge is the best way (my opinion) to report data from a ; wide band EGO gauge, it standardizes the output irrespective of fuel ; or mix of fuels, so you needn't do any brainwork to know if your 75% ; gasoline and 25% methanol is rich at 10:1 or not. ; ; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu). ; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)." ;------------------------------------------------------------------------------- ; Define a gauge's characteristics here, then go to a specific layout ; block (Tuning or FrontPage) and use the name you've defined here to ; display that gauge in a particular position. ; ; Name = Case-sensitive, user-defined name for this gauge configuration. ; Var = Case-sensitive name of variable to be displayed, see the ; OutputChannels block in this file for possible values. ; Title = Title displayed at the top of the gauge. ; Units = Units displayed below value on gauge. ; Lo = Lower scale limit of gauge. ; Hi = Upper scale limit of gauge. ; LoD = Lower limit at which danger color is used for gauge background. ; LoW = Lower limit at which warning color is used. ; HiW = Upper limit at which warning color is used. ; HiD = Upper limit at which danger color is used. ; vd = Decimal places in displayed value ; ld = Label decimal places for display of > 1) - 64 } ; Spark Angle dwell = { INTdwell * 0.064 } idleDC = { (iacPos * 100) / 255 } ; IAC valve position egt1 = { (egt1ADC * egt1_cal) >> 8 } egt2 = { (egt2ADC * egt1_cal) >> 8 } ebp = { (5/4096) * ebpADC} fp = { (5/4096) * fpADC} misc1 = { (5/4096) * misc1ADC} misc2 = { (5/4096) * misc2ADC} misc3 = { (5/4096) * misc3ADC} misc4 = { (5/4096) * misc4ADC} #if NARROW_BAND_EGO afr = { table(egoADC, "NBafr100.inc") / 100.0 } lambda = { afr / 14.7 } #else lambda = { table(egoADC, "WBlambda100MOT.inc") / 100.0 } afr = { lambda * 14.7 } #endif lambdatarget = { (latgtADC + 71) * 0.00390625} ; David Hooke's list of shortcuts: ; Another way of doing it for the Tech Edge linear output: ; afr = { 9.0 + 0.039216 * egoADC } ; WBLIN, Mot ADC ; afr = { 9.0 + 0.039063 * egoADC } ; WBLIN, AVR ADC ; ; For the Lambdaboy thingy, the three points given ; (11=2.05, 14.7=4.21, 16=4.98) are damn close to a straight line. ; Without seeing a graph or table of it, I'd guess it's a linear ; output from AFR of 7.5 to 16 (0V to 5V), which gives: ; afr = { 7.5 + 0.0335875 * egoADC } ; LBoy, MOT ADC ; afr = { 7.5 + 0.0334563 * egoADC } ; LBoy, AVR ADC ; ; http://www.plxdevices.com/M-Series_productinfo.htm ; afr = { 10.0 + 0.039216 * egoADC } ; PLX WB, Mot ADC map = { mapADC / 4 } throttle = {(100/256) * tpsADC} altDiv = { alternate ? 2 : 1 } cycleTime = { 60000.0 / rpm * (2.0-twoStroke) } nSquirts = { nCylinders/divider } dutyCycle = { 100.0*pulseWidth/(cycleTime) } ; TPS&MAP dots tpsDOTTY = { mapProportion ? 0 : (tpsADC) } mapDOTTY = { mapProportion ? (mapADC) : 0 } ; Only display positive or it gets confusing to read tpsDOT = { tpsDOTTY < 0 ? 0 : tpsDOTTY } mapDOT = { mapDOTTY < 0 ? 0 : mapDOTTY } knock_cyl_0_diff = {knock_cyl_0_knock_val / knock_cyl_0_noise_val} ; Fuel consumption: ; rpm * nCyl / [2/4 stroke ? 1 : 2] * pulseWidth[ms]/1000 * ccMin ; Injector flow ccMin = { 440.0 } ; assume 3000rpm @ 120km/h, adjust according to gear ratios, usable only with one gear roadSpeed = { rpm / 25 } ; Appr fuel concumption/h, injector opening etc. not taken into account ccPhr = { (rpm * nCylinders / ( twoStroke ? 1 : 2 ) * pulseWidth * ccMin) / 1000.0 } lphr = { ccPhr / 1000.0 } l_100km = { lphr * roadSpeed / 100.0 } ;------------------------------------------------------------------------------- ; RPM period experiments ;------------------------------------------------------------------------------- ; totalperiod = {rpmper0+rpmper1+rpmper2+rpmper3+rpmper4+rpmper5+rpmper6+rpmper7 ; totalperiod should be close to earlier calculated value CycleTime ; diffAmp= {100} ; experimental diff amplifier constant, to adjust scale ; rdiff0 = {((totalperiod/rpmper0/nCylinders)-1)*diffAmp} ; rdiff1 = {((totalperiod/rpmper1/nCylinders)-1)*diffAmp} ; rdiff2 = {((totalperiod/rpmper2/nCylinders)-1)*diffAmp} ; rdiff3 = {((totalperiod/rpmper3/nCylinders)-1)*diffAmp} ; rdiff4 = {((totalperiod/rpmper4/nCylinders)-1)*diffAmp} ; rdiff5 = {((totalperiod/rpmper5/nCylinders)-1)*diffAmp} ; rdiff6 = {((totalperiod/rpmper6/nCylinders)-1)*diffAmp} ; rdiff7 = {((totalperiod/rpmper7/nCylinders)-1)*diffAmp} rtest0 = {rpmdiff0*rpm/5000} rtest1 = {rpmdiff1*rpm/5000} rtest2 = {rpmdiff2*rpm/5000} rtest3 = {rpmdiff3*rpm/5000} rtest4 = {rpmdiff0*rpm/5000} rtest5 = {rpmdiff1*rpm/5000} rtest6 = {rpmdiff2*rpm/5000} rtest7 = {rpmdiff3*rpm/5000} ;------------------------------------------------------------------------------- [Datalog] ; Full datalog. ; ; Default user-defined log emulates the full datalog. ; ; The entries are saved in the datalog file in the order in ; which they appear in the list below. ; ; Channel - Case sensitive name of output channel to be logged. ; Label - String written to header line of log. Be careful ; about changing these, as programs like MSLVV and ; MSTweak key off specific column names. ; Type - Data type of output, converted before writing. ; Format - C-style output format of data. ; ; Channel Label Type Format ; -------------- ---------- ----- ------ entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpmVHR, "RPM", int, "%d" entry = map, "MAP", float, "%.1f" entry = throttle, "TP", int, "%d" entry = lambda, "lambda", float, "%.3f" entry = mat, "MAT", float, "%.1f" entry = coolant, "CLT", float, "%.1f" entry = engine, "Engine", int, "%d" entry = egoCorrection, "Gego", int, "%d" entry = airCorrection, "Gair", int, "%d" entry = warmupEnrich, "Gwarm", int, "%d" entry = baroCorrection, "Gbaro", int, "%d" entry = gammaEnrich, "Gammae", int, "%d" entry = accDecEnrich, "TPSacc", int, "%d" entry = veCurr, "Gve", int, "%d" entry = pulseWidth, "PW", float, "%.1f" entry = idleDC, "IacDC", int, "%d" entry = dutyCycle, "DutyCycle1", float, "%.1f" entry = lambdatarget, "lambdaTarget", float, "%.3f" entry = spark, "Spark", float, "%.1f" entry = dwell, "Dwell", float, "%.2f" entry = egt1, "EGT #1", int, "%d" entry = egt2, "EGT #2", int, "%d" entry = batteryVoltage, "Vbatt", float, "%.2f" entry = ebp, "Exhaust Pressure", float, "%.2f" entry = fp, "Fuel Pressure", float, "%.2f" entry = misc1, "Misc 1", float, "%.2f" entry = misc2, "Misc 2" , float, "%.2f" entry = misc3, "Misc 3", float, "%.2f" entry = misc4, "Misc 4", float, "%.2f" entry = knock_cyl_0_diff, "Knock Diff", float, "%.3f" entry = knock_cyl_0_adjust, "Knock Adjust", float, "%.2f" entry = status1, "StatusBits", int, "%d" entry = boost_tgt, "BoostTgt", int, "%d" entry = boost_dc, "BoostDC", int, "%d" entry = boost_integral, "BoostInt", int, "%d" entry = iac_integral, "IacInt", int, "%d" entry = als_igncut, "alsigncut", float, "%.2f" entry = rtest0, "rtest0", float, "%.3f" entry = rtest1, "rtest1", float, "%.3f" entry = rtest2, "rtest2", float, "%.3f" entry = rtest3, "rtest3", float, "%.3f" entry = rtest4, "rtest4", float, "%.3f" entry = rtest5, "rtest5", float, "%.3f" entry = rtest6, "rtest6", float, "%.3f" entry = rtest7, "rtest7", float, "%.3f"