{
  "metadata": {
    "id": "towerpro-sg90",
    "name": "Tower Pro SG90",
    "type": "servo",
    "description": "9 g analog micro servo for RC and robotics. ~180° travel, 4.8–6.0 V supply, ~1.2–1.8 kg·cm stall torque depending on source.",
    "manufacturer": "Tower Pro",
    "part_number": "SG90",
    "datasheet_url": "https://towerpro.com.tw/product/sg90-analog/",
    "tags": [
      "sg90",
      "micro-servo",
      "rc-servo",
      "9g",
      "pwm"
    ],
    "schema_version": "1.4.0",
    "version": "0.2.0",
    "taxonomy": [
      "actuator.motor.servo",
      "robotics.rc"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "servo_5v",
          "name": "Servo 5V Rail",
          "nominal_voltage_V": 5,
          "voltage_range_V": [
            4.8,
            6
          ],
          "max_current_mA": 650,
          "regulation_type": "unregulated",
          "isolation_type": "non_isolated",
          "ground_reference": "system_ground",
          "description": "Primary supply for servo logic and motor. Stall current up to ~650 mA at 6 V."
        }
      ],
      "resources": [
        {
          "id": "lead_red_vin",
          "name": "V+ (Red)",
          "functions": [
            {
              "name": "POWER_IN",
              "description": "Supply 4.8–6.0 V",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "servo_5v",
          "current_rating": {
            "sink": {
              "max_continuous_mA": 650
            }
          },
          "connector_type": "3-pin-servo"
        },
        {
          "id": "lead_brown_gnd",
          "name": "GND (Brown/Black)",
          "functions": [
            {
              "name": "GROUND",
              "description": "0 V return",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "servo_5v",
          "connector_type": "3-pin-servo"
        },
        {
          "id": "lead_orange_sig",
          "name": "Signal (Orange/Yellow/White)",
          "functions": [
            {
              "name": "RC_PWM",
              "description": "1–2 ms pulse at ~50 Hz controls angle",
              "direction": "input",
              "signal_class": "pwm"
            }
          ],
          "power_domain_id": "servo_5v",
          "voltage_tolerance_V": [
            3,
            6
          ],
          "logic_levels_V": {
            "low_max": 0.8,
            "high_min": 2.3
          },
          "connector_type": "3-pin-servo"
        }
      ],
      "interfaces": [
        {
          "id": "rc_servo_3wire",
          "name": "RC servo PWM control",
          "protocol": {
            "type": "pwm",
            "role": "device"
          },
          "requires": [
            {
              "function": "POWER_IN",
              "count": 1
            },
            {
              "function": "GROUND",
              "count": 1
            },
            {
              "function": "RC_PWM",
              "count": 1
            }
          ],
          "constraints": {
            "pulse_width_us": [
              1000,
              2000
            ],
            "pulse_extension_us": [
              500,
              2500
            ],
            "frame_period_ms": 20
          },
          "description": "Standard 3-wire RC servo interface. 1.0–2.0 ms → approx 0–180°. Accepts extended pulse widths 0.5–2.5 ms depending on unit."
        }
      ],
      "supply_voltage_V": [
        4.8,
        6
      ],
      "power_consumption_mW": 300,
      "pin_count": 3,
      "metadata": {
        "package_type": "Micro servo with 3-pin S/JR connector"
      }
    },
    {
      "domain": "mechanical",
      "resources": [
        {
          "id": "servo_output_spline",
          "name": "Output spline",
          "functions": [
            {
              "name": "SERVO_OUTPUT",
              "description": "Rotational output shaft for horn",
              "direction": "source",
              "signal_class": "mechanical_drive"
            }
          ],
          "connector_type": "spline",
          "description": "Accepts included plastic horns; micro spline (often ~21T, varies by vendor)."
        },
        {
          "id": "mounting_flange",
          "name": "Mount flange",
          "functions": [
            {
              "name": "MECHANICAL_MOUNT",
              "description": "Two mounting ears with holes",
              "direction": "bidirectional",
              "signal_class": "mechanical_mount"
            }
          ],
          "connector_type": "through_hole",
          "description": "Two Ø2.2 mm self-tapping screw holes on ears."
        }
      ],
      "interfaces": [
        {
          "id": "mounting_interface",
          "name": "Servo mounting ears",
          "protocol": {
            "type": "mechanical_connection",
            "role": "mounting_point"
          },
          "requires": [
            {
              "function": "MECHANICAL_MOUNT",
              "count": 2
            }
          ],
          "max_instances": 1,
          "description": "Use included self-tapping screws. Do not overtighten."
        },
        {
          "id": "horn_interface",
          "name": "Horn attachment",
          "protocol": {
            "type": "mechanical_connection",
            "role": "shaft"
          },
          "requires": [
            {
              "function": "SERVO_OUTPUT",
              "count": 1
            }
          ],
          "max_instances": 1,
          "description": "Attach horns with included M2 screw. Ensure travel limits are respected."
        }
      ],
      "package_type": "9g micro servo",
      "dimensions_mm": {
        "length": 23,
        "width": 12.2,
        "height": 29
      },
      "weight_g": 9,
      "metadata": {
        "mounting_method": "Flange ears with two screws"
      }
    }
  ],
  "design_rules": [
    "Supply 4.8–6.0 V on dedicated rail; avoid powering from MCU 5V pin.",
    "Budget peak current ≥650 mA per servo.",
    "Generate 50 Hz PWM with 1–2 ms pulses for nominal 0–180°; calibrate endpoints to avoid stall."
  ],
  "validation_requirements": [
    "Verify neutral at 1500 µs pulse within ±10°.",
    "Sweep 1000–2000 µs and confirm no mechanical binding.",
    "Measure no-load current <60 mA at 6 V and stall current <650 mA at 6 V."
  ],
  "usage_notes": "Plastic gears. Avoid shock loads. Do not backdrive at power-off. Hold torque depends on supply voltage.",
  "application_examples": [
    "RC airplane control surface",
    "Lightweight gimbal tilt",
    "Small robotics gripper"
  ],
  "compatibility_notes": "Accepts 3.3 V or 5 V logic PWM in most cases; ensure common ground. Some clones require 5 V-high.",
  "warnings": [
    "Do not exceed travel limits. Stall can overheat motor.",
    "Power servos from a separate 5–6 V supply; tie grounds.",
    "Avoid continuous stall or hammering; plastic gear wear will accelerate."
  ]
}