Пример #1
0
def SC70(profile, num_pins):
    """Construct a land pattern for an SC70 device.
    
    Supports 5, 6 and 8-pin devices, with dimensions from JEDEC
    MO-203.
    """
    A = ipc.Dimension.from_nominal(1.25, 0.15)
    B = ipc.Dimension.from_nominal(2, 0.15)
    L = ipc.Dimension.from_nominal(2.1, 0.3)
    T = ipc.Dimension(0.26, 0.46)
    W = ipc.Dimension(0.15, 0.3)
    if num_pins == 5:
        # MO-203-C variant AA
        return ipc.sot23_5(A, B, L, T, W, 0.65,
                           ipc.LandPatternSize.SOT(profile, A, L, T, 0.65))
    elif num_pins == 6:
        # MO-203-C variant AB
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.65, 3, 0,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.65))
    elif num_pins == 8:
        # MO-203-C variant BA
        W = ipc.Dimension(0.15, 0.27)
        spec = ipc.LandPatternSize.SOT(profile, A, L, T, 0.5)
        return ipc.in_line_pin_device(A, B, L, B, T, W, 0.5, 4, 0, spec)
    else:
        raise ValueError(
            "No known standard dimensions for SOT23-{0}".format(num_pins))
Пример #2
0
def SC70(profile, num_pins):
    """Construct a land pattern for an SC70 device.
    
    Supports 5, 6 and 8-pin devices, with dimensions from JEDEC
    MO-203.
    """
    A = ipc.Dimension.from_nominal(1.25, 0.15)
    B = ipc.Dimension.from_nominal(2, 0.15)
    L = ipc.Dimension.from_nominal(2.1, 0.3)
    T = ipc.Dimension(0.26, 0.46)
    W = ipc.Dimension(0.15, 0.3)
    if num_pins == 5:
        # MO-203-C variant AA
        return ipc.sot23_5(
            A, B, L, T, W, 0.65,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.65))
    elif num_pins == 6:
        # MO-203-C variant AB
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.65, 3, 0,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.65))
    elif num_pins == 8:
        # MO-203-C variant BA
        W = ipc.Dimension(0.15, 0.27)
        spec = ipc.LandPatternSize.SOT(profile, A, L, T, 0.5)
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.5, 4, 0, spec)
    else:
        raise ValueError("No known standard dimensions for SOT23-{0}".format(num_pins))
Пример #3
0
def SOT23(profile, num_pins):
    """Construct a land pattern for a SOT23 device.
    
    Supports 3, 5, 6 and 8-pin devices, with dimensions from JEDEC
    TO-236 and MO-178.
    """
    if num_pins == 3:
        # Dimensions from JEDEC TO-236-A[AB]
        A = ipc.Dimension(1.2, 1.4)
        B = ipc.Dimension(2.8, 3.04)
        L = ipc.Dimension(2.1, 2.64)
        T = ipc.Dimension(0.4, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.sot23_3(
            A, B, L, T, W, 0.95,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 5:
        # Dimensions from JEDEC MO-178-C variant AA
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.sot23_5(
            A, B, L, T, W, 0.95,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 6:
        # Dimensions from JEDEC MO-178-C variant AB
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.95, 3, 0,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 8:
        # Dimensions from JEDEC MO-178-C variant BA
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.22, 0.38)
        # SOT23-8 is almost at the threshold where IPC switches to
        # much smaller side fillets. This causes overlap violations
        # with the Most profile. As such, we force the narrower pitch
        # profile here by using a smaller pitch.
        spec = ipc.LandPatternSize.SOT(profile, A, L, T, 0.6)
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.65, 4, 0, spec)
    else:
        raise ValueError("No known standard dimensions for SOT23-{0}".format(num_pins))
Пример #4
0
def SOT23(profile, num_pins):
    """Construct a land pattern for a SOT23 device.
    
    Supports 3, 5, 6 and 8-pin devices, with dimensions from JEDEC
    TO-236 and MO-178.
    """
    if num_pins == 3:
        # Dimensions from JEDEC TO-236-A[AB]
        A = ipc.Dimension(1.2, 1.4)
        B = ipc.Dimension(2.8, 3.04)
        L = ipc.Dimension(2.1, 2.64)
        T = ipc.Dimension(0.4, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.sot23_3(
            A, B, L, T, W, 0.95,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 5:
        # Dimensions from JEDEC MO-178-C variant AA
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.sot23_5(
            A, B, L, T, W, 0.95,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 6:
        # Dimensions from JEDEC MO-178-C variant AB
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.3, 0.5)
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.95, 3, 0,
            ipc.LandPatternSize.SOT(profile, A, L, T, 0.95))
    elif num_pins == 8:
        # Dimensions from JEDEC MO-178-C variant BA
        A = ipc.Dimension.from_nominal(1.6, 0.1)
        B = ipc.Dimension.from_nominal(2.9, 0.1)
        L = ipc.Dimension.from_nominal(2.8, 0.2)
        T = ipc.Dimension(0.3, 0.6)
        W = ipc.Dimension(0.22, 0.38)
        # SOT23-8 is almost at the threshold where IPC switches to
        # much smaller side fillets. This causes overlap violations
        # with the Most profile. As such, we force the narrower pitch
        # profile here by using a smaller pitch.
        spec = ipc.LandPatternSize.SOT(profile, A, L, T, 0.6)
        return ipc.in_line_pin_device(
            A, B, L, B, T, W, 0.65, 4, 0, spec)
    else:
        raise ValueError("No known standard dimensions for SOT23-{0}".format(num_pins))