コード例 #1
0
ファイル: LM3150.py プロジェクト: chintal/tendril
    def _autoset_Cff(self):
        cff_dev = self.get_elem_by_idx('CFF').data['device']
        cff_fp = self.get_elem_by_idx('CFF').data['footprint']

        Zfb = self.RFB1 * (self.RFB2 / (self.RFB1 + self.RFB2))
        self.target_cff = Capacitance(
            (self.Vout / self.Vin_min) / (self.Fsw.value * Zfb.value)
        )

        allowed_cff_vals = iec60063.gen_vals(self._configdict['Cseries'],
                                             iec60063.cap_ostrs,
                                             self._configdict['Cmin'],
                                             self._configdict['Cmax'])

        best_match = None
        for c in allowed_cff_vals:
            err = abs(self.target_cff - Capacitance(c))
            if best_match is None or err < best_match[0]:
                best_match = (err, c)

        cff = gsymlib.find_capacitor(best_match[1], cff_fp, cff_dev)
        self.get_elem_by_idx('CFF').data['value'] = cff.value
コード例 #2
0
ファイル: electronics.py プロジェクト: SayCV/tendril
def jb_harmonize(item):
    ident = ident_transform(item.data['device'], item.data['value'],
                            item.data['footprint'])
    prefix = check_for_std_val(ident)
    if not prefix:
        return item
    else:
        if item.data['footprint'].startswith('MY-'):
            item.data['footprint'] = item.data['footprint'][3:]
        context = {
            'device': item.data['device'],
            'footprint': item.data['footprint']
        }
        if prefix == 'RES':
            params = parse_resistor(item.data['value'], context)
            from tendril.gedaif.gsymlib import find_resistor
            from tendril.gedaif.gsymlib import NoGedaSymbolException
            try:
                resistor = find_resistor(item.data['device'],
                                         item.data['footprint'],
                                         **params._asdict())
                item.data['value'] = resistor.value
            except NoGedaSymbolException:
                pass
            return item
        elif prefix == 'CAP':
            params = parse_capacitor(item.data['value'], context)
            from tendril.gedaif.gsymlib import find_capacitor
            from tendril.gedaif.gsymlib import NoGedaSymbolException
            try:
                capacitor = find_capacitor(item.data['device'],
                                           item.data['footprint'],
                                           **params._asdict())
                item.data['value'] = capacitor.value
            except NoGedaSymbolException:
                pass
            return item
        else:
            return item
コード例 #3
0
ファイル: LPF1.py プロジェクト: chintal/tendril
    def Fc(self, value):
        c1_dev = self.get_elem_by_idx('C1').data['device']
        c1_fp = self.get_elem_by_idx('C1').data['footprint']
        if c1_fp[0:3] == "MY-":
            c1_fp = c1_fp[3:]

        allowed_cap_vals = iec60063.gen_vals(self._configdict['Cseries'],
                                             iec60063.cap_ostrs,
                                             self._configdict['Cmin'],
                                             self._configdict['Cmax'])

        required_cap_val = 1 / (2 * pi * float(self.R1) * value)

        cval = None
        for val in allowed_cap_vals:
            lastval = cval
            cval = electronics.parse_capacitance(val)
            if cval >= required_cap_val:
                self.get_elem_by_idx('C1').data['value'] = gsymlib.find_capacitor(lastval, c1_fp, c1_dev).value  # noqa
                break

        if cval is None:
            raise ValueError
コード例 #4
0
ファイル: series.py プロジェクト: chintal/tendril
    def get_symbol(self, value, device=None, footprint=None):
        from tendril.gedaif import gsymlib

        if device is None:
            device = self._device
        if footprint is None:
            footprint = self._footprint

        if self._stype == 'resistor':
            if isinstance(value, (str, Resistance)):
                try:
                    return gsymlib.find_resistor(value, footprint, device)
                except (gsymlib.NoGedaSymbolException, InvalidOperation):
                    pass

        if self._stype == 'capacitor':
            if isinstance(value, (str, Capacitance)):
                try:
                    return gsymlib.find_capacitor(value, footprint, device)
                except (gsymlib.NoGedaSymbolException, InvalidOperation):
                    pass

        ident = electronics.ident_transform(device, value, footprint)
        return gsymlib.get_symbol(ident)
コード例 #5
0
ファイル: series.py プロジェクト: SayCV/tendril
    def get_symbol(self, value, device=None, footprint=None):
        from tendril.gedaif import gsymlib

        if device is None:
            device = self._device
        if footprint is None:
            footprint = self._footprint
        # TODO Handle other parameters such as wattage, voltage
        if self._stype == 'resistor':
            if isinstance(value, (str, Resistance)):
                try:
                    return gsymlib.find_resistor(device, footprint, value)
                except (gsymlib.NoGedaSymbolException, InvalidOperation):
                    pass

        if self._stype == 'capacitor':
            if isinstance(value, (str, Capacitance)):
                try:
                    return gsymlib.find_capacitor(device, footprint, value)
                except (gsymlib.NoGedaSymbolException, InvalidOperation):
                    pass

        ident = electronics.ident_transform(device, value, footprint)
        return gsymlib.get_symbol(ident)