<?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>wastegate - BlownByTwins</title>
	<atom:link href="https://blownbytwins.co.uk/tag/wastegate/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>Sat, 24 Oct 2026 15:03:59 +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>wastegate - BlownByTwins</title>
	<link>https://blownbytwins.co.uk</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Tuning the Supra’s Boost Control: PID Gains Were Only Part of the Problem</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/supra-boost-control-pid-initial-position/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Sat, 24 Oct 2026 15:03:56 +0000</pubDate>
				<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[2jz]]></category>
		<category><![CDATA[boost control]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[feedforward]]></category>
		<category><![CDATA[pid]]></category>
		<category><![CDATA[supra]]></category>
		<category><![CDATA[tuning]]></category>
		<category><![CDATA[turbo]]></category>
		<category><![CDATA[wastegate]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1239</guid>

					<description><![CDATA[<p>The latest boost-control work on my Supra started with the PID tables. It ended up exposing a problem in the initial wastegate-duty table that PID alone wasn’t dealing with effectively.&#8230;</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/supra-boost-control-pid-initial-position/">Tuning the Supra’s Boost Control: PID Gains Were Only Part of the Problem</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
<p>The post <a rel="nofollow" href="https://blownbytwins.co.uk/cars/mk4-supra/supra-boost-control-pid-initial-position/">Tuning the Supra’s Boost Control: PID Gains Were Only Part of the Problem</a> appeared first on <a rel="nofollow" href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The latest boost-control work on my Supra started with the PID tables. It ended up exposing a problem in the initial wastegate-duty table that PID alone wasn’t dealing with effectively.</p>



<p class="wp-block-paragraph">Boost demand is influenced by the torque model, so the target moves with operating conditions. That makes Boost Target Error the useful measure: how closely actual pressure follows what the ECU is requesting.</p>



<p class="wp-block-paragraph">A steady target makes diagnosis easier, but the car needs to track changing demand properly too.</p>



<p class="wp-block-paragraph">How the target is built, and the PID tables as they stood before this work, are in <a href="https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/">Boost Control on the Emtron KV12: Where the Target Really Comes From</a>. That post describes refining the initial position table by no more than 3 percent at a time. The changes here are much larger, and they are provisional.</p>



<h2 class="wp-block-heading">What the original logs showed</h2>



<p class="wp-block-paragraph">The earlier logs contained periods where boost remained around 10–25 kPa below target, alongside substantial changes in wastegate duty.</p>



<p class="wp-block-paragraph">Three features of the original calibration stood out:</p>



<ul class="wp-block-list">
<li>An isolated 10.00 proportional-gain cell, at −25 kPa error with manifold pressure rising at 5 %/second, compared with 0.50 in every other cell at that error.</li>



<li>Integral gain dropping to zero at ±10 kPa error, limiting its ability to correct a sustained deficit outside the narrow near-target region.</li>



<li>Derivative output making sizeable contributions to duty during some transients.</li>
</ul>



<p class="wp-block-paragraph">Those observations justified investigating the tables, but they didn’t establish a complete replacement calibration. Some logs also had gaps exceeding a second and channels updating at different rates. That limits how confidently individual output changes can be tied to events happening a few hundredths of a second apart.</p>



<h2 class="wp-block-heading">The first PID revision</h2>



<p class="wp-block-paragraph">The first revision removed the isolated proportional-gain spike, extended modest integral action further from target and reduced the positive-error derivative gains.</p>



<p class="wp-block-paragraph">These were trial values, not a finished calibration.</p>



<h3 class="wp-block-heading">Proportional gain</h3>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;max-width:340px;font-size:0.85rem'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Error, kPa</th><th style='text-align:right;padding:6px 8px'>P gain</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−25</td><td style='text-align:right;padding:6px 8px'>0.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−10</td><td style='text-align:right;padding:6px 8px'>0.20</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−5</td><td style='text-align:right;padding:6px 8px'>0.20</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−2</td><td style='text-align:right;padding:6px 8px'>0.10</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+2</td><td style='text-align:right;padding:6px 8px'>0.10</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+5</td><td style='text-align:right;padding:6px 8px'>0.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+10</td><td style='text-align:right;padding:6px 8px'>0.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+25</td><td style='text-align:right;padding:6px 8px'>0.50</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Proportional Gain Table after the first revision. All six dMAP rows (−5, −2, −1, +1, +2 and +5 %/second) are identical. The original differed in one cell only: 10.00 at −25 kPa and +5 %/second.</figcaption></figure>



<p class="wp-block-paragraph">The only change from the original was the 10.00 cell. With it gone, proportional gain no longer depends on how fast pressure is rising.</p>



<p class="wp-block-paragraph">That made the gain surface consistent. It did not establish that overshoot would improve. That cell was the overboost catch: boost well above target and still climbing was the one situation where the controller was allowed to hit hard. Removing it removes that correction too.</p>



<p class="wp-block-paragraph">The table is also asymmetric, which was inherited rather than introduced. Gain is 0.20 at −5 and −10 kPa, against 0.50 at +5 and +10 kPa. Proportional correction is weaker when boost is above target than when it is below.</p>



<h3 class="wp-block-heading">Integral gain</h3>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;max-width:340px;font-size:0.85rem'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Error, kPa</th><th style='text-align:right;padding:6px 8px'>I gain</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−50</td><td style='text-align:right;padding:6px 8px'>0.000</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−10</td><td style='text-align:right;padding:6px 8px'>0.010</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−5</td><td style='text-align:right;padding:6px 8px'>0.018</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−2</td><td style='text-align:right;padding:6px 8px'>0.025</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+2</td><td style='text-align:right;padding:6px 8px'>0.025</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+5</td><td style='text-align:right;padding:6px 8px'>0.018</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+10</td><td style='text-align:right;padding:6px 8px'>0.010</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+50</td><td style='text-align:right;padding:6px 8px'>0.000</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Integral Gain Table after the first revision. In the original, gain was zero at ±10 kPa and beyond.</figcaption></figure>



<p class="wp-block-paragraph">The near-target values stayed unchanged. Adding 0.010 at ±10 kPa allowed integral action to extend beyond the original narrow region, tapering towards zero at ±50 kPa.</p>



<p class="wp-block-paragraph">The integral limits remained ±5 duty percentage points.</p>



<h3 class="wp-block-heading">Derivative gain</h3>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;max-width:340px;font-size:0.85rem'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Error, kPa</th><th style='text-align:right;padding:6px 8px'>D gain</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−50</td><td style='text-align:right;padding:6px 8px'>3.00</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>−40</td><td style='text-align:right;padding:6px 8px'>0.00</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>0</td><td style='text-align:right;padding:6px 8px'>0.00</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+5</td><td style='text-align:right;padding:6px 8px'>0.00</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+10</td><td style='text-align:right;padding:6px 8px'>1.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+20</td><td style='text-align:right;padding:6px 8px'>1.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+25</td><td style='text-align:right;padding:6px 8px'>1.50</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>+60</td><td style='text-align:right;padding:6px 8px'>0.00</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Derivative Gain Table after the first revision. The +10 to +25 kPa cells were 3.00 in the original.</figcaption></figure>



<p class="wp-block-paragraph">The gains at +10, +20 and +25 kPa were halved from 3.00 to 1.50. The negative-error end was retained.</p>



<p class="wp-block-paragraph">The output limits remained 5–80% duty, and the initial-position table was initially left unchanged.</p>



<p class="wp-block-paragraph">That last decision became important.</p>



<h2 class="wp-block-heading">Why boost status mattered</h2>



<p class="wp-block-paragraph">Some of the earlier duty changes coincided with changes between Emtron boost status 15: ON–Mass Flow Limit and 1: ON.</p>



<p class="wp-block-paragraph">Those transitions could change both the final boost target and the initial duty selected from the table. A sharp duty change therefore wasn’t automatically evidence of a PID problem.</p>



<p class="wp-block-paragraph">The distinction matters on this car because the final boost request is influenced by the torque model. Looking only at the base target, or only at the PID outputs, misses part of the control sequence.</p>



<p class="wp-block-paragraph">Boost system status and boost PID status are also separate channels. Their numbers cannot be interpreted interchangeably.</p>



<p class="wp-block-paragraph">Status names are from Emtron’s <a href="https://docs.emtronaustralia.com.au/engine-management/reference/enums/boost-status/index.html" target="_blank" rel="noopener">Boost Status reference</a>.</p>



<p class="wp-block-paragraph">The sixth-gear log below shows how large those transitions are. Between about 3,000 and 3,100 rpm, the status flipped between 1: ON and 15: ON–Mass Flow Limit four times. Each flip moved the target between 290 kPa and roughly 190–200 kPa, and moved commanded duty between 80% and about 31%. None of that was the PID.</p>



<p class="wp-block-paragraph">At a target near 190 kPa the initial position also read zero, because the table holds zero at 200 kPa and below. From about 3,100 rpm the status stayed at 15 for the rest of the pull, so the whole overshoot happened with the mass flow limit setting the target.</p>



<h2 class="wp-block-heading">The run that exposed the overshoot</h2>



<p class="wp-block-paragraph">The next useful log contained a sixth-gear pull from approximately 3,000 to 4,300 rpm, with no shift recorded during the pull.</p>



<p class="wp-block-paragraph">It showed a clear overshoot:</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;font-size:0.85rem'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Measurement</th><th style='text-align:right;padding:6px 8px'>Recorded result</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='padding:6px 8px'>Worst logged Boost Target Error</td><td style='text-align:right;padding:6px 8px'>−57.6 kPa / −8.4 psi</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='padding:6px 8px'>Peak manifold pressure</td><td style='text-align:right;padding:6px 8px'>326.9 kPa absolute</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='padding:6px 8px'>Peak gauge boost</td><td style='text-align:right;padding:6px 8px'>223.7 kPa / 32.4 psi</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='padding:6px 8px'>Approximate time more than 10 kPa above target</td><td style='text-align:right;padding:6px 8px'>0.9 seconds</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='padding:6px 8px'>Median error in the short final tracking section</td><td style='text-align:right;padding:6px 8px'>+4.9 kPa / +0.7 psi</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Sixth-gear pull, approximately 3,000 to 4,300 rpm, on the first PID revision with the original initial position table.</figcaption></figure>



<p class="wp-block-paragraph">Positive error means actual pressure is below target. Negative error means it is above target.</p>



<p class="wp-block-paragraph">This wasn’t simply an apparent overshoot caused by the target suddenly falling. During the initial pressure rise above target, the target itself increased from approximately 261 to 271 kPa absolute.</p>



<p class="wp-block-paragraph">Actual pressure climbed much faster.</p>



<p class="wp-block-paragraph">The maximum logged error and maximum manifold pressure occurred at slightly different timestamps. With independently updating channels, those figures should not be forced into an exact same-row calculation.</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><svg viewBox='0 0 380 466' role='img' aria-labelledby='bbtc1t bbtc1d' xmlns='http://www.w3.org/2000/svg' style='width:100%;max-width:480px;height:auto;display:block;background:#ffffff;font-family:inherit;font-size:13px'><title id='bbtc1t'>Boost target, manifold pressure and Boost Target Error during the sixth-gear pull</title><desc id='bbtc1d'>Manifold pressure crosses the boost target at about 3,680 rpm and peaks at 326.9 kPa absolute while the target is about 271 kPa. Boost Target Error reaches minus 57.6 kPa and stays more than 10 kPa above target for about 0.9 seconds.</desc><rect x='138.0' y='84' width='94.8' height='170' fill='#f3f2ef'/><rect x='138.0' y='294' width='94.8' height='120' fill='#f3f2ef'/><line x1='40' x2='370' y1='254.0' y2='254.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='258.0' text-anchor='end' fill='#52514e'>150</text><line x1='40' x2='370' y1='211.5' y2='211.5' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='215.5' text-anchor='end' fill='#52514e'>200</text><line x1='40' x2='370' y1='169.0' y2='169.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='173.0' text-anchor='end' fill='#52514e'>250</text><line x1='40' x2='370' y1='126.5' y2='126.5' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='130.5' text-anchor='end' fill='#52514e'>300</text><line x1='40' x2='370' y1='84.0' y2='84.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='88.0' text-anchor='end' fill='#52514e'>350</text><text x='40.0' y='16.0' text-anchor='start' fill='#0b0b0b' font-weight='600'>Pressure, kPa absolute</text><line x1='40' x2='370' y1='414.0' y2='414.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='418.0' text-anchor='end' fill='#52514e'>−60</text><line x1='40' x2='370' y1='390.0' y2='390.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='394.0' text-anchor='end' fill='#52514e'>−40</text><line x1='40' x2='370' y1='366.0' y2='366.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='370.0' text-anchor='end' fill='#52514e'>−20</text><line x1='40' x2='370' y1='342.0' y2='342.0' stroke='#b9b8b2' stroke-width='1'/><text x='34' y='346.0' text-anchor='end' fill='#52514e'>0</text><line x1='40' x2='370' y1='318.0' y2='318.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='322.0' text-anchor='end' fill='#52514e'>20</text><line x1='40' x2='370' y1='294.0' y2='294.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='298.0' text-anchor='end' fill='#52514e'>40</text><line x1='58.6' x2='58.6' y1='66' y2='71' stroke='#b9b8b2'/><text x='58.6' y='62' text-anchor='middle' fill='#52514e'>3,500 rpm</text><line x1='135.6' x2='135.6' y1='66' y2='71' stroke='#b9b8b2'/><text x='135.6' y='62' text-anchor='middle' fill='#52514e'>3,700</text><line x1='199.4' x2='199.4' y1='66' y2='71' stroke='#b9b8b2'/><text x='199.4' y='62' text-anchor='middle' fill='#52514e'>3,900</text><line x1='291.1' x2='291.1' y1='66' y2='71' stroke='#b9b8b2'/><text x='291.1' y='62' text-anchor='middle' fill='#52514e'>4,100</text><line x1='40' x2='56' y1='36' y2='36' stroke='#2a78d6' stroke-width='2' stroke-linecap='round'/><text x='62' y='40' fill='#0b0b0b'>Manifold pressure</text><line x1='196.4' x2='212.4' y1='36' y2='36' stroke='#eb6834' stroke-width='2' stroke-linecap='round'/><text x='218.4' y='40' fill='#0b0b0b'>Boost target</text><path d='M42.3,183.1 L45.6,181.9 L52.2,181.4 L58.6,180.6 L62.0,179.7 L66.8,177.7 L73.4,176.7 L78.3,175.5 L83.3,173.9 L88.2,173.2 L94.7,170.9 L99.6,169.1 L104.5,167.5 L111.0,166.2 L116.0,164.2 L119.2,160.5 L125.8,160.4 L132.3,159.4 L135.6,158.5 L140.6,157.6 L145.4,157.0 L148.7,156.8 L153.7,155.5 L160.2,154.5 L165.1,152.9 L168.3,152.0 L171.6,151.2 L178.2,150.7 L183.1,150.9 L188.0,151.2 L193.0,151.7 L199.4,153.5 L204.4,155.4 L209.3,155.5 L214.2,155.5 L219.1,155.7 L224.0,156.8 L227.3,156.2 L233.8,156.4 L237.1,156.9 L243.7,157.0 L248.6,157.6 L253.5,158.0 L258.4,159.0 L264.9,158.1 L269.8,159.3 L274.8,159.1 L279.7,159.8 L284.6,163.9 L291.1,160.8 L297.7,160.0 L305.9,159.7 L309.1,159.7 L314.1,158.8 L319.0,159.0 L320.6,159.2 L323.9,159.2 L328.7,158.8 L335.3,158.6 L340.2,158.6 L345.2,158.9 L348.4,159.7 L353.3,159.5 L358.3,160.0 L363.2,159.6 L369.7,159.4' fill='none' stroke='#eb6834' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><path d='M42.3,214.2 L45.6,212.7 L52.2,210.5 L58.6,208.2 L62.0,205.6 L66.8,203.8 L73.4,200.1 L78.3,196.8 L83.3,194.2 L88.2,190.5 L94.7,188.5 L99.6,185.8 L104.5,181.0 L111.0,176.1 L116.0,173.3 L119.2,169.1 L125.8,163.7 L132.3,157.6 L135.6,152.9 L140.6,146.3 L145.4,141.4 L148.7,135.9 L153.7,128.9 L160.2,121.6 L165.1,116.2 L168.3,111.3 L171.6,107.9 L178.2,105.1 L183.1,103.6 L188.0,106.3 L193.0,115.2 L199.4,122.7 L204.4,129.2 L209.3,131.5 L214.2,134.6 L219.1,134.3 L224.0,140.6 L227.3,144.0 L233.8,149.9 L237.1,153.4 L243.7,156.0 L248.6,157.5 L253.5,159.1 L258.4,160.2 L264.9,162.0 L269.8,163.6 L274.8,166.4 L279.7,165.9 L284.6,168.1 L291.1,168.1 L297.7,166.5 L305.9,167.0 L309.1,163.3 L314.1,162.6 L319.0,162.4 L320.6,162.3 L323.9,163.4 L328.7,160.6 L335.3,163.0 L340.2,163.8 L345.2,162.5 L348.4,162.3 L353.3,163.4 L358.3,164.9 L363.2,166.4 L369.7,167.1' fill='none' stroke='#2a78d6' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><circle cx='183.1' cy='103.6' r='4.5' fill='#2a78d6' stroke='#ffffff' stroke-width='2'/><text x='191.1' y='107.6' text-anchor='start' fill='#0b0b0b' font-weight='normal'>326.9 kPa</text><text x='40.0' y='284.0' text-anchor='start' fill='#0b0b0b' font-weight='600'>Boost Target Error, kPa (+ = below target)</text><path d='M42.3,296.4 L45.6,299.6 L52.2,300.1 L58.6,304.0 L62.0,304.9 L66.8,306.0 L73.4,308.9 L78.3,310.3 L83.3,313.7 L88.2,316.6 L94.7,316.0 L99.6,318.8 L104.5,322.4 L111.0,328.3 L116.0,328.2 L119.2,331.3 L125.8,338.0 L132.3,344.6 L135.6,350.5 L140.6,358.0 L145.4,363.7 L148.7,369.2 L153.7,375.4 L160.2,390.1 L165.1,393.5 L168.3,400.9 L171.6,403.4 L178.2,411.1 L183.1,406.8 L188.0,405.4 L193.0,396.7 L199.4,385.6 L204.4,377.8 L209.3,377.9 L214.2,373.2 L219.1,371.2 L224.0,364.4 L227.3,357.1 L233.8,353.4 L237.1,350.3 L243.7,341.9 L248.6,341.8 L253.5,340.1 L258.4,340.6 L264.9,336.1 L269.8,335.9 L274.8,331.7 L279.7,332.6 L284.6,336.1 L291.1,331.1 L297.7,329.4 L305.9,331.7 L309.1,338.0 L314.1,333.1 L319.0,338.2 L320.6,338.5 L323.9,338.0 L328.7,339.2 L335.3,335.9 L340.2,337.6 L345.2,337.2 L348.4,339.2 L353.3,332.3 L358.3,337.0 L363.2,334.3 L369.7,332.6' fill='none' stroke='#2a78d6' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><circle cx='178.2' cy='411.1' r='4.5' fill='#2a78d6' stroke='#ffffff' stroke-width='2'/><text x='186.2' y='415.1' text-anchor='start' fill='#0b0b0b' font-weight='normal'>−57.6 kPa</text><text x='263.7' y='385.2' text-anchor='start' fill='#52514e' font-weight='normal'>10+ kPa over</text><text x='263.7' y='400.2' text-anchor='start' fill='#52514e' font-weight='normal'>target, ~0.9 s</text><line x1='40' x2='370' y1='424' y2='424' stroke='#b9b8b2' stroke-width='1'/><line x1='48.9' x2='48.9' y1='424' y2='428' stroke='#b9b8b2'/><text x='48.9' y='441' text-anchor='middle' fill='#52514e'>3.5</text><line x1='101.3' x2='101.3' y1='424' y2='428' stroke='#b9b8b2'/><text x='101.3' y='441' text-anchor='middle' fill='#52514e'>4.0</text><line x1='153.7' x2='153.7' y1='424' y2='428' stroke='#b9b8b2'/><text x='153.7' y='441' text-anchor='middle' fill='#52514e'>4.5</text><line x1='206.0' x2='206.0' y1='424' y2='428' stroke='#b9b8b2'/><text x='206.0' y='441' text-anchor='middle' fill='#52514e'>5.0</text><line x1='258.4' x2='258.4' y1='424' y2='428' stroke='#b9b8b2'/><text x='258.4' y='441' text-anchor='middle' fill='#52514e'>5.5</text><line x1='310.8' x2='310.8' y1='424' y2='428' stroke='#b9b8b2'/><text x='310.8' y='441' text-anchor='middle' fill='#52514e'>6.0</text><line x1='363.2' x2='363.2' y1='424' y2='428' stroke='#b9b8b2'/><text x='363.2' y='441' text-anchor='middle' fill='#52514e'>6.5</text><text x='205.0' y='458' text-anchor='middle' fill='#52514e'>Seconds from full pedal</text></svg><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Logged 17 October 2026 on the first PID revision with the original initial position table. Shaded: more than 10 kPa above target.</figcaption></figure>



<h2 class="wp-block-heading">The initial-duty table explained much of it</h2>



<p class="wp-block-paragraph">At approximately 3,680 rpm, boost was almost on target:</p>



<ul class="wp-block-list">
<li>Boost Target Error: +3.3 kPa</li>



<li>Initial duty: 75.5%</li>



<li>Final commanded duty: 74.6%</li>
</ul>



<p class="wp-block-paragraph">The engine was already reaching the requested pressure while the controller was still commanding substantial spool duty.</p>



<p class="wp-block-paragraph">The original initial-position table held 100% duty through 3,500 rpm for target rows from 220 to 340 kPa. It then dropped sharply towards the values at 4,000 rpm.</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Target vs rpm</th><th style='padding:6px 8px'>2,000 to 3,500</th><th style='padding:6px 8px'>4,000</th><th style='padding:6px 8px'>4,500</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>220 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>26.5</td><td style='padding:6px 8px'>20.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>240 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>28.0</td><td style='padding:6px 8px'>22.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>250 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>29.0</td><td style='padding:6px 8px'>24.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>260 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>29.5</td><td style='padding:6px 8px'>25.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>280 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>31.0</td><td style='padding:6px 8px'>28.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>300 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>32.5</td><td style='padding:6px 8px'>30.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>320 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>35.5</td><td style='padding:6px 8px'>33.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>340 kPa</td><td style='padding:6px 8px'>100</td><td style='padding:6px 8px'>40.0</td><td style='padding:6px 8px'>36.5</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Initial Position Table, % duty, before this revision. This is the table the first PID revision ran with. Rows below 220 kPa are zero throughout, as are the 1,000 and 1,500 rpm columns.</figcaption></figure>



<p class="wp-block-paragraph">For the 260 kPa target row, interpolation produced this curve:</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;max-width:340px;font-size:0.85rem'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Engine speed, rpm</th><th style='text-align:right;padding:6px 8px'>Initial duty, %</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>3,500</td><td style='text-align:right;padding:6px 8px'>100.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>3,600</td><td style='text-align:right;padding:6px 8px'>85.9</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>3,700</td><td style='text-align:right;padding:6px 8px'>71.8</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>3,800</td><td style='text-align:right;padding:6px 8px'>57.7</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>3,900</td><td style='text-align:right;padding:6px 8px'>43.6</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>4,000</td><td style='text-align:right;padding:6px 8px'>29.5</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Original initial position at a 260 kPa target, interpolated between the 3,500 and 4,000 rpm breakpoints. Anything above 80% is commanded as 80% by the output limit.</figcaption></figure>



<p class="wp-block-paragraph">The table tapered spool assistance according to engine speed, without directly accounting for how close actual boost had come to target.</p>



<p class="wp-block-paragraph">In this sixth-gear pull, boost reached target before RPM had advanced far enough through that taper. Feedback then had to remove a large amount of duty while pressure was already rising rapidly.</p>



<p class="wp-block-paragraph">Between target crossing and the pressure peak, about half a second, the taper itself took initial duty from 75.5% to about 51%, and P removed roughly another 26 points. Pressure kept rising anyway.</p>



<p class="wp-block-paragraph">That strongly implicated the feedforward transition. It did not prove that every aspect of the overshoot came from that table.</p>



<h2 class="wp-block-heading">What P, I and D were doing</h2>



<p class="wp-block-paragraph">The individual outputs helped separate the causes.</p>



<p class="wp-block-paragraph"><strong>P was correcting the overshoot.</strong> It eventually removed approximately 27 duty percentage points. That correction arrived as negative error developed, but it did not prevent the pressure peak.</p>



<p class="wp-block-paragraph">It was also starting from its weakest settings. Between −2 and −10 kPa the gain was 0.10 to 0.20, reaching 0.50 only at −25 kPa. This overshoot passed −25 kPa with pressure still rising, which is the region the removed 10.00 cell used to cover. The log can’t show what that cell would have done, but this run went through the conditions it was there for.</p>



<p class="wp-block-paragraph"><strong>I was not winding up and driving the event.</strong> Integral output was approximately zero at target crossing and slightly negative at the peak. Increasing integral correction would not address the main cause shown here.</p>



<p class="wp-block-paragraph"><strong>D had a gap around target crossing.</strong> The revised table had zero derivative gain from +5 to −40 kPa error, as the original did.</p>



<p class="wp-block-paragraph">As error approached zero from the positive side, derivative gain tapered away. It then remained zero through the first 40 kPa of overboost, approximately 5.8 psi. Gain only returns beyond −40 kPa, reaching 3.00 at −50. With a worst logged error of −57.6 kPa, derivative gain was available only over the last 18 kPa or so of the overshoot.</p>



<p class="wp-block-paragraph">The log shows what that did. Above target, derivative output was zero from about −13 kPa to beyond −50 kPa. Its only negative contribution there was −2.1 points, at the peak. As pressure began to fall it switched to +6 and then +12 points, with boost still 30 to 50 kPa over target.</p>



<p class="wp-block-paragraph">That is derivative doing its job, resisting the rate of change. Here, though, it was adding duty to an engine that was still overboosting, and final commanded duty briefly climbed from 17% back to 46% in that window. On this run, the −50 kPa end of the D table added more duty during recovery than it removed at the peak.</p>



<p class="wp-block-paragraph">The combination was the problem: high initial duty approaching target, with weak proportional and no derivative correction through target crossing.</p>



<p class="wp-block-paragraph">The first D revision had retained that gap. The later log showed why it could not be treated as a validated overshoot-control calibration.</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><svg viewBox='0 0 380 490' role='img' aria-labelledby='bbtc2t bbtc2d' xmlns='http://www.w3.org/2000/svg' style='width:100%;max-width:480px;height:auto;display:block;background:#ffffff;font-family:inherit;font-size:13px'><title id='bbtc2t'>Initial position, final commanded duty and P, I and D outputs during the sixth-gear pull</title><desc id='bbtc2d'>Initial position holds 100% (commanded as 80%) until about 3,530 rpm, then tapers. At 3,682 rpm and +3.3 kPa error the final duty is 74.6%. Proportional output falls to minus 26.7% near the peak; integral stays between zero and minus 1.8%; derivative is zero above target until the peak, then adds up to 12% during recovery.</desc><rect x='138.0' y='84' width='94.8' height='160' fill='#f3f2ef'/><rect x='138.0' y='288' width='94.8' height='130' fill='#f3f2ef'/><line x1='40' x2='370' y1='244.0' y2='244.0' stroke='#b9b8b2' stroke-width='1'/><text x='34' y='248.0' text-anchor='end' fill='#52514e'>0</text><line x1='40' x2='370' y1='212.0' y2='212.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='216.0' text-anchor='end' fill='#52514e'>20</text><line x1='40' x2='370' y1='180.0' y2='180.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='184.0' text-anchor='end' fill='#52514e'>40</text><line x1='40' x2='370' y1='148.0' y2='148.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='152.0' text-anchor='end' fill='#52514e'>60</text><line x1='40' x2='370' y1='116.0' y2='116.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='120.0' text-anchor='end' fill='#52514e'>80</text><line x1='40' x2='370' y1='84.0' y2='84.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='88.0' text-anchor='end' fill='#52514e'>100</text><text x='40.0' y='16.0' text-anchor='start' fill='#0b0b0b' font-weight='600'>Wastegate duty, %</text><line x1='40' x2='370' y1='418.0' y2='418.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='422.0' text-anchor='end' fill='#52514e'>−30</text><line x1='40' x2='370' y1='392.0' y2='392.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='396.0' text-anchor='end' fill='#52514e'>−20</text><line x1='40' x2='370' y1='366.0' y2='366.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='370.0' text-anchor='end' fill='#52514e'>−10</text><line x1='40' x2='370' y1='340.0' y2='340.0' stroke='#b9b8b2' stroke-width='1'/><text x='34' y='344.0' text-anchor='end' fill='#52514e'>0</text><line x1='40' x2='370' y1='314.0' y2='314.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='318.0' text-anchor='end' fill='#52514e'>10</text><line x1='40' x2='370' y1='288.0' y2='288.0' stroke='#e6e5e1' stroke-width='1'/><text x='34' y='292.0' text-anchor='end' fill='#52514e'>20</text><line x1='58.6' x2='58.6' y1='66' y2='71' stroke='#b9b8b2'/><text x='58.6' y='62' text-anchor='middle' fill='#52514e'>3,500 rpm</text><line x1='135.6' x2='135.6' y1='66' y2='71' stroke='#b9b8b2'/><text x='135.6' y='62' text-anchor='middle' fill='#52514e'>3,700</text><line x1='199.4' x2='199.4' y1='66' y2='71' stroke='#b9b8b2'/><text x='199.4' y='62' text-anchor='middle' fill='#52514e'>3,900</text><line x1='291.1' x2='291.1' y1='66' y2='71' stroke='#b9b8b2'/><text x='291.1' y='62' text-anchor='middle' fill='#52514e'>4,100</text><line x1='40' x2='56' y1='36' y2='36' stroke='#2a78d6' stroke-width='2' stroke-linecap='round'/><text x='62' y='40' fill='#0b0b0b'>Initial position</text><line x1='189.2' x2='205.2' y1='36' y2='36' stroke='#eb6834' stroke-width='2' stroke-linecap='round'/><text x='211.2' y='40' fill='#0b0b0b'>Final commanded duty</text><line x1='40' x2='370' y1='116.0' y2='116.0' stroke='#8a8984' stroke-width='1'/><text x='366.0' y='111.0' text-anchor='end' fill='#52514e' font-weight='normal'>80% output limit</text><path d='M42.3,84.0 L45.6,84.0 L52.2,84.0 L58.6,85.6 L62.0,86.4 L66.8,90.4 L73.4,92.0 L78.3,92.8 L83.3,99.2 L88.2,99.2 L94.7,103.2 L99.6,107.2 L104.5,104.0 L111.0,106.4 L116.0,114.4 L119.2,116.0 L125.8,123.2 L132.3,127.2 L135.6,130.4 L140.6,131.2 L145.4,130.4 L148.7,136.0 L153.7,138.4 L160.2,146.4 L165.1,144.0 L168.3,149.6 L171.6,157.6 L178.2,150.4 L183.1,162.4 L188.0,160.0 L193.0,157.6 L199.4,166.4 L204.4,165.6 L209.3,182.4 L214.2,184.8 L219.1,181.6 L224.0,188.8 L227.3,188.8 L233.8,195.2 L237.1,180.8 L243.7,188.8 L248.6,196.8 L253.5,196.8 L258.4,196.8 L264.9,196.8 L269.8,197.6 L274.8,197.6 L279.7,197.6 L284.6,198.4 L291.1,199.2 L297.7,198.4 L305.9,199.2 L309.1,199.2 L314.1,199.2 L319.0,199.2 L320.6,199.2 L323.9,199.2 L328.7,198.4 L335.3,200.0 L340.2,200.0 L345.2,200.0 L348.4,200.0 L353.3,200.0 L358.3,200.8 L363.2,200.8 L369.7,200.8' fill='none' stroke='#2a78d6' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><path d='M42.3,116.0 L45.6,116.0 L52.2,116.0 L58.6,116.0 L62.0,116.0 L66.8,116.0 L73.4,116.0 L78.3,116.0 L83.3,116.0 L88.2,116.0 L94.7,116.0 L99.6,116.0 L104.5,116.0 L111.0,116.0 L116.0,116.0 L119.2,116.0 L125.8,124.6 L132.3,127.5 L135.6,129.1 L140.6,136.6 L145.4,140.0 L148.7,153.4 L153.7,161.6 L160.2,167.8 L165.1,184.5 L168.3,188.0 L171.6,198.1 L178.2,198.7 L183.1,217.0 L188.0,200.3 L193.0,170.1 L199.4,194.1 L204.4,190.2 L209.3,208.3 L214.2,207.5 L219.1,199.2 L224.0,197.8 L227.3,201.3 L233.8,201.3 L237.1,185.1 L243.7,192.2 L248.6,200.2 L253.5,199.7 L258.4,199.4 L264.9,198.1 L269.8,196.6 L274.8,194.6 L279.7,193.4 L284.6,188.8 L291.1,196.6 L297.7,196.5 L305.9,193.1 L309.1,199.7 L314.1,197.9 L319.0,196.3 L320.6,198.4 L323.9,198.6 L328.7,198.6 L335.3,198.2 L340.2,197.1 L345.2,199.0 L348.4,198.9 L353.3,195.2 L358.3,198.2 L363.2,194.1 L369.7,194.1' fill='none' stroke='#eb6834' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><circle cx='125.8' cy='124.6' r='4.5' fill='#eb6834' stroke='#ffffff' stroke-width='2'/><line x1='88.0' y1='172.4' x2='125.8' y2='130.6' stroke='#52514e' stroke-width='1'/><text x='48.0' y='186.4' text-anchor='start' fill='#0b0b0b' font-weight='normal'>74.6% at +3.3 kPa</text><text x='40.0' y='278.0' text-anchor='start' fill='#0b0b0b' font-weight='600'>PID contributions, % duty</text><path d='M42.3,340.0 L45.6,340.0 L45.6,340.0 L52.2,340.0 L52.2,340.0 L58.6,340.0 L58.6,339.7 L62.0,339.7 L62.0,339.7 L66.8,339.7 L66.8,339.7 L73.4,339.7 L73.4,339.7 L78.3,339.7 L78.3,339.7 L83.3,339.7 L83.3,340.0 L88.2,340.0 L88.2,340.0 L94.7,340.0 L94.7,339.7 L99.6,339.7 L99.6,339.7 L104.5,339.7 L104.5,339.7 L111.0,339.7 L111.0,339.7 L116.0,339.7 L116.0,340.0 L119.2,340.0 L119.2,340.0 L125.8,340.0 L125.8,340.0 L132.3,340.0 L132.3,340.0 L135.6,340.0 L135.6,340.0 L140.6,340.0 L140.6,340.3 L145.4,340.3 L145.4,340.3 L148.7,340.3 L148.7,340.3 L153.7,340.3 L153.7,341.3 L160.2,341.3 L160.2,341.3 L165.1,341.3 L165.1,342.3 L168.3,342.3 L168.3,342.3 L171.6,342.3 L171.6,342.3 L178.2,342.3 L178.2,342.3 L183.1,342.3 L183.1,342.3 L188.0,342.3 L188.0,342.3 L193.0,342.3 L193.0,342.3 L199.4,342.3 L199.4,342.3 L204.4,342.3 L204.4,342.3 L209.3,342.3 L209.3,343.1 L214.2,343.1 L214.2,343.1 L219.1,343.1 L219.1,343.1 L224.0,343.1 L224.0,343.9 L227.3,343.9 L227.3,343.9 L233.8,343.9 L233.8,344.4 L237.1,344.4 L237.1,344.4 L243.7,344.4 L243.7,344.4 L248.6,344.4 L248.6,344.7 L253.5,344.7 L253.5,344.7 L258.4,344.7 L258.4,344.4 L264.9,344.4 L264.9,344.4 L269.8,344.4 L269.8,343.9 L274.8,343.9 L274.8,343.9 L279.7,343.9 L279.7,343.9 L284.6,343.9 L284.6,342.6 L291.1,342.6 L291.1,342.6 L297.7,342.6 L297.7,342.1 L305.9,342.1 L305.9,342.1 L309.1,342.1 L309.1,341.6 L314.1,341.6 L314.1,341.6 L319.0,341.6 L319.0,340.8 L320.6,340.8 L320.6,340.8 L323.9,340.8 L323.9,340.8 L328.7,340.8 L328.7,340.5 L335.3,340.5 L335.3,340.5 L340.2,340.5 L340.2,340.5 L345.2,340.5 L345.2,340.0 L348.4,340.0 L348.4,340.0 L353.3,340.0 L353.3,340.0 L358.3,340.0 L358.3,339.2 L363.2,339.2 L363.2,339.2 L369.7,339.2 L369.7,338.2' fill='none' stroke='#eb6834' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><path d='M42.3,342.6 L45.6,342.6 L45.6,343.6 L52.2,343.6 L52.2,343.6 L58.6,343.6 L58.6,339.0 L62.0,339.0 L62.0,339.0 L66.8,339.0 L66.8,340.3 L73.4,340.3 L73.4,340.3 L78.3,340.3 L78.3,340.3 L83.3,340.3 L83.3,345.7 L88.2,345.7 L88.2,345.7 L94.7,345.7 L94.7,345.5 L99.6,345.5 L99.6,345.5 L104.5,345.5 L104.5,347.0 L111.0,347.0 L111.0,347.0 L116.0,347.0 L116.0,342.3 L119.2,342.3 L119.2,342.3 L125.8,342.3 L125.8,349.6 L132.3,349.6 L132.3,349.6 L135.6,349.6 L135.6,349.6 L140.6,349.6 L140.6,340.0 L145.4,340.0 L145.4,340.0 L148.7,340.0 L148.7,340.0 L153.7,340.0 L153.7,340.0 L160.2,340.0 L160.2,340.0 L165.1,340.0 L165.1,340.0 L168.3,340.0 L168.3,340.0 L171.6,340.0 L171.6,340.0 L178.2,340.0 L178.2,345.5 L183.1,345.5 L183.1,345.5 L188.0,345.5 L188.0,324.4 L193.0,324.4 L193.0,324.4 L199.4,324.4 L199.4,308.8 L204.4,308.8 L204.4,308.8 L209.3,308.8 L209.3,340.0 L214.2,340.0 L214.2,340.0 L219.1,340.0 L219.1,340.0 L224.0,340.0 L224.0,340.0 L227.3,340.0 L227.3,340.0 L233.8,340.0 L233.8,340.0 L237.1,340.0 L237.1,340.0 L243.7,340.0 L243.7,340.0 L248.6,340.0 L248.6,340.0 L253.5,340.0 L253.5,340.0 L258.4,340.0 L258.4,340.0 L264.9,340.0 L264.9,340.0 L269.8,340.0 L269.8,340.0 L274.8,340.0 L274.8,340.0 L279.7,340.0 L279.7,340.0 L284.6,340.0 L284.6,337.4 L291.1,337.4 L291.1,337.4 L297.7,337.4 L297.7,320.5 L305.9,320.5 L305.9,320.5 L309.1,320.5 L309.1,338.4 L314.1,338.4 L314.1,338.4 L319.0,338.4 L319.0,340.0 L320.6,340.0 L320.6,340.0 L323.9,340.0 L323.9,340.0 L328.7,340.0 L328.7,340.0 L335.3,340.0 L335.3,340.0 L340.2,340.0 L340.2,340.0 L345.2,340.0 L345.2,340.0 L348.4,340.0 L348.4,340.0 L353.3,340.0 L353.3,340.0 L358.3,340.0 L358.3,340.0 L363.2,340.0 L363.2,340.0 L369.7,340.0 L369.7,341.3' fill='none' stroke='#1baf7a' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><path d='M42.3,287.2 L45.6,287.2 L45.6,292.7 L52.2,292.7 L52.2,292.7 L58.6,292.7 L58.6,295.8 L62.0,295.8 L62.0,295.8 L66.8,295.8 L66.8,301.3 L73.4,301.3 L73.4,301.3 L78.3,301.3 L78.3,301.3 L83.3,301.3 L83.3,307.5 L88.2,307.5 L88.2,307.5 L94.7,307.5 L94.7,312.2 L99.6,312.2 L99.6,312.2 L104.5,312.2 L104.5,318.7 L111.0,318.7 L111.0,318.7 L116.0,318.7 L116.0,325.7 L119.2,325.7 L119.2,325.7 L125.8,325.7 L125.8,332.7 L132.3,332.7 L132.3,332.7 L135.6,332.7 L135.6,332.7 L140.6,332.7 L140.6,344.7 L145.4,344.7 L145.4,344.7 L148.7,344.7 L148.7,344.7 L153.7,344.7 L153.7,366.8 L160.2,366.8 L160.2,366.8 L165.1,366.8 L165.1,391.7 L168.3,391.7 L168.3,391.7 L171.6,391.7 L171.6,391.7 L178.2,391.7 L178.2,408.6 L183.1,408.6 L183.1,408.6 L188.0,408.6 L188.0,409.4 L193.0,409.4 L193.0,409.4 L199.4,409.4 L199.4,391.2 L204.4,391.2 L204.4,391.2 L209.3,391.2 L209.3,378.7 L214.2,378.7 L214.2,378.7 L219.1,378.7 L219.1,378.7 L224.0,378.7 L224.0,370.9 L227.3,370.9 L227.3,370.9 L233.8,370.9 L233.8,347.5 L237.1,347.5 L237.1,347.5 L243.7,347.5 L243.7,347.5 L248.6,347.5 L248.6,340.3 L253.5,340.3 L253.5,340.3 L258.4,340.3 L258.4,339.5 L264.9,339.5 L264.9,339.5 L269.8,339.5 L269.8,334.3 L274.8,334.3 L274.8,334.3 L279.7,334.3 L279.7,334.3 L284.6,334.3 L284.6,328.6 L291.1,328.6 L291.1,328.6 L297.7,328.6 L297.7,328.0 L305.9,328.0 L305.9,328.0 L309.1,328.0 L309.1,329.9 L314.1,329.9 L314.1,329.9 L319.0,329.9 L319.0,334.0 L320.6,334.0 L320.6,334.0 L323.9,334.0 L323.9,334.0 L328.7,334.0 L328.7,339.7 L335.3,339.7 L335.3,339.7 L340.2,339.7 L340.2,339.7 L345.2,339.7 L345.2,335.1 L348.4,335.1 L348.4,335.1 L353.3,335.1 L353.3,335.1 L358.3,335.1 L358.3,333.2 L363.2,333.2 L363.2,333.2 L369.7,333.2 L369.7,329.6' fill='none' stroke='#2a78d6' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/><circle cx='188.0' cy='409.4' r='4.5' fill='#2a78d6' stroke='#ffffff' stroke-width='2'/><text x='178.0' y='424.4' text-anchor='end' fill='#0b0b0b' font-weight='normal'>P −26.7</text><circle cx='199.4' cy='308.8' r='4.5' fill='#1baf7a' stroke='#ffffff' stroke-width='2'/><text x='207.4' y='312.8' text-anchor='start' fill='#0b0b0b' font-weight='normal'>D +12.0</text><text x='254.6' y='359.7' text-anchor='start' fill='#0b0b0b' font-weight='normal'>I −1.8</text><line x1='40' x2='56' y1='476' y2='476' stroke='#2a78d6' stroke-width='2' stroke-linecap='round'/><text x='62' y='480' fill='#0b0b0b'>Proportional</text><line x1='160.4' x2='176.4' y1='476' y2='476' stroke='#eb6834' stroke-width='2' stroke-linecap='round'/><text x='182.4' y='480' fill='#0b0b0b'>Integral</text><line x1='252.0' x2='268.0' y1='476' y2='476' stroke='#1baf7a' stroke-width='2' stroke-linecap='round'/><text x='274.0' y='480' fill='#0b0b0b'>Derivative</text><line x1='40' x2='370' y1='428' y2='428' stroke='#b9b8b2' stroke-width='1'/><line x1='48.9' x2='48.9' y1='428' y2='432' stroke='#b9b8b2'/><text x='48.9' y='445' text-anchor='middle' fill='#52514e'>3.5</text><line x1='101.3' x2='101.3' y1='428' y2='432' stroke='#b9b8b2'/><text x='101.3' y='445' text-anchor='middle' fill='#52514e'>4.0</text><line x1='153.7' x2='153.7' y1='428' y2='432' stroke='#b9b8b2'/><text x='153.7' y='445' text-anchor='middle' fill='#52514e'>4.5</text><line x1='206.0' x2='206.0' y1='428' y2='432' stroke='#b9b8b2'/><text x='206.0' y='445' text-anchor='middle' fill='#52514e'>5.0</text><line x1='258.4' x2='258.4' y1='428' y2='432' stroke='#b9b8b2'/><text x='258.4' y='445' text-anchor='middle' fill='#52514e'>5.5</text><line x1='310.8' x2='310.8' y1='428' y2='432' stroke='#b9b8b2'/><text x='310.8' y='445' text-anchor='middle' fill='#52514e'>6.0</text><line x1='363.2' x2='363.2' y1='428' y2='432' stroke='#b9b8b2'/><text x='363.2' y='445' text-anchor='middle' fill='#52514e'>6.5</text><text x='205.0' y='462' text-anchor='middle' fill='#52514e'>Seconds from full pedal</text></svg><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Same pull. P, I and D update less often than the other channels in this log, so they are drawn as steps. Final commanded duty is clamped at 80%.</figcaption></figure>



<h2 class="wp-block-heading">Adding resolution where the problem occurred</h2>



<p class="wp-block-paragraph">Seven engine-speed breakpoints were added to the initial-position table: 3,250, 3,600, 3,700, 3,800, 3,900, 4,100 and 4,250 rpm.</p>



<p class="wp-block-paragraph">The existing 3,500 and 4,000 rpm breakpoints were kept. The 4,000 rpm values stayed as they were. The 3,500 rpm values did not: for the 220–280 kPa rows they came down from 100% to between 50 and 57%.</p>



<p class="wp-block-paragraph">Adding columns alone changes nothing if the new values simply reproduce the old interpolation. The purpose was to create enough resolution to reshape the transition deliberately.</p>



<p class="wp-block-paragraph">The revision reduced duty earlier and brought it closer to the existing 4,000 rpm values before the previous target-crossing point. It covers the 220–280 kPa rows from 3,250 to 3,900 rpm.</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><div style='overflow-x:auto;-webkit-overflow-scrolling:touch'><table style='border-collapse:collapse;width:100%;min-width:520px;font-size:0.8rem;text-align:right;white-space:nowrap'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>Target</th><th style='padding:5px 6px'>3,250</th><th style='padding:5px 6px'>3,500</th><th style='padding:5px 6px'>3,600</th><th style='padding:5px 6px'>3,700</th><th style='padding:5px 6px'>3,800</th><th style='padding:5px 6px'>3,900</th><th style='padding:5px 6px'>4,000</th><th style='padding:5px 6px'>4,100</th><th style='padding:5px 6px'>4,250</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>220 kPa</td><td style='padding:5px 6px'><strong>80.0</strong></td><td style='padding:5px 6px'><strong>50.0</strong></td><td style='padding:5px 6px'><strong>42.0</strong></td><td style='padding:5px 6px'><strong>35.0</strong></td><td style='padding:5px 6px'><strong>30.0</strong></td><td style='padding:5px 6px'><strong>28.0</strong></td><td style='padding:5px 6px'>26.5</td><td style='padding:5px 6px'>25.0</td><td style='padding:5px 6px'>23.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>240 kPa</td><td style='padding:5px 6px'><strong>80.0</strong></td><td style='padding:5px 6px'><strong>52.0</strong></td><td style='padding:5px 6px'><strong>43.0</strong></td><td style='padding:5px 6px'><strong>36.0</strong></td><td style='padding:5px 6px'><strong>32.0</strong></td><td style='padding:5px 6px'><strong>30.0</strong></td><td style='padding:5px 6px'>28.0</td><td style='padding:5px 6px'>27.0</td><td style='padding:5px 6px'>25.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>250 kPa</td><td style='padding:5px 6px'><strong>80.0</strong></td><td style='padding:5px 6px'><strong>54.0</strong></td><td style='padding:5px 6px'><strong>44.0</strong></td><td style='padding:5px 6px'><strong>37.0</strong></td><td style='padding:5px 6px'><strong>33.0</strong></td><td style='padding:5px 6px'><strong>31.0</strong></td><td style='padding:5px 6px'>29.0</td><td style='padding:5px 6px'>28.0</td><td style='padding:5px 6px'>26.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>260 kPa</td><td style='padding:5px 6px'><strong>80.0</strong></td><td style='padding:5px 6px'><strong>55.0</strong></td><td style='padding:5px 6px'><strong>45.0</strong></td><td style='padding:5px 6px'><strong>38.0</strong></td><td style='padding:5px 6px'><strong>34.0</strong></td><td style='padding:5px 6px'><strong>31.5</strong></td><td style='padding:5px 6px'>29.5</td><td style='padding:5px 6px'>28.5</td><td style='padding:5px 6px'>27.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>280 kPa</td><td style='padding:5px 6px'><strong>80.0</strong></td><td style='padding:5px 6px'><strong>57.0</strong></td><td style='padding:5px 6px'><strong>47.0</strong></td><td style='padding:5px 6px'><strong>40.0</strong></td><td style='padding:5px 6px'><strong>36.0</strong></td><td style='padding:5px 6px'><strong>33.0</strong></td><td style='padding:5px 6px'>31.0</td><td style='padding:5px 6px'>30.5</td><td style='padding:5px 6px'>29.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>300 kPa</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>86.5</td><td style='padding:5px 6px'>73.0</td><td style='padding:5px 6px'>59.5</td><td style='padding:5px 6px'>46.0</td><td style='padding:5px 6px'>32.5</td><td style='padding:5px 6px'>32.0</td><td style='padding:5px 6px'>31.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>320 kPa</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>87.0</td><td style='padding:5px 6px'>74.0</td><td style='padding:5px 6px'>61.5</td><td style='padding:5px 6px'>48.5</td><td style='padding:5px 6px'>35.5</td><td style='padding:5px 6px'>35.0</td><td style='padding:5px 6px'>34.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:5px 6px;position:sticky;left:0;background:#fff;box-shadow:inset -1px 0 0 #ddd'>340 kPa</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>100.0</td><td style='padding:5px 6px'>88.0</td><td style='padding:5px 6px'>76.0</td><td style='padding:5px 6px'>64.0</td><td style='padding:5px 6px'>52.0</td><td style='padding:5px 6px'>40.0</td><td style='padding:5px 6px'>39.5</td><td style='padding:5px 6px'>38.5</td></tr>
</tbody></table></div><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Initial Position Table, % duty, after the revision, with engine speed in rpm across the top. Bold cells were changed. Everything else is either an original value or what EMtune interpolated, rounded to the nearest 0.5, when the new breakpoints were inserted.</figcaption></figure>



<p class="wp-block-paragraph">These are provisional trial values, chosen to reduce the excessive duty carried into target crossing. They were not calculated from measured equilibrium wastegate requirements.</p>



<p class="wp-block-paragraph">At 3,700 rpm and a 260 kPa target, initial duty falls from approximately 72% to 38%. That is a substantial change, with a possible cost in spool response.</p>



<p class="wp-block-paragraph">The 80% at 3,250 rpm changes less than it looks. It matches the 80% output limit, so while boost is still below target the commanded duty there is the same as before. The real reduction starts at 3,500 rpm.</p>



<p class="wp-block-paragraph">The 4,100 and 4,250 rpm columns are there for later shaping. For now they hold interpolated values only.</p>



<h2 class="wp-block-heading">Checking the entries mattered</h2>



<p class="wp-block-paragraph">The first screenshot of the edited table showed that the 280 kPa row had been missed.</p>



<p class="wp-block-paragraph">That would have affected operation below 280 kPa too, because the ECU interpolates between target rows. EMtune had filled the new 3,700 rpm cell in that row with 72.5%, the original interpolation rounded to the nearest 0.5. At 270 kPa and 3,700 rpm, that would have produced approximately 55.25% initial duty, rather than the intended 39%.</p>



<p class="wp-block-paragraph">The row was corrected before considering the revision complete.</p>



<p class="wp-block-paragraph">A separate limitation remains above it. The 300–340 kPa rows retain the original aggressive spool profile, and the step into them is steepest at 3,500 rpm:</p>



<figure class='bbt-figure' style='margin:1.8rem 0'><table style='border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right'><thead><tr style='border-bottom:2px solid #333'><th style='text-align:left;padding:6px 8px'>Target</th><th style='padding:6px 8px'>3,500 rpm</th><th style='padding:6px 8px'>3,700 rpm</th></tr></thead><tbody>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>280 kPa</td><td style='padding:6px 8px'>57.0</td><td style='padding:6px 8px'>40.0</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>290 kPa</td><td style='padding:6px 8px'>78.5</td><td style='padding:6px 8px'>56.5</td></tr>
<tr style='border-bottom:1px solid #ddd'><td style='text-align:left;padding:6px 8px'>300 kPa</td><td style='padding:6px 8px'>100.0</td><td style='padding:6px 8px'>73.0</td></tr>
</tbody></table><figcaption class='bbt-table-note' style='font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0'>Initial duty, %, in the current table. 290 kPa is interpolated between the 280 and 300 kPa rows.</figcaption></figure>



<p class="wp-block-paragraph">That matters in sixth gear. With the 10 kPa sixth-gear target offset, 290 kPa is the full-demand target in that gear, and this log requested exactly that whenever the status returned to 1: ON. The revised 220–280 kPa region does not establish that the rest of the table is suitable.</p>



<h2 class="wp-block-heading">Where the calibration stands</h2>



<p class="wp-block-paragraph">The revised initial-position values have been checked in the calibration screenshots. There is not yet a subsequent log demonstrating their effect.</p>



<p class="wp-block-paragraph">P, I and D are being held unchanged for the first comparison so the effect of the feedforward change can be assessed separately. Three closed-loop issues remain open: the derivative gap from +5 to −40 kPa, the weaker proportional gain above target now that the 10.00 cell has gone, and a −50 kPa derivative gain that adds duty during recovery from overboost.</p>



<p class="wp-block-paragraph">The next assessment centres on Boost Target Error:</p>



<ul class="wp-block-list">
<li>Peak negative error during boost arrival.</li>



<li>Time spent above target.</li>



<li>Recovery after the peak.</li>



<li>Any additional positive error or slower spool introduced by the reduced duty.</li>



<li>Behaviour when the torque model changes the target or boost-control state.</li>
</ul>



<p class="wp-block-paragraph">The useful result will be a smaller, shorter overshoot without creating an excessive boost deficit elsewhere. Until that is demonstrated, this remains a calibration under development.</p>



<p class="wp-block-paragraph">The lesson from this stage is specific: before asking PID to correct a boost error, examine the initial duty it is correcting around. In this run, boost was arriving on target with roughly three-quarters duty still commanded. That was the first problem to address.</p>



<p class="wp-block-paragraph">More to come.</p>



<p class="wp-block-paragraph"></p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/supra-boost-control-pid-initial-position/">Tuning the Supra’s Boost Control: PID Gains Were Only Part of the Problem</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p><p>The post <a rel="nofollow" href="https://blownbytwins.co.uk/cars/mk4-supra/supra-boost-control-pid-initial-position/">Tuning the Supra’s Boost Control: PID Gains Were Only Part of the Problem</a> appeared first on <a rel="nofollow" href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Boost Control on the Emtron KV12: Where the Target Really Comes From</title>
		<link>https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/</link>
		
		<dc:creator><![CDATA[john]]></dc:creator>
		<pubDate>Sat, 17 Oct 2026 07:00:00 +0000</pubDate>
				<category><![CDATA[Engine Management]]></category>
		<category><![CDATA[Mk4 Supra]]></category>
		<category><![CDATA[boost control]]></category>
		<category><![CDATA[emtron]]></category>
		<category><![CDATA[feedforward]]></category>
		<category><![CDATA[wastegate]]></category>
		<guid isPermaLink="false">https://blownbytwins.co.uk/?p=1208</guid>

					<description><![CDATA[<p>How boost is controlled on the Supra's Emtron KV12: a base table that never asks for boost, a user offset that does, a deliberate clamp, and a PID kept on a short lead so the feedforward does the work.</p>
<p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/">Boost Control on the Emtron KV12: Where the Target Really Comes From</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
<p>The post <a rel="nofollow" href="https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/">Boost Control on the Emtron KV12: Where the Target Really Comes From</a> appeared first on <a rel="nofollow" href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">There is nothing exotic about the boost control on this car. It is Emtron&#8217;s standard closed loop strategy. SRD Tuning built the base, and I have refined the duty cycles from logs since.</p>



<p class="wp-block-paragraph">What is worth showing is how the pieces fit together. Where the boost target actually comes from, which tables do the real work, and how the PID is kept out of the way.</p>



<p class="wp-block-paragraph">Each section is marked. <strong>Verified</strong> means it comes straight from the calibration. <strong>Theory</strong> means it is my reasoning, not something I have measured. <strong>Observed</strong> means it is how the car behaves on the road.</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.4 litre, Pulsar G42-1200, pump fuel</li>



<li>Turbosmart 60 mm wastegate, 15 psi spring, which gives 18 psi as installed</li>



<li>Single Link boost control solenoid</li>



<li><a href="https://emtron.world/products/kv12" target="_blank" rel="noopener">Emtron KV12</a>, closed loop, absolute target, manifold pressure as the control input</li>
</ul>



<p class="wp-block-paragraph">Who did what matters here, so to be clear: the structure, the lockouts and the base duty cycles are SRD&#8217;s. My changes are to the initial position table, made from logged corrections, and none of them is more than 3 percent.</p>



<h2 class="wp-block-heading">Where the target comes from</h2>



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



<p class="wp-block-paragraph">Emtron builds the boost target from a base table, adds a stack of offsets, then clamps the result. Here is the base table:</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Pedal demand</th><th style="padding:6px 8px">0 to 2,500 rpm</th><th style="padding:6px 8px">3,000 rpm and above</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">0%</td><td style="padding:6px 8px">40</td><td style="padding:6px 8px">40</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">10 to 30%</td><td style="padding:6px 8px">70</td><td style="padding:6px 8px">70</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">40 to 98%</td><td style="padding:6px 8px">80</td><td style="padding:6px 8px">100</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Boost Target Table 1, kPa absolute, against throttle area demand from the pedal. Identical rows and columns are merged.</figcaption></figure>



<p class="wp-block-paragraph">Look at the biggest number in it. 100 kPa absolute is atmospheric. The base table on its own never asks for any boost at all.</p>



<p class="wp-block-paragraph">The boost comes from the first of the user offsets:</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Manifold pressure</th><th style="padding:6px 8px">Offset, every rotary position</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">0 and 50 kPa</td><td style="padding:6px 8px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">100, 125 and 150 kPa</td><td style="padding:6px 8px">+200</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">User 1 Target Offset Table, kPa, indexed on manifold pressure against the steering wheel rotary (CANRx Vehicle Mode 1). All eight rotary columns are identical.</figcaption></figure>



<p class="wp-block-paragraph">Once the manifold reaches atmospheric, 200 kPa is added to the target. So with the pedal past 40 percent:</p>



<ul class="wp-block-list">
<li>Below 3,000 rpm: 80 + 200 = <strong>280 kPa</strong> absolute</li>



<li>From 3,000 rpm: 100 + 200 = <strong>300 kPa</strong> absolute</li>
</ul>



<p class="wp-block-paragraph">And then the clamp. The Boost Target Clamp is <strong>300 kPa absolute</strong>, roughly 2.0 bar of boost at sea level. Whatever the offsets add up to, the target cannot go past it. That is deliberate. The car runs on pump fuel, and the clamp is the safety switch that stops anything else in the stack asking for more than the fuel will take.</p>



<p class="wp-block-paragraph">The rotary columns being identical is also deliberate. Every traction setting gets the same boost ceiling, and the torque model decides how much of it is actually used. Boost is not the throttle on this car. Torque is, and that is covered in <a href="https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/">Traction Control on 1,114 whp</a>.</p>



<h3 class="wp-block-heading">Why the offset can look on manifold pressure</h3>



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



<p class="wp-block-paragraph">An offset indexed on manifold pressure is a feedback loop: as pressure rises from 50 to 100 kPa, the target rises with it. That would be a problem if the solenoid were active through that range. It isn&#8217;t, which is the next table.</p>



<h2 class="wp-block-heading">When the solenoid is allowed to work</h2>



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



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Lockout</th><th style="text-align:right;padding:6px 8px">Value</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="padding:6px 8px">Throttle</td><td style="text-align:right;padding:6px 8px">10%</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="padding:6px 8px">Engine speed</td><td style="text-align:right;padding:6px 8px">1,800 rpm</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="padding:6px 8px">Manifold pressure</td><td style="text-align:right;padding:6px 8px">110 kPa</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="padding:6px 8px">Engine temperature</td><td style="text-align:right;padding:6px 8px">60 &deg;C</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Boost OL/CL Lockouts, set by SRD. Below any of these the solenoid is switched off and the wastegate runs on its spring.</figcaption></figure>



<p class="wp-block-paragraph">The solenoid stays off until the manifold is already 10 kPa above atmospheric. By then the user offset has finished ramping in and the target is fixed. Off boost, cold, or at a whisker of throttle, the wastegate simply does what its spring tells it.</p>



<h2 class="wp-block-heading">What takes boost away</h2>



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



<p class="wp-block-paragraph">Three offsets pull the target down. Two are protection, and both are indexed against the target itself, so the higher the target, the more they take.</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Target vs engine temp</th><th style="padding:6px 8px">up to 100 &deg;C</th><th style="padding:6px 8px">110 &deg;C</th><th style="padding:6px 8px">120 &deg;C and above</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">180 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">200 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-10</td><td style="padding:6px 8px">-20</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">220 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-40</td><td style="padding:6px 8px">-40</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">240 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-50</td><td style="padding:6px 8px">-60</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">260 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-50</td><td style="padding:6px 8px">-80</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">280 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-50</td><td style="padding:6px 8px">-100</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Engine Temperature Target Offset Table, kPa. Every column from -50 to 100 &deg;C is zero.</figcaption></figure>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Target vs inlet air temp</th><th style="padding:6px 8px">up to 40 &deg;C</th><th style="padding:6px 8px">50</th><th style="padding:6px 8px">60</th><th style="padding:6px 8px">70</th><th style="padding:6px 8px">80</th><th style="padding:6px 8px">100</th><th style="padding:6px 8px">120</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">100 and 150 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">200 to 300 kPa</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">-3</td><td style="padding:6px 8px">-10</td><td style="padding:6px 8px">-20</td><td style="padding:6px 8px">-30</td><td style="padding:6px 8px">-40</td><td style="padding:6px 8px">-50</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Air Temperature Target Offset Table, kPa. Identical rows are merged.</figcaption></figure>



<p class="wp-block-paragraph">The third is by gear, and it is there for the gearbox rather than the engine:</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:center"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px">Gear</th><th style="padding:6px">R, N, 1 to 5</th><th style="padding:6px">6</th><th style="padding:6px">7</th><th style="padding:6px">8</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px">Offset, kPa</td><td>0</td><td>-10</td><td>-20</td><td>-30</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Gear Target Offset Table.</figcaption></figure>



<p class="wp-block-paragraph">Sixth, seventh and eighth lose 10, 20 and 30 kPa to protect the ZF&#8217;s clutches from slip. Where that gearbox runs out of capacity is covered in <a href="https://blownbytwins.co.uk/?p=1093">Where the Stock ZF 8HP70 Gives Up</a>.</p>



<h2 class="wp-block-heading">The table that does the work</h2>



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



<p class="wp-block-paragraph">Everything above decides what boost to ask for. This decides how to get it. The initial position table is the feedforward: the solenoid duty the ECU applies before the PID has done anything at all.</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.8rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:5px 6px">Target vs rpm</th><th style="padding:5px 6px">1,000 to 1,500</th><th style="padding:5px 6px">2,000 to 3,500</th><th style="padding:5px 6px">4,000</th><th style="padding:5px 6px">4,500</th><th style="padding:5px 6px">5,000</th><th style="padding:5px 6px">5,500</th><th style="padding:5px 6px">6,000</th><th style="padding:5px 6px">6,500</th><th style="padding:5px 6px">7,000</th><th style="padding:5px 6px">7,500</th><th style="padding:5px 6px">8,000</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">125 to 200 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">220 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px">26.5</td><td style="padding:5px 6px">20.0</td><td style="padding:5px 6px">13.0</td><td style="padding:5px 6px">10.5</td><td style="padding:5px 6px">8.0</td><td style="padding:5px 6px">5.0</td><td style="padding:5px 6px">2.5</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">240 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px">28.0</td><td style="padding:5px 6px">22.5</td><td style="padding:5px 6px">17.0</td><td style="padding:5px 6px">16.5</td><td style="padding:5px 6px">15.0</td><td style="padding:5px 6px">13.0</td><td style="padding:5px 6px">11.5</td><td style="padding:5px 6px">9.5</td><td style="padding:5px 6px">10.5</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">250 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px">29.0</td><td style="padding:5px 6px">24.0</td><td style="padding:5px 6px">18.5</td><td style="padding:5px 6px">18.0</td><td style="padding:5px 6px">17.0</td><td style="padding:5px 6px">16.5</td><td style="padding:5px 6px">15.5</td><td style="padding:5px 6px">14.5</td><td style="padding:5px 6px">16.0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">260 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px">29.5</td><td style="padding:5px 6px">25.0</td><td style="padding:5px 6px">20.5</td><td style="padding:5px 6px">19.5</td><td style="padding:5px 6px">19.5</td><td style="padding:5px 6px">19.5</td><td style="padding:5px 6px">19.5</td><td style="padding:5px 6px">19.5</td><td style="padding:5px 6px">21.0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px">280 kPa</td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px">31.0</td><td style="padding:5px 6px">28.0</td><td style="padding:5px 6px">24.5</td><td style="padding:5px 6px">23.0</td><td style="padding:5px 6px">24.5</td><td style="padding:5px 6px">26.0</td><td style="padding:5px 6px">27.5</td><td style="padding:5px 6px">29.0</td><td style="padding:5px 6px">31.5</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:5px 6px"><strong>300 kPa</strong></td><td style="padding:5px 6px">0</td><td style="padding:5px 6px">100</td><td style="padding:5px 6px"><strong>32.5</strong></td><td style="padding:5px 6px"><strong>30.5</strong></td><td style="padding:5px 6px"><strong>28.0</strong></td><td style="padding:5px 6px"><strong>26.0</strong></td><td style="padding:5px 6px"><strong>26.0</strong></td><td style="padding:5px 6px"><strong>30.0</strong></td><td style="padding:5px 6px"><strong>32.0</strong></td><td style="padding:5px 6px"><strong>36.5</strong></td><td style="padding:5px 6px"><strong>42.0</strong></td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Initial Position Table, % duty, boost target against engine speed. Bold is the row the car lives on at full demand. The table also has 320 and 340 kPa rows, which the 300 kPa clamp means are never used.</figcaption></figure>



<p class="wp-block-paragraph">Read the 300 kPa row from left to right and it tells the story of a pull.</p>



<p class="wp-block-paragraph"><strong>2,000 to 3,500 rpm: 100.</strong> Hold the wastegate shut and let the turbo spool. In practice this is 80, not 100, because the Max Duty table clamps the output at 80 percent everywhere. The 100 in the table is a way of saying &#8220;as much as you&#8217;re allowed&#8221;.</p>



<p class="wp-block-paragraph"><strong>4,000 rpm: 32.5.</strong> The turbo is lit. Drop straight to the duty that holds 300 kPa, so the gate opens instead of letting boost run past the target.</p>



<p class="wp-block-paragraph"><strong>5,500 to 6,000 rpm: 26.</strong> The lowest duty in the row.</p>



<p class="wp-block-paragraph"><strong>6,500 to 8,000 rpm: 30 rising to 42.</strong> More duty is needed to hold the same target as rpm rises.</p>



<p class="wp-block-paragraph">The lower rows show the spring at work. The spring holds 18 psi as installed, about 225 kPa absolute. So at a 220 kPa target the duty falls away as rpm rises, and by 7,500 rpm it is zero: the spring alone is enough. Every row above that is the solenoid adding pressure on top of the spring.</p>



<h3 class="wp-block-heading">Why the duty rises at the top</h3>



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



<p class="wp-block-paragraph">A wastegate valve is pushed open by exhaust pressure acting on its face, as well as by boost pressure acting on its diaphragm. As rpm rises, exhaust manifold pressure rises with it, and the valve gets more help opening. To hold the same boost, the solenoid has to fight harder, so the duty goes up. I don&#8217;t measure exhaust manifold pressure on this car, so that is the mechanism I&#8217;d expect rather than one I have logged.</p>



<h3 class="wp-block-heading">How I refined it</h3>



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



<p class="wp-block-paragraph">If the initial position were perfect, the PID would have nothing to correct. So the logs tell you where it is wrong. Wherever the closed loop consistently added or removed duty in the same cell, the feedforward was out by about that much.</p>



<p class="wp-block-paragraph">I moved those cells towards what the PID was asking for. None by more than 3 percent. It&#8217;s refinement, not a rebuild. The aim was to take work away from the closed loop wherever the data said it was doing work it shouldn&#8217;t have to.</p>



<h2 class="wp-block-heading">The PID: kept on a short lead</h2>



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



<p class="wp-block-paragraph">The loop runs at 35 Hz, against Emtron&#8217;s typical 25, with a deadband of ±0.1 kPa and no input or target filtering. Emtron&#8217;s own note on the control rate is worth repeating: change it and the gains need re-tuning, because every gain is effectively per calculation.</p>



<p class="wp-block-paragraph">All three gains are scheduled on boost target error. Negative error means boost is above target.</p>



<figure class="bbt-figure" style="margin:1.8rem 0"><table style="border-collapse:collapse;width:100%;font-size:0.85rem;text-align:right"><thead><tr style="border-bottom:2px solid #333"><th style="text-align:left;padding:6px 8px">Error, kPa</th><th style="padding:6px 8px">-50</th><th style="padding:6px 8px">-25</th><th style="padding:6px 8px">-10</th><th style="padding:6px 8px">-5</th><th style="padding:6px 8px">-2</th><th style="padding:6px 8px">2</th><th style="padding:6px 8px">5</th><th style="padding:6px 8px">10</th><th style="padding:6px 8px">25</th><th style="padding:6px 8px">60</th></tr></thead><tbody>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">Proportional</td><td style="padding:6px 8px">0.50</td><td style="padding:6px 8px">0.50</td><td style="padding:6px 8px">0.20</td><td style="padding:6px 8px">0.20</td><td style="padding:6px 8px">0.10</td><td style="padding:6px 8px">0.10</td><td style="padding:6px 8px">0.50</td><td style="padding:6px 8px">0.50</td><td style="padding:6px 8px">0.50</td><td style="padding:6px 8px">0.50</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">Integral</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0.018</td><td style="padding:6px 8px">0.025</td><td style="padding:6px 8px">0.025</td><td style="padding:6px 8px">0.018</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td></tr>
<tr style="border-bottom:1px solid #ddd"><td style="text-align:left;padding:6px 8px">Derivative</td><td style="padding:6px 8px">3.00</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">0</td><td style="padding:6px 8px">3.00</td><td style="padding:6px 8px">3.00</td><td style="padding:6px 8px">0</td></tr>
</tbody></table><figcaption class="bbt-table-note" style="font-size:0.8rem;color:#5f5f5f;line-height:1.5;margin:0.6rem 0 0">Proportional, Integral and Derivative Gain Tables combined. The three tables use slightly different breakpoints; where a column is beyond a table&#8217;s axis, its end value is shown. Derivative is 0 from -40 to +5 kPa. Proportional also has a dMAP axis, flat apart from one cell, covered below.</figcaption></figure>



<p class="wp-block-paragraph">The integral is clamped as well: the Positive and Negative Integral Limit tables hold it to <strong>±5 percent duty</strong> at every rpm. Overall output is held between a 5 percent minimum and an 80 percent maximum.</p>



<p class="wp-block-paragraph">One cell in the proportional table stands out. At -25 kPa of error, with manifold pressure rising at 5 percent per second, the gain is <strong>10.00</strong> instead of 0.50. That is the overboost catch. Boost well over target and still climbing is the one situation where the controller is allowed to hit hard.</p>



<h3 class="wp-block-heading">Why it is shaped this way</h3>



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



<p class="wp-block-paragraph">Proportional gain is smallest near target. Once the boost is where it should be, small errors are corrected gently, so the solenoid isn&#8217;t hunting.</p>



<p class="wp-block-paragraph">Integral only works within 5 kPa of target and is zero beyond 10. During spool the error is enormous, and an integrator running through that would wind up and then overshoot when the turbo arrives. Here it simply doesn&#8217;t run until boost is close. Add the ±5 percent clamp and the integrator can trim the feedforward but never replace it.</p>



<p class="wp-block-paragraph">Derivative is active between 10 and 25 kPa below target. That is boost on its final approach, rising fast towards the target. Derivative reacts to rate of change, so it starts opening the gate before the boost gets there, taking the edge off the arrival rather than correcting an overshoot afterwards.</p>



<p class="wp-block-paragraph">It&#8217;s the same philosophy as the <a href="https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/">traction control</a>. Feedforward does the work. The closed loop is soft near target, gated where it could do harm, and clamped so it can never take over.</p>



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



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



<p class="wp-block-paragraph">Two things in the file worth knowing if you are reading your own:</p>



<ul class="wp-block-list">
<li>The Boost Solenoid Deadtime table is zero from 10 to 20 V, so solenoid duty isn&#8217;t corrected for supply voltage.</li>



<li>The Boost Overall Target Trim is zero. It&#8217;s a single number that shifts every target at once, which makes it a quick way to test a change without touching the tables.</li>
</ul>



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



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



<p class="wp-block-paragraph">Spooled by 3,400 rpm. On target by 4,200. And from there it pulls, hard, all the way to 8,400.</p>



<p class="wp-block-paragraph">That lines up with the table. The 100 percent hold ends at 3,500, the duty drops to 32.5 at 4,000, and the car is on target 200 rpm later.</p>



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



<p class="wp-block-paragraph">Get the feedforward right and the PID has almost nothing to do. Then let the logs tell you where it isn&#8217;t right: wherever the closed loop is consistently correcting, the initial position is wrong by that much.</p>



<p class="wp-block-paragraph">Every number here is specific to this turbo, this wastegate, this spring and this fuel. <strong>The data is not transferable, but the principle is.</strong></p>



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



<p class="wp-block-paragraph"><em>How the torque model decides how much of this boost is actually used is in <a href="https://blownbytwins.co.uk/cars/mk4-supra/traction-control-feedforward-pid/">Traction Control on 1,114 whp</a>. Why the top gears lose boost is in <a href="https://blownbytwins.co.uk/?p=1093">Where the Stock ZF 8HP70 Gives Up</a>. The fuel system feeding all of it is in <a href="https://blownbytwins.co.uk/?p=1194">Staged Injection on the Emtron KV12</a>. Full specification is on the <a href="https://blownbytwins.co.uk/toyota-supra-mk4-delta/">Supra project page</a>.</em></p><p>The post <a href="https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/">Boost Control on the Emtron KV12: Where the Target Really Comes From</a> first appeared on <a href="https://blownbytwins.co.uk">BlownByTwins</a>.</p><p>The post <a rel="nofollow" href="https://blownbytwins.co.uk/cars/mk4-supra/boost-control-emtron-kv12/">Boost Control on the Emtron KV12: Where the Target Really Comes From</a> appeared first on <a rel="nofollow" href="https://blownbytwins.co.uk">BlownByTwins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
