<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BlownByTwins</title>
	<atom:link href="https://blownbytwins.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>https://blownbytwins.co.uk</link>
	<description>Just a tale of one man and his cars...</description>
	<lastBuildDate>Mon, 21 Sep 2026 08:41:16 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blownbytwins.co.uk/wp-content/uploads/2023/05/cropped-wp20128381-1-32x32.jpg</url>
	<title>BlownByTwins</title>
	<link>https://blownbytwins.co.uk</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What the Logs Changed in My Supra Traction Control</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/what-the-logs-changed-in-my-supra-traction-control/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Mon, 21 Sep 2026 10:25:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[supra]]></category>
		<category><![CDATA[traction control]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1162</guid>

					<description><![CDATA[<p>The previous version of the traction control worked. That was the problem. It worked well enough to make a 1,114 whp Supra feel calm, so the remaining faults were hidden&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/what-the-logs-changed-in-my-supra-traction-control/">What the Logs Changed in My Supra Traction Control</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The previous version of the traction control worked. That was the problem. It worked well enough to make a 1,114 whp Supra feel calm, so the remaining faults were hidden inside a system that never looked obviously broken.</p>



<p class="wp-block-paragraph">Then I logged it properly. The logs showed that the tyre produced its best acceleration at less slip than some of my more permissive modes allowed, the speed offsets could drive the final target below zero, and the integral term was storing positive torque while the car was below target. When wheelspin arrived, part of the PID was briefly helping it.</p>



<p class="wp-block-paragraph">This is the latest iteration: what changed, what the evidence actually supports, and what still needs a warm, dry road before I call it finished.</p>



<p class="wp-block-paragraph"><strong>The starting point</strong></p>



<p class="wp-block-paragraph">Status: Verified &#8211; Rear tyres are 295/30/19 Continental SportContact 7s.</p>



<p class="wp-block-paragraph">The strategy has always had two halves. Feedforward predicts the engine torque the tyre should accept. Closed loop PID then corrects whatever the prediction could not know about: temperature, damp patches, surface changes, load transfer and bumps.</p>



<p class="wp-block-paragraph">The torque model is normalised to third gear. The traction strategy itself is not normalised until the final gear scaler is applied. That distinction matters because a torque value in the base table is not the engine torque the car will necessarily receive in second, fourth or fifth.</p>



<p class="wp-block-paragraph"><strong>The tyre peak moved the targets</strong></p>



<p class="wp-block-paragraph">Status: Working conclusion</p>



<p class="wp-block-paragraph">The useful result from the earlier dry data was a tractive force peak around 9,500 to 9,800 N at roughly 5 to 6 percent slip. Once slip moved into the 6 to 8 percent band, median tractive force fell to about 8,860 N. More wheelspin felt more dramatic, but it accelerated the car less.</p>



<p class="wp-block-paragraph">That immediately made two settings look wrong. Mode 7 allowed 7.9 percent straight line slip and Mode 9 allowed 12 percent. Both sat beyond the measured force peak. They were permissive, but they were not the fastest settings.</p>



<p class="wp-block-paragraph">The later road test complicated the picture. It was cooler and the road was not completely dry. Maximum logged tractive force was about 7,982 N rather than 9,500 N. The road rose by only about 0.17 percent over the measured section, worth roughly 30 N on a 1,750 kg car, so gradient could not explain the difference. Tyre and road condition could.</p>



<p class="wp-block-paragraph">That means 9,500 N remains a dry baseline, not a universal grip limit. The system still needs slip feedback because no fixed torque table can know whether the tyre is warm, cold, dry or sitting on a damp seam.</p>



<p class="wp-block-paragraph"><strong>Rebuilding the rotary modes</strong></p>



<p class="wp-block-paragraph">Status Calibration loaded for validation</p>



<p class="wp-block-paragraph">The rotary still selects the character of the car, but the straight line targets now have a cleaner progression. Mode 3 remains the chilled setting. Mode 4 is the normal fast road setting. Mode 5 is for a known dry road on warm tyres. Mode 6 allows movement, but no longer asks the SC7 to live well beyond its measured force peak.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>TC Mode</strong></td><td><strong>Use</strong></td><td><strong>Previous 0 G target</strong></td><td><strong>Revised 0 G target</strong></td></tr><tr><td>1</td><td>Snow and ice</td><td>2.0%</td><td>2.0%</td></tr><tr><td>2</td><td>Damp and cold</td><td>2.0%</td><td>2.5%</td></tr><tr><td>3</td><td>Chilled</td><td>2.8%</td><td>3.0%</td></tr><tr><td>4</td><td>Sporty road</td><td>3.8%</td><td>4.0%</td></tr><tr><td>5</td><td>Known dry roads</td><td>7.9%</td><td>5.5%</td></tr><tr><td>6</td><td>Track</td><td>12.0%</td><td>7.0%</td></tr><tr><td>7</td><td>Very permissive</td><td>20.0%</td><td>10.0%</td></tr><tr><td>8</td><td>Soft off</td><td>28.0%</td><td>28.0%</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">The lateral G shapes were rebuilt at the same time. Both sides are now symmetrical because there was no evidence supporting different left and right targets. Every active road mode tapers as lateral acceleration increases, because the tyre has less longitudinal capacity available while it is also producing cornering force.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="501" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-1024x501.png" alt="" class="wp-image-1163" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-1024x501.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-300x147.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-768x376.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-1536x752.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_target_slip_profiles-2048x1002.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>The speed offset was doing too much</strong></p>



<p class="wp-block-paragraph">Status: Calibration loaded for validation</p>



<p class="wp-block-paragraph">The final target is the lateral G table plus a speed offset. The old high speed offsets were large enough to make the combined target negative in the conservative modes. Unless that is correcting a measured wheel speed bias, a negative slip target has no useful meaning.</p>



<p class="wp-block-paragraph">The revised table keeps the low speed launch allowance, but reduces the 25 km/h addition from nine percentage points to five. The target now blends down towards the normal table by 45 km/h instead of falling off a cliff. Above 180 km/h the negative offsets remain, but they are smaller and cannot erase the underlying target.</p>



<p class="wp-block-paragraph">That gives the same rotary a consistent meaning at every speed. Mode 3 remains conservative rather than becoming impossible at high speed, and Mode 7 remains the quickest dry road target rather than turning into an arbitrary number once the car passes 180 km/h.</p>



<p class="wp-block-paragraph"><strong>A feedforward table built around tractive force</strong></p>



<p class="wp-block-paragraph">Status Current baseline</p>



<p class="wp-block-paragraph">The largest architectural change is the main feedforward surface. Instead of treating slip error as the only description of available grip, the new table is indexed by modelled tractive force and engine torque before reductions.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="269" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_feedforward_table-1024x269.png" alt="" class="wp-image-1165" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_feedforward_table-1024x269.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_feedforward_table-300x79.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_feedforward_table-768x202.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_feedforward_table.png 1065w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The surface rises towards 9,500 N, then deliberately falls away. At a 950 Nm unrestricted torque input, the table returns 594.9 Nm at 8,000 N, 652.7 Nm at 9,500 N and 597.1 Nm at 10,500 N.</p>



<p class="wp-block-paragraph">Apply the fourth gear normalisation factor of 1.263 and those become approximately 751, 825 and 754 Nm at the engine. The peak is therefore almost exactly where the warm, dry SC7 data said it should be. Above the peak, the table asks for less torque because the tyre has already moved onto the wrong side of its force curve.</p>



<p class="wp-block-paragraph">This is still a model. Emtron tractive force is largely derived from engine torque and gearing; it is not a strain gauge measuring the contact patch. The table provides a gear aware first estimate. Slip feedback remains the part that discovers the road is wet.</p>



<p class="wp-block-paragraph"><strong>The integrator was adding torque</strong></p>



<p class="wp-block-paragraph">Status: Verified defect</p>



<p class="wp-block-paragraph">The most important log finding was not a lack of negative integral authority. It was positive windup.</p>



<p class="wp-block-paragraph">With slip below target, the original controller allowed the integral output to climb to its positive 50 Nm clamp. One run held it there for about 1.3 seconds. Another retained the full 50 Nm across approximately 2.75 seconds. The tyre was not slipping too much, so the controller stored permission to add torque.</p>



<p class="wp-block-paragraph">When overslip arrived, the proportional and derivative terms reacted immediately, but the integral term had to unwind before it could help. At the worst point in one event the contributions were minus 7.6 Nm proportional, plus 37.6 Nm integral and minus 0.9 Nm derivative. The combined PID contribution was still plus 29.1 Nm while the tyre was already beyond target.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="602" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-1024x602.png" alt="" class="wp-image-1164" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-1024x602.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-300x176.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-768x452.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-1536x904.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_integral_clamps-2048x1205.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The controller remained stable because the feedforward model, throttle reduction and ignition retard were doing the real work. That does not make the integral behaviour acceptable. A stable result can still contain two control terms fighting each other.</p>



<p class="wp-block-paragraph"><strong>The fix was removing positive authority</strong></p>



<p class="wp-block-paragraph">Status: Changed awaiting full dry validation</p>



<p class="wp-block-paragraph">The positive integral clamp is now zero. The negative clamp remains minus 50 Nm.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="940" height="250" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_pid_setup.png" alt="" class="wp-image-1166" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_pid_setup.png 940w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_pid_setup-300x80.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/tc_pid_setup-768x204.png 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /></figure>



<p class="wp-block-paragraph">Below target slip, the integral term now sits at zero. Once the tyre exceeds target it can accumulate negative correction, up to 50 Nm. There is no positive value left to unwind and no stored torque waiting to oppose the first intervention.</p>



<p class="wp-block-paragraph">I initially considered extending the negative clamp to minus 75 Nm. The logs killed that idea. In the later full throttle events the negative integrator reached only minus 4.3 Nm in one run and zero in the other. More negative authority would have solved a problem that was not happening while increasing the risk of a torque hole after the tyre recovered.</p>



<p class="wp-block-paragraph">The proportional, integral gain and derivative tables therefore stay unchanged for the next test. Changing several control terms at once would make the result impossible to attribute. The positive clamp was the proven defect, so that is the change being isolated.</p>



<p class="wp-block-paragraph"><strong>What the road logs now say</strong></p>



<p class="wp-block-paragraph">Status Verified for the logged conditions</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Log</strong></td><td><strong>Maximum boost</strong></td><td><strong>Target slip</strong></td><td><strong>Maximum WOT slip</strong></td><td><strong>Maximum retard</strong></td><td><strong>Cut</strong></td></tr><tr><td>03</td><td>26.3 psi gauge (181 kPa)</td><td>3.0%</td><td>4.29%</td><td>-3.6 degrees</td><td>None</td></tr><tr><td>04</td><td>30.0 psi gauge (207 kPa)</td><td>2.8 to 3.0%</td><td>4.84%</td><td>-4.2 degrees</td><td>None</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Both runs used the conservative Mode 3 target. Neither needed ignition or fuel cuts. The car controlled the tyre with modest timing reduction and without the controller cycling torque up and down.</p>



<p class="wp-block-paragraph">The lower 7,982 N tractive force result from the cooler, imperfectly dry run should not be used to rewrite the dry table. It is evidence that the available grip changed. That is exactly why the feedforward and feedback halves both exist.</p>



<p class="wp-block-paragraph">The same session produced a roughly 4.8 second 100 to 200 km/h run without full boost at 100 km/h. The performance matters, but the cleaner result is the behaviour: a 914 whp pump fuel car remained controlled on a cool road without cuts or abrupt throttle closure.</p>



<p class="wp-block-paragraph"><strong>Power mode and traction mode are separate decisions</strong></p>



<p class="wp-block-paragraph">Status: Verified</p>



<p class="wp-block-paragraph">The torque request rotary decides how much engine performance is available. The traction rotary decides how much of that performance the tyre may use. Treating them as one setting hides useful control.</p>



<p class="wp-block-paragraph">The high torque modes already allow enough demand to exceed the rear tyre in second and third, while effectively releasing full engine output from fourth upwards. Increasing those torque tables would not make the car faster. It would only give the traction strategy a larger error to remove.</p>



<p class="wp-block-paragraph">For a dry road the useful combination is a high torque request with Mode 5 or Mode 6 traction control. Mode 3 is deliberately conservative. Mode 7 is now a permissive track setting rather than a 12 percent wheelspin setting dressed up as performance.</p>



<p class="wp-block-paragraph"><strong>The current configuration</strong> (Emtron specific)</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Function</strong></td><td><strong>Current setting</strong></td></tr><tr><td>Feedforward basis</td><td>Engine torque before reduction versus modelled tractive force</td></tr><tr><td>Dry force peak</td><td>Approximately 9,500 N working baseline</td></tr><tr><td>Mode 3 straight target</td><td>3.0 percent</td></tr><tr><td>Mode 4 straight target</td><td>4.0 percent</td></tr><tr><td>Mode 5 straight target</td><td>5.5 percent</td></tr><tr><td>Mode 6 straight target</td><td>7.0 percent</td></tr><tr><td>Integral positive clamp</td><td>0 Nm</td></tr><tr><td>Integral negative clamp</td><td>-50 Nm</td></tr><tr><td>Integral rate</td><td>200 Hz</td></tr><tr><td>Minimum torque clamp</td><td>50 Nm</td></tr><tr><td>Slip target filter</td><td>4</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>What still needs proving</strong></p>



<p class="wp-block-paragraph">The next valid test is on the same dry road, in both directions, with warm tyres. Running in both directions removes most of the gradient and steady wind error. Mode 4 should be tested first, followed by Mode 5, with full pedal held through the shift long enough to see the integrator unwind and torque recover.</p>



<p class="wp-block-paragraph">The stop condition is simple. If slip rises beyond about 6.5 percent and tractive force does not increase, the tyre has crossed the peak. If force continues to rise at 5.5 percent slip, Mode 6 is doing its job. If the controller oscillates or leaves a torque hole after intervention, the PID still needs work.</p>



<p class="wp-block-paragraph">Until that test is complete, the new force peak and the revised permissive modes remain evidence based working settings rather than finished calibration.</p>



<p class="wp-block-paragraph"><strong>The lesson from this iteration</strong></p>



<p class="wp-block-paragraph">The first version was designed to prevent wheelspin. This version is being calibrated to maximise acceleration without making the car unpleasant.</p>



<p class="wp-block-paragraph">That distinction changed the questions. How much slip is allowed is less useful than where the tyre produces maximum force. A larger integral clamp is less useful than checking whether the integrator is acting in the correct direction. More available engine torque is irrelevant when the tyre is already the limit.</p>



<p class="wp-block-paragraph">The car already had enough power. The latest changes are about making the control system stop wasting it, whether that waste comes from excessive wheelspin, an over-conservative target or two parts of the PID fighting each other.</p>



<p class="wp-block-paragraph">That is the point of logging it <span style="text-decoration: underline;">properly</span>. The calibration stops being a table that looks sensible and becomes a system that can explain what the car actually did.</p>



<p class="wp-block-paragraph">Huge thanks to Adrian at Emtron Australia for the pointers in this. It&#8217;s been invaluable.</p>



<p class="wp-block-paragraph"></p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/what-the-logs-changed-in-my-supra-traction-control/">What the Logs Changed in My Supra Traction Control</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Erratic Shifts and Idle Overfuelling on the 2JZ: Finding a DBW Feed-Forward Fault</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/dbw-feedforward-fault/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 16:07:52 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[2jz]]></category>
		<category><![CDATA[air model]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[feedforward]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1156</guid>

					<description><![CDATA[<p>Inconsistent torque, delivery and shifts, with nothing obvious in the log. Working outwards from the symptom into the DBW loop, and the arithmetic that showed the integrator was spending its whole authority cancelling a feed-forward error.</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/dbw-feedforward-fault/">Erratic Shifts and Idle Overfuelling on the 2JZ: Finding a DBW Feed-Forward Fault</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The car was giving me inconsistent torque readings, inconsistent delivery, and downstream of both, inconsistent shifts. And on rarer occasions the car would overfuel like crazy when returning to idle. It&#8217;s done this maybe 6-8 times in 4000 miles of usage. Nothing in the log made the reason obvious.</p>



<p class="wp-block-paragraph">This is how I worked outwards from the symptom until the log told me where to look, and what the arithmetic said once I got there.</p>



<h2 class="wp-block-heading">Ruling things out</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">I expanded the log window out and walked the closed loop items one at a time. First question: was idle control intervening during the downshift? It was not. Verified and set aside.</p>



<p class="wp-block-paragraph">The next thing I noticed was that air mass was going erratic, and that is worth being precise about, because the air mass model on this car is a blend. Below 100 kPa it runs the throttle mass flow model exclusively and blends towards speed density above that. In the region where this fault appears the air mass estimate is therefore a function of throttle effective area and pressure ratio and nothing else. No speed density term diluting it, no trapped mass term in the estimate.</p>



<p class="wp-block-paragraph">So erratic air mass in that region means the blade, or the area characterisation, or both. It cannot mean much else.</p>



<p class="wp-block-paragraph">Pedal throttle demand translation was smooth through the whole event. The driver demand table was not doing this. That left the DBW loop, and the DBW PID was the gold seam.</p>


<p><!-- IMAGE SLOT A: emtron-dbw-pid-instability-log.png --></p>


<h2 class="wp-block-heading">What the loop was doing</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">Three things stand out.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="566" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors-1024x566.png" alt="" class="wp-image-1160" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors-1024x566.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors-300x166.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors-768x424.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors-1536x848.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/dbw_pid_errors.png 2046w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Proportional output is saturating at minus 100 percent repeatedly, and topping out near plus 63. That asymmetry is not the axis autoscaling being unhelpful. It is the loop reaching its closing clamp over and over while never reaching the opening one.</p>



<p class="wp-block-paragraph">Integral output is sitting around plus 24 percent and climbing slowly across the window. An integrator that keeps accumulating while the proportional term is pinned at its clamp is not doing the job an integrator is for.</p>



<p class="wp-block-paragraph">The motor command is swinging roughly minus 65 to plus 100 percent while the measured blade position only moves a few percent either side of 15. The blade is inertially filtered. It physically cannot follow a command oscillating at that rate, so the engine never sees the full excursion.</p>



<p class="wp-block-paragraph">That last point is the one that connects back to the shift. The engine does not see it, but the model does. Torque estimate comes from air mass, air mass in this region comes from the throttle mass flow model, and that model reads blade position directly. Every percent of blade wobble goes into the torque estimate whether or not the engine produced any of it.</p>



<p class="wp-block-paragraph">The gearbox was reacting to torque noise that did not exist at the crankshaft.</p>



<h2 class="wp-block-heading">The arithmetic</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">This is where the log stops being suggestive and starts being conclusive. At the cursor, 38.138s in the screenshot above:</p>



<ul class="wp-block-list">
<li>Servo Position Main: 3.7 percent</li>



<li>Proportional output: 0.9 percent</li>



<li>Integral output: 24.3 percent</li>



<li>Derivative output: 0.0 percent</li>



<li>Motor command: 6.2 percent</li>
</ul>



<p class="wp-block-paragraph">My feed-forward table runs minus 30 at 0 percent and minus 15 at 5 percent. Interpolated linearly, feed-forward at 3.7 percent is minus 18.9.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="678" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-motor-command-reconstruction.png" alt="Bar chart reconstructing the DBW motor command at 3.7 percent blade: feed-forward -18.9, proportional +0.9, integral +24.3 and derivative 0.0 percent motor duty, summing to +6.3 against a logged +6.2" class="wp-image-1172" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-motor-command-reconstruction.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-motor-command-reconstruction-300x188.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-motor-command-reconstruction-1024x643.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-motor-command-reconstruction-768x482.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Reconstructing the motor command at 38.138 s. Shading is by absolute magnitude, so the two terms doing all the work are the ones that stand out.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Two things fall out of a match that close. Motor command is the summed controller output rather than a measured position, and feed-forward interpolates linearly between breakpoints.</p>



<p class="wp-block-paragraph">But the finding is the third thing. <strong>At a near steady 3.7 percent blade position, the integral had wound to plus 24.3 for no purpose other than to cancel a feed-forward of minus 18.9.</strong></p>



<p class="wp-block-paragraph">The feed-forward in the 0 to 5 percent band is asking for roughly 25 points of closing duty that the throttle body does not need. The integral is spending its entire authority undoing it. That is a large stored state sitting permanently in the loop, and every time the proportional term saturates and the target moves, that state has to unwind before anything else can settle.</p>



<p class="wp-block-paragraph">It is a far better explanation for a sustained oscillation than any single gain cell.</p>



<h2 class="wp-block-heading">The feed-forward step, and what it actually is</h2>



<p class="wp-block-paragraph"><strong>Status: Provisional</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="364" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-feedforward-step-as-found-vs-revised.png" alt="Heatmap of DBW feed-forward, percent motor duty, against throttle target 0, 5, 6, 8 and 10 percent. As found: -30, -15, +10, +10, +10. Revised: -30, -15, -5, +5, +10" class="wp-image-1171" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-feedforward-step-as-found-vs-revised.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-feedforward-step-as-found-vs-revised-300x101.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-feedforward-step-as-found-vs-revised-1024x345.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-feedforward-step-as-found-vs-revised-768x259.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Both rows are shaded against the same range, so the revision reads as a smoothing of the step rather than a change of shape.</figcaption></figure>
</div>


<p class="wp-block-paragraph">There is a 25 point change in motor duty for a 1 percent movement in target between 5 and 6 percent, and the log crosses that region immediately before one of the instabilities. My first instinct was that this was simply wrong. It is not, and this is the part most likely to be copied badly, so it is worth saying plainly.</p>



<p class="wp-block-paragraph">The return spring on a DBW body pulls the blade towards its limp home position from both directions. Below limp home you need negative duty to hold the blade down against the spring. Above it you need positive duty to hold it open. A feed-forward table that changes sign between two cells is not a tuning error. It is the table telling you where limp home sits.</p>



<p class="wp-block-paragraph">Delete the step and you have not removed the discontinuity. You have removed the compensation for it, and handed the spring preload to the integrator.</p>



<p class="wp-block-paragraph">The real problems are different. First, the magnitude of the low band values, which the arithmetic above says are too negative. Second, a 25 point change interpolated across 1 percent of travel behaves like a gain of 25 through a region the blade is oscillating in.</p>



<h2 class="wp-block-heading">The proportional gain table</h2>



<p class="wp-block-paragraph"><strong>Status: Provisional</strong></p>



<p class="wp-block-paragraph">The low position P gains are aggressive, and lopsided towards the negative error side.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="430" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-as-found.png" alt="Heatmap of DBW proportional gain as found, throttle target 5, 15 and 25 percent against target error -12 to +12 percent. Gains run from 12.00 at -12 percent error in the 5 and 15 percent rows down to 5.00 at +12 in every row" class="wp-image-1170" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-as-found.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-as-found-300x119.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-as-found-1024x408.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-as-found-768x306.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Proportional gain as found. Shaded against the same range as the revised table below, so the two are directly comparable.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Reading negative error as blade above target, the closing correction gets close to twice the gain available for an equivalent opening error, at every row.</p>



<p class="wp-block-paragraph">The spring makes this more interesting than a simple symmetry argument, because the asymmetry it creates flips across limp home. Above limp home the spring already assists closing, so the loop needs more authority to open and less to close. Below limp home it reverses.</p>



<p class="wp-block-paragraph">A table that favours the closing side at every row is therefore directionally right in the 5 percent row and wrong in the 15 and 25 percent rows. The blade sits at 15 to 17 percent through this event.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="430" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-revised.png" alt="Heatmap of DBW proportional gain as revised, throttle target 5, 15 and 25 percent against target error -12 to +12 percent, with every gain between 5.0 and 8.5 and 5.0 at +12 in every row" class="wp-image-1169" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-revised.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-revised-300x119.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-revised-1024x408.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-dbw-proportional-gain-revised-768x306.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Proportional gain, revised. Same shading range as above. The whole table reads cooler, and the 15 and 25 percent rows now favour the opening side.</figcaption></figure>
</div>


<p class="wp-block-paragraph">One caveat that anyone copying this needs to take seriously. The whole reading above depends on the error channel being target minus actual. If your ECU signs it the other way, the argument inverts and so does the revision. Confirm it on your own log before you touch a cell: find a step where the blade visibly lags a rising target, and read the sign.</p>



<h2 class="wp-block-heading">What I have not proved yet</h2>



<p class="wp-block-paragraph">I changed two tables at once. Until they are separated, no outcome can be attributed to either.</p>



<p class="wp-block-paragraph">I have not measured the true limp home position. The right way is to unpower the driver and read the TPS, then check whether the feed-forward breakpoints actually straddle it. If limp home sits at 6.5 percent rather than between 5 and 6, the compensation is being applied in the wrong place, and that alone would explain the instability without a single gain change.</p>



<p class="wp-block-paragraph">I have not confirmed the error sign convention from a step.</p>



<p class="wp-block-paragraph">And I left the 0 and 5 percent feed-forward cells alone, which are the two cells the arithmetic actually points at.</p>



<p class="wp-block-paragraph">I&#8217;m not declaring this as &#8220;fixed&#8221; yet. However, the gear change is smoother, particularly the upshift. The lower speed acceleration is cleaner and everything just feels much more refined. Always remember the first few percent of opening on a throttle blade are extremely non-linear, and even more so on a 82mm throttle body.</p>



<h2 class="wp-block-heading">The test that closes it</h2>



<p class="wp-block-paragraph">With the loop stable, park the blade at steady positions across 0 to 25 percent, in 2 percent steps through the 0 to 8 percent band, and log feed-forward and integral at each point.</p>



<p class="wp-block-paragraph">Wherever the integral is non-zero at steady state, the feed-forward is wrong by exactly that amount. That lets the whole low band feed-forward table be built by subtraction rather than by iteration. The position at which feed-forward crosses zero and the integral stays at zero is the true limp home. Any step within the sweep settles the sign convention.</p>



<p class="wp-block-paragraph">Run it on the same road and the same coast down and you also get a genuinely matched before and after, rather than two logs taken a week apart under different load.</p>



<h2 class="wp-block-heading">The principle</h2>



<p class="wp-block-paragraph"><strong>The data is not transferable, but the principle is.</strong></p>



<p class="wp-block-paragraph">A feed-forward table and an integrator are solving the same problem from opposite ends. If the integrator is carrying a large standing value at a steady operating point, the feed-forward is wrong by that amount, and you can read the correction straight off the log instead of iterating towards it.</p>



<p class="wp-block-paragraph">The throttle area table that the whole torque model sits on is covered in <a href="https://blownbytwins.co.uk/engine-management/throttle-body-effective-area/">Throttle Body Effective Flow Area</a>, and the same feed-forward versus PID argument applied to traction control is in <a href="https://blownbytwins.co.uk/engine-management/traction-control-feedforward-pid/">Traction Control on 1,114 whp</a>. Full specification is on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</p>



<p class="wp-block-paragraph">If you run a DBW loop and have taken a different view on any of this, particularly the limp home reasoning or the gain asymmetry, I would like to hear it.</p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/dbw-feedforward-fault/">Erratic Shifts and Idle Overfuelling on the 2JZ: Finding a DBW Feed-Forward Fault</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Traction Control on 1,114 whp: Feedforward, PID, and Why It Never Cuts</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[feedforward]]></category>
		<category><![CDATA[torque model]]></category>
		<category><![CDATA[traction control]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1118</guid>

					<description><![CDATA[<p>1,114 whp, 880 lb ft, and a 295 section road tyre on the back. Traction control on this car is not a driver aid. It is the thing that makes&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/">Traction Control on 1,114 whp: Feedforward, PID, and Why It Never Cuts</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">1,114 whp, 880 lb ft, and a 295 section road tyre on the back. Traction control on this car is not a driver aid. It is the thing that makes the car usable at all.</p>



<p class="wp-block-paragraph">Most discussion of traction control stops at &#8220;it cuts power when the wheels spin&#8221;. That describes about a third of what is actually happening, and it is the least interesting third. The system on this car has a predictive half that tries to never need the reactive half, and the whole design is aimed at keeping the reactive half quiet.</p>



<p class="wp-block-paragraph">This is how it is set up, and why. Every table is reproduced in full.</p>



<h2 class="wp-block-heading">Configuration</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<ul class="wp-block-list">
<li><a href="https://emtron.world/products/kv12">Emtron KV12</a>, torque based traction control</li>



<li>3.4 litre 2JZ-GTE VVTi, 1,114 whp on E85, torque limited to 880 lb ft</li>



<li>ZF 8HP70, 2.93 final drive, OS Giken LSD</li>



<li>Continental SportContact 7, 265/30/19 front and 295/30/19 rear</li>



<li>Four individual wheel speeds, three axis internal accelerometer</li>



<li>Eight position rotary on the steering wheel, over CAN</li>
</ul>



<p class="wp-block-paragraph">Everything below is my own work. The base calibration on this car came from SRD Tuning, but the traction control strategy is mine start to finish, which is the only reason I can show you the tables.</p>



<h2 class="wp-block-heading">The predictive half: torque feedforward</h2>



<p class="wp-block-paragraph">The core of the system is a table that answers one question: <strong>at what engine torque does this car lose traction?</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="1646" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table.png" alt="Heatmap of the traction control torque feedforward table, slip target error -8 to +2 percent against engine torque 50 to 1,250 Nm. Every row is flat from 750 Nm upwards, with the zero slip error row clamped at 575 Nm" class="wp-image-1178" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table-197x300.png 197w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table-672x1024.png 672w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table-768x1170.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-torque-feedforward-table-1008x1536.png 1008w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Torque Feed Forward Table, Nm. The torque at which traction is lost.</figcaption></figure>
</div>


<p class="wp-block-paragraph">It is indexed on engine torque with no reduction applied, against slip target error. The ECU looks up that number and feeds it forward as the torque target before any measurement of actual slip has influenced anything.</p>



<p class="wp-block-paragraph">That is the whole idea of feedforward. If the model is right, the engine never makes more torque than the tyres can take, the slip never happens, and the closed loop has nothing to correct.</p>



<p class="wp-block-paragraph">Look at the first two columns before anything else. At 50 Nm of engine torque the table returns 50, and at 150 it returns 150. Below about 150 Nm it is a pass through: the feedforward is not limiting anything, because at those loads there is nothing to limit.</p>



<h3 class="wp-block-heading">And this is where the normalisation matters</h3>



<p class="wp-block-paragraph">Read along the zero slip error row and the values climb: 245.3, 340.5, 430.9, 478.9, 527.0, 575.0. And then they stop. Flat at 575 Nm from 750 Nm of engine torque all the way to 1,250.</p>



<p class="wp-block-paragraph">That plateau is deliberate and it is the single most important thing in the setup.</p>



<p class="wp-block-paragraph">Extend the slope before the plateau and an unclamped table would be asking for roughly 815 Nm at the top of the range. The engine makes 1,193 Nm. So without the clamp, the feedforward would be handing the PID a target the tyres cannot deliver, and the PID would spend its entire life trying to close a gap that physics will not close.</p>



<p class="wp-block-paragraph">A saturated PID is not a controller. It is an actuator held wide open. You lose all the proportionality that makes traction control feel like assistance rather than interference.</p>



<p class="wp-block-paragraph">Clamping the feedforward at something the tyres can actually deliver means the PID always has authority in reserve. That is what &#8220;normalised&#8221; means here, and it is why the system feels like it is helping rather than fighting.</p>



<h3 class="wp-block-heading">Normalised against third</h3>



<p class="wp-block-paragraph">The feedforward table is written for third gear. Everything else is scaled off it by two correction tables.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="628" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-gear-drpm.png" alt="Heatmap of feedforward correction table 1, gears 1 to 8 against rate of change of engine speed 750 to 4,000 rpm per second, from 0 percent at low dRPM in the low gears to -32 percent in eighth at 4,000" class="wp-image-1177" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-gear-drpm.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-gear-drpm-300x174.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-gear-drpm-1024x595.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-gear-drpm-768x447.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Correction Table 1, percent applied to the feedforward torque.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Correction Table 1 is indexed on gear against rate of change of engine speed. In first at low dRPM the correction is zero. By eighth at 4,000 dRPM it is minus 32 percent.</p>



<p class="wp-block-paragraph">Which makes sense once you think about what dRPM means in each gear. Engine speed rising at 4,000 rpm per second in first is normal acceleration. The same rate in eighth means the driven wheels are going somewhere the car is not. The correction is reading the rate of change as evidence of impending slip, and pulling the target down before the slip calculation has caught up.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="812" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-slip-error.png" alt="Bar chart of feedforward correction table 2 against slip target error: -40 percent at -64, -20 at -32, -10 at -16, -4 at -8, -2 at -4, -1 at -2, 0 at -1 and +10 at 0 percent error" class="wp-image-1176" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-slip-error.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-slip-error-300x226.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-slip-error-1024x770.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-correction-slip-error-768x577.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Correction Table 2. Note the axis: it runs out to minus 64 percent slip error, far wider than the gain tables further down. These two tables are not directly comparable.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Correction Table 2 does the same job against slip target error directly, from minus 40 percent at large negative error up to plus 10 at zero. That positive 10 at zero error is worth noticing: when the car is exactly on target, the feedforward is allowed to ask for slightly more than the base table says.</p>



<h2 class="wp-block-heading">The slip target, and what the rotary actually does</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">Here is the part I had not seen anyone else do.</p>



<p class="wp-block-paragraph">The target slip table is indexed on <strong>lateral G</strong>, from minus 1.5 to plus 1.5, against the rotary position from the steering wheel.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="2004" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g.png" alt="Heatmap of target slip table 1, rotary positions 0 to 12 against lateral G from -1.5 to +1.5. Most rows peak at zero lateral G, from 2 percent permitted slip at position 0 to 28 percent at position 12" class="wp-image-1179" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g-162x300.png 162w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g-552x1024.png 552w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g-768x1425.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-lateral-g-828x1536.png 828w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Target Slip Table 1, permitted slip in percent. Row labels are the eight discrete CAN values the switch produces, so the ECU never interpolates between settings.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Almost every row is a dome. Maximum permitted slip in a straight line, tapering symmetrically as lateral load builds in either direction. At the loosest setting the car allows 28 percent slip straight ahead, falling to 25 at 1.5 G. At the tightest, 2 percent straight ahead and 1 percent once the car is properly loaded up.</p>



<p class="wp-block-paragraph">Setting 1 is the exception, and I would rather point at it than pretend it fits. It permits 2 percent straight ahead, rises to 3 percent at around 0.75 G in either direction, and comes back to 2.5 at full lateral load. It is the only row in the table that allows more slip while cornering than it does in a straight line.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="631" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-slip-target-vs-lateral-g.png" alt="Chart of permitted wheel slip against lateral G for three traction control settings, each forming a dome that peaks in a straight line and tapers as cornering load builds" class="wp-image-1120" /><figcaption class="wp-element-caption">The same data plotted. The dome is most pronounced in the middle settings and flattens at both extremes.</figcaption></figure>



<p class="wp-block-paragraph">So the rotary is not a gain switch and it is not an on/off. It selects <strong>how much slip you are allowed as a function of how hard you are cornering</strong>, and the system tightens automatically as lateral load increases without the driver doing anything.</p>



<h3 class="wp-block-heading">And then speed offsets all of it</h3>



<p class="wp-block-paragraph">Lateral G is not the only input to the slip target. A second table offsets it by road speed, and it does a lot of work at both ends.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="1382" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-offset-road-speed.png" alt="Heatmap of the target slip offset by front axle speed, 0 to 330 kph, for each rotary position: +9 points below 25 kph (up to +25 at position 12), zero from 45 to 160 kph, and negative from 180 kph, reaching between -2.0 and -9.4 at 330" class="wp-image-1175" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-offset-road-speed.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-offset-road-speed-234x300.png 234w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-offset-road-speed-800x1024.png 800w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-target-slip-offset-road-speed-768x983.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Target Slip Offset Table 1, percentage points added to or taken off the slip target by road speed.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Below 25 kph every setting adds nine percentage points of slip, and the loosest adds twenty five. That is the launch allowance. You cannot get a car like this moving from rest on a target of 2 percent, and without that offset the system would strangle it off the line.</p>



<p class="wp-block-paragraph">Between 45 and 160 kph the offset is zero and the lateral G table stands on its own. Above 180 it goes negative, and by 330 kph it is pulling back between 2 and 9.4 points depending on the setting.</p>



<p class="wp-block-paragraph">Which is the right way round. Wheel slip at 40 kph costs you a bit of time. Wheel slip at 300 kph costs you rather more than that.</p>



<h2 class="wp-block-heading">The reactive half: a deliberately soft PID</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">When the feedforward is not enough, the PID takes over. And the gains are the opposite shape to what most people would write. All three share exactly the same breakpoints, so they go in one table.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="430" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-gains.png" alt="Heatmap of the traction control PID gains against slip target error -25 to 0 percent: proportional 3.00 falling to 0.20, integral 0.000 rising to 0.020, derivative 3.00 falling to 0.10" class="wp-image-1174" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-gains.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-gains-300x119.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-gains-1024x408.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-gains-768x306.png 768w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">Each row is shaded against its own range, because integral peaks at 0.020 and proportional at 3.00. The colour shows the shape, not the magnitude.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Proportional gain at zero slip error is 0.20. At minus 25 percent error it is 3.00. Derivative runs the same way, 0.10 at zero, and it saturates at 3.00 from minus 20 onwards.</p>



<p class="wp-block-paragraph">Both are smallest near target and largest far from it.</p>



<p class="wp-block-paragraph">That is a controller designed to be felt as little as possible. Around the target, where you spend almost all of your time, the loop barely reacts and the feedforward carries the car. Only when things run properly away does it bite hard.</p>



<p class="wp-block-paragraph">Tune it the conventional way round, with high gain near target for tight regulation, and you get a car that nibbles at the throttle constantly and feels like it is arguing with you.</p>



<h3 class="wp-block-heading">Integral is almost switched off, on purpose</h3>



<p class="wp-block-paragraph">Look at the integral row against the other two. Peak gain is 0.020, near target. At minus 25 it is <strong>zero</strong>.</p>



<p class="wp-block-paragraph">Zeroing the integral term exactly where the error is worst is anti windup by design. When the car is genuinely out of shape, the integrator stops accumulating instead of building up a correction you then have to unwind on the way out. An integrator that has wound up during a slide gives you a second event when it releases, and the second one is usually the one that catches people out.</p>



<p class="wp-block-paragraph">The rest of the PID setup backs that up:</p>



<ul class="wp-block-list">
<li>Integral control rate: 200 Hz</li>



<li>Integral positive clamp: 50.0 Nm</li>



<li>Integral negative clamp: -50.0 Nm</li>



<li>Minimum torque clamp: 50.0 Nm</li>



<li>Slip target filter: 4</li>
</ul>



<p class="wp-block-paragraph">Fifty Nm either side is a narrow band on an engine making 1,193. The integrator is there to trim, not to intervene.</p>



<h3 class="wp-block-heading">And the PID does not always run</h3>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1080" height="1778" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1.png" alt="Heatmap of the PID enable table, driver demand torque 0 to 1,000 Nm against slip target error -6 to +5 percent. The loop is off below 300 Nm, then each extra 100 Nm enables one more column in a staircase" class="wp-image-1173" style="width:640px" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1.png 1080w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1-182x300.png 182w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1-622x1024.png 622w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1-768x1264.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-traction-pid-enable-table-1-933x1536.png 933w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /><figcaption class="wp-element-caption">PID Enable Table. 1 means the closed loop runs, 0 means it does not.</figcaption></figure>
</div>


<p class="wp-block-paragraph">Below 300 Nm of driver demand it is zero across the whole row. The closed loop simply does not run.</p>



<p class="wp-block-paragraph">Above that it opens up as a staircase. At 300 Nm the loop only runs once slip error is worse than minus 3 percent. Every additional 100 Nm of driver demand brings one more column into play, until at 1,000 Nm it is active everywhere except the far positive corner.</p>



<p class="wp-block-paragraph">So the amount of authority the closed loop has is itself a function of how much the driver is asking for. At low demand, feedforward handles everything alone, which means the PID cannot introduce noise into normal driving, because at normal driving loads it is not switched on.</p>



<h2 class="wp-block-heading">What it is allowed to do about it</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="540" height="195" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/emtron-torque-limit-actuator-priority.png" alt="Emtron torque limit strategy showing priority 1 throttle area, priority 2 ignition retard, and priority 3 set to OFF so cutting is disabled" class="wp-image-1125" /><figcaption class="wp-element-caption">Priority 1 throttle area, priority 2 ignition retard, priority 3 OFF.</figcaption></figure>



<p class="wp-block-paragraph">Emtron gives you three actuators for torque reduction, in a priority order. Mine reads throttle area, then ignition retard clamped at 11 degrees, then <strong>OFF</strong>.</p>



<p class="wp-block-paragraph">Cutting is disabled. On a car making 1,114 whp, the harshest tool in the box is not in the box.</p>



<p class="wp-block-paragraph">The throttle area minimum clamp bottoms out at 10 percent, so it never closes the throttle fully either. Torque reduction happens by moving the plate and pulling timing, and nothing else.</p>



<p class="wp-block-paragraph">That is a road car decision. Fuel or ignition cutting is fast and effective and it feels like being kicked. On a car that has to be pleasant on a motorway and predictable in the wet, an intervention that arrives as a smooth reduction rather than a hammer blow is worth more than the extra tenth of response.</p>



<h2 class="wp-block-heading">Does it work?</h2>



<p class="wp-block-paragraph">One number from a road log, second gear, full throttle:</p>



<p class="wp-block-paragraph"><strong>Torque reduction by retard: 8.1 percent.</strong></p>



<p class="wp-block-paragraph">Eight percent, in retard, on the second priority, with cutting unavailable and throttle intervention having already done its part. That is the system working gently in the conditions where a badly normalised setup would be reaching for everything it had.</p>



<p class="wp-block-paragraph">It is one data point from one log, so treat it as an illustration rather than proof. But it is the shape of result the whole design is aimed at.</p>



<h2 class="wp-block-heading">The principle, if you take nothing else</h2>



<p class="wp-block-paragraph">A PID is not there to make your feedforward work. It is there to handle what the feedforward could not have known about: a damp patch, a change in surface, a mid corner bump.</p>



<p class="wp-block-paragraph">If your feedforward target is unrealistic, the PID spends its authority correcting your model instead of correcting the road. It saturates, it escalates through the actuator list, and the car feels like it is fighting you.</p>



<p class="wp-block-paragraph">Normalise the target to something the tyres can actually deliver, gate the loop so it only runs when it is needed, keep the gains soft near target, and the reactive half stays quiet almost all the time.</p>



<p class="wp-block-paragraph">Which is the point. The best traction control is the one you do not notice.</p>



<h2 class="wp-block-heading">One thing to be clear about</h2>



<p class="wp-block-paragraph">Every number above is specific to this car: this power, these tyres, this gearbox, this weight distribution. <strong>The data is not transferable, but the principle is.</strong></p>



<p class="wp-block-paragraph">I have published the tables in full because seeing how something is structured teaches you far more than reading a description of it. Copy the structure. Do not copy the values.</p>



<p class="wp-block-paragraph">None of this works without trustworthy wheel speeds, which on a staggered setup is less automatic than it sounds. That is covered in <a href="https://blownbytwins.co.uk/?p=1111">Staggered Tyres and Traction Control</a>. The throttle area table that the whole torque model sits on is covered in <a href="https://blownbytwins.co.uk/engine-management/throttle-body-effective-area/">Throttle Body Effective Flow Area</a>. Full specification is on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</p>



<p class="wp-block-paragraph">If you run torque based traction control and have taken a different view on any of this, particularly the gain shape, the setting 1 anomaly or disabling cut, I would like to hear it. This is the part of the calibration I have changed my mind about most.</p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/">Traction Control on 1,114 whp: Feedforward, PID, and Why It Never Cuts</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Twelve Small Injectors Instead of Six Big Ones</title>
		<link>https://blownbytwins.co.uk/engine-management/twelve-small-injectors-instead-of-six-big-ones/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Sun, 13 Sep 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[fuel system]]></category>
		<category><![CDATA[injectors]]></category>
		<category><![CDATA[staged injection]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1113</guid>

					<description><![CDATA[<p>Every big power build hits the same wall. You need enough injector to feed the engine at full noise, and the injector that does that is too big to idle&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/engine-management/twelve-small-injectors-instead-of-six-big-ones/">Twelve Small Injectors Instead of Six Big Ones</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Every big power build hits the same wall. You need enough injector to feed the engine at full noise, and the injector that does that is too big to idle properly.</p>



<p class="wp-block-paragraph">The usual answer is to accept it. Fit the 2000cc units, put up with a lumpy idle and a car that hunts in traffic, and tell yourself it&#8217;s the price of the power.</p>



<p class="wp-block-paragraph">It isn&#8217;t. Here&#8217;s what I did instead, and the arithmetic behind it.</p>



<h2 class="wp-block-heading">Configuration</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<ul class="wp-block-list">
<li>2JZ-GTE VVTi, 3,353 cc, 1,114 whp on E85</li>



<li>Plazmaman intake manifold, twelve injector provision</li>



<li>Twelve CP1000 injectors, rated 1,000 cc at 3 bar</li>



<li>Aeromotive regulator, 4 bar static, 1:1 rising rate</li>



<li>Three Walbro 485 pumps, -10 feed lines</li>



<li><a href="https://emtron.world/products/kv12">Emtron KV12</a>, twelve dedicated injection channels, flex fuel</li>
</ul>



<h2 class="wp-block-heading">The problem is minimum pulse width, not flow</h2>



<p class="wp-block-paragraph">An injector is a solenoid valve. It takes a finite time to open and a finite time to close, and during those transitions the flow through it is neither zero nor fully open. It is somewhere in between, and it is not linear.</p>



<p class="wp-block-paragraph">Above a certain pulse width, the opening and closing transitions are a small fraction of the total and the injector behaves predictably. Below it, the transitions dominate. Two commands a fraction of a millisecond apart can deliver very different amounts of fuel, and the relationship stops being something you can characterise reliably.</p>



<p class="wp-block-paragraph">That&#8217;s the minimum controllable pulse width, and it&#8217;s roughly a property of the injector rather than of how much fuel you&#8217;re asking for. A big injector doesn&#8217;t take proportionally longer to open. It just moves more fuel while it does.</p>



<p class="wp-block-paragraph">Which is why big injectors idle badly. At idle you need a very small mass of fuel. With a big injector, that mass corresponds to a pulse width down in the region where the injector is unpredictable. The ECU asks for the same thing twice and gets two different answers. That&#8217;s your lumpy idle, and no amount of tuning fixes it, because the hardware isn&#8217;t repeatable down there.</p>



<h2 class="wp-block-heading">Twelve small ones instead of six big ones</h2>



<p class="wp-block-paragraph">The Plazmaman manifold takes twelve injectors, two per cylinder. Six primaries and six secondaries, each addressed individually on its own channel by the KV12.</p>



<p class="wp-block-paragraph">At idle, around town, and at any low load, only the primaries fire. Six injectors, each a 1000cc unit, sharing the same small fuel demand a set of six would normally handle. Pulse widths sit in the region where a 1000cc injector is well behaved.</p>



<p class="wp-block-paragraph">When load arrives, the secondaries stage in and the full twelve are working.</p>



<p class="wp-block-paragraph">So you get the idle characteristics of a 1000cc injector and the flow of something more than twice the size. That&#8217;s the whole idea, and it costs you nothing except a manifold that takes twelve injectors and an ECU with twelve output channels.</p>



<h2 class="wp-block-heading">The arithmetic, including the bit people get wrong</h2>



<p class="wp-block-paragraph">The injectors are rated 1,000 cc. They are not flowing 1,000 cc.</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><title id="injflow-title">Injector flow against rail pressure</title>Flow rises with the square root of rail pressure. An injector rated 1,000 cc per minute at 3 bar delivers 1,155 cc at 4 bar, not the 1,333 cc a linear assumption would predict.05001,0001,5002,0002,50012345678Rated3 bar, 1,000 ccInstalled4 bar, 1,155 ccThe linear guesswould say 1,333 ccRail pressure, barFlow, cc per minuteInjector flow against rail pressureActual, square root of pressureWhat most people assume<figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Flow scales with the square root of the pressure differential. A 33 percent pressure increase buys 15 percent more flow, not 33.</figcaption></figure>



<p class="wp-block-paragraph">Injector flow scales with the square root of the pressure differential across it. Rated at 3 bar, run at 4 bar:</p>



<pre class="wp-block-code"><code>flow = rated_flow × √(actual_pressure / rated_pressure)
     = 1000 × √(4 / 3)
     = 1000 × 1.1547
     = 1,155 cc</code></pre>



<p class="wp-block-paragraph">Twelve of those is <strong>roughly 13,900 cc/min installed</strong>, which is the equivalent of six 2,300 cc injectors.</p>



<p class="wp-block-paragraph">That square root matters more than it looks. It cuts both ways: raising fuel pressure buys you less flow than you&#8217;d expect, and dropping it costs you less than you&#8217;d fear. A 33 percent pressure increase gave 15 percent more flow.</p>



<p class="wp-block-paragraph">It also means anyone sizing injectors off the rated figure without checking their base pressure is working from the wrong number.</p>



<h2 class="wp-block-heading">Why the regulator has to be rising rate</h2>



<p class="wp-block-paragraph">What actually drives flow is the pressure <em>differential</em> across the injector: rail pressure minus manifold pressure.</p>



<p class="wp-block-paragraph">With a fixed 4 bar rail and 2.8 bar of boost in the manifold, that differential collapses to 1.2 bar at peak. Flow would fall to roughly 55 percent of what the ECU thinks it&#8217;s getting, at exactly the moment the engine needs the most fuel.</p>



<p class="wp-block-paragraph">A 1:1 rising rate regulator references manifold pressure and raises rail pressure to match, so the differential stays at 4 bar whatever the boost is doing. At 2.8 bar of boost that means roughly 6.8 bar of absolute rail pressure.</p>



<p class="wp-block-paragraph">Which is what the three pumps are for. Walbro 485s at 6.8 bar are working considerably harder than the same pumps at 3 bar, and their flow falls off as pressure rises. Fuel pressure has been confirmed to hold through full load E85 pulls, and the third pump exists for exactly that margin.</p>



<h2 class="wp-block-heading">A headroom check</h2>



<p class="wp-block-paragraph"><strong>Status: Working conclusion</strong></p>



<p class="wp-block-paragraph">Rough demand at 1,114 whp on E85, assuming a brake specific fuel consumption around 0.66 lb/hp/hr and a nominal drivetrain loss, lands somewhere near 8,400 cc/min.</p>



<p class="wp-block-paragraph">Against 13,900 cc/min installed, that&#8217;s roughly 60 percent duty at peak power.</p>



<p class="wp-block-paragraph">Both of those assumptions are mine rather than measured, so treat it as a sanity check rather than a specification. But the shape of the answer is right: there is real headroom, which is what you want on a car that has to survive being driven rather than just surviving a dyno pull.</p>



<h2 class="wp-block-heading">What this costs</h2>



<p class="wp-block-paragraph">It isn&#8217;t free.</p>



<p class="wp-block-paragraph">Twelve injectors means twelve to buy, twelve to wire, and twelve output channels on the ECU. Not every standalone has them, and a manifold with secondary injector provision is a specific purchase rather than a generic one.</p>



<p class="wp-block-paragraph">There is also a calibration cost. The handover between primary only and both sets firing has to be blended properly, or you get a step in fuelling at the transition. That is real work and it is work a single stage setup doesn&#8217;t need.</p>



<p class="wp-block-paragraph">Whether it&#8217;s worth it depends entirely on what the car is for. If it lives on a dyno and does quarter miles, fit six big ones and don&#8217;t think about it. If it has to sit in traffic on the way to Scotland and then do something violent when it gets there, the staging is the difference between a car you drive and a car you tolerate.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="wp-block-paragraph"><em>This fuel system is what makes 2.8 bar on E85 possible in the first place. What that boost is actually worth, and how much of it is the fuel rather than the pressure, is covered in <a href="https://blownbytwins.co.uk/?p=1107">What E85 Actually Buys</a>. Full specification is on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>, and the build itself is in <a href="https://blownbytwins.co.uk/?p=1032">The 3.4 Stroker Build</a>.</em></p>



<p class="wp-block-paragraph">If you&#8217;ve run a staged setup and measured where the handover actually lands in your fuel trims, I&#8217;d be interested. That transition is the part I know least about and it&#8217;s where I&#8217;d expect the problems to live.</p><p>The post <a href="https://blownbytwins.co.uk/engine-management/twelve-small-injectors-instead-of-six-big-ones/">Twelve Small Injectors Instead of Six Big Ones</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Staggered Tyres and Traction Control: What the ECU Corrects, and What It Can&#8217;t</title>
		<link>https://blownbytwins.co.uk/engine-management/staggered-tyres-traction-control/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[traction control]]></category>
		<category><![CDATA[wheel speed]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1111</guid>

					<description><![CDATA[<p>If you run staggered tyres and a standalone ECU with traction control, there is a field in your configuration that almost certainly matters more than you think it does. It&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/engine-management/staggered-tyres-traction-control/">Staggered Tyres and Traction Control: What the ECU Corrects, and What It Can’t</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">If you run staggered tyres and a standalone ECU with traction control, there is a field in your configuration that almost certainly matters more than you think it does. It is the tyre size.</p>



<p class="wp-block-paragraph">Not for speedometer calibration. For whether your traction control knows the difference between wheelspin and a rear tyre that is simply a different size to the front one.</p>



<h2 class="wp-block-heading">The problem, in one number</h2>



<p class="wp-block-paragraph">My car runs 265/30/19 at the front and 295/30/19 at the rear. Work the rolling diameters out:</p>



<ul class="wp-block-list">
<li>Front: 482.6 mm rim + (2 &times; 79.5 mm sidewall) = <strong>641.6 mm</strong></li>



<li>Rear: 482.6 mm rim + (2 &times; 88.5 mm sidewall) = <strong>659.6 mm</strong></li>
</ul>



<p class="wp-block-paragraph">The rear is 2.8 percent larger, so for any given road speed it turns 2.8 percent slower than the front.</p>



<p class="wp-block-paragraph">A traction control strategy that compares driven wheel speed against undriven wheel speed and calls the difference slip would therefore see a permanent 2.8 percent slip. At a steady 50 mph on a flat road, doing nothing. Every slip target you set would be sitting on top of an offset that has nothing to do with grip.</p>



<h2 class="wp-block-heading">What the ECU does about it</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<p class="wp-block-paragraph">On the <a href="https://emtron.world/products/kv12">Emtron</a> you give it two things per axle: the number of teeth on the ABS reluctor, and the tyre size.</p>



<p class="wp-block-paragraph">In my case that is 48 teeth on the Toyota hubs at both ends, and the two tyre sizes above. The ECU converts each tyre size string into a rolling diameter, combines it with the tooth count, and derives a scalar that normalises one axle against the other.</p>



<p class="wp-block-paragraph">The tooth count cancels here because both ends are 48. On a car with different reluctors front and rear it would not, which is exactly why the ECU asks for both rather than just the tyre size.</p>



<p class="wp-block-paragraph">You can watch it work. At a steady cruise on a flat road, in the same log, at the same moment:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="631" src="https://blownbytwins.co.uk/wp-content/uploads/2026/09/wheel-speed-raw-vs-corrected-slip.png" alt="Bar chart comparing raw wheel speed channels reading 2.8 percent apart against a corrected Drive Slip channel reading zero at steady cruise" class="wp-image-1128" /><figcaption class="wp-element-caption">Same car, same log, same moment. The raw channels show the geometry. The corrected channel shows the truth.</figcaption></figure>



<ul class="wp-block-list">
<li><strong>Raw wheel speed channels: 2.8 percent apart.</strong> Exactly the geometry, uncorrected.</li>



<li><strong>Drive Slip: 0 percent.</strong> Corrected, and reading the truth.</li>
</ul>



<p class="wp-block-paragraph">That pair is worth knowing about, because if you go looking at raw wheel speed channels and find them 2.8 percent apart, nothing is wrong. Those are sensor channels. The correction is applied downstream, inside the slip calculation, and the corrected channel is the one that tells you whether it is working.</p>



<h2 class="wp-block-heading">The failure mode nobody warns you about</h2>



<p class="wp-block-paragraph">The correction is derived from a tyre size you typed in. It has no way of knowing what is actually bolted to the car.</p>



<p class="wp-block-paragraph">This car has been through 18 inch wheels on Yokohama A052, and is now on 19 inch Rays G025 with a staggered Continental SportContact 7 setup. If the configuration still held the old sizes, every wheel speed on the car would be wrong, road speed would be wrong, and the slip calculation would be wrong.</p>



<p class="wp-block-paragraph">And none of it would look broken. The ECU would be doing correct arithmetic on stale inputs, confidently, forever.</p>



<p class="wp-block-paragraph">So: change your wheels or tyres, change the configuration. It belongs on the same checklist as the alignment.</p>



<h2 class="wp-block-heading">What geometry cannot reach</h2>



<p class="wp-block-paragraph"><strong>Status: Working conclusion</strong></p>



<p class="wp-block-paragraph">The scalar is calculated from the free rolling diameter, meaning the tyre&#8217;s size when nothing is pushing on it. What the wheel actually rolls on is the loaded radius, which is smaller, because the sidewall deflects under the weight of the car.</p>



<p class="wp-block-paragraph">That deflection is not the same front to rear. My rear sidewall is 88.5 mm against 79.5 mm at the front, and it carries more load. So the real ratio between the two axles is not quite the ratio the ECU calculated.</p>



<p class="wp-block-paragraph">Worse, it moves. Under hard acceleration weight transfers rearward, the rear sidewall squashes further, the rear rolling radius shrinks, and the rear wheels read faster for the same road speed. The system sees slip that is partly just the tyre changing shape.</p>



<p class="wp-block-paragraph">Which means the residual error is largest exactly when traction control is working hardest, and it errs in the direction of over-reading slip.</p>



<p class="wp-block-paragraph">Add the slower drifts on top: cold pressure against hot, a fresh tyre against a half worn one, a summer session against a winter one. All of them change rolling radius. None of them change the number in the configuration.</p>



<p class="wp-block-paragraph">I have not quantified any of that on this car. It is reasoning from geometry rather than measurement, and it stays a working conclusion until there is a number behind it.</p>



<h2 class="wp-block-heading">The check that takes two minutes</h2>



<p class="wp-block-paragraph">Flat road, steady 50, constant throttle, no load transfer. Log all four wheel speeds and your corrected slip channel.</p>



<p class="wp-block-paragraph">If corrected slip reads zero, your static correction is right. If it reads a consistent offset, either your configured tyre sizes do not match the car, or your tyres have worn far enough to matter.</p>



<p class="wp-block-paragraph">Do it after every tyre change, and once mid-season. It costs nothing and it is the only way to know whether the number your traction control is acting on means anything.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="wp-block-paragraph"><strong>Why this matters more than it sounds.</strong> Everything the traction control does downstream, the slip target, the feedforward torque model, the PID that corrects what the model missed, is built on the assumption that slip is being measured correctly. Get this wrong and every one of those tables is being tuned against a number that has an offset baked into it. The strategy that sits on top of these wheel speeds is covered in <a href="https://blownbytwins.co.uk/?p=1118">Traction Control on 1,114 whp</a>.</p>



<p class="wp-block-paragraph">Full specification and the wheel and tyre setup are on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</p>



<p class="wp-block-paragraph">If you run staggered tyres and have measured your loaded radius rather than assuming the free one, I would like to know how far apart they were. That is the number this article is missing.</p><p>The post <a href="https://blownbytwins.co.uk/engine-management/staggered-tyres-traction-control/">Staggered Tyres and Traction Control: What the ECU Corrects, and What It Can’t</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What E85 Actually Buys: Boost, Timing, and Where the Advantage Vanishes</title>
		<link>https://blownbytwins.co.uk/engine-management/what-e85-actually-buys/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Sun, 06 Sep 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[e85]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[flex fuel]]></category>
		<category><![CDATA[ignition timing]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1107</guid>

					<description><![CDATA[<p>Ask what E85 is worth on a big turbo engine and you get one of two answers. Either it is magic, or it is 30% more fuel for 30% more&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/engine-management/what-e85-actually-buys/">What E85 Actually Buys: Boost, Timing, and Where the Advantage Vanishes</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Ask what E85 is worth on a big turbo engine and you get one of two answers. Either it is magic, or it is 30% more fuel for 30% more power. Neither is much use if you are trying to decide whether to plumb in a flex sensor.</p>



<p class="wp-block-paragraph">On my car the honest answer turned out to be more interesting than either, and it took two ignition tables and a dyno sheet to see it. The short version: E85 buys boost and it buys ignition timing, and depending on where you look in the rev range you can measure both, one, or neither.</p>



<h2 class="wp-block-heading">Configuration</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<ul class="wp-block-list">
<li>2JZ-GTE VVTi, 3,353 cc, 9.5:1 static compression</li>



<li><a href="https://kelfordcams.com/dealers/product/t202-d">Kelford T202-D</a> camshafts, 272&deg;/278&deg; advertised</li>



<li>Pulsar G42-1200, 73 mm compressor, T4 divided 1.15 A/R</li>



<li><a href="https://emtron.world/products/kv12">Emtron KV12</a>, firmware 2.20.22, flex fuel with an ethanol content sensor</li>



<li>Twelve CP1000 injectors, staged, on a 4 bar 1:1 rising rate regulator. That fuel system is what makes 2.8 bar possible at all, and it is covered separately in <a href="https://blownbytwins.co.uk/?p=1113">Twelve Small Injectors Instead of Six Big Ones</a></li>



<li>ZF 8HP70, 5th gear, 1.285:1</li>



<li>Dynojet, WinPEP 8, uncorrected, 6 March 2026 at <a href="https://www.srdtuning.com/">SRD Tuning</a></li>



<li>Both runs: same session, same equipment, same correction factor</li>
</ul>



<h2 class="wp-block-heading">The two runs</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1024x768.jpeg" alt="Dynojet power and torque curves for a 3.4 litre 2JZ-GTE VVTi Mk4 Supra, showing 1,113.9 whp on E85 and 914.2 whp on 99 RON pump fuel" class="wp-image-1028" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1024x768.jpeg 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-300x225.jpeg 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-768x576.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1536x1152.jpeg 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Red: E85 at 2.8 bar gauge. Orange: 99 RON at 2.1 bar gauge. Note where each curve stops climbing.</figcaption></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th></th><th>99 RON pump</th><th>E85</th></tr></thead><tbody><tr><td>Boost</td><td>2.1 bar gauge (311 kPa)</td><td>2.8 bar gauge (381 kPa)</td></tr><tr><td>Peak power</td><td>914.2 whp at 7,940 rpm</td><td>1,113.9 whp at 7,220 rpm</td></tr><tr><td>Peak torque</td><td>688.6 lb ft at 5,580 rpm</td><td>881.0 lb ft at 5,980 rpm</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">200 whp apart. The obvious reading is that E85 is worth 200 whp. It isn&#8217;t, and the two runs weren&#8217;t at the same boost, so any straight comparison between them is measuring two things at once.</p>



<h2 class="wp-block-heading">What the ignition tables say</h2>



<p class="wp-block-paragraph">Two main ignition tables, same axes, one for each fuel. Comparing them cell by cell gives a much cleaner answer than the dyno does.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="2560" height="1355" src="https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-scaled.png" alt="Chart of ignition advance gained on E85 over 99 RON pump fuel, showing identical timing below 100 kPa and four to five degrees more advance above it" class="wp-image-1110" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-scaled.png 2560w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-300x159.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-1024x542.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-768x407.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-1536x813.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/e85_ignition_advance_gained_over_99ron-2048x1084.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><figcaption class="wp-element-caption">The difference between the two tables, not the tables themselves. Identical below 100 kPa, four to five degrees apart above it.</figcaption></figure>



<p class="wp-block-paragraph"><strong>Below 100 kPa, the two tables are identical.</strong> Not similar. The same numbers in every cell.</p>



<p class="wp-block-paragraph">That is deliberate. Off boost the car runs the same timing regardless of what is in the tank, so it idles the same, pulls away the same and behaves the same in traffic on either fuel. A car that drives differently depending on what you last filled it with is a car you have to think about, and this build is meant to be one you don&#8217;t.</p>



<p class="wp-block-paragraph">Above 100 kPa they separate, and they separate by a remarkably consistent amount:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>MAP</th><th>At 6,000 rpm</th><th>At 7,000 rpm</th></tr></thead><tbody><tr><td>200 kPa</td><td>+4.2&deg;</td><td>+4.1&deg;</td></tr><tr><td>300 kPa</td><td>+4.2&deg;</td><td>+5.0&deg;</td></tr><tr><td>380 kPa</td><td>+4.1&deg;</td><td>+5.0&deg;</td></tr><tr><td>400 kPa</td><td>+4.1&deg;</td><td>+5.0&deg;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Four to five degrees, right across the boosted region, holding all the way to the limiter. That is what E85 actually bought in this calibration, and it is a separate thing from the extra boost.</p>



<h2 class="wp-block-heading">Separating the two effects</h2>



<p class="wp-block-paragraph">To a first approximation, mass flow through an engine scales with manifold pressure. So if you know the pressure ratio between two runs, you know roughly how much of the power difference is just boost.</p>



<p class="wp-block-paragraph">381 kPa against 311 kPa is a pressure ratio of <strong>1.225</strong>. Anything above that is coming from somewhere other than pressure.</p>



<p class="wp-block-paragraph"><strong>At peak torque</strong>, 881.0 against 688.6 lb ft is a ratio of <strong>1.279</strong>. That is roughly four percent more than pressure alone explains. That four percent is the timing.</p>



<p class="wp-block-paragraph"><strong>At peak power</strong>, 1,113.9 against 914.2 whp is a ratio of <strong>1.219</strong>. Slightly <em>below</em> the pressure ratio. The timing advantage is still sitting in the table, four to five degrees of it, but it has stopped turning into power.</p>



<h2 class="wp-block-heading">Why the advantage disappears at the top</h2>



<p class="wp-block-paragraph"><strong>Status: Working conclusion</strong></p>



<p class="wp-block-paragraph">The working explanation is the turbo. At 2.8 bar the G42-1200 is at or near the limit of what it can flow, so the E85 run stops gaining before the engine does. The pump run at 2.1 bar still has compressor headroom, which is why it makes its peak power 720 rpm further up the rev range, at 7,940 against 7,220.</p>



<p class="wp-block-paragraph">That looks backwards until you think about it. The lower boost run revs out further because it hasn&#8217;t run out of compressor yet.</p>



<p class="wp-block-paragraph">I can&#8217;t prove it. Turbo shaft speed isn&#8217;t logged on this car and there is no exhaust manifold pressure sensor, so I can distinguish neither the compressor side nor the turbine side from the data I have. It is a working conclusion, and it stays one until there is a sensor behind it.</p>



<h2 class="wp-block-heading">What this means if you&#8217;re deciding on flex fuel</h2>



<p class="wp-block-paragraph">The useful conclusion isn&#8217;t the 200 whp. It&#8217;s where the 200 whp comes from and where it doesn&#8217;t.</p>



<p class="wp-block-paragraph">If you are already boost limited by your turbo, E85&#8217;s timing advantage will show up as mid range torque and very little else at the top. You will feel it on the road far more than you will see it on a dyno sheet, because the road is where mid range lives.</p>



<p class="wp-block-paragraph">If you have compressor headroom left, E85 lets you use it, and then you get both.</p>



<p class="wp-block-paragraph">And if somebody quotes you a fuel-to-fuel power comparison without telling you the boost on each run, the number means nothing. Two runs at different pressures measure two variables. You cannot attribute the difference to the fuel unless you hold the pressure constant, or do what I have done here and work out how much of it pressure alone would explain.</p>



<h2 class="wp-block-heading">The experiment I haven&#8217;t run</h2>



<p class="wp-block-paragraph">The clean version of this test is both fuels at the same boost. Set 2.1 bar, run pump, run E85, and the entire difference is the timing with nothing else in the way.</p>



<p class="wp-block-paragraph">That&#8217;s a dyno session I haven&#8217;t had, and until I do, the four percent figure above is arithmetic rather than a direct measurement. When it happens it goes on this page and if the number is different I will say so.</p>



<p class="wp-block-paragraph"><em>The 881 lb ft in the table above is not the highest figure from that session. A fourth run reached 901 lb ft and found the limit of the gearbox instead: <a href="https://blownbytwins.co.uk/?p=1093">Where the Stock ZF 8HP70 Gives Up</a>. Engine torque has been capped at 880 lb ft ever since, which is why the E85 figure is where it is.</em></p>



<p class="wp-block-paragraph">Full specification, both dyno sheets and the measurement conditions are on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</p>



<p class="wp-block-paragraph">If you have run the same engine on both fuels at matched boost and have the numbers, I would like to see them. Same boost, same dyno, same session. It is a surprisingly rare test.</p><p>The post <a href="https://blownbytwins.co.uk/engine-management/what-e85-actually-buys/">What E85 Actually Buys: Boost, Timing, and Where the Advantage Vanishes</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The DfT in-use emissions consultation, what it actually proposes</title>
		<link>https://blownbytwins.co.uk/general/in-use-emissions-consultation/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Thu, 03 Sep 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1142</guid>

					<description><![CDATA[<p>The Department for Transport wants vehicles to meet their build emissions standard for life. Here is what the proposal actually says, which vehicles it covers, and the one line in it that treats catalyst replacement the same as catalyst deletion. Closes 6 September 2026.</p>
<p>The post <a href="https://blownbytwins.co.uk/general/in-use-emissions-consultation/">The DfT in-use emissions consultation, what it actually proposes</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>The Department for Transport is consulting on <a href="https://www.gov.uk/government/consultations/in-use-emissions-of-road-vehicles-regulating-environmental-impacts/regulating-environmental-impact-of-in-use-emissions-of-road-vehicles" target="_blank" rel="noopener">changing the law that governs emissions from vehicles already on the road</a>. It closes at 11:59pm on Sunday 6 September 2026, so if you want to say anything, this week is the week.</p>
<p>I have read the whole thing and responded. What follows is what it actually says, rather than what the internet has decided it says, because the two are some distance apart.</p>
<h2>What is actually being proposed</h2>
<p>At the moment there is a gap. New vehicles have to meet the Euro standard in force when they are built and registered. Once they are on the road, the rules that keep them at that standard, in regulation 61A of the Road Vehicles (Construction and Use) Regulations 1986, were only ever updated as far as Euro 4 and Euro V. Anything built to Euro 5, Euro 6 or Euro VI has no ongoing legal requirement to keep its emissions control system working.</p>
<p>DfT wants to close that gap by requiring vehicles to keep meeting the standard they were built to, for life. Enforcement would run through existing sections of the Road Traffic Act 1988, section 42 for using a non compliant vehicle, section 75 for alterations to vehicles, and section 76 for fitting or supplying unsuitable parts. Penalties on conviction in the magistrates&#8217; court run from £1,000 to unlimited fines. DVSA would enforce.</p>
<p>The evidence base is worth reading rather than dismissing. A roadside remote sensing study of over 94,000 vehicles across several UK cities found that fewer than one in ten passenger cars met the official nitrogen oxide limits, and that roughly two thirds of Euro 5 and Euro 6 diesel cars were emitting more than three times the level allowed. DVSA&#8217;s market surveillance unit logged 331 intelligence reports relating to emissions modifications in 2024, and DfT suspects that is a small fraction of the actual activity.</p>
<h2>Which vehicles it applies to</h2>
<p>This is the part most people have got wrong, and it matters.</p>
<p>Regulation 61A applies to vehicles first used on or after 1 January 2001. The proposal extends the standards it covers, up to Euro 6 and Euro VI, rather than extending the date backwards. On the most natural reading, a 1997 Supra, a 1999 R34 or anything else registered before 2001 sits outside this entirely. My R35 is squarely inside it. So is every 2001 onwards project.</p>
<p>I say most natural reading because the operative sentence in the consultation refers to all road vehicles in-use in GB from 1 January 2001, which is not the same test as first used on or after that date. Those two phrasings produce very different scopes, and the second would pull pre 2001 cars into the regime for the first time. That is one of the things I have asked DfT to nail down.</p>
<p>Motorcycles are a separate issue. Regulation 61A has never applied to category L vehicles. DfT proposes to include them, while stating in the same section that it has limited analytical evidence specific to in-use emissions from motorcycles and could not identify a clear reason to exclude them. Extending a criminal prohibition to a whole vehicle category because no argument against it was found is the wrong way round.</p>
<h2>The four modifications DfT says are always illegal</h2>
<ul>
<li>Removal or deletion of diesel particulate filters, or gasoline particulate filters on petrol vehicles</li>
<li>Removal of three way catalysts, often accompanied by alteration or removal of sensors and sometimes ECU remapping</li>
<li>Manipulation of SCR and diesel exhaust fluid systems, the AdBlue delete</li>
<li>Manipulation of EGR systems, whether physically or by remapping</li>
</ul>
<p>DfT is explicit that it is not trying to ban modification generally. The document says vehicle alteration is a legitimate practice embraced by tuners, repairers and enthusiasts worldwide, and that it is not seeking to stop people fitting generic rather than OEM parts. It also says that the legality of a modification, hardware or software, depends primarily on how it affects the standard the vehicle was legally built to.</p>
<p>That is an outcome based test, and I have no argument with it. If the car meets its limits, it meets its limits.</p>
<h2>Where the drafting contradicts itself</h2>
<p>The consultation asks whether a modification should be unlawful where it is a known and proven fact that it will always result in illegal levels of emissions. The word doing the work there is always.</p>
<p>Three of the four items survive that test. SCR, DEF and EGR systems are manipulated in order to defeat them, not to replace them. Delete a DPF and you have deleted a DPF.</p>
<p>The catalyst item does not survive it. Removal of three way catalysts describes a physical act, not an emissions outcome. It catches deleting a cat and running nothing, which should absolutely be illegal. It equally catches replacing a failed or obsolete original cat with a modern aftermarket one, which is ordinary repair, and which on a properly calibrated closed loop setup routinely meets or beats the original. That is not a case where illegal emissions always result. It is a case where they do not result at all.</p>
<p>The fix costs DfT nothing. Describe the harm rather than the component: removal of a three way catalyst without replacement by a catalytic converter that maintains the emissions limits applicable to the vehicle. Deletion stays illegal. Repair stays legal. The same wording change applies to the DPF and GPF item.</p>
<h2>The durability problem</h2>
<p>This one is on the face of the consultation, and I think it is the strongest objection available.</p>
<p>Manufacturers have to demonstrate that their emissions technology performs as expected for 100,000 km or five years, whichever comes sooner. Separate pollution control devices, catalytic converters among them, have to last 160,000 km.</p>
<p>The proposal puts an obligation on owners with no durability ceiling at all. An owner would carry indefinitely a standard the manufacturer only ever had to guarantee to a defined limit. A 2003 car on 180,000 miles with an original catalyst that has simply aged is not a vehicle anybody modified. It is a vehicle that got old, which is what vehicles do.</p>
<h2>What the consultation does not answer</h2>
<ul>
<li>There is no mechanism by which you can establish that you are compliant. No certificate, no list of authorised testing bodies, no independent appeals route. The proposal creates an offence without creating a way to prove you are not committing it.</li>
<li>Alternative fuels are not mentioned anywhere. If a car is converted to E85, is compliance demonstrated on E85 or on the fuel it originally ran? How is a flex fuel car assessed when ethanol content changes between fills? Nothing.</li>
<li>The legal weight of an MOT emissions pass is not addressed. DfT acknowledges the annual roadworthiness check is limited in what it can assess, which leaves owners relying on a test that may not be the test.</li>
<li>Burden of proof is not stated. Does DVSA have to establish the standard applicable to your specific vehicle and then prove it exceeds that, or is the presence of aftermarket parts enough to start the argument?</li>
</ul>
<h2>This lands on the industry before it lands on owners</h2>
<p>DfT says enforcement will likely focus upstream, on the practices behind illegal modifications, because roadside and annual testing can only assess so much. Read that properly. The people most exposed are not individual owners with modified cars. They are mapping outfits, exhaust fabricators, remap resellers and workshops, who under section 76 can be prosecuted for fitting or supplying unsuitable parts.</p>
<p>Which is exactly why the missing compliance mechanism matters. If a business is expected to know whether a configuration is legal before it hands the keys back, somebody has to define the test it applies.</p>
<h2>How to respond</h2>
<p>The quickest route is the <a href="https://www.smartsurvey.co.uk/s/x-QHYJB7/" target="_blank" rel="noopener">online response form</a>, which lets you save and come back to it. You can also email your response to ivs.consult@dft.gov.uk. The <a href="https://www.gov.uk/government/consultations/in-use-emissions-of-road-vehicles-regulating-environmental-impacts/regulating-environmental-impact-of-in-use-emissions-of-road-vehicles" target="_blank" rel="noopener">full consultation document is here</a>. It closes at 11:59pm on Sunday 6 September 2026.</p>
<p>If you do respond, answer the questions they actually asked. The consultation has a defined question set and responses get coded against it. A long free text essay that does not map to those questions is much easier to summarise into nothing. I know this because I sent the essay first.</p>
<p>The points I would make, if you want somewhere to start:</p>
<ul>
<li>Agree that a modification which always produces illegal emissions should be unlawful, then object that catalyst replacement does not meet that test and the wording should describe the outcome rather than the component</li>
<li>Ask for the durability obligation on owners to be reconciled with the 100,000 km and 160,000 km limits placed on manufacturers</li>
<li>Ask for a compliance certification route and an appeals process to exist before enforcement begins</li>
<li>Ask for the 1 January 2001 scope to be stated unambiguously on the face of the instrument</li>
<li>Say the six month lead-in should be longer, and should start from publication of final technical guidance rather than from the date the legislation passes</li>
</ul>
<h2>Where I have landed</h2>
<p>I am not against this. Deleting a cat or a DPF to make a car louder or cheaper to run puts pollution into air that other people breathe, and I do not have a defence for it. The remote sensing numbers are not invented.</p>
<p>My problem is narrower than that. As drafted, one line of this treats replacing a worn out component with a better one exactly the same as removing it and running nothing. That is not an emissions policy, it is a parts policy, and it will not clean up a single mile of air.</p>
<p>I would like to hear from anyone who runs a business doing this work, because you are the ones who need certainty out of it and you are the ones the enforcement is pointed at. Comments are open.</p><p>The post <a href="https://blownbytwins.co.uk/general/in-use-emissions-consultation/">The DfT in-use emissions consultation, what it actually proposes</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Where the Stock ZF 8HP70 Gives Up: 901 lb ft, Measured</title>
		<link>https://blownbytwins.co.uk/engine-management/where-the-stock-zf-8hp70-gives-up-901-lb-ft-measured/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Sun, 30 Aug 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[8hp70]]></category>
		<category><![CDATA[canformance]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[torque model]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1093</guid>

					<description><![CDATA[<p>The ZF 8HP is the default answer for anyone putting an automatic behind a big power engine, and the question that follows it everywhere is the same: how much will&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/engine-management/where-the-stock-zf-8hp70-gives-up-901-lb-ft-measured/">Where the Stock ZF 8HP70 Gives Up: 901 lb ft, Measured</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The ZF 8HP is the default answer for anyone putting an automatic behind a big power engine, and the question that follows it everywhere is the same: how much will the stock box hold?</p>



<p class="wp-block-paragraph">The answers you find are all secondhand. Someone knows someone whose car makes 900 and it&#8217;s fine. Someone else grenaded one at 700. Nobody publishes a number with a trace behind it.</p>



<p class="wp-block-paragraph">Here&#8217;s one. On 6 March 2026 my 8HP70 let go at <strong>901 lb ft</strong>, on a dyno, in front of witnesses, with the run on file.</p>



<h2 class="wp-block-heading">Configuration</h2>



<p class="wp-block-paragraph"><strong>Status: Verified</strong></p>



<ul class="wp-block-list">
<li>ZF 8HP70, stock internals, stock torque converter</li>



<li><a href="https://canformance.net/">CANformance</a> CAN TCU, release v1.1 beta 13</li>



<li>Emtron KV12 engine management, firmware 2.20.22</li>



<li>3.4 litre 2JZ-GTE VVTi, Pulsar G42-1200, OS Giken LSD, 2.93 final drive</li>



<li>Tyres: Continental SportContact 7, 295/30/19 rear</li>



<li>Fuel: E85 at 2.8 bar gauge</li>



<li>Dyno: Dynojet, WinPEP 8, uncorrected, at <a href="https://www.srdtuning.com/">SRD Tuning</a></li>



<li><strong>Gear: 5th, 1.285:1</strong></li>



<li>Transmission oil temperature: approximately 95&deg;C</li>
</ul>



<h2 class="wp-block-heading">Why 5th and not 6th</h2>



<p class="wp-block-paragraph">6th on an 8HP70 is direct drive, 1:1, and would have been the cleaner gear to measure in. It wasn&#8217;t available.</p>



<p class="wp-block-paragraph">With a 2.93 final drive and a 659.6 mm rolling diameter on the 295/30/19, 8,200 rpm in 6th is roughly 216 mph at the roller. That is past the speed ceiling of the dyno. The same rpm in 5th is about 168 mph, which is comfortably inside it.</p>



<p class="wp-block-paragraph">So the run happened in a reduction gear. The box was not passing engine torque straight through; it was multiplying it by 1.285 on the way to the output shaft. Worth stating plainly, because it changes how the number generalises.</p>



<h2 class="wp-block-heading">What it looked like</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="2560" height="1355" src="https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-scaled.png" alt="Schematic showing the clutch slip signature on a dyno trace, with engine speed continuing to rise while measured torque falls away" class="wp-image-1098" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-scaled.png 2560w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-300x159.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-1024x542.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-768x407.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-1536x813.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/zf_8hp70_clutch_slip_signature_schematic-2048x1084.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><figcaption class="wp-element-caption">The signature, drawn as a schematic rather than taken from the log. Engine speed rising while measured torque falls means the input side is turning faster than the output side.</figcaption></figure>



<p class="wp-block-paragraph">Revs rose. Torque dropped. Run aborted.</p>



<p class="wp-block-paragraph">That&#8217;s the whole signature, and it&#8217;s worth sitting with because it is not subtle and it is not ambiguous. Engine speed climbing while measured torque falls means the input side is turning faster than the output side. Something between them is not holding. On a dyno in a fixed gear there is only one candidate.</p>



<p class="wp-block-paragraph">SRD called it as clutch slip from the cell. No fault code, no warning, no drama. The trace simply diverges and the run stops being a measurement of the engine.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1024x768.jpeg" alt="Dynojet power and torque curves showing four runs, with the blue trace ending early where the gearbox clutches slipped at 901 lb ft" class="wp-image-1028" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1024x768.jpeg 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-300x225.jpeg 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-768x576.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561-1536x1152.jpeg 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/05/f71afa42-78a8-4285-b8aa-7b6027e47561.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The blue trace is the run that found the limit: 1,095.89 whp at 6,710 rpm, 901.33 lb ft at 5,700 rpm, and then it stops. Every other run carries on to 8,200 rpm.</figcaption></figure>



<p class="wp-block-paragraph">It is on the sheet as the blue line: 1,095.89 whp at 6,710 rpm, 901.33 lb ft at 5,700 rpm, and then a trace that stops climbing and ends early. Every other run on that sheet carries on to 8,200 rpm.</p>



<h2 class="wp-block-heading">Why the temperature matters</h2>



<p class="wp-block-paragraph">Wet clutch capacity falls as fluid heats. Publish a slip figure from a box at 130&deg;C after ten back to back pulls and you have measured heat soak, not capacity.</p>



<p class="wp-block-paragraph">This was at roughly 95&deg;C, comfortably inside the fluid&#8217;s operating range and nowhere near tMax. Normal hot running, not a cooked gearbox. That is what makes the number worth quoting.</p>



<h2 class="wp-block-heading">The qualification nobody makes</h2>



<p class="wp-block-paragraph"><strong>Status: Working conclusion</strong></p>



<p class="wp-block-paragraph">Clutch capacity is clamp load. Clamp load is line pressure. Line pressure is commanded by the transmission controller.</p>



<p class="wp-block-paragraph">So what I measured is not &#8220;the 8HP70 holds 901 lb ft&#8221;. It is &#8220;this 8HP70 held 901 lb ft of engine torque in 5th, at the line pressure this controller commanded, at this temperature.&#8221; Change the controller and the number can move.</p>



<p class="wp-block-paragraph">That distinction is not academic. It is the reason a straight answer to &#8220;what will an 8HP hold&#8221; doesn&#8217;t exist, and it is why the forum numbers scatter so widely. Different controllers, different pressure strategies, different gears, different results, all reported as though the gearbox were the only variable.</p>



<h2 class="wp-block-heading">Where the limit applies</h2>



<p class="wp-block-paragraph">Because the measurement came from a reduction gear, it does not transfer evenly across the box.</p>



<p class="wp-block-paragraph">Below 5th the ratios multiply harder: 1.67, 2.11, 3.14, 4.71. For the same engine torque the internals see progressively more, so 1st through 4th are the exposed end. The torque model reduces demand there, which means those gears never see the full number. That is handled in calibration rather than hoped for.</p>



<p class="wp-block-paragraph">Above 5th the ratios go the other way: 1.00, 0.84, 0.67. Less multiplication, and in the top two an overdrive. On paper the model would allow more engine torque in 6th, 7th and 8th than it does in 5th, and I have chosen not to take it.</p>



<p class="wp-block-paragraph"><strong>880 lb ft is a global cap, not a per gear one.</strong> The only gear I have a measured failure point for is the one I broke it in, and I am not interested in discovering whether 890 slips in top at motorway speed.</p>



<p class="wp-block-paragraph">A per gear torque map is the correct answer eventually. It needs a measured limit for each gear, and getting those means deliberately slipping the clutches seven more times. Until then, one number everywhere, set by the one gear I have evidence for.</p>



<h2 class="wp-block-heading">What we settled on</h2>



<p class="wp-block-paragraph">Torque limited to <strong>880 lb ft</strong>. The E85 run on the same sheet peaks at 880.98 lb ft and pulls cleanly to 8,200 rpm at 1,113.9 whp.</p>



<p class="wp-block-paragraph">So the headline number on the car is not what the engine can make. It is what the gearbox will accept. <a href="https://blownbytwins.co.uk/?p=1032">The 3.4 stroker</a> is torque limited by the transmission, not by the engine, the turbo or the fuel.</p>



<p class="wp-block-paragraph">A 20 lb ft margin below a known failure point, on a road car that covers long distances, is a sensible trade. I would rather leave torque on the table than rebuild a gearbox on the hard shoulder.</p>



<p class="wp-block-paragraph"><em>The torque cap is not a blunt limiter. It runs through the same torque model that <a href="https://blownbytwins.co.uk/?p=1118">the traction control</a> uses, reaching for throttle area first and ignition retard second. What that fuel and boost combination is actually worth is covered in <a href="https://blownbytwins.co.uk/?p=1107">What E85 Actually Buys</a>.</em></p>



<h2 class="wp-block-heading">What&#8217;s next</h2>



<p class="wp-block-paragraph">The 8HP75 and an Emtron TM16 controller, together, and both for the same reason: the car is currently limited by the weakest link in the driveline and that link is known.</p>



<p class="wp-block-paragraph">The interesting part is that swapping the controller as well as the box separates the two variables. Same engine, same power, same driver, same roads, two different transmission controllers. That comparison does not exist anywhere that I can find, and when it does I will publish both sides of it.</p>



<p class="wp-block-paragraph">Full specification and the dyno sheet are on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>. The gearbox installation itself is covered in <a href="https://blownbytwins.co.uk/?p=829">The Big Single and 8 Speed</a>.</p>



<p class="wp-block-paragraph">If you have run an 8HP70 past 900 lb ft and it held, or lost one well below it, I would like to know the gear, the controller and the fluid temperature. Those are the three numbers everyone leaves out.</p><p>The post <a href="https://blownbytwins.co.uk/engine-management/where-the-stock-zf-8hp70-gives-up-901-lb-ft-measured/">Where the Stock ZF 8HP70 Gives Up: 901 lb ft, Measured</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Throttle Body Effective Flow Area: Building a Correct Area vs Position Table</title>
		<link>https://blownbytwins.co.uk/engine-management/throttle-body-effective-area/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Thu, 27 Aug 2026 09:33:33 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[air model]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[dbw]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[throttle body]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1074</guid>

					<description><![CDATA[<p>Open any modern standalone ECU that runs a throttle-based air model and you&#8217;ll find a table mapping throttle position to flow area. Open a dozen real calibrations and a good&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/engine-management/throttle-body-effective-area/">Throttle Body Effective Flow Area: Building a Correct Area vs Position Table</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Open any modern standalone ECU that runs a throttle-based air model and you&#8217;ll find a table mapping throttle position to flow area. Open a dozen real calibrations and a good number of those tables will be a straight line from zero to full scale.</p>



<p class="wp-block-paragraph">A straight line is the one shape the table physically cannot be.</p>



<p class="wp-block-paragraph">This isn&#8217;t a precision quibble. In the operating band where the engine spends most of its life, meaning idle, overrun, light cruise and the first few percent of tip-in, a linear table over-states flow area by a factor of two to four. Every downstream calculation inherits that error: fuel mass, torque estimation, pedal mapping, and on a drive-by-wire car, the inverse map the controller uses to decide where to put the plate.</p>



<p class="wp-block-paragraph">This article covers the geometry of why, the compressible flow equations that turn area into mass, what a throttle mass flow (TMF) model does with the result, and a repeatable method for building a table that&#8217;s correct rather than convenient.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Part 1: The geometry</h2>



<h3 class="wp-block-heading">The projection</h3>



<p class="wp-block-paragraph">A butterfly valve is a disc on a shaft in a cylindrical bore. Air gets past it through whatever cross-section the disc doesn&#8217;t block, viewed along the bore axis.</p>



<p class="wp-block-paragraph">Set up coordinates: the bore axis is <strong>z</strong>, the shaft runs along <strong>x</strong>, and the plate rotates about the shaft. Call the plate&#8217;s angle from the bore-normal plane <strong>α</strong>, and the angle it sits at when hard against the closed stop <strong>α₀</strong>.</p>



<p class="wp-block-paragraph">For the plate to seal in a cylindrical bore at angle α₀, it can&#8217;t be a circle. The intersection of a cylinder of radius <em>R</em> with a plane tilted at α₀ is an ellipse with semi-axes <em>R</em> and <em>R/cos α₀</em>. So the plate is elliptical, with the long axis running across the shaft.</p>



<p class="wp-block-paragraph">Project that plate onto the plane normal to the flow at an arbitrary angle α, and you get an ellipse with semi-axes:</p>



<ul class="wp-block-list">
<li><strong>R</strong> along the shaft</li>



<li><strong>R · cos α / cos α₀</strong> across it</li>
</ul>



<p class="wp-block-paragraph">Which gives the blocked area directly:</p>



<pre class="wp-block-code"><code>A_blocked = πR² · (cos α / cos α₀)</code></pre>



<p class="wp-block-paragraph">And therefore:</p>



<pre class="wp-block-code"><code>A_open = πR² · (1 − cos α / cos α₀)</code></pre>



<p class="wp-block-paragraph">Two sanity checks. At α = α₀ the cosine ratio is 1 and open area is zero, because the plate fills the bore. At α = 90° the ratio is zero, open area equals bore area, and the plate is edge-on. Both correct.</p>



<h3 class="wp-block-heading">Why it can&#8217;t be linear</h3>



<p class="wp-block-paragraph">Differentiate the open area with respect to α:</p>



<pre class="wp-block-code"><code>dA/dα = πR² · sin α / cos α₀</code></pre>



<p class="wp-block-paragraph">Near the closed position, sin α is small. The area barely moves. Expand the cosine for small openings and you get area growing with <strong>the square</strong> of the angle, not the first power:</p>



<pre class="wp-block-code"><code>1 − cos α ≈ α² / 2</code></pre>



<p class="wp-block-paragraph">A quadratic. That&#8217;s the whole argument. The throttle plate has to swing through a meaningful angle before it uncovers meaningful area, because at small angles you&#8217;re only exposing the thin crescent at the edge of a tilted ellipse.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="2560" height="1355" src="https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-scaled.png" alt="Chart comparing the true geometric open area of an 82 mm butterfly throttle against a linear table, showing the real curve sitting far below the straight line across the lower range" class="wp-image-1097" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-scaled.png 2560w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-300x159.png 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-1024x542.png 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-768x407.png 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-1536x813.png 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/08/throttle_body_effective_area_vs_linear_assumption-2048x1084.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><figcaption class="wp-element-caption">Geometric open area against throttle position for an 82 mm bore, 9° closed angle, 83° open stop. The dashed line is what a linear table assumes.</figcaption></figure>



<p class="wp-block-paragraph">Put numbers on it. Take an 82 mm bore, a closed angle of 9°, an open stop at 83°, and a throttle position axis that runs 0 to 100% of mechanical travel:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>TPS %</th><th>Plate angle</th><th>Open area (mm²)</th><th>% of bore</th><th>Linear table says</th><th>Error</th></tr></thead><tbody><tr><td>2</td><td>10.5°</td><td>20</td><td>0.4%</td><td>106</td><td>5.3×</td></tr><tr><td>6</td><td>13.4°</td><td>81</td><td>1.5%</td><td>317</td><td>3.9×</td></tr><tr><td>10</td><td>16.4°</td><td>151</td><td>2.9%</td><td>528</td><td>3.5×</td></tr><tr><td>20</td><td>23.8°</td><td>389</td><td>7.4%</td><td>1056</td><td>2.7×</td></tr><tr><td>40</td><td>38.6°</td><td>1102</td><td>20.9%</td><td>2112</td><td>1.9×</td></tr><tr><td>60</td><td>53.4°</td><td>2124</td><td>40.2%</td><td>3169</td><td>1.5×</td></tr><tr><td>80</td><td>68.2°</td><td>3320</td><td>62.9%</td><td>4225</td><td>1.3×</td></tr><tr><td>100</td><td>83.0°</td><td>4677</td><td>88.6%</td><td>5281</td><td>1.1×</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><em>(Bore area 5281 mm². Shaft blockage included, see below. Linear column assumes full scale = bore area.)</em></p>



<p class="wp-block-paragraph">The error is worst exactly where it hurts most. A big throttle on a big engine cruises at single-digit TPS. That&#8217;s the region where a linear table is out by a factor of four.</p>



<h3 class="wp-block-heading">The shaft</h3>



<p class="wp-block-paragraph">The shaft blocks area too, but not in the way most people assume. Its projected area is roughly <em>shaft diameter × bore diameter</em>, so call it 8 mm × 82 mm ≈ 656 mm², over 12% of the bore.</p>



<p class="wp-block-paragraph">But at small openings the shaft is hidden behind the plate&#8217;s projection. The plate&#8217;s projected ellipse is nearly as wide as the bore, and the shaft sits along its centreline. Shaft blockage only becomes real once the plate has swung far enough that its projection narrows past the shaft width, which on typical geometry is somewhere past 60 to 70°.</p>



<p class="wp-block-paragraph">So the shaft is irrelevant at idle and dominant at wide-open throttle. If you&#8217;ve ever wondered why a throttle body flows meaningfully less than its nominal bore area suggests at WOT, that&#8217;s most of the answer.</p>



<h3 class="wp-block-heading">What the closed-form misses</h3>



<p class="wp-block-paragraph">The clean equation above is a thin-plate, sharp-edged idealisation. Real hardware has:</p>



<ul class="wp-block-list">
<li><strong>Plate thickness.</strong> A 2 mm plate at 15° presents a real edge to the flow, not a mathematical line.</li>



<li><strong>A seal taper or step in the bore</strong> at the closed position, common on OEM bodies to control leakage and stop the plate binding.</li>



<li><strong>A relieved or chamfered plate edge</strong>, which changes the effective flow path at small angles specifically.</li>



<li><strong>Screw heads</strong> on the plate face where it&#8217;s fastened to the shaft.</li>



<li><strong>Non-concentricity</strong> between the plate&#8217;s rotation axis and the bore centreline on some designs.</li>
</ul>



<p class="wp-block-paragraph">None of these are worth modelling analytically. Integrate the geometry numerically and stop pretending you have a closed form. The code is fifteen lines and it handles the shaft correctly for free.</p>



<pre class="wp-block-code"><code>import numpy as np

def open_area(alpha_deg, alpha0_deg, bore_d, shaft_d, n=2000):
    """
    Geometric open area of a butterfly valve, by numerical integration.

    alpha_deg  : plate angle from the bore-normal plane (deg); ~90 = fully open
    alpha0_deg : plate angle at the closed stop (deg)
    bore_d     : bore diameter (mm)
    shaft_d    : shaft diameter (mm)

    Returns (area_mm2, fraction_of_bore_area)
    """
    R  = bore_d / 2.0
    a  = np.deg2rad(alpha_deg)
    a0 = np.deg2rad(alpha0_deg)

    # projected plate ellipse: semi-axis R along shaft, R*cos(a)/cos(a0) across
    sx = R
    sy = max(R * np.cos(a) / np.cos(a0), 1e-12)

    g = np.linspace(-R, R, n)
    X, Y = np.meshgrid(g, g)

    in_bore  = (X**2 + Y**2) &lt;= R**2
    in_plate = ((X / sx)**2 + (Y / sy)**2) &lt;= 1.0
    in_shaft = np.abs(Y) &lt;= shaft_d / 2.0

    cell = (2 * R / (n - 1))**2
    area = np.count_nonzero(in_bore &amp; ~in_plate &amp; ~in_shaft) * cell
    return area, area / (np.pi * R**2)


def servo_to_angle(tps_pct, alpha0_deg, alpha_max_deg):
    """Linear travel-to-angle map. Verify this on your own hardware."""
    return alpha0_deg + (tps_pct / 100.0) * (alpha_max_deg - alpha0_deg)


for tps in &#091;0, 1, 2, 3, 5, 8, 12, 20, 30, 45, 60, 80, 100]:
    ang = servo_to_angle(tps, 9.0, 83.0)
    a, f = open_area(ang, 9.0, 82.0, 8.0)
    print(f"{tps:5.1f}%  {ang:5.1f}°  {a:8.1f} mm²  {f*100:5.2f}%")</code></pre>



<h3 class="wp-block-heading">Servo position is not plate angle</h3>



<p class="wp-block-paragraph">The table&#8217;s axis is usually servo or throttle position in percent. That is a percentage of <em>mechanical travel</em>, mapped through the sensor calibration. It is not plate angle, and it is not flow area.</p>



<p class="wp-block-paragraph">Two things break here routinely:</p>



<p class="wp-block-paragraph"><strong>The zero point.</strong> TPS 0% is wherever the sensor was zeroed, which is typically the closed stop. But the closed stop is often set slightly <em>below</em> the sealing angle so the plate loads against it, or slightly above so it doesn&#8217;t jam. If your assumed α₀ is a degree out, your area predictions at low TPS are out by a large multiple, because you&#8217;re on the steepest part of a quadratic.</p>



<p class="wp-block-paragraph"><strong>The full-scale point.</strong> Plates rarely reach 90°. Mechanical stops usually land somewhere between 80° and 86°, and the linkage may not be perfectly linear across the range. On a DBW body with a direct gear train it&#8217;s close enough to linear to be usable. Verify rather than assume.</p>



<p class="wp-block-paragraph"><strong>Measure both.</strong> Command the throttle to a known position, remove the intake pipe, and measure the plate angle directly. A digital angle gauge against the plate face is good to a few tenths of a degree, which is plenty. Do it at 0%, 100%, and three or four points in between to confirm linearity. This is twenty minutes of work that determines whether everything downstream is right or wrong.</p>



<h3 class="wp-block-heading">The scaling trap</h3>



<p class="wp-block-paragraph">If a table has been carried over from a different throttle body, check what it was scaled by.</p>



<p class="wp-block-paragraph">Area scales with the <strong>square</strong> of diameter. Going from 68 mm to 82 mm:</p>



<ul class="wp-block-list">
<li>Diameter ratio: 82 / 68 = <strong>1.206</strong></li>



<li>Area ratio: 82² / 68² = <strong>1.454</strong></li>
</ul>



<p class="wp-block-paragraph">Scale by diameter instead of area and every entry is 17% low. That&#8217;s the obvious error.</p>



<p class="wp-block-paragraph">The subtler one: even a correctly area-scaled table has the wrong <em>shape</em>. Closed angle, open stop angle, and shaft-to-bore ratio all differ between bodies, and none of them scale with diameter. The same shaft in a smaller bore blocks a larger fraction of it. A table lifted from another throttle body and multiplied by a constant is wrong in a way no single multiplier can fix.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Part 2: From area to mass flow</h2>



<p class="wp-block-paragraph">Geometric area isn&#8217;t flow area. Two corrections stand between them.</p>



<h3 class="wp-block-heading">Discharge coefficient</h3>



<p class="wp-block-paragraph">Real flow through an orifice separates at the edge and forms a vena contracta narrower than the geometric opening. The ratio of actual to ideal flow is the discharge coefficient, <strong>Cd</strong>.</p>



<p class="wp-block-paragraph">For a butterfly valve, Cd is a function of plate angle, and to a lesser extent of Reynolds number and pressure ratio. Typical values sit somewhere in the 0.6 to 0.8 range across most of the travel, though published data varies considerably with plate profile and bore geometry. The behaviour at very small openings, where the flow is a thin slot jet past a tilted edge, is the least consistent across sources.</p>



<p class="wp-block-paragraph">If your ECU exposes a separate Cd or flow-correction table against angle, keep the geometric table geometric and put the empirical correction in the Cd table. Two tables, two jobs, and you can reason about each independently. If it only exposes one &#8220;effective area&#8221; table, you&#8217;re folding Cd into it, which works, but means the table is no longer verifiable against geometry, and you lose the ability to sanity-check it with a ruler and a protractor.</p>



<h3 class="wp-block-heading">The compressible flow equation</h3>



<p class="wp-block-paragraph">Air through a restriction is compressible. The standard isentropic nozzle relation:</p>



<pre class="wp-block-code"><code>ṁ = Cd · A · (P_up / √(R_s · T_up)) · Ψ(PR)</code></pre>



<p class="wp-block-paragraph">where <code>PR = P_down / P_up</code>, <code>R_s = 287 J/kg·K</code>, and Ψ depends on whether the flow is choked.</p>



<p class="wp-block-paragraph"><strong>Critical pressure ratio</strong> for air (γ = 1.4):</p>



<pre class="wp-block-code"><code>PR_crit = (2 / (γ+1))^(γ/(γ-1)) = 0.528</code></pre>



<p class="wp-block-paragraph"><strong>Subsonic (PR &gt; 0.528):</strong></p>



<pre class="wp-block-code"><code>Ψ = √( (2γ/(γ-1)) · ( PR^(2/γ) − PR^((γ+1)/γ) ) )</code></pre>



<p class="wp-block-paragraph"><strong>Choked (PR ≤ 0.528):</strong></p>



<pre class="wp-block-code"><code>Ψ = √γ · (2/(γ+1))^((γ+1)/(2(γ-1))) = 0.6847</code></pre>



<p class="wp-block-paragraph">Both expressions agree at PR = 0.528, as they must.</p>



<h3 class="wp-block-heading">The consequence nobody expects: your throttle is choked at idle</h3>



<p class="wp-block-paragraph">Idle manifold pressure on a healthy engine might be 35 kPa absolute, against roughly 101 kPa ambient upstream. That&#8217;s a pressure ratio of 0.35, well below critical.</p>



<p class="wp-block-paragraph"><strong>The throttle is sonic.</strong> Flow is at the speed of sound in the gap between plate and bore.</p>



<p class="wp-block-paragraph">That has a specific and useful consequence: when choked, mass flow depends only on Cd, area, upstream pressure and upstream temperature. <strong>Manifold pressure has no influence whatsoever.</strong> Ψ is pinned at 0.6847 and stays there.</p>



<p class="wp-block-paragraph">Which means at idle, the model reduces to:</p>



<pre class="wp-block-code"><code>ṁ = Cd · A · P_ambient / √(R_s · T_up) · 0.6847</code></pre>



<p class="wp-block-paragraph">Every percent of error in your area table becomes a percent of error in calculated air mass, with nothing to absorb it. There is no MAP feedback, no VE term, no second path. Area <em>is</em> the model.</p>



<p class="wp-block-paragraph">Work out where choking ends: PR = 0.528 against 101 kPa ambient means MAP = 53 kPa. Anything below that is choked, which covers idle, overrun, and most light-load cruise on a large-displacement engine. A big proportion of normal driving sits in the region where the area table is the sole determinant of calculated airflow.</p>



<p class="wp-block-paragraph">This is the single strongest reason to get the table right, and the reason area errors show up as idle and cruise fuelling problems specifically.</p>



<h3 class="wp-block-heading">The boosted case, and why pre-throttle pressure matters</h3>



<p class="wp-block-paragraph">Now put the throttle under boost. Upstream is charge pipe pressure, say 200 kPa absolute; downstream is plenum, say 190 kPa. PR = 0.95. Deeply subsonic, and this is where Ψ gets vicious.</p>



<p class="wp-block-paragraph">Run the numbers:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>PR</th><th>Ψ</th></tr></thead><tbody><tr><td>0.96</td><td>0.276</td></tr><tr><td>0.95</td><td>0.306</td></tr><tr><td>0.94</td><td>0.335</td></tr><tr><td>0.93</td><td>0.361</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">A <strong>1% change in pressure ratio produces roughly a 9% change in mass flow.</strong> The function is nearly vertical up here.</p>



<p class="wp-block-paragraph">Which brings us to the thing that decides whether a throttle model can work in boost at all: <strong>you must know the pressure upstream of the throttle plate.</strong></p>



<p class="wp-block-paragraph">Without a pre-throttle sensor, the ECU has to infer it, usually from a modelled pressure drop across the intercooler and pipework, or from a boost target, or by assuming it equals MAP plus some offset. All of those are estimates, and the sensitivity above means a 2 kPa estimation error at part throttle in boost produces a double-digit percentage error in calculated air mass.</p>



<p class="wp-block-paragraph"><strong>Fit the sensor.</strong> On a naturally aspirated engine you can argue that ambient is close enough. On a boosted engine running a throttle-based air model, a pre-throttle pressure sensor is not an optional refinement. It&#8217;s the difference between a model and a guess.</p>



<p class="wp-block-paragraph"><em>My own car runs both sides: pre-throttle and post-throttle pressure are each measured, not inferred. On a throttle mass flow model those two sensors are not instrumentation, they are part of the model, and the pressure ratio between them is the term the whole calculation hinges on. Full sensing list is on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">specification page</a>.</em></p>



<p class="wp-block-paragraph">Note also that the <em>sign</em> of the problem inverts across the throttle range. At small openings the pressure ratio is low, the flow is choked or near-choked, and the model is insensitive to downstream pressure but exquisitely sensitive to area. At large openings in boost the pressure ratio approaches unity, area error matters less, and pressure error dominates. Different regions of the same table fail for different reasons.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Part 3: What the ECU does with it</h2>



<h3 class="wp-block-heading">The throttle mass flow model</h3>



<p class="wp-block-paragraph">A throttle mass flow model, TMF in Emtron&#8217;s vocabulary, with equivalents under different names across most modern standalone platforms, computes cylinder air mass from the throttle rather than from the manifold.</p>



<p class="wp-block-paragraph">Broadly:</p>



<ol class="wp-block-list">
<li>Throttle position → plate angle (via the servo map)</li>



<li>Plate angle → geometric area (via the area table)</li>



<li>Area × Cd → effective area</li>



<li>Effective area + upstream pressure + upstream temperature + pressure ratio → mass flow through the throttle</li>



<li>Mass flow → cylinder filling → fuel</li>
</ol>



<p class="wp-block-paragraph">Contrast that with speed density, which computes cylinder air mass from manifold pressure, air temperature, engine speed and a volumetric efficiency table. <a href="https://blownbytwins.co.uk/previous-cars/r34gtr/new-ecu-time/">I first wrote about why that distinction mattered in 2023</a>, when choosing an ECU for the R34, long before I understood how much sat underneath it.</p>



<p class="wp-block-paragraph">The two models fail in opposite ways, which is precisely why good ECUs run both:</p>



<p class="wp-block-paragraph"><strong>Speed density</strong> is accurate in steady state because MAP is a direct measurement of what&#8217;s actually in the manifold. It&#8217;s <em>late</em> in transients, because the manifold takes time to fill and the sensor reports the result rather than the intent. Stab the throttle and the MAP sensor tells you what happened a few tens of milliseconds ago.</p>



<p class="wp-block-paragraph"><strong>Throttle mass flow</strong> is immediate, because the plate moves before the manifold responds, so the model sees the demand as it happens. But it&#8217;s an inference stacked on a chain of assumptions: area table, Cd, servo map, upstream pressure. Every one of those is a place to be wrong.</p>



<p class="wp-block-paragraph">So the ECU blends them: TMF-weighted during transients where response matters, SD-weighted in steady state where accuracy matters, with a handover region between.</p>



<h3 class="wp-block-heading">Diagnosing the handover</h3>



<p class="wp-block-paragraph">The handover is where calibration errors become visible, and it&#8217;s diagnostically valuable for exactly that reason. If your two models disagree, the blend region will show a fuelling discontinuity that tracks the blend weighting rather than any physical parameter.</p>



<p class="wp-block-paragraph">Log fuel trim, or measured lambda error, against whatever variable drives the blend. Three patterns:</p>



<p class="wp-block-paragraph"><strong>A step at the handover.</strong> The two models disagree at that operating point. One is wrong; the trim jumps as authority transfers.</p>



<p class="wp-block-paragraph"><strong>A ramp through the handover.</strong> The models disagree by a growing margin across the region. Usually indicates a slope error in one of them, either a VE table with the wrong shape, or an area table with the wrong curvature.</p>



<p class="wp-block-paragraph"><strong>Clean through the handover, but offset either side.</strong> Both models share a common error downstream of the blend, such as injector characterisation, a global trim, or fuel pressure.</p>



<p class="wp-block-paragraph">That third case is where things get interesting, because a common error can <em>hide</em> the first two. Which leads to the diagnostic fork.</p>



<h3 class="wp-block-heading">The fork: when the symptom contradicts the geometry</h3>



<p class="wp-block-paragraph">Here&#8217;s a scenario worth walking through, because it&#8217;s a trap.</p>



<p class="wp-block-paragraph">Suppose you determine your area table over-states area by roughly 3× in the idle band, established from geometry, exactly as above. The model is being told there&#8217;s three times as much air going past the plate as there really is.</p>



<p class="wp-block-paragraph">You&#8217;d expect the engine to run <strong>rich</strong> at idle, and the fuel model to read <strong>high</strong>.</p>



<p class="wp-block-paragraph">Now suppose your logs show the opposite: TMF reading around 9% <em>low</em> at idle, with a positive fuel correction propping it up.</p>



<p class="wp-block-paragraph">Both observations can&#8217;t be direct consequences of the same cause. Something else is in the chain. Three branches, all testable:</p>



<p class="wp-block-paragraph"><strong>Branch 1: a global trim is masking the shape error.</strong> Somewhere there&#8217;s a multiplier, a fuel scaling constant, or a Cd table that was adjusted until mid-range worked. That adjustment is fighting the area error, and the residual at idle is what&#8217;s left after the fight. Test: remove or neutralise the compensating term and see whether idle error grows in the direction the geometry predicts. If it does, the geometry diagnosis stands and the trim was a bandage.</p>



<p class="wp-block-paragraph"><strong>Branch 2: the Cd table is pulling the other way.</strong> If Cd is populated with values that fall sharply at small openings, it may be cancelling much of the geometric over-statement. Test: multiply the area and Cd tables together and plot the product against angle. That product is what the model actually uses. If the product is close to geometrically correct, the individual tables are wrong but the model isn&#8217;t, which means fixing the area table alone will break it.</p>



<p class="wp-block-paragraph"><strong>Branch 3: the axis doesn&#8217;t mean what you think.</strong> The table may be indexed on plate angle rather than percentage travel; or on a normalised area rather than absolute; or the &#8220;servo position&#8221; channel may be the commanded target rather than the measured position, which differ during any transient and can differ statically if there&#8217;s a calibration offset. Test: command a known position, measure the actual plate angle, and confirm which number the table is being indexed on.</p>



<p class="wp-block-paragraph"><strong>Resolve the fork before changing anything.</strong> The failure mode here is correcting the area table on sound geometric grounds, discovering the engine now runs badly, and concluding the geometry was wrong. The geometry isn&#8217;t wrong. Something else in the chain was compensating for it, and you&#8217;ve now removed one half of a matched pair.</p>



<p class="wp-block-paragraph">Which is the general rule: <strong>compensating errors must be corrected together or not at all.</strong> If a wrong area table and a wrong global trim have been co-calibrated to produce acceptable fuelling, fixing either one alone makes the car worse. Identify both, correct both, revalidate.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Part 4: The dual-use trap</h2>



<p class="wp-block-paragraph">On a drive-by-wire car, the throttle area table is usually consumed in two directions.</p>



<p class="wp-block-paragraph"><strong>Forward</strong>, for the air model: position → area → mass flow → fuel.</p>



<p class="wp-block-paragraph"><strong>Inverse</strong>, for torque-based control: torque demand → required mass flow → required area → <strong>target throttle position</strong>.</p>



<p class="wp-block-paragraph">The same table. Read backwards.</p>



<p class="wp-block-paragraph">That inverse map is not an edge case. It is what every torque-based system on the car leans on. When <a href="https://blownbytwins.co.uk/?p=1118">traction control</a> decides to pull torque and reaches for throttle area as its first actuator, this table is what turns a torque request into a plate position. An area table that is wrong at small openings makes every one of those interventions wrong too.</p>



<p class="wp-block-paragraph">Three consequences.</p>



<h3 class="wp-block-heading">Fixing the fuel model changes the pedal</h3>



<p class="wp-block-paragraph">If the table over-states area at small openings, the inverse map under-commands position for a given torque request, because the controller thinks a tiny opening delivers a lot of air, so it asks for a tiny opening. Correct the table and the same pedal input now produces a larger commanded opening.</p>



<p class="wp-block-paragraph">Which is <em>correct</em>, but it isn&#8217;t <em>the same</em>. Tip-in response, idle control authority, cruise position and any part-throttle torque limiter behaviour all shift. Expect to revalidate driveability alongside fuelling, and don&#8217;t do it on a road.</p>



<h3 class="wp-block-heading">Non-monotonicity breaks the inverse map</h3>



<p class="wp-block-paragraph">A table with hand-entered noise, where area at 5% exceeds area at 6%, is merely inaccurate in the forward direction. It&#8217;s <em>ill-posed</em> in the inverse direction.</p>



<p class="wp-block-paragraph">Inverting a non-monotonic function means that for some torque demands, more than one throttle position satisfies the request. Depending on how the solver is implemented, you get target jumps, hunting, or an oscillation whose frequency is set by the controller rather than by anything physical.</p>



<p class="wp-block-paragraph">Where does hand-entry noise usually live? In the low-percentage cells, because that&#8217;s where people have been poking at values trying to fix an idle problem. Which is exactly where idle control and tip-in operate.</p>



<p class="wp-block-paragraph"><strong>Check monotonicity explicitly.</strong> It takes one line:</p>



<pre class="wp-block-code"><code>assert np.all(np.diff(area_table) &gt; 0), "Area table is non-monotonic"</code></pre>



<p class="wp-block-paragraph">If that fails, no amount of downstream tuning will produce stable control.</p>



<h3 class="wp-block-heading">The table is not a tuning parameter</h3>



<p class="wp-block-paragraph">The strongest reason to build the area table from geometry rather than from fitting: it&#8217;s the only table in the chain that has a <strong>verifiable, physical, single correct answer</strong>.</p>



<p class="wp-block-paragraph">VE is empirical. Cd is empirical. Injector characterisation is empirical. Geometric flow area is a solid modelling problem with one right answer, computable from four measurements, and it does not change as the engine ages.</p>



<p class="wp-block-paragraph">Once it&#8217;s correct, it&#8217;s correct permanently, and every empirical table downstream is being fitted against a fixed truth rather than against another set of assumptions. That&#8217;s what makes the rest of the calibration converge instead of chasing itself.</p>



<p class="wp-block-paragraph">Treating the area table as somewhere to dial in a fuelling problem throws away the one fixed reference point in the entire model.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Part 5: Method</h2>



<ol class="wp-block-list">
<li><strong>Measure the hardware.</strong> Bore diameter, shaft diameter, plate thickness. Callipers.</li>



<li><strong>Measure the closed angle.</strong> Digital angle gauge against the plate face at the closed stop. This number matters more than any other single measurement, because it sets where you sit on the quadratic.</li>



<li><strong>Measure the open stop.</strong> Same method, throttle commanded to 100%.</li>



<li><strong>Verify the servo map.</strong> Command 20%, 40%, 60%, 80%; measure the angle at each. Confirm the travel-to-angle relationship is linear before assuming it.</li>



<li><strong>Compute the geometric table numerically.</strong> Use the code above, at the resolution your ECU&#8217;s table supports. Populate the low-percentage region densely, because that&#8217;s where the curvature is, and where linear interpolation between widely-spaced breakpoints does the most damage.</li>



<li><strong>Check monotonicity.</strong> Every cell strictly greater than the one before.</li>



<li><strong>Handle Cd deliberately.</strong> Separate table if the ECU allows it. If not, decide consciously what Cd assumption you&#8217;re folding in and write it down.</li>



<li><strong>Identify existing compensating terms before you change anything.</strong> Global fuel multipliers, mass fuel corrections, Cd tables, anything that&#8217;s been trimmed to make the current calibration work. These come out or get re-derived in the same change.</li>



<li><strong>Validate against logs.</strong> With the corrected table, TMF and SD should converge in steady state without a compensating pad. That convergence is your proof, not the smoothness of the fuel trim, which can be smooth for the wrong reasons.</li>



<li><strong>Revalidate driveability</strong>, because you have just changed the inverse map that determines where the plate goes.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">A butterfly valve&#8217;s open area grows with the square of plate angle near closed, not linearly. In the idle-to-light-cruise band, a linear table over-states area by two to four times.</p>



<p class="wp-block-paragraph">Below roughly 53 kPa manifold pressure, the throttle is choked and manifold pressure has no effect on flow at all. Area and upstream pressure are the entire model. Above that, in boost, the flow function is so steep that a 1% pressure ratio error produces a 9% mass flow error, which is why pressure sensors either side of the plate are mandatory rather than optional on a boosted throttle-model car.</p>



<p class="wp-block-paragraph">The area table is the only table in the air model with a single verifiable correct answer. Build it from geometry, keep the empirical corrections in the tables designed for them, and check it&#8217;s monotonic before wondering why the drive-by-wire target is hunting.</p>



<p class="wp-block-paragraph">And if fixing it makes the engine worse, you&#8217;ve found a compensating error, not a mistake in the maths.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="wp-block-paragraph"><em>This is the first of a series on the Emtron KV12 running a 3.4 litre 2JZ. The torque model that sits on top of this table drives the <a href="https://blownbytwins.co.uk/?p=1118">traction control strategy</a>, and it is also what caps engine torque at the <a href="https://blownbytwins.co.uk/?p=1093">measured limit of the gearbox</a>. Full specification and measurement conditions are on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</em></p>



<p class="wp-block-paragraph">If you have built one of these tables from geometry and found the Cd behaviour at very small openings differs from the published ranges, I would like to hear about it. That is the part of this I trust least.</p><p>The post <a href="https://blownbytwins.co.uk/engine-management/throttle-body-effective-area/">Throttle Body Effective Flow Area: Building a Correct Area vs Position Table</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mk4 Supra Zestek Steering Wheel Adapter Failure: Downshift Paddle Not Working</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/mk4-supra-zestek-broken-downshift-paddle/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 08:46:45 +0000</pubDate>
				<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[Downshift Paddle]]></category>
		<category><![CDATA[Paddle Shift]]></category>
		<category><![CDATA[Paddle Shifter Failure]]></category>
		<category><![CDATA[Steering Wheel Adapter]]></category>
		<category><![CDATA[Supra Build]]></category>
		<category><![CDATA[Toyota Supra]]></category>
		<category><![CDATA[Zestek]]></category>
		<category><![CDATA[Zestek Paddle Shifter]]></category>
		<category><![CDATA[Zestek Steering Wheel Adapter]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1066</guid>

					<description><![CDATA[<p>The Zestek steering wheel adapter on my Mk4 Supra has suffered another downshift paddle failure. This is now the third failure in 15 months on a £1,400 + VAT product.&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/mk4-supra-zestek-broken-downshift-paddle/">Mk4 Supra Zestek Steering Wheel Adapter Failure: Downshift Paddle Not Working</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The Zestek steering wheel adapter on my Mk4 Supra has suffered another downshift paddle failure.</p>



<p class="wp-block-paragraph">This is now the third failure in 15 months on a £1,400 + VAT product. The car was also away for engine work for around three of those months, so the real-world usage period is even lower than the calendar period suggests.</p>



<p class="wp-block-paragraph">The issue is simple: the downshift paddle has stopped working again. The larger issue is that the product is now discontinued, and although the adapter is apparently still within warranty, there does not appear to be a replacement hub or a proper repair path available.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>UPDATED: 03/07/26:</strong> Following publication, Tegiwa offered to accept return of the product. I have also removed direct quotation from private correspondence and paraphrased the supplier’s position instead. The supplier position, as communicated, is that the switch should not be moving, that this may be a design oversight, and that the repair approach given to SRD was to secure it with hot glue. My concern remains that the downshift paddle has repeatedly failed and that the proposed fix appears to be an adhesive workaround rather than a formal manufacturer-supported repair or replacement route.</p>
</blockquote>



<p class="wp-block-paragraph">That leaves the warranty position in a very poor place. A warranty is only useful if there is a practical remedy behind it.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="640" height="370" data-id="1062" src="https://blownbytwins.co.uk/wp-content/uploads/2026/07/IMG_4089.png" alt="Zestek Adapter" class="wp-image-1062" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/07/IMG_4089.png 640w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/IMG_4089-300x173.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="1063" src="https://blownbytwins.co.uk/wp-content/uploads/2026/07/d7de0cdb-abd8-4424-9a51-1f0316c151d9-768x1024.jpeg" alt="Zestek Adapter" class="wp-image-1063" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/07/d7de0cdb-abd8-4424-9a51-1f0316c151d9-768x1024.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/d7de0cdb-abd8-4424-9a51-1f0316c151d9-225x300.jpeg 225w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/d7de0cdb-abd8-4424-9a51-1f0316c151d9-1152x1536.jpeg 1152w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/d7de0cdb-abd8-4424-9a51-1f0316c151d9.jpeg 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="1064" src="https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc-1024x768.jpeg" alt="Zestek Adapter" class="wp-image-1064" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc-1024x768.jpeg 1024w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc-300x225.jpeg 300w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc-768x576.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc-1536x1152.jpeg 1536w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/ea82b84f-a426-4831-9663-3e78b8e9a6bc.jpeg 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h2 class="wp-block-heading">Zestek Downshift Paddle Failure Timeline:</h2>



<ul class="wp-block-list">
<li><strong>March 2025</strong>: The Zestek steering wheel adapter was purchased as part of the <a href="https://blownbytwins.co.uk/previous-cars/r34gtr/the-single-turbo-upgrade/" title="Single Turbo Upgrade">first build</a>.</li>



<li><strong>May 2025</strong>: The downshift paddle failed during the trip to <a href="https://blownbytwins.co.uk/events-and-meets/mk4-supra-japfest-at-silverstone-2025/" title="Mk4 Supra – JapFest at Silverstone 2025">JapFest</a> at Silverstone.</li>



<li><strong>May 2025</strong>: <a href="https://www.srdtuning.com/" target="_blank" rel="noopener" title="">SRD</a> contacted Tegiwa. I was asked to take the car to Tegiwa’s premises in Stoke, where the fault was repaired onsite.</li>



<li><strong>January 2026</strong>: The car was away at SRD for the <a href="https://blownbytwins.co.uk/cars/mk4-supra/mk4-supra-the-3-4-stroker-build/" title="Mk4 Supra – The 3.4 Stroker Build">3.4</a> build when the Zestek failed again. Tegiwa advised SRD how to repair it, and it was fixed again.</li>



<li><strong>June 2026</strong>: The downshift paddle failed for a third time. I contacted both Tegiwa and Zestek. Tegiwa said they would speak to Zestek, but after 10 days I had not received a meaningful update. I then posted about the issue on Instagram, after which Tegiwa got back in touch. I still had no direct response from Zestek, despite them having seen the stories.</li>
</ul>



<h2 class="wp-block-heading">What Has Failed?</h2>



<p class="wp-block-paragraph">The downshift paddle is no longer working.</p>



<p class="wp-block-paragraph">That matters because this is not a cosmetic issue or a minor inconvenience. On a paddle-shifted car, the steering wheel controls are part of the core driving interface. A failed downshift paddle affects and detracts from how the car is driven and undermines confidence in the product.</p>



<p class="wp-block-paragraph">This is also not a one-off failure. The same function has now failed three times in 15 months.</p>



<h2 class="wp-block-heading">Warranty and Support Position</h2>



<p class="wp-block-paragraph">The adapter is apparently still within warranty. However, Tegiwa have stated that the hub has been discontinued and that they cannot supply anything to fix it or replace it.</p>



<p class="wp-block-paragraph">That is the core problem.</p>



<p class="wp-block-paragraph">If a product is discontinued while still inside its warranty period, there still needs to be a <span style="text-decoration: underline;">credible</span> remedy. That could be a replacement part, a repair, a replacement unit, a credit towards the successor product, or a refund route. At the moment, the position appears to be: <em>there is a warranty, but no available fix or replacement</em>.</p>



<p class="wp-block-paragraph">That is not good enough for a £1,400 + VAT steering wheel adapter.</p>



<h2 class="wp-block-heading">The Suggested Fix</h2>



<p class="wp-block-paragraph">Tegiwa asked whether I had attempted to repair it myself. I had not, because I did not want to take the unit apart and risk affecting the warranty position.</p>



<p class="wp-block-paragraph">They then sent instructions on how to attempt a fix and asked me to let them know how I got on, including whether the switch was the issue.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="1061" src="https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.iCeqdsFLt31aXZ-95drPwxWP1bzykvqeZK2dCQcxCK0-768x1024.jpeg" alt="Zestek Adapter Fix" class="wp-image-1061" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.iCeqdsFLt31aXZ-95drPwxWP1bzykvqeZK2dCQcxCK0-768x1024.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.iCeqdsFLt31aXZ-95drPwxWP1bzykvqeZK2dCQcxCK0-225x300.jpeg 225w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.iCeqdsFLt31aXZ-95drPwxWP1bzykvqeZK2dCQcxCK0-1152x1536.jpeg 1152w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.iCeqdsFLt31aXZ-95drPwxWP1bzykvqeZK2dCQcxCK0.jpeg 1536w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="1060" src="https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.VmdsLp3Bu40DNTxiKWfQd5xaxxJyoF35obiBWxuVzDI-768x1024.jpeg" alt="Zestek Adapter Fix" class="wp-image-1060" srcset="https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.VmdsLp3Bu40DNTxiKWfQd5xaxxJyoF35obiBWxuVzDI-768x1024.jpeg 768w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.VmdsLp3Bu40DNTxiKWfQd5xaxxJyoF35obiBWxuVzDI-225x300.jpeg 225w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.VmdsLp3Bu40DNTxiKWfQd5xaxxJyoF35obiBWxuVzDI-1152x1536.jpeg 1152w, https://blownbytwins.co.uk/wp-content/uploads/2026/07/att.VmdsLp3Bu40DNTxiKWfQd5xaxxJyoF35obiBWxuVzDI.jpeg 1536w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>
</figure>



<p class="wp-block-paragraph">Tegiwa sent me instructions (above) to fix. They were the instructions.</p>



<p class="wp-block-paragraph">That is not a proper warranty remedy. It is a <em>self-diagnosis</em> route on a product that has already failed multiple times. If it is the switch, the product has still failed again. If it is not the switch, the problem is worse, because there is apparently no replacement hub or supported repair route available.</p>



<p class="wp-block-paragraph">Either way, the customer is left with the risk.</p>



<h2 class="wp-block-heading">Why This Is a Problem</h2>



<p class="wp-block-paragraph">This is not a cheap generic steering wheel accessory. It is a premium adapter costing £1,400 + VAT.</p>



<p class="wp-block-paragraph">For that money, I would expect durability, support, and a proper warranty route. Instead, I have had:</p>



<ul class="wp-block-list">
<li>three failures in 15 months;</li>



<li>a repeat failure of the same core control;</li>



<li>a discontinued product;</li>



<li>no replacement hub available;</li>



<li>no direct support from Zestek;</li>



<li>no clear warranty remedy.</li>
</ul>



<p class="wp-block-paragraph">The issue is not just that the paddle has failed. Mechanical and electrical parts can fail. The issue is that it has failed repeatedly, and the support position appears to collapse once the product is discontinued.</p>



<h2 class="wp-block-heading">Would I Buy Another Zestek Adapter?</h2>



<p class="wp-block-paragraph">Based on my experience, <span style="text-decoration: underline;">no</span>.</p>



<p class="wp-block-paragraph">I would not buy another Zestek steering wheel adapter unless the supplier confirmed the following in writing before purchase:</p>



<ul class="wp-block-list">
<li>spare parts are available;</li>



<li>paddle switches are serviceable;</li>



<li>the warranty remedy is clear;</li>



<li>discontinued-product support is defined;</li>



<li>replacement or repair routes are available during the warranty period.</li>
</ul>



<p class="wp-block-paragraph">Without that, the buyer is carrying too much risk.</p>



<h2 class="wp-block-heading">Alternatives Worth Investigating</h2>



<p class="wp-block-paragraph">For GTR owners who were considering Zestek, KMP produce an R35 GT-R wheel that other people appear to use. <a href="https://www.kmpdrivetrain.com/product/nissan-gt-r-r35-my2017/" target="_blank" rel="noopener" title="">https://www.kmpdrivetrain.com/product/nissan-gt-r-r35-my2017/</a></p>



<p class="wp-block-paragraph">For Supra owners or CAN-based builds, KMP also produce a universal CAN Bus wheel that may be worth investigating. <a href="https://www.kmpdrivetrain.com/product/universal-can-bus-wheel-clubsport/" target="_blank" rel="noopener" title="">https://www.kmpdrivetrain.com/product/universal-can-bus-wheel-clubsport/</a></p>



<p class="wp-block-paragraph">I have not tested those alternatives myself, so this is not a recommendation. It is simply where I would start looking if I were replacing the Zestek setup.</p>



<h2 class="wp-block-heading">Final View</h2>



<p class="wp-block-paragraph">Three failures in 15 months on a £1,400 + VAT steering wheel adapter is not acceptable.</p>



<p class="wp-block-paragraph">The product being discontinued makes the situation worse, not better. If a product is still under warranty, there needs to be a practical remedy. A warranty without available parts, replacement stock, or a clear repair route is of limited value.</p>



<p class="wp-block-paragraph">Buyer beware.</p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/mk4-supra-zestek-broken-downshift-paddle/">Mk4 Supra Zestek Steering Wheel Adapter Failure: Downshift Paddle Not Working</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
