LFR CPU Powerdown effect on power supply emissions¶
Observed Problem¶
During MEB EMC test tests a 96Hz plus its harmonics was found. This polution has been tracked down to LFR. After some investigations this has been correlated to the LFR Spactral Matrices computation module which produce an interuption after each SM.
At F0(24576Hz) LFR compute a FFT of 256 points each $\frac{256}{24576}=10.416667ms \Leftrightarrow 96Hz$
Since LFR CPU and Flight SoftWare uses powerdown feature, the CPU is sleeping most of the time and woken up at 96Hz by SM module which produces a peak in power consuption.
Test goal¶
The aim of this test is to validate if a software solution can reduce or remove this pertubation. In this test, the solution tested is to create a new task with the lowest priority to keep CPU busy and avoid entering powerdown mode.
Instrument list¶
- SPW brick: StarDundee USB SPW brick MK1
- LFR PSU: Custom power supply
- LFR EGSE: Custom waveform generator
- I probe: Tektronix AM503A + A6302
- USB Scope: DreamSourceLab DSLogic Oscillosocpe
- LFR EQM2
Test Procedure¶
- Connect all equipment as described in setup
- Take pictures of the setup
- Calibrate I probes
- Start LFR EGSE
- Power ON LFR /
- check power consumption
- Boot LFR with FSW 3.2.0.15
- Record current and save it as FSW_3.2.0.15_STANDBY.csv
- Enter Normal mode
- Record current and save it as FSW_3.2.0.15_NORMAL.csv
- Enter BURST mode
- Record current and save it as FSW_3.2.0.15_BURST.csv
- Enter SBM1 mode
- Record current and save it as FSW_3.2.0.15_SBM1.csv
- Enter SBM2 mode
- Record current and save it as FSW_3.2.0.15_SBM2.csv
- Boot LFR with FSW 3.2.0.15 modified
- Record current and save it as FSW_3.2.0.15_NO_PWD_STANDBY.csv
- Enter Normal mode
- Record current and save it as FSW_3.2.0.15_NO_PWD_NORMAL.csv
- Enter BURST mode
- Record current and save it as FSW_3.2.0.15_NO_PWD_BURST.csv
- Enter SBM1 mode
- Record current and save it as FSW_3.2.0.15_NO_PWD_SBM1.csv
- Enter SBM2 mode
- Record current and save it as FSW_3.2.0.15_NO_PWD_SBM2.csv
- Turn OFF LFR
%matplotlib inline
import sys
import matplotlib.pyplot as plt
import numpy as np
import pandas as pds
from glob import glob
from IPython.display import display
from dateutil import parser
from IPython.display import HTML,Markdown,Math
from IPython.display import display
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<a href="javascript:code_toggle()"><font size="6">Show/Hide code</font></a>.''')
def plot(files,names,x_range=(1e1,5e2)):
plt.figure(figsize=(28,14))
for file,name in zip(files,names):
data=pds.read_csv(file,comment=';',skiprows=5,decimal=',',sep='\t')[:1024*512].as_matrix().flatten()
size=len(data)
avg=np.mean(data)
data-=avg
spec=np.fft.fftshift(np.abs(np.fft.fft(data*np.hanning(size)))/size)
f=np.fft.fftshift(np.fft.fftfreq(size,1./5e5))
plt.plot(f,spec,label=name)
plt.xlim(*x_range)
plt.ylim(1e-4,1.5)
plt.legend()
plt.semilogy()
plot(["../DATA/FSW_3.2.0.15_STANDBY.csv.gz","../DATA/FSW_3.2.0.15_NO_PWD_STANDBY.csv.gz"],["Default","With_Scrubbing"])
NORMAL mode¶
plot(["../DATA/FSW_3.2.0.15_NORMAL.csv.gz","../DATA/FSW_3.2.0.15_NO_PWD_NORMAL.csv.gz"],["Default","With_Scrubbing"])
BURST mode¶
plot(["../DATA/FSW_3.2.0.15_BURST.csv.gz","../DATA/FSW_3.2.0.15_NO_PWD_BURST.csv.gz"],["Default","With_Scrubbing"])
SBM1 mode¶
plot(["../DATA/FSW_3.2.0.15_SBM1.csv.gz","../DATA/FSW_3.2.0.15_NO_PWD_SBM1.csv.gz"],["Default","With_Scrubbing"])
SBM2 mode¶
plot(["../DATA/FSW_3.2.0.15_SBM2.csv.gz","../DATA/FSW_3.2.0.15_NO_PWD_SBM2.csv.gz"],["Default","With_Scrubbing"])
Modified FSW mode comparaison¶
modes=["STANDBY","NORMAL","BURST","SBM1","SBM2"]
files=["../DATA/FSW_3.2.0.15_NO_PWD_{mode}.csv.gz".format(mode=mode) for mode in modes]
plot(files,modes,x_range=(5e1,1.5e2))
Default FSW mode comparaison¶
modes=["STANDBY","NORMAL","BURST","SBM1","SBM2"]
files=["../DATA/FSW_3.2.0.15_{mode}.csv.gz".format(mode=mode) for mode in modes]
plot(files,modes,x_range=(5e1,1.5e2))
Conclusion¶
It is possible to reduce 96Hz emmision from LFR with a software modification, while this doesn't remove totaly the 96Hz pike this might be enough. It might also be possible to improve this result with more software modifications.