import numpy as np import matplotlib.pyplot as plt import IIR_filter import zerocross_meas import fundamental_freq_meas import fft_meas class measurements(object): """docstring for fft_meas""" def __init__(self, fs=50e3): # Sample Frequency self.fs = fs # Sample Period self.ts = 1/self.fs # Low Pass Filter # fs = Sample Frequency, fc = LP Cutoff Frequency self.LPfilter = IIR_filter.IIR_1_Order_LP(fs=self.fs, fc=200) # Zero Crossing Algorithem # fs = Sample Frequency, fc = LP Cutoff Frequency self.zerocross = zerocross_meas.zerocross_meas() # Fundamental Frequency Algorithem # fs = Sample Frequency, tn = Time Period for calculations self.base_freq = fundamental_freq_meas.fundamental_freq_meas(fs=self.fs, tn=1) # FFT Algorithem # fs = Sample Frequency, tn = Time Period for calculations # 61000-4-7 says 200ms # 10-cycles for 50Hz # 12-cycles for 60Hz self.fft = fft_meas.fft_meas(fs=self.fs, tn=0.2) def Interupt(self, y): # Filter Input y_hat = self.LPfilter.step(y) # Zerocross detection (self.zerocross.flag) self.zerocross.detect(y_hat) # Calculate the Fundamental frequency (self.base_freq.freq) self.base_freq.step(y_hat, self.zerocross.flag) # Calculate the FFT of the signal self.fft.step(y, self.base_freq.freq, unit="I") def print(self): print(self.base_freq.freq) def plot(self): self.fft.plot_Y_H()