Wattflyer RC Network: RC Universe :: RCU Magazine :: RCU Forums :: RCU Classifieds :: RCU User Reviews :: RCU YouTube
Home Who's Online Calendar Today's Posts RealTime Post Spy Mark Forums Read
Go Back   WattFlyer RC Electric Flight Forums - Discuss radio control eflight > Electric R/C Airplanes > General Electric Discussions
Register Members List Wattflyer Extras Articles Search Today's Posts Mark Forums Read Social Groups

General Electric Discussions Talk about topics related to e-powered RC flying

Thank you for your support (hide ads)
Reply
 
Thread Tools Display Modes
Old 12-04-2016, 04:40 AM   #1
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default My RC Joystick



I’ve wanted to build a RC Joystick Controller/Encoder ever since I got back into flying RC Planes 3 years ago. As a private pilot and someone who has flown on Simulators for 30+ years, a 3-Axis Joystick just comes naturally to me. I am all thumbs with a conventional radio 2 thumb joysticks. Rudder and Throttle do not mix well for me. As you most likely know there are not much off-the-shelf solutions out there. You pretty much have to make it yourself. Cool thing is you can get exactly what you want if you have the skills.

I tinkered with the idea for 3 years doing research and fact finding. Found several projects on the web that basically did what I wanted to do. All had one common piece of hardware, an Arduino Microcontroller. Found one project by a member here I hope he will see this by the name of Ian Johnson using a Arduino Nano Microcontroller. Ian has a Blog and on that Blog is a project titled Project #18 RC PPM Trainer Port Joystick V1 which is where I started. I am an Electrical Engineer but not a code writer to speak of. But I learned how, at least enough to write my own Sketch my way.

OK Ian and all others before me used Arduino. Arduino was perfect at the time, but today we have Teensy, a far more powerful microcontroller. I used the Teensy 3.2 for many reasons. To use Arduino requires the user to use Interrupt Timers, sub-routines, arrays, delays, and stuck with 10 bit resolution (1023). What that means is a complex code, making your controller spending 0.6 seconds of 1 second doing nothing but waiting from delays. It also causes instability, latency, and sync problems. All that is gone.

The meat and potatoes are the Teensy 3.2 and Pulse Position Library you must use. Used together makes the code simple, timing and sync issues are a thing of the past, and very precise. One added benefit of my version is you can calibrate each analog channel so you get accurate full 100% surface deflections, and when you center the stick has a Dead Band Zone you can adjust so you are at a perfect 1500 every stinking time you center the stick.
Hardware and Circuit
OK let’s start with Hardware and Circuits. I am not going to spend a lot of time here on this because it is so basic. I am using a similar donor Joystick because of the ample room inside for everything including batteries. What I ended up with is as you can see. A Joystick with a cord you plug into your radio’s Training Port.

Most of the hardware you can see in the pictures. The Teensy is installed on a BOB I got from Tindle so I could fasten the board to the joystick case and facilitate modular connections from pots and switches. My project is 6-Channels, the Teensy can go up to 16 channels. So for inputs I have 4 pots, and 3 switches (1 and 1 for Gear/Aux and 1 for Power). The switches used for Gear, Aux, and Power are simple micro SPST on/off switch. Gear produces 800/2200 uS. The Aux switch is a 3-Way SPDT Center-Off to generate 800/1500/2200 uS.



To wrap up Hardware need to point out the Teensy works on 3.3 volts. They do have a Volt In (Vin) Pin with built-in 3.3 volt regulator, but the issue is the Vin is limited to 4 to 6 volts with 5 being perfect. My solution is using 6.6 volt 2S 1100 mah LiFe RX battery with a 5-Volt 1A SBEC all contained in the Joystick stand. FWIW there is enough room I could have used a larger battery like 1500 mah but is over kill. The Joystick only uses 40 ma which translates to roughly 27 hours of continuous operation.



Code
OK let’s get to the code. This is where the magic happens. Very first thing to do is go download the Pulse Position Library as that is where all the magic happens. It will be a ZIP file. Leave it zipped, start your Arduino IDE app, and install as a Zip Library. Otherwise it will not work. You will also need to add Teensyduino to your Arduino IDE app. The Pulse Position Library is written specifically to work with and generate PPM and PWM signals. It will transmit PPM and decode PPM to PWM to drive servos. It was developed for the ROBOT and Radio Control nerds.
The pulseposition Library generates the PPM signal and can be any amount of channels you want from 1 to 16 in any timing protocol you want. So whatever format your Radio uses, Pulse Position can generate the signal. All you have to do is send the channel info to it and tell it the format. Only difficult thing to do which is more of a pain than difficult is open and edit the .cpp file to tell it what signal timing parameters you want. Be careful here, most of you do not need to change a thing. Let me make it real easy, only one Parameter should need tweaked if any at all, #define TX_MINIMUM_FRAME 20000.0 TX Min Frame is your Refresh Rate aka Frame Time in microseconds. Default is 20000.0 or 50 Hz. Most radios use 50Hz but not all. Mine uses 45 Hz or 22,000.0 uS. You only need to change this is if your radio uses a different frame refresh rate.

Leave the rest alone with maybe the exception of #define TX_DEFAULT_SIGNAL 1000.0, use 1500 for Center default. Default is what the PPM Library will send if the info is missing or out of range. The last thing you want is 1000 uS sent to Rudder, Elevator, or Ailerons as that would be an instant crash. 1500uS is neutral or center.

So be careful what you do in the .cpp file. Here are the parameters you can change if you know what you are doing. Most should not need to do a single thing to it except change TX_DEFAULT_SIGNAL 1500


Code:
.CPP FILE
// The shortest time allowed between any 2 rising edges. This should be at
// least double TX_PULSE_WIDTH.
#define TX_MINIMUM_SIGNAL 300.0

// The longest time allowed between any 2 rising edges for a normal signal.
#define TX_MAXIMUM_SIGNAL 2500.0

// The default signal to send if nothing has been written.
#define TX_DEFAULT_SIGNAL 1000.0

