60 lines
1.9 KiB
Plaintext
60 lines
1.9 KiB
Plaintext
-- analog knob controls desired launch RPM and boost
|
|
desiredRpmCurve = findCurveIndex("desired_rpm")
|
|
desiredBoostCurve = findCurveIndex("desired_boost")
|
|
-- we lookup initial torque reduction based on desired RPM and boost
|
|
initialTorqueReductionTable = findTableIndex("torque_red")
|
|
-- we have tables for spark skip ratio and spark retard based on desired torque reduction
|
|
sparkCutByTorqueCurve = findCurveIndex("spark_cut")
|
|
sparkRetardByTorqueCurve = findCurveIndex("spark_retard")
|
|
|
|
previousLaunchButtonState = 0
|
|
|
|
-- 50Hz
|
|
setTickRate(50)
|
|
|
|
-- we PID torque reduction TODO hard code better PID settings?
|
|
-- p, i, d, min, max
|
|
pid = Pid.new(2, 0, 0, -100, 100)
|
|
|
|
function onTick()
|
|
launchButtonState = getAuxAnalog(0) > 1.5
|
|
launchStrength = getAuxAnalog(1)
|
|
|
|
if previousLaunchButtonState == 1 and launchButtonState == 0 then
|
|
print "Exiting LC"
|
|
elseif previousLaunchButtonState == 0 and launchButtonState == 1 then
|
|
desiredRPM = curve(desiredRpmCurve, launchStrength)
|
|
desiredBoost = curve(desiredBoostCurve, launchStrength)
|
|
|
|
initialTorqueReduction = table3d(initialTorqueReductionTable, desiredRPM, desiredBoost)
|
|
pid : setOffset(initialTorqueReduction)a
|
|
|
|
|
|
print ("Running LC " ..desiredRPM .." boost=" ..desiredBoost ..' t=' ..initialTorqueReduction)
|
|
|
|
elseif launchButtonState == 1 then
|
|
print ("Running LC desired " ..desiredRPM .." boost=" ..desiredBoost)
|
|
|
|
rpm = getSensor("RPM")
|
|
-- handle nil RPM, todo: change firmware to avoid nil RPM
|
|
rpm = (rpm == nil and 0 or rpm)
|
|
|
|
print ("Running current " ..rpm .." boost=" ..desiredBoost)
|
|
|
|
torqueReduction = pid : get(desiredRPM, rpm)
|
|
sparkCut = curve(sparkCutByTorqueCurve, torqueReduction)
|
|
sparkRetard = curve(sparkRetardByTorqueCurve, torqueReduction)
|
|
|
|
setTimingAdd(sparkRetard)
|
|
setSparkSkipRatio(sparkRetard)
|
|
print ("Setting current " ..sparkRetard .." boost=" ..sparkRetard)
|
|
|
|
else
|
|
print "Not running LC"
|
|
setTimingAdd(0)
|
|
setSparkSkipRatio(0)
|
|
end
|
|
|
|
end
|
|
|