<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.engineersofinnovation.nl/index.php?action=history&amp;feed=atom&amp;title=R%26S_Measurement_Campaign</id>
	<title>R&amp;S Measurement Campaign - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.engineersofinnovation.nl/index.php?action=history&amp;feed=atom&amp;title=R%26S_Measurement_Campaign"/>
	<link rel="alternate" type="text/html" href="https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;action=history"/>
	<updated>2026-09-20T10:12:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=347&amp;oldid=prev</id>
		<title>Aran Dokoupil at 15:15, 7 September 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=347&amp;oldid=prev"/>
		<updated>2026-09-07T15:15:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;amp;diff=347&amp;amp;oldid=346&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Aran Dokoupil</name></author>
	</entry>
	<entry>
		<id>https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=346&amp;oldid=prev</id>
		<title>Aran Dokoupil: /* GaN MPPT Phase: R&amp;S / ZES Measurement Campaign */</title>
		<link rel="alternate" type="text/html" href="https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=346&amp;oldid=prev"/>
		<updated>2026-08-18T20:25:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;GaN MPPT Phase: R&amp;amp;S / ZES Measurement Campaign&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 18 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= GaN MPPT Phase: R&amp;amp;S / ZES Measurement Campaign =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedures for the measurement campaign on the '''EOI-A65-6A''' GaN MPPT phase boards&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedures for the measurement campaign on the '''EOI-A65-6A''' GaN MPPT phase boards&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;using the sponsored Rohde &amp;amp; Schwarz and ZES ZIMMER equipment. Each experiment is written&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;using the sponsored Rohde &amp;amp; Schwarz and ZES ZIMMER equipment. Each experiment is written&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aran Dokoupil</name></author>
	</entry>
	<entry>
		<id>https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=344&amp;oldid=prev</id>
		<title>Aran Dokoupil: Aran Dokoupil moved page R&amp;S Measurement Campaigne to R&amp;S Measurement Campaign: spelling</title>
		<link rel="alternate" type="text/html" href="https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=344&amp;oldid=prev"/>
		<updated>2026-08-18T20:25:14Z</updated>

		<summary type="html">&lt;p&gt;Aran Dokoupil moved page &lt;a href=&quot;/wiki/R%26S_Measurement_Campaigne&quot; class=&quot;mw-redirect&quot; title=&quot;R&amp;amp;S Measurement Campaigne&quot;&gt;R&amp;amp;S Measurement Campaigne&lt;/a&gt; to &lt;a href=&quot;/wiki/R%26S_Measurement_Campaign&quot; title=&quot;R&amp;amp;S Measurement Campaign&quot;&gt;R&amp;amp;S Measurement Campaign&lt;/a&gt;: spelling&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 18 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Aran Dokoupil</name></author>
	</entry>
	<entry>
		<id>https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=343&amp;oldid=prev</id>
		<title>Aran Dokoupil: Created page with &quot;= GaN MPPT Phase: R&amp;S / ZES Measurement Campaign =  Procedures for the measurement campaign on the '''EOI-A65-6A''' GaN MPPT phase boards using the sponsored Rohde &amp; Schwarz and ZES ZIMMER equipment. Each experiment is written to be run start-to-finish by one engineer and to produce both an engineering result and a publishable figure.  __TOC__  == Purpose ==  Three goals, in priority order:  # '''Resolve open engineering questions.''' Idle dissipation, dead-time optimum,...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.engineersofinnovation.nl/index.php?title=R%26S_Measurement_Campaign&amp;diff=343&amp;oldid=prev"/>
		<updated>2026-08-18T20:24:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= GaN MPPT Phase: R&amp;amp;S / ZES Measurement Campaign =  Procedures for the measurement campaign on the &amp;#039;&amp;#039;&amp;#039;EOI-A65-6A&amp;#039;&amp;#039;&amp;#039; GaN MPPT phase boards using the sponsored Rohde &amp;amp; Schwarz and ZES ZIMMER equipment. Each experiment is written to be run start-to-finish by one engineer and to produce both an engineering result and a publishable figure.  __TOC__  == Purpose ==  Three goals, in priority order:  # &amp;#039;&amp;#039;&amp;#039;Resolve open engineering questions.&amp;#039;&amp;#039;&amp;#039; Idle dissipation, dead-time optimum,...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= GaN MPPT Phase: R&amp;amp;S / ZES Measurement Campaign =&lt;br /&gt;