// When transmitting with a single pin, the minimum space signal that marks
// the end of a frame. Single wire receivers recognize the end of a frame
// by looking for a gap longer than the maximum data size. When viewing the
// waveform on an oscilloscope, set the trigger "holdoff" time to slightly
// less than TX_MINIMUM_SPACE, for the most reliable display. This parameter
// is not used when transmitting with 2 pins.
#define TX_MINIMUM_SPACE 5000.0

// The minimum total frame size. Some servo motors or other devices may not
// work with pulses the repeat more often than 50 Hz. To allow transmission
// as fast as possible, set this to the same as TX_MINIMUM_SIGNAL.
#define TX_MINIMUM_FRAME 20000.0

// The length of all transmitted pulses. This must be longer than the worst
// case interrupt latency, which depends on how long any other library may
// disable interrupts. This must also be no more than half TX_MINIMUM_SIGNAL.
// Most libraries disable interrupts for no more than a few microseconds.
// The OneWire library is a notable exception, so this may need to be lengthened
// if a library that imposes unusual interrupt latency is in use.
#define TX_PULSE_WIDTH 100.0

// When receiving, any time between rising edges longer than this will be
// treated as the end-of-frame marker.
#define RX_MINIMUM_SPACE 3500.0

OK the code is stupid simple, a straight line laundry list of chores. It is easy to follow and self-explanatory. Very first line is #include <PulsePosition.h> that loads the Library to run in the background as Functions you call from your Sketch.
Next line I set up is the PulsePositionOutput PPMOut(FALLING); which tells it we want a Falling or Rising Pulse. Next up is #define DEADZONE (50) which is a integer you change to meet your demands. My experience tells me a number between 10 and 50 works great. When you center the sticks, analog pots are not perfect and will not be exactly 1500. It will be something +/- a few digits above or below 1500. You set the range, so when the stick is Centered, generates exactly what you tell it to generate. For me Ele, Ale, and Rud center on 1500, and Throttle when cut is exactly 1000 or full throttle cut.

Next up I define the some of the integers and digital pins with the int and const int statements. I define and name the 3 digital input pins, the Power On Led, and define Gear and Aux
SETUP begins with two commands sent to the Pulse Position Library PPMOut.begin to start PPM Output on pin 10, and Frame Sync to pin 8. Sync or Pin 8 is for testing with an oscilloscope using it as the Sync Source for the O-scope. When done disable with // or delete it.

Next two commands are unique to Teensy and not found in Arduino. Kind of a big deal because it takes a lot of code to do what just two simple commands can do. analogReadResolution and analogReadAverage. analogReadResolution allows you to set the resolution from 10 (1023) to 13 bits (8191). Arduino is fixed at 10 bits. If you do not specify Resolution on Teensy defaults to 10 bits or 0 to 1023 which is just fine if your channel time requirements only span 1000 uS. I use 13 bits or 0 to 8191 and scale it to 800 to 2200 uS or 1400 uS pulse width.

The AnalogReadAverage is a great tool. You would have to build a time consuming array with a fair bit of code using Arduino. It will read an Analog Channel Input, and averages the last 4, 8, 16, or 32. This removes noise and jitter like created by the mechanical Pots. Put another way it is Smoothing. In the Teensy you do not have to use time consuming arrays to Smooth Analog inputs. It runs in the background not requiring processing time. Big headache solved.

The rest of the SETUP just sets the Digital Pins as Inputs or Outputs. On the Gear and Aux channel switches I use PULLUP to set the pin voltage high or to a 1. On the switches you wire the common contact to ground so that when you close a switch puts a Ground or 0 on the Input Pin. Lastly is serial.begin(9600) to enable you to test and read the variables from the Analog inputs and PPM output. Disable with // when not in use.
Last up is the LOOP that runs continuously. Short story is the LOOP basically all the Loop does in this sketch is generate the output times for each channel by reading the Analog and Digital Inputs. The first two variables I generate are Gear and Aux with If test by reading the two switches. Gear has two outcomes of 800 and 2200 uS. Aux has 3 outputs of 800, 1500, and 2200.
Next I generate the 4 analog variables by reading the analog input pins, save them as ELE, AEL, RUD, and THR. Then I MAP the variables, or convert them to an output in micro-seconds (uS), and save that number as XYZ_MAP to be used by the next step. Take note here is this is where some magic happens. I will speak more lately but this is where you Calibrate and Reverse channel output to perfection dead nuts on.

After MAP is Dead Zone or Dead Band. Dead Band is that small little area around center. Analog Joysticks using Pots are not perfect. At mid-way you may read 1470 for one counts and the next is 1501, 1533, 1481. You get the point. To eliminate that problem I use the abs or Absolute function test. It will look at the variable, and test it to the Absolute value. In English that means if your sticks are very near center will output 1500. So if your hands at center, it outputs 1500 despite the erratic numbers being generated by the analog inputs. It will not change until you move the stick more than the Dead Zone number you selected earlier. Example if you used 50, The number will not change until you exceed 50 counts in either direction. Get this number to high and it will take a lot of stick movement and you would lose fine control around Center. Once DZ is tested the value is saved as dz_XYZ.

Next is a Fail Safe Test before we send our Variables to the Pulse Generator. Granted the PPM Library does some of this, but it is way too liberal and not suited to planes. We test the Variable to determine if it is in a valid range from high to low. Example let’s say a Gremlin gets loose and somehow one of your Varibles is 50, and your lower limit is 1000 uS. Fail Safe will catch it and change it to 1000. At the other end you may get 2300, with a upper limit of 2000. Fail Safe will change it to 2000.

OK last step is to send are Variables to PPMOut.write(channel, Value) The value you send are your variables in uS. You can any variable to any channel you want. All it has to do is match your planes channels.
Try this. Add one line of code PPMOutput(16, 1200) then watch and observe the output with a oscilloscope. You will see 16 channels. The first 6 channels will be whatever value was generated, channel 16 will output 1200 uS. The channels we skipped will default to 1500 uS with blank entries. Pretty slick huh?

