I think your design is clever and looks terrific. And the better things like this get, the more it gets me thinking about them - hence the comments, which I hope you realize are intended to be helpful and engaged, not nit picking.
First off thanks for the input and the thought that went into it, 'not nit picking' at all. Hopefully I can add insight into the project but I'm not an electrical engineer and have very little experience coding an Arduino/ESP32. I pretty much copy others work trying to adapt what they have done to what I'm building.
Good point on the 100k pots and I don't know if I can/could use them. I've just see 10k be the more common ones used and are what I used in building my turntable controller. I could certainly try them and if I can get this up and running I'll do that. The other throttle that I built using the ESP32 runs a long time on a battery but no drainage from any pots so that might be a concern. I will put two batteries in this like I did with one of those and you can switch when one goes low.
I have a software program that I've just finished that will be used to work around the differences in pots and also how they are positioned in the throttle as that can also be a variable. The user will load and run that program in the ESP32 first to take readings on the three pots. The program has you put the throttle in all 9 positions one at at time and hit 'c' to go to the next one. It reads where the pot is in each position which creates a range for each position as you mentioned. The detents seem to do a really good job with the throttle being repeatable at each notch but as you mentioned this isn't a 'has to be dead on' situation.
The software will need the pots to be wired opposite to what was initially shown. I was just two lazy there to turn the wires around. Not sure about a pot failure being an issue but there are two buttons on the throttle top that help there. One shuts down the loco (or consist) being controlled and the other shuts down all track power. They are on the other throttles I build around the same design. Both are immediate.
The program also reads the other pots and only needs to read the full on and full off position for them. The software divides that into ranges, 5 for the brake and 3 for the reverser. Here is an example of the output of that program. It changes the resistance into numbers.
-----------------------------------------------------------------------------------
/// HandCab_Data.h
int throttleIn[] = {1293,1541,1782,2015,2238,2462,2693,2926};
int brakeIn[] = {1355,1731,2107,2483,2859};
int reverserIn[] = {1355,2851};
int speedStepIn[] = {4,10,15,25,35,45,55,65};
int delayIn [] = {50,100,300};
---------------------------------------------------------------------------
The user will put those numbers into a header (.h) config file that the main throttle program in the ESP32 will read each time the throttle is used. This will be done for any throttle that is setup or has been taken apart and the pots moved/rotated. It will normally only be done once. Above you can see the three pot ranges, throttleIn, brakeIn and reverserIn. The user will also be able to input two other sets of values (at this time).
speedStep is used to tell the throttle what speed step will be sent to the loco at each notch. In my case I speed match my locos to scale mile per hour for each speed step. For mine notch 1 will be 4 mph, 2 will be 10 mph, ......8 will be 65 mph. If one uses a different approach or this one you put the speed step for each notch in there that you want. It will be for the throttle not any loco.
The acceleration and deceleration momentum will also be determined by the user also. That is the next 3 values. When the throttle is moved to the next notch the software sees where that is, say 35 to 45. It won't change the speed step from 35 to 45 directly. It will do it in steps with delays between each step. The user determines how long those delays will be and can have three levels that can be changed real time while operating the loco to suit the conditions. Maybe longer slower out on the main vs. shorter quicker running in a yard. The momentum will work similar on the braking putting in delays as the throttle steps down when the throttle returns to speed step 0 and the software steps it down with the delays set by where the brake handle is. I'll probably set mine up where the delay from 0 to 65 would take 25-30 seconds if you moved the throttle immediately from notch 0 to notch 8..
Hopefully if this works as planned the throttle will determine the momentum not the decoder so should work with any decoder out there as a number have no braking function from what I've read. For the throttle to work well across multiple locos/decoders you will still need to speed match them to whatever speed steps you want to use. You aren't limited to my example.
This throttle still has a long ways to go and no it isn't for everyone to build. I can build the WitController throttle....
https://1fatgmc.com/RailRoad/DCC/WiTcontroller-Index.html... in less than a day for about $50 and this should be similar with the addition of the 3 pots. Peter Akers (EngineDriver designer) wrote the software for the WiTcontroller throttle and hopefully we are going to be able to integrate what I'm doing into that software/hardware so that all the functions that throttle has (lots) will be available here with the addition of the physical throttle controls that have been added.
Thanks again for the input, much appreciated (I'll check the 100K pots out if I can get things working with the 10K).
Sumner
.