Blog Home

Repurposing an automatic train control unit as a car speedometer

Arduino TeamSeptember 13th, 2024

We’re just now getting semi-autonomous self-driving capabilities in cars, which let them adhere to posted speed limits and maintain their lanes. But trains have been doing the same thing for a long time — well before machine learning and computer vision became ubiquitous. How did they do it? With ATC (automatic train control), which Philo Gray and Tris Emmy Wilson demonstrated by repurposing an ATC unit from an MBTA Red Line train as a car speedometer.

Trains don’t need help steering, because they’re on rails. Those rails are also the secret to ATC operation. Being conductive, the rails provide a path for communicating data. That’s actually bidirectional in a way, as railway control systems use the circuit completed by the presence of a train as a switch to determine the train’s position. At the same time, it sends data to the train through the “audio frequency track circuit.” The ATC unit reads that data and controls the train speed accordingly, while also indicating the speed limit and current speed on the gauge.

Cars don’t have the benefit of rails for data transmission, so the Gray and Wilson recreated the functionality by using an Arduino to emulate the appropriate signal for the ATC unit to read. It has to communicate two data streams to the ATC unit: the speed limit and the vehicle’s current speed. The unit has a pretty standard-looking speedometer for the latter and uses small lights at intervals to indicate the former.

Gray and Wilson used a laptop with OpenStreetMap and the current GPS location to find the speed limit of the road their vehicle is on. It then tells the Arduino to set the corresponding speed limit light. The speedometer functionality, surprisingly, proved to be more challenging. The original plan was to use a Bluetooth OBD2 reader to pull the information directly from the car, but the adapter was very unreliable. They then tried to estimate the speed using GPS readings, but that was also unreliable and so they returned to the OB2 adapter.

This isn’t reliable or practical by any means, but it is very cool to see the old ATC unit working inside of a car. 

Categories:Arduino