Skip to content

Commit

Permalink
Add: Tle5012b encoder
Browse files Browse the repository at this point in the history
  • Loading branch information
Suke0811 committed Sep 20, 2024
1 parent aead961 commit b9d125b
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
77 changes: 77 additions & 0 deletions edg/parts/Tle5012b.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from edg.abstract_parts import *
from edg.parts.JlcPart import JlcPart


class Tle5012b_Device(InternalSubcircuit, FootprintBlock, JlcPart):
def __init__(self) -> None:
super().__init__()
self.vdd = self.Port(VoltageSink(
voltage_limits=(3.0, 5.5) * Volt,
current_draw=(5 * uAmp, 16 * mAmp)
))
self.gnd = self.Port(Ground())

dio_model = DigitalBidir.from_supply(
self.gnd, self.vdd,
voltage_limit_tolerance=(-0.3, 0.3) * Volt,
input_threshold_factor=(0.3, 0.7),
current_limits=(5 * uAmp, 25 * mAmp)
)
dio_model_sck = DigitalSink.from_supply(self.gnd, self.vdd,
voltage_limit_tolerance=(-0.3, 0.3) * Volt)
self.sck = self.Port(dio_model_sck)
self.csq = self.Port(dio_model_sck)
self.data = self.Port(DigitalSink.from_bidir(dio_model))

if_dio_model = DigitalBidir.from_supply(
self.gnd, self.vdd,
voltage_limit_tolerance=(-0.3, 0.3) * Volt,
input_threshold_factor=(0.3, 0.7),
current_limits=(5 * uAmp, 15 * mAmp)
)

self.ifa = self.Port(DigitalSource.from_bidir(if_dio_model), optional=True)
self.ifb = self.Port(DigitalSource.from_bidir(if_dio_model), optional=True)
self.ifc = self.Port(DigitalSource.from_bidir(if_dio_model), optional=True)

def contents(self) -> None:
self.footprint(
'U', 'fp:SO8_PG-DSO-8_INF',
{
'1': self.ifc,
'2': self.sck,
'3': self.csq,
'4': self.data,
'5': self.ifa,
'6': self.vdd,
'7': self.gnd,
'8': self.ifb
},
mfr='Infineon', part='Tle5012b',
datasheet='https://www.infineon.com/cms/en/product/sensor/magnetic-sensors/magnetic-position-sensors/angle-sensors/tle5012b-e1000/'
)
self.assign(self.lcsc_part, 'C123083')
self.assign(self.actual_basic_part, False)


class Tle5012b(Magnetometer, DefaultExportBlock):
"""Angle sensor based on Giant Magneto Resistance (GMR) for precise angular position sensing."""

def __init__(self):
super().__init__()
self.ic = self.Block(Tle5012b_Device())
self.gnd = self.Export(self.ic.gnd, [Common])
self.pwr = self.Export(self.ic.vdd, [Power])

self.sck = self.Export(self.ic.sck, optional=True)
self.csq = self.Export(self.ic.csq, optional=True)
self.data = self.Export(self.ic.data, optional=True)

self.ifa = self.Export(self.ic.ifa, optional=True,
doc="IIF Phase A / Hall Switch Signal 1 / PWM / SPC output (input for SPC trigger only)")
self.ifb = self.Export(self.ic.ifb, optional=True, doc="IIF Phase B / Hall Switch Signal 2")
self.ifc = self.Export(self.ic.ifc, optional=True, doc="External Clock / IIF Index / Hall Switch Signal 3")

def contents(self):
super().contents()
self.vdd_cap = self.Block(DecouplingCapacitor(100 * nFarad(tol=0.2))).connected(self.gnd, self.ic.vdd)
1 change: 1 addition & 0 deletions edg/parts/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from .Switches import SmtSwitch, SmtSwitchRa, KailhSocket
from .RotaryEncoder_Alps import Ec11eWithSwitch, Ec11j15WithSwitch, Ec05e
from .RotaryEncoder_Bourns import Pec11s
from .Tle5012b import Tle5012b
from .DirectionSwitch_Alps import Skrh
from .JlcCrystal import JlcCrystal
from .JlcOscillator import JlcOscillator
Expand Down

0 comments on commit b9d125b

Please sign in to comment.