After the write commands is Print commands used for testing. Disable all of them when not in use with //. DO NOT forget the very last line, Delay. It was used to allow time for all the Print commands to be sent tour your monitor screen.
Code:
/* RC Joystick Encoder V1.0 to be used to generate a PPM signal from 1 to 16 channels and output into your plane radio Trainer Port
 *  Developed by Dereck Campbell December 1st 2016 with a lot of help from PJRC Forum. Comments can be sent to [email protected] Use at your own risk. This Sketch 
 *  uses a Tinsy 3.2 and is not compatible with Arduino controllers. You must use the pulseposition Library and can be downloaded 
 *  at https://www.pjrc.com/teensy/td_libs_PulsePosition.html 
 */
  #include <PulsePosition.h>

  PulsePositionOutput PPMOut(FALLING); //Set PPM Output Pulse polarity to either FALLING or RISING in CAPS. Some readios require FALLING some RISING

  #define DEADZONE (50)   //Joystick and Throttle Dead Bamd Zone. When X, Y, and Z axis are centered generate 1500, and when
// THR is cut will bee 1000. Vary as needed for FX 10 to 50. Careful going above 50

//Define Digital Input Pins 1, 2, and 3 for Gear and Aux channel control.
  const int inPinD1 = 1; // Gear Input SPST Switch
  const int inPinD2 = 2; // Aux Input SPDT Switch
  const int inPinD3 = 3; // Aux Input SPDT Switch


  int Gear = 1100; // Digital Switch 1100/1900 uS
  int Aux = 1500; // Diggital Switch 1100/1500/1900 uS

// LED Power On Indicator
  const int led = 13; // digital pin 13 LED Power On Indicator

  void setup() {
  PPMOut.begin(10);  // Starts PPM Output, Pin 10, TX to Trainer Port Radio Input
  PPMOut.begin(10, 8); //Test only disable with // when not in uSe. uSed as SYNC Source for Oscilloscope Test. Pin 8

  analogReadResolution(13);// Sets ADC range to 13 bits (0 to 8191). Teensy 3.2 ranges from 10 to 13 bits.
  analogReadAveraging(4);// Average 4, 8, 16 and 32 readings, smooths stick input and jitter. No Delays

  pinMode(led, OUTPUT); // Set up Power On Indicator LED pin 13
  digitalWrite(led, HIGH); // Turn on Power On Indicator LED pin 13

  pinMode(inPinD1, INPUT_PULLUP); //Gear Switch Input set to logic 1
  pinMode(inPinD2, INPUT_PULLUP); //Aux Switch Input set to logic 1
  pinMode(inPinD3, INPUT_PULLUP); //Aux Switch Input set to logic 1

//Serial.begin(9600);  //Test only disable with // when not in uSe or delete
}// put your setup code here, to run once:

void loop() {
// Set Gear Switch to 1100 or 1900 uS
  if (digitalRead(inPinD1) == 0)
  {Gear = 1100;}
  else {Gear = 1900;}

// Set Aux channel to either 1100, 1500, or 1900 uS
  if (digitalRead(inPinD2) == 0 && digitalRead(inPinD3) == 1)
  {Aux = 1100;}

  if (digitalRead(inPinD2) == 1 && digitalRead(inPinD3) == 0)
  {Aux = 1900;}

  if (digitalRead(inPinD2) == 1 && digitalRead(inPinD3) == 1)
  {Aux = 1500;}
  
// Reads the 4 analog input pins A0 to A3 and declare vars
  int AEL = analogRead(0);
  int ELE = analogRead(1);
  int RUD = analogRead(2);
  int THR = analogRead(3);

// Map analog inputs 0, 8191, to 1100, 1900 output in micro-seconds. Use test print code to calibrate input to scale output correctly
// Watch Raw 13 bit data on AEL, ELE, RUD, and THR analog input pins. Operate all sticks and record lows and highs. 

// AEL low = 475 and high = 6550. You want to over shoot 5 to 10 points. Corected in Limts Check  
  int AEL_MAP = map(AEL, 475, 6550, 1100, 1900);
  int ELE_MAP = map(ELE, 1420, 7700, 1100, 1900);
  int RUD_MAP = map(RUD, 300, 8191, 1100, 1900);
  int THR_MAP = map(THR, 370, 7700, 1900, 1100);

// Joystick Dead Zone Band. Joysticks do not always center exactly. This code makes a Dead Band so when sticks 
// are release output center exactly 1500 micro-seconds, and 1100 microseconds when THR is Cut. Adjust band width 
// DEADZONE from 10 to 50 or higher if you dare. Example 100 would mean you go from 1500 to 1400 or 1600.
  int dZ_AEL = abs(AEL_MAP - 1500) < DEADZONE ? 1500 : AEL_MAP;
  int dZ_ELE = abs(ELE_MAP - 1500) < DEADZONE ? 1500 : ELE_MAP;
  int dZ_RUD = abs(RUD_MAP - 1500) < DEADZONE ? 1500 : RUD_MAP;
  int dZ_THR = abs(THR_MAP - 1100) < DEADZONE ? 1100 : THR_MAP;

// High - Low Limits. Clips over shoots in MAP and prevents invalid number to TX PPM out to radio
  if(dZ_AEL <= 1100) dZ_AEL = 1100;
  if(dZ_AEL >= 1900) dZ_AEL = 1900;
  if(dZ_ELE <= 1100) dZ_ELE = 1100;
  if(dZ_ELE >= 1900) dZ_ELE = 1900;
  if(dZ_RUD <= 1100) dZ_RUD = 1100;
  if(dZ_RUD >= 1900) dZ_RUD = 1900;
  if(dZ_THR <= 1100) dZ_THR = 1100;
  if(dZ_THR >= 1900) dZ_THR = 1900;


  // PPM Output, pin 10, to TX Radio Trainer Port. 1 to 16 channels max.
  PPMOut.write(1, dZ_THR); //Channel 1 in uS
  PPMOut.write(2, dZ_AEL); //Channel 2 in uS
  PPMOut.write(3, dZ_ELE); //Channel 3 in uS
  PPMOut.write(4, dZ_RUD); //Chanel 4 in uS
  PPMOut.write(5, Gear); //Channel 5 in uS
  PPMOut.write(6, Aux); //Channel 6 in uS

// Test Code for calibration of mapping and verifying operation. Disable with // when not in use. 
//Serial.print("AEL =");          Serial.print('\t');
//Serial.print(AEL);              Serial.print('\t');
//Serial.print("AEL_MAP =");      Serial.print('\t');
//Serial.print(AEL_MAP);          Serial.print('\t');
//Serial.print("dZ_AEL =");       Serial.print('\t');
//Serial.print(dZ_AEL);           Serial.print('\n');

//Serial.print("ELE =");          Serial.print('\t');
//Serial.print(ELE);              Serial.print('\t');
//Serial.print("ELE_MAP =");      Serial.print('\t');
//Serial.print(ELE_MAP);          Serial.print('\t');
//Serial.print("dZ_ELE =");       Serial.print('\t');
//Serial.print(dZ_ELE);           Serial.print('\n');

//Serial.print("RUD =");         Serial.print('\t');
//Serial.print(RUD);             Serial.print('\t');
//Serial.print("RUD_MAP =");     Serial.print('\t');
//Serial.print(RUD_MAP);         Serial.print('\t');
//Serial.print("dZ_RUD =");      Serial.print('\t');
//Serial.print(dZ_RUD);          Serial.print('\n');

//Serial.print("THR =");         Serial.print('\t');
//Serial.print(THR);             Serial.print('\t');
//Serial.print("THR_MAP =");     Serial.print('\t');
//Serial.print(THR_MAP);         Serial.print('\t');
//Serial.print("dZ_THR =");      Serial.print('\t');
//Serial.print(dZ_THR);          Serial.print('\n');

//Serial.print("Gear =");        Serial.print('\t');
//Serial.print(Gear);            Serial.print('\n');
  
//Serial.print("Aux =");         Serial.print('\t');
//Serial.print(Aux);             Serial.print('\n');

 //delay (10);// For TESTING only to ggive time for Serial print to finnish. 
}// End of Loop
OK once you get the joystick built and the code running comes the fun part, calibration the analog channels. You might be asking why. Well the reason is All those joysticks used for PC have a quirk you may not expect. They do not use the full range of the pots. This means you must adjust the mapping. So you may see your Throttle only goes down to 1100 uS instead of 1000, and only goes up to 1900 uS rather than 2000 uS.