&lt;br /&gt;
Procedures for the measurement campaign on the '''EOI-A65-6A''' GaN MPPT phase boards&lt;br /&gt;
using the sponsored Rohde &amp;amp; Schwarz and ZES ZIMMER equipment. Each experiment is written&lt;br /&gt;
to be run start-to-finish by one engineer and to produce both an engineering result and a&lt;br /&gt;
publishable figure.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Three goals, in priority order:&lt;br /&gt;
&lt;br /&gt;
# '''Resolve open engineering questions.''' Idle dissipation, dead-time optimum, and output current-sense accuracy are all unresolved and all measurable with this equipment.&lt;br /&gt;
# '''Calibrate and characterise the product.''' The default configuration ships with &amp;lt;code&amp;gt;calibrated = false&amp;lt;/code&amp;gt; and placeholder sensor gains.&lt;br /&gt;
# '''Produce publishable content.''' Each experiment below defines its hero shot and which instrument capability makes it possible.&lt;br /&gt;
&lt;br /&gt;
An experiment only belongs in this campaign if the instrument is load-bearing, i.e. the&lt;br /&gt;
result is not obtainable with ordinary bench gear. Otherwise it is just a measurement, not&lt;br /&gt;
a story.&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Instrument !! Role !! Capability that matters here&lt;br /&gt;
|-&lt;br /&gt;
| ZES ZIMMER LMG671 || Power / efficiency reference || 0.015%-class accuracy; up to 7 simultaneously-sampled channels; microwatt-resolution DC; transient recorder&lt;br /&gt;
|-&lt;br /&gt;
| R&amp;amp;S MXO34 || Waveform + spectrum || 12-bit always-on; ~4.5 M acquisitions/s; ~45 k FFT/s live spectrum; zone trigger; deep memory&lt;br /&gt;
|-&lt;br /&gt;
| R&amp;amp;S RT-ZISO || Isolated probe || Galvanic isolation with CMRR that survives nanosecond edges, the only honest way to measure floating high-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Before promising numbers publicly''', confirm the exact bandwidth and isolation rating&lt;br /&gt;
of the RT-ZISO model supplied, and confirm that the LMG671 includes the transient-recording&lt;br /&gt;
and data-logger options. Experiments 4, 5 and the tracking-efficiency work depend on those&lt;br /&gt;
options.&lt;br /&gt;
&lt;br /&gt;
== Device under test ==&lt;br /&gt;
&lt;br /&gt;
Values below are taken from &amp;lt;code&amp;gt;Open-SEC Firmware/src/hardware/eoia656a.h&amp;lt;/code&amp;gt; and&lt;br /&gt;
&amp;lt;code&amp;gt;eoia656a.c&amp;lt;/code&amp;gt;. Re-check them against the branch under test before quoting them.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Value !! Source&lt;br /&gt;
|-&lt;br /&gt;
| Hardware name || EOI-A65-6A || &amp;lt;code&amp;gt;HW_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Topology || Synchronous boost, GaN half bridge (EPC23102) || &amp;lt;code&amp;gt;HW_TOPOLOGY_BOOST&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Switching frequency || 100 kHz || &amp;lt;code&amp;gt;HW_SWITCHINGFREQUENCY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Control loop rate || 20 kHz (T&amp;lt;sub&amp;gt;s&amp;lt;/sub&amp;gt; = 50 us) || &amp;lt;code&amp;gt;HW_CONTROLLERFREQUENCY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Dead time (rising / falling) || 8 ns / 8 ns || &amp;lt;code&amp;gt;HW_DEADTIMERISING&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HW_DEADTIMEFALLING&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Inductor || 47 uH, DCR 12 mOhm || &amp;lt;code&amp;gt;HW_L&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HW_RLINT&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Declared C&amp;lt;sub&amp;gt;low&amp;lt;/sub&amp;gt; / C&amp;lt;sub&amp;gt;high&amp;lt;/sub&amp;gt; || 100 uF / 400 uF || &amp;lt;code&amp;gt;HW_CLOW&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HW_CHIGH&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Overvoltage fault (both rails) || 63 V || &amp;lt;code&amp;gt;HW_LIMIT_HS_VOLTAGE_HARD&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Overcurrent fault (both rails) || 13 A || &amp;lt;code&amp;gt;HW_LIMIT_HS_CURRENT_HARD&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Soft current limit || 9 A || &amp;lt;code&amp;gt;HighSideCurrentLimitSoft&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Current sensors || 2 x INA253A2, 2 mOhm integrated shunt, 200 mV/A, zero at 0.5 V || Isense.SchDoc&lt;br /&gt;
|-&lt;br /&gt;
| Phase count per baseboard || 8, interleaved via &amp;lt;code&amp;gt;PHASE_EN&amp;lt;/code&amp;gt;; startup staggered 200 ms per CAN ID || &amp;lt;code&amp;gt;mppt.c&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Temperature sensors || NT1 = ambient, NT2 = FET/heatsink, 100 k NTC, B = 4330 || &amp;lt;code&amp;gt;Temperature_B&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The GaN devices are rated 100 V. The project README recommends '''75 V nominal maximum'''&lt;br /&gt;
for system use. Do not exceed that during these experiments regardless of what the firmware&lt;br /&gt;
fault thresholds allow.&lt;br /&gt;
&lt;br /&gt;
== Safety and bench hygiene ==&lt;br /&gt;
&lt;br /&gt;
=== Grounding ===&lt;br /&gt;
&lt;br /&gt;
'''Verify the grounding topology on your specific board before connecting any&lt;br /&gt;
ground-referenced instrument.'''&lt;br /&gt;
&lt;br /&gt;
On the EOI-A65-6A the INA253 sense elements sit '''in the positive rail'''&lt;br /&gt;
(&amp;lt;code&amp;gt;PANEL_IN+ -&amp;gt; Isense+ / Isense- -&amp;gt; Vin&amp;lt;/code&amp;gt;, and likewise on the output), so input&lt;br /&gt;
and output grounds are common. Single-ended, ground-referenced probing of the switch node&lt;br /&gt;
is therefore permissible.&lt;br /&gt;
&lt;br /&gt;
This differs from the older SEC-B80-8A described in the repository README, which uses&lt;br /&gt;
'''ground-path''' current sensing. On that hardware, shorting input and output grounds&lt;br /&gt;
together, which any two ground-referenced scope probes will do, '''can destroy the board'''.&lt;br /&gt;
If there is any doubt which hardware is on the bench, use the RT-ZISO and treat every node&lt;br /&gt;
as floating.&lt;br /&gt;
&lt;br /&gt;
=== Probing rules ===&lt;br /&gt;
&lt;br /&gt;
* '''Never''' measure high-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; with a ground-referenced probe. Its reference floats to the switch node and slews the full bus voltage in nanoseconds. Use the RT-ZISO.&lt;br /&gt;
* At ~55 V with nanosecond edges, probe ground lead length dominates the measurement. Use a ground spring, not a lead, for switch-node captures.&lt;br /&gt;
* The LMG671 inputs are individually isolated; multi-channel connection across the converter is safe.&lt;br /&gt;
* De-skew all channels before any v*i product or timing measurement. Record the de-skew values in the log.&lt;br /&gt;
&lt;br /&gt;
=== Electrical ===&lt;br /&gt;
&lt;br /&gt;
* Treat the DC bus as hazardous above 50 V. Discharge the output bulk capacitance before rework; the baseboard carries substantial bulk on the battery side.&lt;br /&gt;
* Set the source current limit at or below 9 A per phase before enabling the output.&lt;br /&gt;
* Keep a thermal camera or the on-board NTC telemetry visible during any run that changes dead time or disables protections.&lt;br /&gt;
&lt;br /&gt;
== Common bench setup ==&lt;br /&gt;
&lt;br /&gt;
=== Connections ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Node !! Instrument !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Panel input (V, I) || LMG671 ch1 || Kelvin sense at the board connector, not at the supply&lt;br /&gt;
|-&lt;br /&gt;
| Battery output (V, I) || LMG671 ch2 || Same reference plane convention as the input&lt;br /&gt;
|-&lt;br /&gt;
| Individual phase outputs || LMG671 ch3 to ch7 || Up to 5 phases alongside both terminals; see channel budget note&lt;br /&gt;
|-&lt;br /&gt;
| Switch node (SW) || MXO34 ch1 || Ground spring, shortest possible loop&lt;br /&gt;
|-&lt;br /&gt;
| Low-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; || MXO34 ch2 || &amp;lt;code&amp;gt;BRIDGE_LO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| High-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; || RT-ZISO on MXO34 ch3 || '''Isolated probe mandatory'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CURR_SE&amp;lt;/code&amp;gt; (INA253 output, before R12) || MXO34 ch4 || Pre-filter node; this is where clipping is visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Channel budget:''' the LMG671 provides at most 7 channels. With both terminals&lt;br /&gt;
instrumented, 5 phases can be measured simultaneously. To capture all 8 phase currents at&lt;br /&gt;
once, drop the terminal channels and derive totals by summation.&lt;br /&gt;
&lt;br /&gt;
=== Firmware preparation ===&lt;br /&gt;
&lt;br /&gt;
# Build the &amp;lt;code&amp;gt;HW_EOIA65_6A&amp;lt;/code&amp;gt; target in the '''Debug''' configuration. Do not use the Simulation build, which substitutes a model for the power stage.&lt;br /&gt;
# Flash via ST-Link and TAG-Connect (J2, TC2030-NL).&lt;br /&gt;
# Connect USB for the serial terminal. Available commands: &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sens&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hwinfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;config_read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;config_write&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;config_default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Record the firmware version and git commit hash in the log before every session.&lt;br /&gt;
&lt;br /&gt;
=== Telemetry available without instruments ===&lt;br /&gt;
&lt;br /&gt;
* Serial terminal: &amp;lt;code&amp;gt;sens&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;calibrate_mppt.py PORT --read-val&amp;lt;/code&amp;gt; polls &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Ihigh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Ilow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Vlow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Vhigh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TempHeatsink&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TempAmbient&amp;lt;/code&amp;gt; at 2 Hz.&lt;br /&gt;
* CAN: status frame every 1000 ms, power frame every 500 ms. See &amp;lt;code&amp;gt;MPPT_ID32+0-4.dbc&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Firmware scope buffer: &amp;lt;code&amp;gt;scope_start()&amp;lt;/code&amp;gt;, up to &amp;lt;code&amp;gt;CONVERTER_SCOPE_CHANNELS&amp;lt;/code&amp;gt; channels sampled at the 20 kHz control rate.&lt;br /&gt;
&lt;br /&gt;
The firmware scope is the natural cross-validation target for the LMG671, see&lt;br /&gt;
[[#Experiment 2: Current-sense verification and calibration|Experiment 2]].&lt;br /&gt;
&lt;br /&gt;
== Experiment 1: Idle power teardown ==&lt;br /&gt;
&lt;br /&gt;
'''Question:''' a phase board reaches ~55 C with no power being harvested. Where does every&lt;br /&gt;
milliwatt go?&lt;br /&gt;
&lt;br /&gt;
'''Hero instrument:''' LMG671. Microwatt-resolution DC power is what makes the decomposition&lt;br /&gt;
credible.&lt;br /&gt;
&lt;br /&gt;
'''Hero shot:''' waterfall chart attributing the total idle dissipation to each contributor,&lt;br /&gt;
with the measured board temperature alongside each step.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
&lt;br /&gt;
# Bring both rails to the nominal operating point (e.g. 35 V in, 55 V out) with the board held in reset. Record LMG671 readings on the 3v3 rail, the 5v2 rail and both HV rails. '''This is the absolute floor''', resistive dividers and leakage only.&lt;br /&gt;
# Release reset with &amp;lt;code&amp;gt;outputEnalbeOnStartup = false&amp;lt;/code&amp;gt;. Delta from step 1 = MCU plus analogue front end.&lt;br /&gt;
# Set the MPPT to disabled (&amp;lt;code&amp;gt;MpptState_Disable&amp;lt;/code&amp;gt;) so &amp;lt;code&amp;gt;DREN&amp;lt;/code&amp;gt; is de-asserted and the bridge is not switching. Confirm via &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;. Delta from step 2 should be near zero; a large delta means something is switching that should not be.&lt;br /&gt;
# Enable the output with no input power available. Delta from step 3 = power-stage idle loss plus any reverse power flow.&lt;br /&gt;
# At each step, log &amp;lt;code&amp;gt;TempHeatsink&amp;lt;/code&amp;gt; (NT2) and &amp;lt;code&amp;gt;TempAmbient&amp;lt;/code&amp;gt; (NT1) after a 20-minute thermal soak, plus a thermal camera frame.&lt;br /&gt;
# '''Check &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt; at step 4.''' The default configuration sets &amp;lt;code&amp;gt;LowSideCurrentMinLimitSoft = -300 mA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PhaseHighSideEnableCurrent = -500 mA&amp;lt;/code&amp;gt;, which permit reverse inductor current. If &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt; sits at -0.3 A, the phase is actively pumping power from the battery back into the panel. Record the value and compute the drain across all 8 phases.&lt;br /&gt;
# Repeat step 4 with &amp;lt;code&amp;gt;LowSideCurrentMinLimitSoft = 0&amp;lt;/code&amp;gt; to quantify the reverse-flow contribution in isolation.&lt;br /&gt;
&lt;br /&gt;
=== Expected ===&lt;br /&gt;
&lt;br /&gt;
Roughly 0.5 to 1.2 W per phase total, with the power stage accounting for the large&lt;br /&gt;
majority and the MCU 0.10 to 0.15 W. Reverse-current pumping, if present, is the single&lt;br /&gt;
largest term and shows up as a battery drain far larger than the on-board dissipation.&lt;br /&gt;
&lt;br /&gt;
=== Pass criteria ===&lt;br /&gt;
&lt;br /&gt;
Every measured step accounted for within 10% of the sum of its identified contributors.&lt;br /&gt;
Unattributed residual is itself a finding, so log it rather than hiding it.&lt;br /&gt;
&lt;br /&gt;
== Experiment 2: Current-sense verification and calibration ==&lt;br /&gt;
&lt;br /&gt;
'''Question:''' the output current reading is known to run high. Why, and by how much?&lt;br /&gt;
&lt;br /&gt;
'''Hero instruments:''' MXO34 (12-bit, to see the pre-filter waveform) and LMG671 (as the&lt;br /&gt;
reference for calibration).&lt;br /&gt;
&lt;br /&gt;
'''Hero shot:''' two panels. The &amp;lt;code&amp;gt;CURR_SE&amp;lt;/code&amp;gt; waveform showing pulsed shunt current&lt;br /&gt;
against the smooth inductor current, and a scatter plot of firmware-reported versus&lt;br /&gt;
LMG671-measured output current, before and after calibration.&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
The local output capacitance is C18 to C23 (6 x 1 uF 0603) plus C24. The schematic notes&lt;br /&gt;
&amp;quot;each about 130nF left at 55v&amp;quot;, so effective local capacitance at 55 V is roughly 4.8 uF&lt;br /&gt;
(|Z| approximately 0.33 Ohm at 100 kHz). The declared 400 uF of bulk sits on the baseboard,&lt;br /&gt;
on the far side of the output shunt, reachable only through ~2 mOhm plus interconnect&lt;br /&gt;
inductance (|Z| approximately 0.13 Ohm at 200 nH). The lower-impedance path is therefore&lt;br /&gt;
through the shunt, so roughly 70% of the bridge's pulsed current flows through the sense&lt;br /&gt;
element rather than being absorbed locally.&lt;br /&gt;
&lt;br /&gt;
The ADC samples this with a 267 ns aperture at a fixed phase locked to the PWM, so the&lt;br /&gt;
residual ripple contributes a systematic offset rather than averageable noise.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
&lt;br /&gt;
# Capture &amp;lt;code&amp;gt;CURR_SE&amp;lt;/code&amp;gt; (MXO34 ch4) together with the low-side gate drive. Confirm the pulse train: approximately zero during D, approximately &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt; during (1-D).&lt;br /&gt;
# '''Look for flat tops.''' At &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt; peaks near 13 A the INA253 output demands 0.5 + 2.6 = 3.1 V, into the supply rail. If the peaks are clipped or slew-limited, the error is nonlinear and '''no amount of downstream averaging will fix it'''. This determines whether the software mitigation is worth implementing at all.&lt;br /&gt;
# Simultaneously log firmware &amp;lt;code&amp;gt;Ihigh&amp;lt;/code&amp;gt; (via &amp;lt;code&amp;gt;--read-val&amp;lt;/code&amp;gt;) and LMG671 output current across the full current range at several bus voltages. Plot the error.&lt;br /&gt;
# Repeat for &amp;lt;code&amp;gt;Iind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Vlow&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Vhigh&amp;lt;/code&amp;gt;. The input shunt carries continuous inductor current and should show a much smaller error; that contrast is the point.&lt;br /&gt;
# Run the calibration procedure using the LMG671 as reference: &amp;lt;code&amp;gt;python calibrate_mppt.py PORT&amp;lt;/code&amp;gt;, then menu options 3 to 10 (zero offset and gain for each of input voltage, output voltage, input current, output current), option 11 for the NTC, and '''option 12 to store to EEPROM'''.&lt;br /&gt;
# Re-run step 3 and overlay before and after.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
Calibration corrects gain and offset. It '''cannot''' correct the ripple-induced error,&lt;br /&gt;
because that error varies with duty cycle and load. Expect a residual that scales with&lt;br /&gt;
output ripple, and report it as such.&lt;br /&gt;
&lt;br /&gt;
Also worth logging: &amp;lt;code&amp;gt;phase.Ihigh&amp;lt;/code&amp;gt; is unfiltered&lt;br /&gt;
(&amp;lt;code&amp;gt;CURRENT_IN_FORGETING_FACTOR = 0&amp;lt;/code&amp;gt;) and feeds the 13 A hard fault directly, so a&lt;br /&gt;
single sample landing on a ripple peak can cause a nuisance trip. Record any spurious&lt;br /&gt;
&amp;lt;code&amp;gt;Converter_OutputOverCurrent&amp;lt;/code&amp;gt; events observed during the campaign.&lt;br /&gt;
&lt;br /&gt;
== Experiment 3: Dead-time optimisation ==&lt;br /&gt;
&lt;br /&gt;
'''Question:''' is 8 ns of dead time causing shoot-through, and what is the optimum?&lt;br /&gt;
&lt;br /&gt;
'''Hero instrument:''' RT-ZISO. High-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; on a node slewing 55 V in&lt;br /&gt;
nanoseconds is exactly what a differential probe cannot measure.&lt;br /&gt;
&lt;br /&gt;
'''Hero shot:''' three stacked panels sharing an x-axis. Gate overlap waveforms at 8 ns&lt;br /&gt;
versus the optimum, LMG671 efficiency versus dead time, and &amp;lt;code&amp;gt;Tfets&amp;lt;/code&amp;gt; versus dead&lt;br /&gt;
time. One image, three independent measurements, one causal chain.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisite ===&lt;br /&gt;
&lt;br /&gt;
The dead-time register write in &amp;lt;code&amp;gt;pwm.c&amp;lt;/code&amp;gt; previously OR-ed the computed value onto&lt;br /&gt;
the HAL default, so most settings landed on the wrong value. '''This must be fixed before&lt;br /&gt;
the sweep is meaningful.''' With the fix in place the commanded value is written directly.&lt;br /&gt;
&lt;br /&gt;
Historical behaviour, for reference. Note that 15 ns and 20 ns were previously identical on&lt;br /&gt;
hardware, so any earlier sweep would have shown no difference between them:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Commanded !! Register count !! Actual, before fix !! Actual, after fix&lt;br /&gt;
|-&lt;br /&gt;
| 8 ns || 10 || 8.33 ns || 8.33 ns&lt;br /&gt;
|-&lt;br /&gt;
| 10 ns || 12 || 11.67 ns || 10.00 ns&lt;br /&gt;
|-&lt;br /&gt;
| 15 ns || 18 || '''21.67 ns''' || 15.00 ns&lt;br /&gt;
|-&lt;br /&gt;
| 20 ns || 24 || '''21.67 ns''' || 20.00 ns&lt;br /&gt;
|-&lt;br /&gt;
| 30 ns || 36 || '''38.33 ns''' || 30.00 ns&lt;br /&gt;
|-&lt;br /&gt;
| 40 ns || 48 || '''48.33 ns''' || 40.00 ns&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dead-time resolution is 1/(f&amp;lt;sub&amp;gt;HRTIM&amp;lt;/sub&amp;gt; x 8) = 0.83 ns per count at 150 MHz. If the&lt;br /&gt;
system clock is changed, the quantisation changes with it.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
&lt;br /&gt;
# Verify the fix: set &amp;lt;code&amp;gt;HW_DEADTIMERISING&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;HW_DEADTIMEFALLING&amp;lt;/code&amp;gt; to 20 ns, halt, and read &amp;lt;code&amp;gt;HRTIM1-&amp;gt;sTimerxRegs[1].DTxR&amp;lt;/code&amp;gt;. Expect DTR and DTF fields = 24, not 26.&lt;br /&gt;
# Establish a fixed operating point (for example 35 V in, 55 V out, 4 A per phase) and let it thermally soak for 20 minutes.&lt;br /&gt;
# For each dead-time value in 5, 8, 10, 15, 20, 25, 30, 40 ns: rebuild, flash, soak 20 min, then record LMG671 efficiency, &amp;lt;code&amp;gt;Tfets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Tambient&amp;lt;/code&amp;gt;, and an MXO34 capture of high-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; plus low-side V&amp;lt;sub&amp;gt;GS&amp;lt;/sub&amp;gt; plus SW node plus inductor current.&lt;br /&gt;
# Inspect each capture for genuine gate overlap. Overlap plus a current spike on the switch node at the transition is shoot-through.&lt;br /&gt;
# Plot efficiency and temperature against dead time on a shared axis.&lt;br /&gt;
&lt;br /&gt;
=== Expected ===&lt;br /&gt;
&lt;br /&gt;
A U-shaped efficiency curve. Too little dead time causes shoot-through; too much forces the&lt;br /&gt;
inductor current through the high-side device in reverse-conduction mode at a significantly&lt;br /&gt;
higher voltage drop. GaN devices have no body diode, so the reverse-conduction penalty at&lt;br /&gt;
excessive dead time is steeper than for a silicon bridge.&lt;br /&gt;
&lt;br /&gt;
=== Safety ===&lt;br /&gt;
&lt;br /&gt;
Below 8 ns, shoot-through risk is real. Start at reduced bus voltage and reduced current,&lt;br /&gt;
watch &amp;lt;code&amp;gt;Tfets&amp;lt;/code&amp;gt; continuously, and abort on any rapid temperature rise.&lt;br /&gt;
&lt;br /&gt;
== Experiment 4: Interleaving ripple cancellation ==&lt;br /&gt;
&lt;br /&gt;
'''Question:''' does the 8-phase interleaving actually cancel bus ripple as designed?&lt;br /&gt;
&lt;br /&gt;
'''Hero instrument:''' MXO34. Roughly 45 k FFT/s makes this live rather than a slideshow of&lt;br /&gt;
captures.&lt;br /&gt;
&lt;br /&gt;
'''Hero shot:''' video of the live input-ripple spectrum while the interleaving is dialled&lt;br /&gt;
from all-in-phase to fully staggered. The 100 kHz fundamental and its harmonics collapse in&lt;br /&gt;
real time and 800 kHz emerges. This is the most visually striking result available from this&lt;br /&gt;
hardware.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
&lt;br /&gt;
# Load all 8 phases at a common operating point.&lt;br /&gt;
# Configure the MXO34 for live FFT of the battery-bus ripple current, span covering 50 kHz to 2 MHz.&lt;br /&gt;
# Baseline: force all phases in phase (identical &amp;lt;code&amp;gt;PHASE_EN&amp;lt;/code&amp;gt; alignment). Capture the spectrum.&lt;br /&gt;
# Step the interleaving toward the designed 8-way stagger. Record continuously.&lt;br /&gt;
# Capture the final staggered spectrum and measure the attenuation of the 100 kHz component and the amplitude of the new 800 kHz component.&lt;br /&gt;
# '''Companion capture:''' LMG671 transient recorder at 10 MS/s on as many phase currents as channels allow, giving 8 staggered triangle waves in one frame. Note the channel budget constraint.&lt;br /&gt;
&lt;br /&gt;
=== Expected ===&lt;br /&gt;
&lt;br /&gt;
Substantial attenuation of the 100 kHz fundamental with energy reappearing at&lt;br /&gt;
8 x 100 kHz = 800 kHz. Quantify rather than asserting; imperfect current sharing between&lt;br /&gt;
phases limits the achievable cancellation, and that mismatch is itself a useful result.&lt;br /&gt;
&lt;br /&gt;
== Experiment 5: Efficiency map and phase shedding ==&lt;br /&gt;
&lt;br /&gt;
'''Question:''' what is peak efficiency, with what uncertainty, and what is the optimal&lt;br /&gt;
number of active phases at partial load?&lt;br /&gt;
&lt;br /&gt;
'''Hero instrument:''' LMG671. At 25 W per phase the differences between shedding schedules&lt;br /&gt;
are fractions of a percent, so accuracy is the whole justification.&lt;br /&gt;
&lt;br /&gt;
'''Hero shots:''' an efficiency contour map over the operating envelope with an explicit&lt;br /&gt;
uncertainty budget; and a family of 8 efficiency curves whose crossing points define the&lt;br /&gt;
shedding schedule.&lt;br /&gt;
&lt;br /&gt;
=== Procedure: efficiency map ===&lt;br /&gt;
&lt;br /&gt;
# Define the reference planes precisely and document them. State whether connector and cable losses are attributed to the converter. '''This decision must be stated in any published figure.'''&lt;br /&gt;
# Sweep input voltage 20 to 55 V and per-phase current 0 to 8 A on a grid. Soak to thermal equilibrium at each point.&lt;br /&gt;
# Record LMG671 input power, output power, efficiency, and both NTC temperatures.&lt;br /&gt;
# Produce a contour map. Compare against the existing plots in &amp;lt;code&amp;gt;Measurements/&amp;lt;/code&amp;gt; (50 V, 64 V, 72 V) as a sanity check on the older hardware.&lt;br /&gt;
&lt;br /&gt;
=== Procedure: phase shedding ===&lt;br /&gt;
&lt;br /&gt;
# Sweep total system power from ~100 W to full rated.&lt;br /&gt;
# At each power level, measure efficiency with N = 1, 2, 4, 6, 8 phases active.&lt;br /&gt;
# Plot the family of curves and locate the crossing points.&lt;br /&gt;
# Derive the optimal shedding schedule and '''implement it in firmware'''.&lt;br /&gt;
# Re-measure to confirm the predicted partial-load gain.&lt;br /&gt;
&lt;br /&gt;
=== Uncertainty budget ===&lt;br /&gt;
&lt;br /&gt;
At 99% efficiency the uncertainty budget is the result. Document:&lt;br /&gt;
&lt;br /&gt;
* Instrument accuracy specification at the actual operating point, not the headline figure.&lt;br /&gt;
* Sense-lead placement and what is included inside the measurement boundary.&lt;br /&gt;
* Thermal drift over a 30-minute soak, measured by repeating one point.&lt;br /&gt;
* Repeatability across at least 3 independent runs of the same point.&lt;br /&gt;
&lt;br /&gt;
A separate write-up on how not to overstate efficiency, derived from this section, would be&lt;br /&gt;
strong content in its own right and costs nothing extra to produce.&lt;br /&gt;
&lt;br /&gt;
== Optional experiments ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Experiment !! Procedure summary !! Hero instrument&lt;br /&gt;
|-&lt;br /&gt;
| '''Rare-event hunt''' || Zone trigger on SW-node overshoot above ~75 V. Run for hours across all 8 phases. Build a histogram of peak SW voltage over ~10&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; switching cycles and extract the worst outliers. || MXO34, since ~4.5 M acquisitions/s is the only practical way to catch one-in-10&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; events&lt;br /&gt;
|-&lt;br /&gt;
| '''True switching energy''' || De-skew carefully, then integrate v*i per transition. Plot E&amp;lt;sub&amp;gt;on&amp;lt;/sub&amp;gt; and E&amp;lt;sub&amp;gt;off&amp;lt;/sub&amp;gt; against current and compare to the EPC23102 datasheet. || RT-ZISO plus MXO34&lt;br /&gt;
|-&lt;br /&gt;
| '''MPPT tracking efficiency''' || Play a real cloudy-day irradiance profile into a solar array simulator. Compute energy captured divided by theoretical MPP energy, a different metric from conversion efficiency and rarely published honestly. || LMG671 data logger&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The tracking-efficiency experiment requires a solar array simulator, which is '''not&lt;br /&gt;
currently on the bench'''. The firmware contains an &amp;lt;code&amp;gt;Ipvmodel&amp;lt;/code&amp;gt; in&lt;br /&gt;
&amp;lt;code&amp;gt;testing.c&amp;lt;/code&amp;gt; for simulation, but real tracking numbers need real hardware. See&lt;br /&gt;
[[#Open items]].&lt;br /&gt;
&lt;br /&gt;
== Data logging conventions ==&lt;br /&gt;
&lt;br /&gt;
Store raw instrument exports alongside derived plots so results remain reproducible.&lt;br /&gt;
&lt;br /&gt;
 Measurements/&lt;br /&gt;
   YYYY-MM-DD_experiment/&lt;br /&gt;
     raw/          LMG671 and MXO34 exports, unmodified&lt;br /&gt;
     telemetry/    calibrate_mppt.py and CAN logs&lt;br /&gt;
     notes.md      operating point, firmware commit, instrument setup, de-skew values&lt;br /&gt;
     plots/        derived figures&lt;br /&gt;
&lt;br /&gt;
Every session record must include: firmware git commit, hardware serial, ambient&lt;br /&gt;
temperature, source and load configuration, instrument model and options, de-skew values,&lt;br /&gt;
and soak duration. A figure without its operating point is not a result.&lt;br /&gt;
&lt;br /&gt;
== Publication checklist ==&lt;br /&gt;
&lt;br /&gt;
Before posting any measurement:&lt;br /&gt;
&lt;br /&gt;
# Operating point stated on the figure, no exceptions.&lt;br /&gt;
# Uncertainty stated for any efficiency or accuracy claim.&lt;br /&gt;
# Measurement boundary defined for any efficiency claim.&lt;br /&gt;
# Firmware commit recorded, so the result is reproducible.&lt;br /&gt;
# Instrument model and relevant options named.&lt;br /&gt;
# Result independently repeated at least once.&lt;br /&gt;
&lt;br /&gt;
=== Suggested narrative order ===&lt;br /&gt;
&lt;br /&gt;
Posting the unflattering result first is what makes the good result believable later.&lt;br /&gt;
&lt;br /&gt;
# Our MPPT runs at 55 C doing nothing. Experiment 1, opens with the problem.&lt;br /&gt;
# Our own current sensor was lying. Experiment 2, resolves a mystery from post 1.&lt;br /&gt;
# 8 ns of dead time cost us N degrees. Experiment 3, the payoff.&lt;br /&gt;
# What 8 interleaved GaN phases look like. Experiment 4, pure spectacle.&lt;br /&gt;
# 99.x%, and here is our uncertainty budget. Experiment 5, the credibility close.&lt;br /&gt;
&lt;br /&gt;
== Open items ==&lt;br /&gt;
&lt;br /&gt;
* Confirm RT-ZISO model bandwidth and isolation rating.&lt;br /&gt;
* Confirm LMG671 includes transient-recording and data-logger options.&lt;br /&gt;
* Source a solar array simulator, or arrange an alternative for tracking-efficiency work.&lt;br /&gt;
* Confirm which hardware revision is on the bench, and therefore which grounding rules apply.&lt;br /&gt;
* Coordinate with R&amp;amp;S applications engineering, who will co-develop the setups and usually have specific product messaging to hit.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Open-SEC Firmware/src/hardware/eoia656a.h&amp;lt;/code&amp;gt;, hardware parameter definitions&lt;br /&gt;
* &amp;lt;code&amp;gt;calibrate_mppt.py&amp;lt;/code&amp;gt;, calibration and live telemetry tool&lt;br /&gt;
* &amp;lt;code&amp;gt;MPPT_ID32+0-4.dbc&amp;lt;/code&amp;gt;, CAN database&lt;br /&gt;
* &amp;lt;code&amp;gt;Measurements/&amp;lt;/code&amp;gt;, prior efficiency and loss plots&lt;br /&gt;
&lt;br /&gt;
[[Category:Measurement]]&lt;br /&gt;
[[Category:GaN MPPT]]&lt;/div&gt;</summary>
		<author><name>Aran Dokoupil</name></author>
	</entry>
</feed>