def calculate_velocity(read_data): photogate_derivative = np.diff(read_data) one_section_period = fan.peak_separation(photogate_derivative, dt, prominence=1, height=2) return circunference / (chopper_sections * one_section_period)
def calculate_photogate_frequency(read_data): """Returns frequency of photogate signal expressed on a.u.""" # This function is used to analyze each measurement photogate_derivative = np.diff(read_data) photogate_period = fan.peak_separation(photogate_derivative, prominence=1, height=2) return 1 / photogate_period
def calculate_velocity_error(data): time = data[:,0] read_data = data[:,1] photogate_derivative = np.diff(read_data) one_section_period, error = peak_separation( photogate_derivative, np.mean(np.diff(time)), prominence=1, height=2, return_error=True) velocity = circunference / (chopper_sections * one_section_period) error = circunference*error/(chopper_sections*one_section_period**2) return velocity, error
def calculate_duty(read_data): global last_velocity # Now I apply PID photogate_derivative = np.diff(read_data) try: angular_velocity = fan.peak_separation(photogate_derivative, pid.dt, prominence=1, height=2) velocity = angular_velocity * wheel_radius except ValueError: # No peaks found velocity = pid.last_log.feedback_value # Return last value new_dc = pid.calculate(velocity) return new_dc