Over the last few months I've been working on a cunning plan to add interlocking to my lever frame. The frame itself is from the Shropshire and Herefordshire Area Group sold through the Scalefour stores. The frame is connected to a MERG CANACE3 circuit board so that each level generates a different event on the MERG CBUS. This means that the only thing coming out of the frame to the layout is the 12v and 0v power lines and the CANH and CANL data wires of the CAN bus.
This has been fitted with a small modification in the form of a strip of nickel silver soldered into the bottom of each lever made from scrap from the etch. This 'tail' sticks out of the bottom of the frame.
The locking is provided by means of a small servo under each lever which is fitted with a brass collar. The collar rotates to either lock the tail of the lever on one side or the other or present a slot through which the tail can pass.
The servos are driven using MERG CANACC8 boards configured with the new CANServo8 code. Last in the box is a MERG CAN-USB board which allows the CBUS to talk to a PC.
The PC runs the PanelPro from the open source JMRI project. Without going into too much detail (unless people want to know more) the levers are each defined as a 'Sensor', the turnouts on the layout and the servos which control the locks are defined as 'Turnouts'. I have set the CBUS boards on the layout which drive the points and signals to respond to the events direct from the lever frame so that I don't need to connect the PC. However when the PC is connected the 'Logix' programming in JMRI is configured so that each locking servo is set depending on the state of the levers.
The great virtue of this system is that I can program all the locking on the PC and change it easily if (when?) I get it wrong. In practice so far I have got about half the locks working (there is some alignment work to do between the tails and locking rings) but have demonstrated I can make the distance signal only be released when the relevant home and starters are cleared. Also I can show that clearing the distance signal locks the homes and starters clear. In simple terms each lock has two conditional actions applied, one which unlocks the lever when A normal and B normal and C reversed etc. and a second which locks the lever when A reversed or B reversed or C normal etc.
I could even get silly and add some train detection by track circuiting and then interlocking with that, or even only allow the starter to be cleared when I have a line clear from the box in advance.... or may implement locking that allows me to only pull the starter once per line clear.... This way madness lies.