Skip to content
Snippets Groups Projects
Commit 5edc4170 authored by Martin Killenberg's avatar Martin Killenberg
Browse files

implement humidty simulation

parent 2ac06cc7
No related branches found
No related tags found
No related merge requests found
......@@ -26,15 +26,22 @@ class VnaDummy:
self.simulated_frequency = '10.MHz'
self.simulated_magnitude_difference_temp = 0.0
self.simulated_phase_difference_temp = 0.0
self.simulated_magnitude_difference_hum = 0.0
self.simulated_phase_difference_hum = 0.0
self.simulated_state = shared_simulated_state.get_simulated_state()
self.last_simulated_time = self.simulated_state.simulated_time
self.tau_mag_temp = 25
self.tau_phase_temp = 35
self.tau_mag_temp = 25 # change rate of magnitude in dependence on temperature
self.tau_phase_temp = 35 # change rate of phase in dependence on temperature
self.tau_mag_hum = 250 # change rate of magnitude in dependence on humidity
self.tau_phase_hum = 350 # change rate of phase in dependence on humidity
self.reference_magnitude = 0.7 # at reference temp and reference hum
self.reference_phase = 70 # at reference temp and reference hum
self.reference_temp = 25
self.magnitude_slope_temp = 0.02
self.reference_hum = 35
self.magnitude_slope_temp = -0.02
self.magnitude_slope_hum = -0.018
self.phase_slope_temp = 0.1
self.phase_slope_hum = -0.15
self.communication_delay = 0.2
def run_simulation(self):
......@@ -44,26 +51,41 @@ class VnaDummy:
def simulate_magnitude(self):
target_magnitude_difference_temp = -1. * self.magnitude_slope_temp * \
target_magnitude_difference_temp = self.magnitude_slope_temp * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_magnitude = target_magnitude_difference_temp - self.simulated_magnitude_difference_temp
delta_magnitude_temp = target_magnitude_difference_temp - self.simulated_magnitude_difference_temp
target_magnitude_difference_hum = self.magnitude_slope_hum * \
(self.simulated_state.simulated_humidity - self.reference_hum)
delta_magnitude_hum = target_magnitude_difference_hum - self.simulated_magnitude_difference_hum
delta_time = self.simulated_state.simulated_time - self.last_simulated_time
self.simulated_magnitude_difference_temp = self.simulated_magnitude_difference_temp + \
delta_magnitude * \
delta_magnitude_temp * \
(1 - (math.exp(-1. * delta_time / self.tau_mag_temp)))
self.simulated_magnitude_difference_hum = self.simulated_magnitude_difference_hum + \
delta_magnitude_hum * \
(1 - (math.exp(-1. * delta_time / self.tau_mag_hum)))
def simulate_phase(self):
target_phase_difference_temp = self.phase_slope_temp * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_phase = target_phase_difference_temp - self.simulated_phase_difference_temp
delta_phase_temp = target_phase_difference_temp - self.simulated_phase_difference_temp
target_phase_difference_hum = self.phase_slope_hum * \
(self.simulated_state.simulated_humidity - self.reference_hum)
delta_phase_hum = target_phase_difference_hum - self.simulated_phase_difference_hum
delta_time = self.simulated_state.simulated_time - self.last_simulated_time
self.simulated_phase_difference_temp = self.simulated_phase_difference_temp + \
delta_phase * (1 - (math.exp(-1. * delta_time / self.tau_phase_temp)))
delta_phase_temp *\
(1 - (math.exp(-1. * delta_time / self.tau_phase_temp)))
self.simulated_phase_difference_hum = self.simulated_phase_difference_hum + \
delta_phase_hum *\
(1 - (math.exp(-1. * delta_time / self.tau_phase_hum)))
def get_tupple_of_current_traces(self):
"""
......@@ -101,9 +123,10 @@ class VnaDummy:
raise Exception('trace ' + trace + ' is not known to VNA dummy!')
self.result_format = result_format
simulated_magnitude = self.reference_magnitude + self.simulated_magnitude_difference_temp
simulated_phase = self.reference_phase + self.simulated_phase_difference_temp
simulated_magnitude = self.reference_magnitude + self.simulated_magnitude_difference_temp + \
self.simulated_magnitude_difference_hum
simulated_phase = self.reference_phase + self.simulated_phase_difference_temp + \
self.simulated_phase_difference_hum
phase_radian = simulated_phase / 180. * math.pi
real_val = simulated_magnitude * math.cos(phase_radian)
imaginary_val = simulated_magnitude * math.sin(phase_radian)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment