Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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