Good news it is a relatively simple procedure and gives excellent results. It is simple stupid even I can do it. This is where you use all those print commands. Each Analog channel will have 3 values being printed. Example let’s say we want to calibrate the Aileron channel. Three values will be printed: int AEL which is the raw, smoothed, analog data and will be a number from 0 to 8191 if you are using 13 bit analog resolution. The second variable to be printed is int AEL_MAP which is the output conversion to uS with an output typical of 1000 to 2000. The last and 3rd variable int dZ_AEL which is what gets output to the PPM generator.
You move the Ailerons to the full left and observe int AEL the raw input data. It should be either 0 or 8191 if the pots went to their full extent but will not likely do that. So lets say 490. Record that number. Now go full right and copy the number say 6535. OK now go change the mapping command for ailerons from 0, 8191, 1000, 2000 to 490, 6535, 1000, 2000. Repeat for each analog channel

Now when you throw the sticks to full extents you should full range output from 1000 to 2000. Here is how you nail it. You want your raw data to cause a little over shoot in each direction about 5 to 10 points on the input. It will also test your limits so when you reach the ends you will have 1000 or 2000. So when you over shoot a little the limit check will prevent it from sending an invalid number. Now look at where I ended up with the above example. Initially it was 490, 6535, 1000, 2000 and after fine tuning is int AEL_MAP = map(AEL, 475, 6550, 1100, 1900);

OK that is it. I will close with a couple of comments. I have about 2 hours (about 2 dozen flights) on the joystick and it works better than I hoped for. I have to say if you build, you build at your own risk. Lastly once you ride a Joystick, you will never go back to thumbs.

Schematic. Note AGND used for POTS. Capacitor is a Ceramic .01 ufd

dereckbc is offline  
  Reply With Quote
Old 12-04-2016, 06:52 PM   #2
Bald Paul
Member
 
Bald Paul's Avatar
 
Join Date: Mar 2011
Location: Boiling Springs, SC
Posts: 547
View Bald Paul's Gallery9
Thanked 35 Times in 33 Posts
Club: Campobello Flyers
iTrader: (1)
Friends: (4)
Default

Okay, most of that (well, just about all of it!) is over my head, but I have to say, you have done some fantastic work!
I flew online flight sims (Air Warrior, AW2, Aces High) with joystick, throttle, and rudder pedals for many years. It became instinctive to me (good thing, those were all combat sims!) and I would love to have a joystick setup to fly RC with now.

