component
Same Sky CFM-4010-03-22 PWM and tach fan
Public Made by Adomby adom
40 mm PWM fan with measured-speed feedback and animated rotor assets.
main
John Lauer
Add prototype library assets with source provenance and explicit mounting/motion limits
cc48557
6d ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
{
"schema": "adom/component-states@1",
"mpn": "CFM-4010-03-22",
"kind": "fan",
"default": "off",
"variables": {
"speed": {
"type": "number",
"unit": "rpm",
"min": 0,
"max": 12000,
"default": 0,
"description": "Simulated or valid measured rotor RPM; never infer from duty alone."
}
},
"states": [
{
"id": "off",
"label": "Off",
"values": {
"speed": 0
},
"motion": {
"playing": false
},
"models": {
"step": "cad/manufacturer.step",
"glb": "states/fan-animated.glb"
},
"image": "hero.png",
"description": "Runtime rotation binds speed in RPM; a static STEP cannot depict rotation."
},
{
"id": "on",
"label": "On",
"values": {
"speed": 8300
},
"motion": {
"playing": true
},
"models": {
"step": "cad/manufacturer.step",
"glb": "states/fan-animated.glb"
},
"image": "hero.png",
"description": "Runtime rotation binds speed in RPM; a static STEP cannot depict rotation."
}
],
"motion": {
"schema": "adom/component-motion@1",
"model": "states/fan-animated.glb",
"sha256": "391a0c11c73d67a601e061df0a9e2ea002b1b164f66f4f97ae5122666d85eb5b",
"nodes": {
"assembly": "Fan.Assembly",
"stationary": "Fan.Housing",
"rotor": "Fan.RotorSpin"
},
"bindings": [
{
"id": "rotor",
"node": "Fan.RotorSpin",
"animation": "Fan.Rotor.Revolution",
"variable": "speed",
"unit": "rpm",
"cycleDurationSeconds": 1,
"revolutionsPerCycle": 1,
"axisLocal": [
0,
0,
1
],
"mapping": "rpm-to-cycle-rate",
"offBehavior": "pause-preserve-phase"
}
],
"presentation": {
"previewTimeScale": 0.002,
"labelRequiredWhenScaled": true,
"heroCycle": {
"idleSeconds": 4,
"rampUpSeconds": 5,
"runningSeconds": 2,
"rampDownSeconds": 5,
"source": "illustrative; not measured spin-up or coast-down"
},
"bakedHero": {
"model": "hero.glb",
"animation": "Fan.Hero.GentleCycle",
"durationSeconds": 20,
"scheduleSeconds": {
"idle": 4,
"rampUp": 5,
"running": 2,
"rampDown": 5,
"rest": 4
},
"timeScale": 0.002065404475043029,
"source": "Illustrative animation, not measured spin-up; exact two-turn phase continuity",
"sha256": "475c84914e8de4d288ab4c525644da812537863835433a673e483920a3f75bd1"
}
},
"telemetry": {
"defaultSource": "simulated",
"validRequired": true,
"staleBehavior": "pause-and-label-unknown",
"doesNotControlHardware": true
}
},
"electrical": {
"supply_V": 5,
"nominal_rpm": 8300,
"tach_pulses_per_revolution": 2,
"source": "https://www.sameskydevices.com/product/resource/cfm-40.pdf"
},
"limitations": [
"Animation direction not physically verified",
"PWM frequency and zero-duty behavior require confirmation",
"No airflow or thermal proof from animation",
"Manufacturer CAD has bare leads; harness connector remains a separate assembly part"
]
}