L.E. v 0.10 | Signals, BEMF & messages between modules

Model railway layout in Borówiec, Poland
Model railway layout in Borówiec, Poland

The Loco.Engineering team has huge experience with motor controllers used in e-mobility and of course, we want to get maximum performance and features from drivers for brushed DC motors. If you've ever tried to use decoders with BEMF with PID & Consisting control you know how it's not easy to tune those controllers. If you don't understand what BEMF and PID mean, check this post. This week we spent the most time on motor drivers (a motor driver controls the train and accessory motors). A 3 mm x 3 mm motor driver used in our WCC train modules includes a current sense circuit that can provide information about real loads on a motor. For example, you'll know when your loco rides uphill or when you add a few additional heavy cars. And of course, you'll be able to add different actions that should be started if the motor's load is changing. Also, current sensing will be used for more realistic motor control.

The main advantage WCC (Wireless Command Control) over DCC is the possibility to send messages between modules (trains, accessories, and cars). For example, a train can notify other layout elements that it arrives at a station. Messages from trains will be sent directly to other modules without any command station, wires, and other 3rd party devices. This reduces costs on layout automation significantly and gives a virtually unlimited amount of possible interactions. All interactions can be edited in the web app and will be uploaded to all trains, layout elements, and cars within seconds after you save changes in the web app. No programming, no CV codes. The main tricky task here is to deliver all messages from a module to all other elements on the layout within milliseconds and avoid lost messages. This week we tested those messages a lot and added 2 optimizations:

  • We reviewed the protocol used in messages between modules and reduced message length by around 20%. For example, a message which notifies other modules that a train crosses a positioning tag on rails (or NFC tag) contains just a 4-byte payload
  • We added checking if a message is being delivered to all modules that subscribed to that message type. This means that if a message isn't delivered for some reason it will be resent until it's delivered to all subscribed modules

And the last update this week - we finally got a ready prototype of our signals that will be available in our online shop. The first collection will include polish railway signals for N and HO scales, later we'll add signals from all EU countries. Signals with our WCC modules can work even on batteries, and of course, no CV programming is required to set signal logic - just open https://loco.engineering/app and add signal to your project in the editor.

What's new in v 0.10:

  • [FIRMWARE] The new internal message protocol
  • [FIRMWARE] Added Acknowledgment (ACK) packets
  • [FIRMWARE] Added BEMF processing
  • [HADRWARE] Added components for the current sensing circuit
  • [APP] Updated module details sidebar
  • [APP] Added element highlighting on the layout view
  • [API] Added GET /module/types