If only I had a place to fly.... :-( (still no luck finding a new field)

What goes up, must come down. The trick is to keep it in one piece.
Bald Paul is offline  
  Reply With Quote
Old 12-04-2016, 07:18 PM   #3
pizzano
Behold The Renaissance
 
pizzano's Avatar
 
Join Date: May 2012
Location: So. Calif
Posts: 2,258
Thanked 143 Times in 141 Posts
iTrader: (0)
Friends: (3)
Default

Very nice Dereck.......!

The only curiosity I have is related to ergonomics. Since many of us fly outside standing and like to move about while flying, would not a flat stationary surface be best applied for operation of such a device.

Holding the base of the device in one hand while operating the stick in another seems cumbersome.........to add, having the device also wire connected to another TX (trainer port) limits the mobility if the joy stick is stationary, unless the TX is harnessed around ones neck, which may also distract the pilot........?

I guess if one prefers to "sit" and fly unencumbered, it would be pleasurable.........
pizzano is offline  
  Reply With Quote
Old 12-04-2016, 08:35 PM   #4
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by pizzano View Post
Very nice Dereck.......!

The only curiosity I have is related to ergonomics. Since many of us fly outside standing and like to move about while flying, would not a flat stationary surface be best applied for operation of such a device.
No argument from me on your point as it is spot on.

What was not said in the thread is I did this as Proof of Concept to see if I can make it work using Toy Joysticks. That Joystick cost me roughly $30 USD, and all the other parts about $45. Heck the Teensy is only $19. The big surprise is how dang good it works. If you want precision and fine control, I have not experienced RC control like this. The stability and precision are welcomed. Instead of having 1-inch of side to side movement you now have 6 inches of control distance making it much more precise.

Now that I know it works, I am going to build a working model for the field. I wil be using an Industrial Joystick and Slider which is extremely precise and Rugged. The kind they use in Skid Steer, Cranes, Fork Lifts, heavy equipment. It will be contained in 1/8-inch stainless steel Plate and Pipe on a heavy duty Tripod that will elevate it up to comfortable level to minimize fatigue.

As for now I copied what I see some of the FPV boys have done. Basically a piece of plywood with the Joystick and Radio securely attached. and a belt rigged to support it tilted away from me slightly. So what you get is a Joystick right on top of your other Joystick with the same angles to play with. It just comes naturally.
dereckbc is offline  
  Reply With Quote
Old 12-04-2016, 08:45 PM   #5
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by Bald Paul View Post
Okay, most of that (well, just about all of it!) is over my head, but I have to say, you have done some fantastic work!
I flew online flight sims (Air Warrior, AW2, Aces High) with joystick, throttle, and rudder pedals for many years. It became instinctive to me (good thing, those were all combat sims!) and I would love to have a joystick setup to fly RC with now.

If only I had a place to fly.... :-( (still no luck finding a new field)
Do not sell yourself short. If you can build a plane and know how to solder and wire things up, you can do this if you wanted to bad enough. It took me two years to get off my butt and do it. The long hard tricky part is the CODE. Once you have that working, it takes 2 more hours to build the thing. Using a BOB allows you to use the same connectors you already are familiar with. Example the Joysticks has 4 3-wire Pots. You use the same 3-pin connectors Servos use and is what I used. Everything is connected with either 2 or 3 pin Servo connectors. I just bought Female to Female 24 inch cables and cut them in half. They just have to be the same PITCH or spacing of .1

FWIW, took me a month to write the code. I had to learn CC+. What I ended up with looks nothing like I started with copying someone else work. This is version 7.
dereckbc is offline  
  Reply With Quote
Old 12-04-2016, 09:38 PM   #6
pizzano
Behold The Renaissance
 
pizzano's Avatar
 
Join Date: May 2012
Location: So. Calif
Posts: 2,258
Thanked 143 Times in 141 Posts
iTrader: (0)
Friends: (3)
Default

The precision aspect is very inviting........I could see potential for such device in the FPV environment, where stationary "table-top" application makes sense.......Although, what I have witnessed in the "pro" racing leagues thus far, seems a joy-stick application has not surfaced.........guess I'll wait on such a device until the industry has implemented the application.........Still, awesome you have conquered the challenge and are enjoying the fruits of your education, wisdom and labor.......!
pizzano is offline  
  Reply With Quote
Old 12-04-2016, 10:56 PM   #7
Panther
Super Contributor
 
Panther's Avatar
 
Join Date: Oct 2012
Location: Queensland, Australia
Posts: 1,011
View Panther's Gallery7
Thanked 48 Times in 48 Posts
iTrader: (0)
Friends: (1)
Default

Hide that code before the Chinese grab it.
Panther is offline  
  Reply With Quote
Old 12-04-2016, 11:12 PM   #8
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by pizzano View Post
The precision aspect is very inviting........I could see potential for such device in the FPV environment, where stationary "table-top" application makes sense.......Although, what I have witnessed in the "pro" racing leagues thus far, seems a joy-stick application has not surfaced.........guess I'll wait on such a device until the industry has implemented the application.........Still, awesome you have conquered the challenge and are enjoying the fruits of your education, wisdom and labor.......!
Not many commercial solutions exist. There are a couple, closest is HK FPV Stick but is limited to 4-channels. Another one which requires a Laptop is Compufly v2.0.

Other than that not much to pick from. Originally I wanted to use any USB Joystick made for a PC which can be done, but not near as precise and accurate. Most USB Joysticks on have 10-bot (0 to 1023) on x,y axis, and 8 bits (0 to 255) resolution, and require a lot of code to convert and calibrate. Not to mention there are no standards for a PC Joystick Mapping. They are all different and requires custom code.

I can use any resolution I want from 10 to 13 bits on all analog channels with dead nuts accuracy and no conversions. Straight from the Stick to the Radio. I let my radio apply Rates, Expos, and mixes.
dereckbc is offline  
  Reply With Quote
Old 12-05-2016, 01:27 AM   #9
dahawk
Super Contributor
 
dahawk's Avatar
 
Join Date: Jul 2011
Location: Keller, TX
Posts: 4,935
View dahawk's Gallery6
Thanked 286 Times in 280 Posts
Club: 114th RC Aero Squadron
iTrader: (0)
Friends: (21)
Default

Dereck,
This is so cool. You should patent and market. Someone could value engineer and package.

I was day dreaming of an app a few years ago. Recognizing that a lot of guys are getting older in this hobby was thinking of a wheelchair mounted version. The electric wheelchairs use a joystick, kind of. Let's say it's on the starboard side. On the port side you have your RC joystick. Or visa versa. This would enable many who just can't stand or walk without assistance.

Work like an A320 yoke ? Except rudder is a twist ? Throttle a slider on the base? Or like the up and down volume on my Direct TV channel changer?

Nicely done !

Hawk
dahawk is offline  
  Reply With Quote
Old 12-05-2016, 02:12 AM   #10
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by dahawk View Post
Dereck,
This is so cool. You should patent and market. Someone could value engineer and package.

I was day dreaming of an app a few years ago. Recognizing that a lot of guys are getting older in this hobby was thinking of a wheelchair mounted version. The electric wheelchairs use a joystick, kind of. Let's say it's on the starboard side. On the port side you have your RC joystick. Or visa versa. This would enable many who just can't stand or walk without assistance.

Work like an A320 yoke ? Except rudder is a twist ? Throttle a slider on the base? Or like the up and down volume on my Direct TV channel changer?

Nicely done !

Hawk
Hawk you do know where I live right? I am roughly 1 hour drive from you in Sherman. If you want to see it up close in action, you can make it happen if you want to.
dereckbc is offline  
  Reply With Quote
Old 12-05-2016, 05:04 AM   #11
solentlife
Super Contributor
 
solentlife's Avatar
 
Join Date: Oct 2010
Location: Ex UK Brit now in Latvia west coast - Ventspils
Posts: 10,882
View solentlife's Gallery47
Thanked 489 Times in 481 Posts
Club: Founder Member Ventspils RC Club. Ex Waltham Chase and Meon Valley Soaring.
Awards Showcase

Scratchbuilders Award  Scratchbuilders Award  Outstanding Contributor Award  125mph Speed Demon 
iTrader: (0)
Friends: (17)
Default

I was looking at Joystick concept having been an avid player of WingCommander, Stealth Fighter etc. on the PC.

I looked at the 9xr Pro stick conversion that fits a 3 axis stick into the case instead of the normal 2 axis ... but your JS is the tops !

Well done.

Nigel

222kph PKJ,EDF Concorde, Mini4,Mig3,T45,PKJ twin,ME109,Edge540,Cessna182,Skymaster Biplane,F15,F16,Badius,Ultimate,SE5,Qbee10,450 Heli,V911,J3 Cub Founder 9x forum: http://groups.yahoo.com/group/Flysky_RC_radio/
- Subscribe my Youtube: "solentlifeuk"
solentlife is offline  
  Reply With Quote
Old 12-05-2016, 06:34 AM   #12
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by dahawk View Post
Work like an A320 yoke ? Except rudder is a twist ? Throttle a slider on the base? Or like the up and down volume on my Direct TV channel changer?
Rudder, Ailerons, and Elevator are on the stick. That type of Joystick is called a 3-Axis of y, y, and z. Rudder is the Z-Axis and yes you twist the stick for rudder.

The Throttle you can see in the picture behind the stick. It is a Black T-Handle on the front side of the base stand.

For me Rudder on the stick is just natural. For normal turns and rudder uses you hand naturally will turn the rudder in the right direction. Allow me to explain.

Example lets make a Left turn. As your hand moves the stick to the Left your wrist pronates which twist the sticks. You do not have to even think about it. When you turn right your wrist supinates. Now if you want to roll either direction without rudder requires you to think about it and do it intentionally.
dereckbc is offline  
  Reply With Quote
Old 12-05-2016, 11:36 PM   #13
Panther
Super Contributor
 
Panther's Avatar
 
Join Date: Oct 2012
Location: Queensland, Australia
Posts: 1,011
View Panther's Gallery7
Thanked 48 Times in 48 Posts
iTrader: (0)
Friends: (1)
Default

The Microsoft joystick from years ago had the twist stick for rudder. Great for air combat.
Panther is offline  
  Reply With Quote
Old 12-06-2016, 12:36 AM   #14
dahawk
Super Contributor
 
dahawk's Avatar
 
Join Date: Jul 2011
Location: Keller, TX
Posts: 4,935
View dahawk's Gallery6
Thanked 286 Times in 280 Posts
Club: 114th RC Aero Squadron
iTrader: (0)
Friends: (21)
Default

Originally Posted by dereckbc View Post
Hawk you do know where I live right? I am roughly 1 hour drive from you in Sherman. If you want to see it up close in action, you can make it happen if you want to.
Dang, should have known this innovation would come from a fellow Texan !😎

Would love to see it sometime.
dahawk is offline  
  Reply With Quote
Old 12-06-2016, 02:51 AM   #15
Wildflyer
Past President of PSSF
 
Wildflyer's Avatar
 
Join Date: Sep 2009
Location: Lacey WA, 1 mile E of Mushroom Corner
Posts: 1,720
Thanked 170 Times in 165 Posts
Club: Puget Sound Silent Flyers -PSSF & Thurston County Miniature Aircraft Association - TCMAA
iTrader: (3)
Friends: (8)
Default

I've toyed with the idea of buying a used spectrum Tx (all my stuff is DSM2) and then using the encoder and transmitter circuits, mounted in a box with a very similar joy stick on top. I think I would have to be sitting in a chair to make it flyable.

I hope to avoid all the programming he had to do, by using the RC encoder.

Dave R, KI7MTA Proud PGR rider.
When you have flying skills like mine,
You become a master at repair.
Wildflyer is offline  
  Reply With Quote
Old 12-06-2016, 03:13 AM   #16
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by Wildflyer View Post
I've toyed with the idea of buying a used spectrum Tx (all my stuff is DSM2) and then using the encoder and transmitter circuits, mounted in a box with a very similar joy stick on top. I think I would have to be sitting in a chair to make it flyable.

I hope to avoid all the programming he had to do, by using the RC encoder.
Well I thought of that to. Two large issues to resolve. It would take a fairly large bulky cable to extend the Pots and Switches. Not to mention a way to tap the circuits.

Second issue is potential noise and errors picked up on an extended cable in a high RF power level environment.

My first and original thought was to build a black box to plug a USB Joystick into it, and them PPM out. That is complicated and takes twice the hardware. No two USB Joysticks are mapped the same. It would take custom code for each joystick.

Much easier to read analog and digital inputs, generate your own numbers, and send to the PPM Generator.
dereckbc is offline  
  Reply With Quote
Old 12-06-2016, 07:07 PM   #17
Wildflyer
Past President of PSSF
 
Wildflyer's Avatar
 
Join Date: Sep 2009
Location: Lacey WA, 1 mile E of Mushroom Corner
Posts: 1,720
Thanked 170 Times in 165 Posts
Club: Puget Sound Silent Flyers -PSSF & Thurston County Miniature Aircraft Association - TCMAA
iTrader: (3)
Friends: (8)
Default

derecbc,

That not quite my idea, I would have a one piece unit. I would use the electronics of the original transmitter and the control pots in the high quality joystick, with a throttle quadrant on the left side, or maybe top right side. Other switch locations, I haven't worried about yet.

I have built a custom single stick transmitter in the past. It was the Ace Silver Seven, in kit form. I could go similar to those designs where the throttle is high on the right side, operated by your left index finger. You cradled the Tx in your left hand, usually putting your hand under a wide stretchy band on the back of it.

I then took a Silver Seven encoder board and modified my dad's ProLine 6 channel into what we called a Silver Proline Seven, (very limited production, 1)

It turned out the Silver Seven encoder boards, which were analog, varied wildly from board to board. We had several different add-on boards for things like expo, mixing, ETC. things that we now take as standard in any TX.

If I setup a add-on board for my TX, it did not come close to working in my dads Tx with the same settings. That was not expected and was very disappointing.

The encoder didn't seem to be stable within itself, a setup that was fine one day would need some adjustment a week later.

These problems were not from lack of electronics knowledge or ability, I held then and still do, a FCC General Glass Electronics license. Not an amateur radio (HAM) license.

Bottom line is that I want to try a single stick transmitter again, it was nice when I did use it. My left thumb and index finger, after fighting with a table saw, Exacto knife, and a carpentry chisel, are not quite as nimble as they were in 1985 when I flew every weekend from 9am to dusk.

Dave R, KI7MTA Proud PGR rider.
When you have flying skills like mine,
You become a master at repair.
Wildflyer is offline  
  Reply With Quote
Old 12-06-2016, 07:53 PM   #18
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by Wildflyer View Post
These problems were not from lack of electronics knowledge or ability, I held then and still do, a FCC General Glass Electronics license. Not an amateur radio (HAM) license.
I hold both license. My FFC General had Broadcast and Radar endorsements. However today is a worthless piece of paper. any moron can work on a high power transmitter. Hell if the license were required, there would be no cell towers or cell phones. Very few people can pass the test.

Ham Radio license does not mean much anymore either since they dropped morse code requirements. Anyone can get a Ham license, you do not need to know anything about radio, Just download the test pool questions and answers and take it with you for the test. My wife holds a Technician License and cannot spell Ham Radio or know what a Ham Radio is. I had her take the test so she can legally use my 2 meter repeater and walkie talkies. 73's KF5LJW clear.
dereckbc is offline  
  Reply With Quote
Old 12-06-2016, 08:57 PM   #19
dahawk
Super Contributor
 
dahawk's Avatar
 
Join Date: Jul 2011
Location: Keller, TX
Posts: 4,935
View dahawk's Gallery6
Thanked 286 Times in 280 Posts
Club: 114th RC Aero Squadron
iTrader: (0)
Friends: (21)
Default

Would the Microsoft joystick made for the Flight Simulator work ? I still have mine.

I'm still trying to work the advantages of using a Joystick versus two sticks on the tx.
dahawk is offline  
  Reply With Quote
Old 12-06-2016, 09:27 PM   #20
pizzano
Behold The Renaissance
 
pizzano's Avatar
 
Join Date: May 2012
Location: So. Calif
Posts: 2,258
Thanked 143 Times in 141 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by dereckbc View Post
I hold both license. My FFC General had Broadcast and Radar endorsements. However today is a worthless piece of paper. any moron can work on a high power transmitter. Hell if the license were required, there would be no cell towers or cell phones. Very few people can pass the test.

Ham Radio license does not mean much anymore either since they dropped morse code requirements. Anyone can get a Ham license, you do not need to know anything about radio, Just download the test pool questions and answers and take it with you for the test. My wife holds a Technician License and cannot spell Ham Radio or know what a Ham Radio is. I had her take the test so she can legally use my 2 meter repeater and walkie talkies. 73's KF5LJW clear.
You've pretty much summed-up todays FCC operator/repair license requirements. Unless one operates/repairs offshore marine and aircraft/aeronautical ground station devices to communicate with aircraft, the licenses mentioned above are not required here in the U.S........Even those licenses do not permit one to operate amateur or GMRS radio stations.......:

http://wireless.fcc.gov/commoperator....htm?job=wncol

Two of my UAV buddies jumped through those hoops 4 years ago when preparing for permits and licenses to operate commercial aircraft here and in other global locations. FCC regulations and licenses are pretty much accepted globally, Great Britain, Germany, Japan and a few places in South Korea have their own authorization requirements, but the FCC licenses help with overcoming many of their hurdles.
pizzano is offline  
  Reply With Quote
Old 12-06-2016, 11:41 PM   #21
dereckbc
Super Contributor
 
Join Date: Jun 2013
Posts: 1,123
Thanked 62 Times in 60 Posts
iTrader: (0)
Friends: (3)
Default

Originally Posted by dahawk View Post
Would the Microsoft joystick made for the Flight Simulator work ? I still have mine.
I would think so, I have seen it used for such.

You just have to open it up and see what they used. 99% chance they use what every toy joystick manufacture uses, plain ole POTs. Easy peasy.

There is only one toy joystick I know made like commercial sticks using Hall Effect Transducers which is easy to read. A $400 stainless steel dual unit made by Thrustmaster a HOTAS Flight Stick. More switches and Sliders than should be legal. I gave serious thought to using one and replace my Radio buy just buying a Radio Transmit Module. All you have to do is feed the Module with a PPM signal. I woul dhave to use a Controller to do everyth thing my DX6 can do. That would be a very large complex program. Way beyond my ability. That takes a team of code writers.

I can do better cheaper.
dereckbc is offline  
  Reply With Quote
Old 12-10-2016, 02:22 AM   #22
flypaper 2
Super Contributor
 
flypaper 2's Avatar
 
Join Date: Jul 2005
Location: Kingston Ont. Can.
Posts: 1,237
Thanked 44 Times in 44 Posts
iTrader: (0)
Friends: (1)
Default

I made this one about 3 yrs ago using the Orange T6 trans. Which is a reliable radio and not expensive for an experiment that may or may not work. Could be done with pretty well any reliable radio. I am more mechanically minded and a top end computer klutz.
I was luckily enough to have an old computer joystick like the Wingman. It has twist rudder and the wheel on the left of the pad is the throttle control. This one has resistor pots for control and I took them out of the trans and mounted them in the joystick. The black part is coroplast between the stick and the face side of the trans. I hold the coroplast up against my belly and my holds it steady and controls the throttle. Crude but it works.
It has been in various plans and right now it's operating a Scratchbuilt Turkey buzzard flying wing glider of my own design.
Only the pots have been removed from the trans and the front of the trans is still used, for instance, for the trimmers and screen.


Attached Images
File Type: jpg Joystick 2 001.JPG (131.9 KB, 183 views)
File Type: jpg Joystick 2 005.JPG (152.0 KB, 159 views)
File Type: jpg Joystick 2 004.JPG (142.0 KB, 183 views)
File Type: jpg Joystick 2 007.JPG (138.4 KB, 178 views)

Gord.
flypaper 2 is offline  
  Reply With Quote
Old 12-10-2016, 05:09 PM   #23
tobydogs
love to build!
 
tobydogs's Avatar
 
Join Date: Jan 2010
Location: nj usa
Posts: 3,692
Thanked 244 Times in 241 Posts
Club: rcrcc rockland county,ny
Awards Showcase

100mph Speed Demon  Outstanding Contributor Award 
iTrader: (0)
Friends: (22)
Default

I want the Hotas thrust master stick set up in a small custom built trailer. large flatscreen tvshowing multi camera views at the same time, 2 "very"[very!] comfortable leather highback swivel style office chairs side by side. one for me and one for my passenger/copilot.
An extreme long range fpv systems for flight and video. built in the trailer is roof launch compartments for a long distance quad 680or larger to carry payload and a vertical launch fpv wing both of which are capable of 1Hr plus flights with power to spare. Also one vertical launch edf jet like rocket capable of extreme speed and distance with gps tracker.

Pack a cooler for refreshments,take a ride to "wherever" and go flying without ever leaving the trailers warmth or air-conditioning. tv screen support multi view camera angles and has all the OSD like information you'd ever need, loss of video the OSD remains so you can fly by instruments only if needed.

The Eagle Tree Vectors full OSD display would be perfect using all the bells and whistles that can be added.

take flight with the quad to scope out the area, lock it into hover over the trailer 200 ft high to keep watch over the trailer and surounding area while vertically launching the the wing from the forward compartment of the trailer for a multi mile/hr flight.

BEST PART!!!! How to use all this fun stuff. Search and Rescue! on each quad or wing are multi camera views displayed at the same time on the flat screen for pilot and copilot to look for missing person. there is a drop/release gps tracker unit when searching for a lost person in the woods that can be released over the missing person for them to p/u. Heres the mission....Small child missing for hours in the woods. Fly quad with a special package in the drop release compartment on the quad. It's a compressed sponge teady bear that inflates/expands to a soft cuddly bright colored teadybear with gps locater inside and hopefully child retrieves it a keep it with them. Now you have your fpv screen coordinance location to share with foot crews and a device traveling with the child hopefully. The teddy bear is wearing a vest explaining whats inside for adults in need of finding so they don't curse ya out for droping a toy instead of water..lol.

This is how you will explain to your wife why the trailer is sitting in your driveway and why you go on weekend exercise journeys every weekend.

narrow is the place to land...wide is the space to crash....choose the narrow way!
tobydogs is offline  
  Reply With Quote
Old 12-10-2016, 05:18 PM   #24
tobydogs
love to build!
 
tobydogs's Avatar
 
Join Date: Jan 2010
Location: nj usa
Posts: 3,692
Thanked 244 Times in 241 Posts
Club: rcrcc rockland county,ny
Awards Showcase

100mph Speed Demon  Outstanding Contributor Award 
iTrader: (0)
Friends: (22)
Default


Dang ,I just threw this together for fun.

narrow is the place to land...wide is the space to crash....choose the narrow way!
tobydogs is offline  
  Reply With Quote
Old 12-10-2016, 05:42 PM   #25
Bald Paul
Member
 
Bald Paul's Avatar
 
Join Date: Mar 2011
Location: Boiling Springs, SC
Posts: 547
View Bald Paul's Gallery9
Thanked 35 Times in 33 Posts
Club: Campobello Flyers
iTrader: (1)
Friends: (4)
Default

Originally Posted by dahawk View Post
I'm still trying to work the advantages of using a Joystick versus two sticks on the tx.
If you had a joystick and throttle on a transmitter tray, I would love it. If you could program all the buttons and hat switches for more than four channels, so much the better! Trims, flaps, gear - all done with hat switches, and no need to take your hand off the stick while doing it. Having throttle on it's own control device (such as a slider) separate from rudder control would be nice, too - at least for me.

What goes up, must come down. The trick is to keep it in one piece.
Bald Paul is offline  
  Reply With Quote
Reply

  WattFlyer RC Electric Flight Forums - Discuss radio control eflight > Electric R/C Airplanes > General Electric Discussions


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
For Sale Life-Long RC Airplane Hobby Collection of Bill Crosscup - Thousands of Items FloridaEstateSales General RC items For Sale and WTB 3 07-05-2015 06:53 PM
Online RC Vendors That Ship For $5.00 Or Less Murocflyer General Electric Discussions 38 10-12-2014 10:51 PM
Many electric RC airplanes for sale, shipping or local pick-up (Seattle) available modomigliore Ebay for sale 0 09-29-2014 06:35 PM
New RC Super Hero for ClearView, FMS and RC Desk Pilot ggunners Flight Simulators 0 12-02-2011 08:50 PM
New SGTalon Enteprise D for Clearview, FMS, RC Desk Pilot ggunners Flight Simulators 0 10-14-2011 10:12 PM


All times are GMT +1. The time now is 04:01 PM.


Powered by: vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright 2005 WattfFlyer.com
RCU Eflight HQ

Charities we support Select: Yorkie Rescue  ::  Crohn's & Colitis Foundation



Page generated in 0.22899 seconds with 74 queries