Compare commits
2 Commits
a0bfb24a57
...
8ebc6a36bc
Author | SHA1 | Date | |
---|---|---|---|
8ebc6a36bc | |||
02512129e2 |
40
epoxy_transducer/tof_data.py
Normal file
40
epoxy_transducer/tof_data.py
Normal file
@ -0,0 +1,40 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
num_meas = 4
|
||||
|
||||
# speed of sound m/s
|
||||
sos = 1500
|
||||
|
||||
# depth of the tub in mm
|
||||
tub_depth = 690
|
||||
|
||||
# distances from the top measured at in mm
|
||||
distance = [0,138,276,414]
|
||||
|
||||
# distance from the bottom
|
||||
distance_to_bot = np.empty(num_meas)
|
||||
for i in range(num_meas):
|
||||
distance_to_bot[i] = tub_depth - distance[i]
|
||||
|
||||
# time from pulse to reflection measuredin uS
|
||||
tof = [912,758,614,486]
|
||||
|
||||
# tot distance traveled
|
||||
distance_traveled = np.empty(num_meas)
|
||||
for i in range(num_meas):
|
||||
distance_traveled[i] = (690*2) - (distance[i] * 2)
|
||||
|
||||
# ideal time from pulse to reflection measured uS
|
||||
tof_expected = np.empty(num_meas)
|
||||
for i in range(num_meas):
|
||||
tof_expected[i] = ((distance_traveled[i] * 1e-3) / sos) * 1e6
|
||||
|
||||
plt.figure(1)
|
||||
plt.plot(distance_to_bot, tof, label = 'tof measured in uS')
|
||||
plt.plot(distance_to_bot, tof_expected, label = 'tof expected in uS')
|
||||
plt.xlabel('Distance to bottom [mm]')
|
||||
plt.ylabel('Time [uS]')
|
||||
plt.title('Tof Data')
|
||||
plt.xlim(max(distance_to_bot),min(distance_to_bot))
|
||||
plt.legend()
|
45
scope_fft/scope_fft.py
Normal file
45
scope_fft/scope_fft.py
Normal file
@ -0,0 +1,45 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def sig_fft(file1, file2):
|
||||
# Load data from CSV files
|
||||
data = np.genfromtxt(file1, delimiter=',')[2:]
|
||||
data2 = np.genfromtxt(file2, delimiter=',')[2:]
|
||||
|
||||
# find where data is nan
|
||||
n_index = np.argmax(np.isnan(data[:,1]))
|
||||
n_index2 = np.argmax(np.isnan(data2[:,1]))
|
||||
# Define each column
|
||||
time = data[:n_index, 0]
|
||||
rx_signal = data[:n_index, 1]
|
||||
tx_signal = data[:n_index, 2]
|
||||
num_samples = time.size
|
||||
fs1 = 1 / (time[1] - time[0]) # Set sampling frequency
|
||||
|
||||
# Define each column for data 2
|
||||
time2 = data2[:n_index2, 0]
|
||||
rx_signal2 = data2[:n_index2, 1]
|
||||
tx_signal2 = data2[:n_index2, 2]
|
||||
num_samples2 = time2.size
|
||||
fs2 = 1 / (time2[1] - time2[0]) # Set sampling frequency
|
||||
# Plot raw data
|
||||
plt.figure(1)
|
||||
plt.plot(time, rx_signal, label='Data 1')
|
||||
plt.plot(time2, rx_signal2, label='Data 2')
|
||||
plt.title('Unfiltered Data')
|
||||
plt.legend()
|
||||
|
||||
# fft for data 1
|
||||
sigfft = np.fft.fft(rx_signal)
|
||||
freq = np.fft.fftfreq(rx_signal.shape[-1], 1/(fs1))
|
||||
# fft for data 2
|
||||
sigfft2 = np.fft.fft(rx_signal2)
|
||||
freq2 = np.fft.fftfreq(rx_signal2.shape[-1], 1/(fs2))
|
||||
# plot fft
|
||||
plt.figure(2)
|
||||
plt.plot(freq, np.abs(sigfft), label='Data 1')
|
||||
plt.plot(freq2, np.abs(sigfft2), label='Data 2')
|
||||
plt.title('FFT of Data')
|
||||
plt.xlim(0, 20000)
|
||||
|
||||
plt.show()
|
Loading…
Reference in New Issue
Block a user