diff --git a/schemas/magnetic.json b/schemas/magnetic.json index e065afd..19f3b02 100644 --- a/schemas/magnetic.json +++ b/schemas/magnetic.json @@ -1,112 +1,348 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "http://openmagnetics.com/schemas/magnetic.json", - "title": "magnetic", - "description": "The description of a magnetic", - "type": "object", - "properties": { - "core":{ - "description": "Data describing the magnetic core.", - "$ref": "./magnetic/core.json" - }, - "coil":{ - "description": "Data describing the coil", - "$ref": "./magnetic/coil.json" - }, - "manufacturerInfo": { - "type": "object", - "title": "magneticManufacturerInfo", - "properties": { - "name": { - "description": "The name of the manufacturer of the part", - "type": "string" - }, - "status": { - "description": "The production status of a part according to its manufacturer", - "type": "string", - "enum": ["production", "prototype", "obsolete"] - }, - "reference": { - "description": "The manufacturer's reference of this part", - "type": "string" - }, - "family": { - "description": "The family of a magnetic, as defined by the manufacturer", - "type": "string" - }, - "datasheetUrl": { - "description": "The manufacturer's URL to the datasheet of the product", - "type": "string" - }, - "cost": { - "description": "The manufacturer's price for this part", - "type": "string" - }, - "recommendations": { - "type": "object", - "title": "magneticManufacturerRecommendations", - "properties": { - "ratedCurrent": { - "description": "The manufacturer's rated current for this part", - "type": "number" - }, - "ratedCurrentTemperatureRise": { - "description": "The temperature rise for which the rated current is calculated", - "type": "number" - }, - "ratedMagneticFlux": { - "description": "The manufacturer's rated magnetic flux or volt-seconds for this part", - "type": "number" - }, - "saturationCurrent": { - "description": "The manufacturer's saturation current for this part", - "type": "number" - }, - "saturationCurrentInductanceDrop": { - "description": "Percentage of inductance drop at saturation current", - "type": "number" - }, - "maximumStorableMagneticEnergy": { - "description": "Maximum magnetic energy that can be stored according to manufacturer", - "type": "number" - }, - "insulationType": { - "description": "Insulation grade according to manufacturer", - "$ref": "./utils.json#/$defs/insulationType" - }, - "mounting": { - "description": "Recommended way of mounting according to manufacturer", - "$ref": "./utils.json#/$defs/connectionType" - }, - "hipotTest": { - "description": "Hipot test according to manufacturer", - "type": "number" - }, - "dimensions": { - "description": "Dimensions of the magnetic according to manufacturer", - "$ref": "./utils.json#/$defs/dimensions" - }, - "leakageInductance": { - "description": "Leakage Inductance of the magnetic according to manufacturer", - "$ref": "./utils.json#/$defs/dimensionWithTolerance" - } - } - } - }, - "required": ["name"] - }, - "distributorsInfo": { - "description": "The lists of distributors of the magnetic", - "type": "array", - "items": { - "$ref": "./utils.json#/$defs/distributorInfo" - }, - "uniqueItems": false - }, - "rotation": { - "description": "The rotation of the magnetic, by default the winding column goes vertical", - "$ref": "./utils.json#/$defs/rotation" - } - }, - "required": ["core", "coil"] -} \ No newline at end of file +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "http://openmagnetics.com/schemas/magnetic.json", + "title": "magnetic", + "description": "The description of a magnetic", + "type": "object", + "properties": { + "core":{ + "description": "Data describing the magnetic core.", + "$ref": "./magnetic/core.json" + }, + "coil":{ + "description": "Data describing the coil", + "$ref": "./magnetic/coil.json" + }, + "manufacturerInfo": { + "type": "object", + "title": "magneticManufacturerInfo", + "properties": { + "name": { + "description": "The name of the manufacturer of the part", + "type": "string" + }, + "status": { + "description": "The production status of a part according to its manufacturer", + "type": "string", + "enum": ["production", "prototype", "obsolete"] + }, + "reference": { + "description": "The manufacturer's reference of this part", + "type": "string" + }, + "family": { + "description": "The family of a magnetic, as defined by the manufacturer", + "type": "string" + }, + "datasheetUrl": { + "description": "The manufacturer's URL to the datasheet of the product", + "type": "string" + }, + "cost": { + "description": "The manufacturer's price for this part", + "type": "string" + }, + "datasheetInfo": { + "description": "All values extracted directly from the component datasheet, organised by domain.", + "$ref": "#/$defs/magneticDatasheetInfo" + } + }, + "required": ["name"] + }, + "distributorsInfo": { + "description": "The lists of distributors of the magnetic", + "type": "array", + "items": { + "$ref": "./utils.json#/$defs/distributorInfo" + }, + "uniqueItems": false + }, + "rotation": { + "description": "The rotation of the magnetic, by default the winding column goes vertical", + "$ref": "./utils.json#/$defs/rotation" + } + }, + "required": [], + "$defs": { + "magneticDatasheetInfo": { + "description": "All values extracted directly from the component datasheet, organised by domain.", + "type": "object", + "properties": { + "part": { + "description": "Basic part identification from the datasheet.", + "$ref": "#/$defs/magneticDatasheetPart" + }, + "electrical": { + "description": "Electrical characteristics as stated in the datasheet.", + "$ref": "#/$defs/magneticDatasheetElectrical" + }, + "thermal": { + "description": "Operating temperature range from the datasheet.", + "$ref": "#/$defs/magneticDatasheetThermal" + }, + "mechanical": { + "description": "Physical dimensions and mounting style from the datasheet.", + "$ref": "#/$defs/magneticDatasheetMechanical" + }, + "application": { + "description": "Application parameters published by the manufacturer — describes the circuit this component was designed for, not the component's intrinsic electrical properties.", + "$ref": "#/$defs/magneticDatasheetApplication" + }, + "business": { + "description": "Packaging and supply-chain information from the datasheet or product page.", + "$ref": "#/$defs/magneticDatasheetBusiness" + } + } + }, + "magneticDatasheetPart": { + "description": "Basic part identification.", + "type": "object", + "properties": { + "partNumber": { + "description": "Manufacturer part number.", + "type": "string" + }, + "description": { + "description": "Human-readable product description as given in the datasheet or catalogue.", + "type": "string" + }, + "matchCode": { + "description": "Internal match / order code used by the manufacturer.", + "type": "string" + }, + "family": { + "description": "Product family or series name (e.g. WE-CMB, WE-CNSW).", + "type": "string" + }, + "caseCode": { + "description": "Case or package code / size reference (e.g. '0805', 'SMD-4P').", + "type": "string" + }, + "windingStyle": { + "description": "Winding construction style (e.g. bifilar, sectional, trifilar).", + "type": "string" + }, + "material": { + "description": "Core material designation as given in the datasheet (e.g. NiZn, MnZn).", + "type": "string" + }, + "numberOfWindings": { + "description": "Total number of electrically independent windings.", + "type": "integer" + }, + "automotive": { + "description": "True if the part is qualified for automotive applications (AEC-Q200 or equivalent).", + "type": "boolean" + }, + "shielded": { + "description": "True if the component has a shielded construction.", + "type": "boolean" + }, + "insulationGrade": { + "description": "Insulation grade classification as stated in the datasheet (e.g. 'reinforced', 'basic'). Aligns with IEC insulationType vocabulary.", + "type": "string", + "enum": ["functional", "basic", "supplementary", "double", "reinforced"] + } + } + }, + "magneticDatasheetElectrical": { + "description": "Electrical characteristics as stated in the datasheet.", + "type": "object", + "properties": { + "inductance": { + "description": "Inductance per winding in Henries, with tolerance.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "dcResistance": { + "description": "DC resistance per winding in Ohms. nominal = typical value, maximum = datasheet max.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "ratedCurrent": { + "description": "Rated DC current per winding in Amperes.", + "type": "number" + }, + "ratedVoltageDC": { + "description": "Maximum rated DC voltage between any two terminals in Volts.", + "type": "number" + }, + "ratedVoltageAC": { + "description": "Maximum rated AC voltage (RMS) between windings in Volts.", + "type": "number" + }, + "insulationTestVoltageAC": { + "description": "Hi-pot / dielectric withstand test voltage (AC RMS) in Volts.", + "type": "number" + }, + "insulationResistance": { + "description": "Minimum insulation resistance between windings in Ohms.", + "type": "number" + }, + "leakageInductance": { + "description": "Leakage inductance in Henries.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "impedancePoints": { + "description": "Impedance vs. frequency points from the datasheet. Uses the same impedanceAtFrequency structure as designRequirements.minimumImpedance.", + "type": "array", + "items": { + "type": "object", + "title": "impedanceAtFrequency", + "properties": { + "impedance": { + "description": "Impedance value. Uses the same impedancePoint structure as designRequirements.", + "$ref": "./inputs/designRequirements.json#/$defs/impedancePoint" + }, + "frequency": { + "description": "Frequency in Hz.", + "type": "number", + "minimum": 0 + } + }, + "required": ["impedance", "frequency"] + } + }, + "maximumImpedance": { + "description": "Peak / maximum impedance magnitude in Ohms (frequency not specified in datasheet).", + "type": "number" + }, + "commonModeFilter": { + "description": "Common-mode filter performance figures from the datasheet.", + "$ref": "#/$defs/magneticDatasheetCommonModeFilter" + }, + "saturationCurrentPeak": { + "description": "Peak saturation current in Amperes (I_sat from datasheet).", + "type": "number" + }, + "selfResonantFrequency": { + "description": "Self-resonant frequency in Hz.", + "type": "number" + }, + "turnsRatio": { + "description": "Turns ratio (e.g. 100 means 1:100) for coupled inductors / transformers.", + "type": "number" + }, + "couplingCoefficient": { + "description": "Magnetic coupling coefficient k (0–1).", + "type": "number" + }, + "dcResistances": { + "description": "DC resistance per winding for multi-winding parts. Use dcResistance for single-winding parts.", + "type": "array", + "items": { + "type": "object", + "properties": { + "winding": { "type": "string" }, + "resistance": { "type": "number" } + }, + "required": ["winding", "resistance"] + } + } + } + }, + "magneticDatasheetApplication": { + "description": "Application parameters published by the manufacturer in the datasheet. These describe the circuit the component was designed for, not the component's intrinsic electrical properties.", + "type": "object", + "properties": { + "switchingFrequency": { + "description": "Nominal switching frequency in Hz for which this component is designed.", + "type": "number", + "minimum": 0 + }, + "inputVoltage": { + "description": "Input voltage range for which this component is designed, in Volts.", + "oneOf": [ + { "type": "number" }, + { "$ref": "./utils.json#/$defs/dimensionWithTolerance" } + ] + }, + "outputVoltages": { + "description": "Output voltages per secondary winding in Volts.", + "type": "array", + "items": { "type": "number" } + }, + "outputCurrents": { + "description": "Output currents per secondary winding in Amperes.", + "type": "array", + "items": { "type": "number" } + }, + "auxiliaryVoltage": { + "description": "Auxiliary winding voltage in Volts.", + "type": "number" + } + } + }, + "magneticDatasheetCommonModeFilter": { + "description": "Common-mode filter performance figures.", + "type": "object", + "properties": { + "cutOffFrequency": { + "description": "-3 dB cut-off frequency of the common-mode filter in Hz.", + "type": "number", + "minimum": 0 + }, + "attenuation": { + "description": "Common-mode insertion-loss / attenuation value from the datasheet in dB.", + "type": "number" + }, + "attenuationTestCondition": { + "description": "Test condition string for the attenuation figure (e.g. '100 MHz, 50 Ω').", + "type": "string" + } + } + }, + "magneticDatasheetThermal": { + "description": "Operating temperature range.", + "type": "object", + "properties": { + "operatingTemperature": { + "description": "Operating temperature in degrees Celsius.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "temperatureRise": { + "description": "Maximum temperature rise above ambient in degrees Celsius.", + "type": "number" + }, + "thermalResistance": { + "description": "Thermal resistance in °C/W.", + "type": "number" + } + } + }, + "magneticDatasheetMechanical": { + "description": "Physical dimensions and mounting style.", + "type": "object", + "properties": { + "length": { + "description": "Body length in metres.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "width": { + "description": "Body width in metres.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "height": { + "description": "Body height in metres.", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "diameter": { + "description": "Body diameter in metres (for cylindrical parts).", + "$ref": "./utils.json#/$defs/dimensionWithTolerance" + }, + "mounting": { + "description": "PCB mounting style. Uses the same connectionType enum as designRequirements.terminalType.", + "$ref": "./utils.json#/$defs/connectionType" + } + } + }, + "magneticDatasheetBusiness": { + "description": "Packaging and supply-chain information.", + "type": "object", + "properties": { + "packaging": { + "description": "Packaging format (e.g. 'Tape & Reel', 'Bulk', 'Tray').", + "type": "string" + } + } + } + } +}