Reviewd and fixed deadman architecture
This commit is contained in:
@@ -99,15 +99,23 @@ f.note('Sensor output is the sensor’s signal pin. Both ADC channels use +3V3_A
|
||||
|
||||
chain('dac-output','Optional analogue-output provision','IO_ARCHITECTURE.md: Analogue-output provision',['MCU DAC','Rail-to-rail buffer','Protection /\nseries impedance','Connector'],'Provision only; final electrical range, load and protection remain to be defined.')
|
||||
|
||||
f=Figure('deadman-inputs','Deadman contacts and observations','IO_MODULES/DEAD_MAN.md: Logic domains',1040,650)
|
||||
for i,c in enumerate('AB'):
|
||||
y=100+i*245
|
||||
f.node(c+'s','Protected 5 V\nIndependent NO contact '+c,30,y,260,80,'power')
|
||||
f.node(c+'p','Protected input '+c+'\nOwn filter + default-low bias',370,y,290,80,'signal')
|
||||
f.node(c+'h','DEADMAN_A_HELD\n5 V · non-inverting' if c=='A' else 'DEADMAN_B_RELEASED\n5 V · inverting',750,y,260,80,'signal')
|
||||
f.node(c+'d','DEADMAN_'+c+'_STATUS\n3.3 V · held = high → MCU',370,y+120,330,75,'device')
|
||||
f.edge(c+'s',c+'p'); f.edge(c+'p',c+'h'); f.edge(c+'p',c+'d',exit=(.5,1),entry=(.5,0))
|
||||
f.note('Separate harness paths. MCU status observations are diagnostic; the 5 V signals feed the permit gates.',575);f.save()
|
||||
f=Figure('deadman-inputs','Parallel switches · one ECU deadman input','IO_MODULES/DEAD_MAN.md: Steering-wheel wiring and ECU input',1040,750)
|
||||
f.node('supply','Protected 5 V',30,200,220,80,'power')
|
||||
f.node('left','Left NO switch\nHeld = closed',340,90,230,80,'device')
|
||||
f.node('right','Right NO switch\nHeld = closed',340,300,230,80,'device')
|
||||
f.node('shared','DEADMAN_IN\nJoined at steering wheel',740,200,270,80,'signal')
|
||||
f.edge('supply','left',points=[(290,240),(290,130)])
|
||||
f.edge('supply','right',points=[(290,240),(290,340)])
|
||||
f.edge('left','shared',points=[(660,130),(660,240)])
|
||||
f.edge('right','shared',points=[(660,340),(660,240)])
|
||||
f.note('Switches are physically in parallel. Either held → asserted; both released → deasserted.',390)
|
||||
f.node('input','DEADMAN_IN\nOne ECU signal pin',30,490,240,80)
|
||||
f.node('conditioning','Protection + filter\nDefault-low bias',340,490,270,80)
|
||||
f.node('ok','DEADMAN_OK\n5 V · hardware gates',740,490,270,80)
|
||||
f.node('status','DEADMAN_STATUS\n3.3 V → one MCU input',340,630,310,80,'device')
|
||||
f.edge('input','conditioning');f.edge('conditioning','ok')
|
||||
f.edge('conditioning','status',exit=(.5,1),entry=(.5,0))
|
||||
f.save()
|
||||
|
||||
for name,title,part,pin,load,ground,source in [
|
||||
('ignition-power','Ignition power path','VBG08H-E','HVC','Coil primary','IGN_PGND','IGNITION'),
|
||||
|
||||
Reference in New Issue
Block a user