Hello everyone. I need a bit of help. I am trying to make a throttle for a flight sim. I need to have 2 throttle controls for the two engines of the plane. Now i have ran into the issue of the potentiometers not being the exact same. If you don't understand what is the problem, let's say that I have set both of the throttles to 50 percent on the scale. One would show maybe 47 and the other 52. My potentiometers aren't exactly linear. How do manufacturers that make throttles for flight sims make it exactly 50 percent? And I saw a guy open one of those throttle quadrants and they were using the cheap carbon track potentiometers, and yet it works perfectly. Is there a way I can make the potentiometers more linear by programming or doing something else?
Hello azur123123
Post your sketch, well formated, with well-tempered comments and in so called
code tags "< code >" and a wiring diagram to see how we can help.
Have a nice day and enjoy coding in C++.
this is similar to a problem on model RR throttles that can switch between multiple locomotives, a pot position for one loco won't match the pot position for a different loco. those throttles use encoders instead of pots to input a change in the setting when switching between locos.
Are you using linear pots? are you familiar with the Map function?
+1 for what gilhultz said - the map function.
You will need to measure your pots in terms of Arduino analogRead(pin) numbers. A small calibration sketch could do this.
You will have a range of values for minimum and maximum of Left_Pot and Right_Pot.
Say a pot is connected to +5v at one end, 0v at the other and the wiper goes through a 1k resistor to the analog pin.
The range of analog read values might be something like:
Left_Pot : min 35 max 998
Right_Pot : min 82 max 1001
In your real sketch utilising throttle inputs you would have something like this Pseudo code:
const int Left_Pot_Min = 35;
const int Left_Pot_Max = 998;
const int Right_Pot_Min = 82;
const int Right_Pot_Max = 1001
void setup() {
}
void loop() {
Left_Pot_Raw = analogRead(Left_Pot_Pin);
Right_Pot_Raw = analogRead(Right_Pot_Pin);
// map(value, fromLow, fromHigh, toLow, toHigh)
// this will output a range of 0 to 100 , like a percentage
Left_Pot_Percent = map(Left_Pot_Raw, Left_Pot_Min, Left_Pot_Max, 0, 100)
Right_Pot_Percent = map(Right_Pot_Raw, Right_Pot_Min, Right_Pot_Max, 0, 100)
}
It could be that they simply use higher quality pots.
Building your own controller will teach you things about part specifications, quality, and reliability that you probably didn't want to know.
The other thing I've seen is some sort of "calibration" scheme where endpoint and center values are measured, and adjustments are made in the program so that they'll match up...
They use the cheapest potis available. But as they come form the same production line from about the same time they are almost perfect matches. And then you have calibration, even 3 point calibration done by the user on the PC will do the job.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.