예제 #1
0
def linear_2_stages():
    g1 = SpurGear(10, 0.5, 0, 8)
    g2 = SpurGear(50, 0.5, 0, 8)
    g3 = SpurGear(13, 0.5, 0, 12)
    g4 = SpurGear(78, 0.5, 0, 12)
    a = Actuator(components=[GearPair(g1, g2, 0, 0), GearPair(g3, g4, 10, 0)])
    return a
예제 #2
0
def test_basic_gear_operations():
    pinion = SpurGear(25, 1., 0., 10)
    gear = SpurGear(80, 1., 0., 10)
    gp = GearPair(pinion, gear)
    assert abs(gear.alpha_p - np.pi / 9) < 1e-5
    assert abs(gp.contact_ratio - 1.719) < 1e-3
    assert gp.interference == 0
    excepted_volume = (25e-3 / 2)**2 * np.pi * 10e-3 + (80e-3 /
                                                        2)**2 * np.pi * 10e-3
    assert abs(gp.volume - excepted_volume) / excepted_volume < 1e-5

    gs = gp.specific_speed
    assert abs(gs[0] + 2.238193) < 1e-5
    assert abs(gs[1] + 0.884045) < 1e-5

    op = OperatingCondition(1000, 0.318, 12, 0.3)

    # Because dynamic factors are set to 1.
    # speed should not change stress
    assert gp.sigma_h(1000, 0.318) == gp.sigma_h(100, 0.318)

    sigF0, sigF = gp.sigma_f(1000, 0.318)
    assert abs(sigF0[0] - 7.16e6) / 7.16e6 < 0.06
    assert abs(sigF0[1] - 7.03e6) / 7.03e6 < 0.06
    assert sigF0[0] > sigF0[1]
    assert sigF[0] / sigF0[0] == 1.25

    sigH0, sigH = gp.sigma_h(1000, 0.318)
    assert abs(sigH0 - 150.9e6) / 150.9e6 < 0.01
    assert abs(sigH[0] - 177.62e6) / 177.62e6 < 0.01
    assert abs(sigH[1] - 168.71e6) / 168.71e6 < 0.01
    gp.security_h(op)
    gp.security_f(op)
예제 #3
0
def broken_motored_2_stages():
    s = Stepper('A', motor_data['A'])
    g1 = SpurGear(10, 0.8, 0, 8)
    g2 = SpurGear(50, 0.8, 0, 8)
    g3 = SpurGear(13, 0.5, 0, 12)
    g4 = SpurGear(80, 0.5, 0, 12)
    comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, -3, -2.3)]
    return Actuator(components=comp)
예제 #4
0
def impossible_motored_2_stages():
    s = Stepper('B', motor_data['B'])
    g1 = SpurGear(10, 0.8, 0, 8)
    g2 = SpurGear(35, 0.8, 0, 8)
    g3 = SpurGear(25, 0.5, 0, 12)
    g4 = SpurGear(80, 0.5, 0, 12)
    comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, -30, -2.3)]
    a = Actuator(components=comp)
    return a
예제 #5
0
def good_motored_2_stages():
    s = Stepper('A', motor_data['A'])
    g1 = SpurGear(17, 0.5, 0.15, 8)
    g2 = SpurGear(60, 0.5, -0.15, 8)
    g3 = SpurGear(17, 0.5, 0.15, 12)
    g4 = SpurGear(78, 0.5, -0.15, 12)
    comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, 10, -2.3)]
    a = Actuator(components=comp)
    return a
예제 #6
0
def test_gear_mesh_small_stretch():
    g1 = SpurGear(25, 0.5, 0, 10)
    g2 = SpurGear(80, 0.5, 0, 10)
    gp = GearPair(g1, g2, GearPair.stretch_margin / 2, 0)
    actuator = Actuator(components=[gp])
    meshes, _, space = actuator.mesh
    assert np.allclose(space.bounds[:, 2], [gp.disp, gp.disp + 5.])

    assert np.allclose(meshes[0].bounds[:, 2], [gp.disp, gp.disp + 5.])
    assert np.allclose(meshes[1].bounds[:, 2], [gp.disp, gp.disp + 5.])
예제 #7
0
def test_gear_mesh_minus_stretch():
    g1 = SpurGear(25, 0.5, 0, 10)
    g2 = SpurGear(80, 0.5, 0, 10)
    gp = GearPair(g1, g2, -10, 0)
    actuator = Actuator(components=[gp])
    meshes, _, space = actuator.mesh
    assert np.allclose(space.bounds[:, 2], [-15., -gp.stretch_margin])

    assert np.allclose(meshes[0].bounds[:, 2], [-15., -gp.stretch_margin])
    assert np.allclose(meshes[1].bounds[:, 2], [-15., -10.])