LATTE - Lenz XPA Knob Throttle

LATTE - Lenz XPA Knob Throttle

LATTE - short for Lenz Analog Throttle by Telephone Experiment - is a way to graft a familiar knob throttle onto Lenz's XPA (XpressNet Phone Adapter). In short, the XPA plugs into Lenz's throttle bus and into a standard cordless telephone. By pressing keys on the handset, the DTMF tones generated in turn cause the XPA to send commands as if it was any normal throttle. This is a pretty cheap and novel way to build and internationalized wireless throttle system. That said, I always found operating them to be quite clunky, since my fingers couldn't find the phone keys desired without actually looking at the phone, but the responsiveness and cost are quite good. CVP Products offers a knob-based throttle that can be plugged into a Lenz system, but a test run of them on a layout in Denver turned up persistant lagging problems. They're also rather costly. (That said, CVP is an excellent company. I used their CTC-16e command control system for over a decade until late 2000, when I switched over to DCC. Somewhere I also have an old SDX-1...) So, I decided to investigate building an analog throttle that would translate its output into DTMF tones, which could be sent back to a Lenz XPA unit. This is better from a hobbyist standpoint for two reasons - it avoids the FCC problems (or similar regulatory problems in whatever country you live) with building an actual radio transceiver pair, and it avoids having to write a Lenz XpressNet interface. What's left is something inexpensive that nearly anybody can build, aside from programming the microcontroller (which, if you need, email me).

That was something like a year ago. About three weeks ago, I finally got off my lazy rear and started to experiment with making it a reality. The good news is that it looks like it's going to work - that's why I'm posting this. I've managed to construct a prototype unit and run some of my SD70MACs around in circles with it. Unfortunately, I don't have a layout to test it on right now.

Responsiveness is decent, and might be able to be improved some based on what I find about tones making it through in the real world. If I can shorten the tone length down, responsiveness will go up. At the moment, the unit only does 28-step mode (because that's what I use...) and only handles functions F0-F3. However, I'll improve that in the future. 128 step may be out of the question, however, since it would take too many tones to get from one end to the other in a reasonable amount of time. 14 is definitely do-able, though, and will almost certainly yield better responsiveness at the cost of resolution.

So what does work? Like I said, the analog throttle bit. Functions F0-F3. Changing locomotive numbers. It's really as easy as once you have the XPA working, all you need is a phone with a headset jack. Pick up the phone and verify the XPA sends you the "OK" tone, then plug in the throttle and turn it on. It'll initialize everything to the last unit you had it controlling, and you can change locos from the throttle as normal. In the near future I plan to add functions F4-F8, 14 step mode, accessory control, and 14-step mode. That assumes that once I get this thing on a real layout, everything continues to look promising.


6-Apr-2005 (Update) - It not only works, it works great! We tried it out at an operating session on Monday night, and the thing performed flawlessly the whole night. Fine-grained control and quite responsive. I was switching cars as easily as if I had a wired throttle!

27-Mar-2005 - Initial announcement of LATTE, including schematic and source.

Documentation and Source Code


Version 1.0
Released: 27-Mar-2005
Errata: The Menu button should attach to PIC pin 23, not 19 as shown.


Version 1.0
Note: Compiled with C2C 5.97 compiler, targetted for PIC16F877A with bootloader
[src] - [hex]


LATTE v1.0 Initializing
27-Mar-2005 - This is the prototype - a little clunky, but functional. Here it is initializing the XPA on boot. The orange light indicates it's busy sending DTMF data over the phone.
Normal Run Screen
27-Mar-2005 - This is the normal run screen, with address, speed, and direction along the top and F0-F3 on the bottom. The functions are set/unset with the four soft keys, and the fifth key puts you into address setting mode. The direction is controlled from the toggle on the top of the box.
The Whole Enchilada
27-Mar-2005 - This is the whole prototype, including the cord that runs out to the phone, which would probably be carried on the operator's belt. Nevermind the smaller group of wires - that's so I can reprogram the prototype without opening the box, and wouldn't be there on a real unit.
Development Photo 1
22-Mar-2005 - Development's a neat and tidy process, right? Wrong... Pretty much anything I do involves a disaster area, like my new workbench. The thing to the right is the Canadian Arctic's unfinished north helix.
Development Photo 2
22-Mar-2005 - Another shot of the impeccably clean workbench (grin) with the prototype on a breadboard. The problem is that although I now have this bench in the basement, all my parts are still at my other workshop.
Development Photo 3
22-Mar-2005 - Here it is, really working for the first time. I'm monitoring its performance on the LH100 in the background, and it's really running Alaska RR SD70MAC 4001 up and down the helix.
Development Photo 4
22-Mar-2005 - Just a closer shot of the breadboard.
  Questions? Email Nathan Holmes
© NDHolmes, but freely usable under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.
Last modified on January 09, 2006, at 04:42 PM
Edit Page | Page History