Bill and I have written four-servo swashplate support for TradHeli. Along with this comes new pre-defined swashplate types so you don’t have to use the settable servo positions any longer.
Test firmware, built on Copter 3.6.5 is available here for popular controllers
Instructions for setup:
The ground stations are not yet aware of the new swashplate type selections. They are:
0 - the old settable servo position configuration which everyone except for H3-140 users are currently using
1 - H1 swashplate
2 - H3-140
3 - H3-120
4 - H4-90
5 - H4-45
For all the pre-defined swashplate types the settable servo position parameters will no longer appear in your full parameter list. While in ArduPilot any SERVOx_FUNCTION can be assigned to any motor, we now have specified motor positions for the servos like multicopters have for setup:
- For three-servo 120/135/140 swashplates with elevator servo in the rear the left side servo is Motor1, right side servo Motor2, elevator servo is Motor3
- For all reverse configuration three-servo 120/135/140 with elevator servo in the front, this is reversed. Right servo is Motor1, left is Motor2, elevator is in front. Use the appropriate H3-120 or H3-140 and simply reverse the servo directions and collective direction for front elevator swashplate
- H1, as it’s always been, has no CCPM mixing and is used with downstream FBL units
- For H3-90 swashplates, this is the same as H4-90 with one servo missing, so you simply use the H4-90 plate type and don’t use one servo output for which ever servo is missing
- H4-90 left side servo is Motor1, right side Motor2, rear elevator Motor3, front elevator Motor5
- for H4-45 (sometimes called HX-90 or H4X-90) LF servo is Motor1, RF servo is Motor2, LR servo is Motor3, RR servo is Motor5
There is a couple new parameters you have not seen before. One is H_H3_ENABLE. Do not set this manually. It will set itself depending on which swashplate type you select. The other is H_LIN_SW_SERVO. These new params are shown here in Mission Planner for reference, along with the Swash Type set to 4, for H4-90 four-servo swash.
The H_LIN_SW_SERVO is set to 0 by default. What this setting does is linearize the output of your servos, primarily to prevent binding of opposite servos for four-servo swashplates. If you get binding with your four-servo swash, set this param to 1 and will fix it. This setting also has other uses and perhaps @bnsgeyer will want to expand on that, as he wrote the code for this part.
For all three-servo helicopters, after selecting your swashplate type the rest of the setup is identical to what it always has been.
Setup for four-servo swashplates:
The setup for four-servo swashplates is probably well-understood by people that have flown them. But I’ll go over it here anyway.
With four-servo always disconnect one of the elevator servo swash links before firing the system up the first time. This will prevent broken links or binding until you get the servo directions properly set, swashplate leveled, and linkage geometry adjusted.
- The geometry of the linkage is very important with four-servo. Your servos should be at center trim, horns at 90 degrees to the servo case, links at 90 degrees to the horns, and the lengths of the links adjusted to get hover collective pitch with the servos and linkages in this configuration. You can set the H_COL_MID later to whatever it takes for zero pitch, but this configuration will provide the best geometry for flight with no servo binding.
- After the mechanical setup of the linkages and swashplate, pitch limit and cyclic limit set in the software, now you must test for binding.
- Place the swashplate at H_COL_MID and see if the link on the disconnected servo will easily go on. If it does, operate the cyclic thru it’s full range at H_COL_MID to see if it binds or not.
- Place the pitch at minimum and do the same test as step three.
- Place the pitch at maximum and do the same test as step three.
If the geometry is all correct it should be fine. If you get binding, set H_LIN_SW_SERVO to 1 and it should fix the linkage/servo binding issue. You can choose to use linear servo outputs before you even begin setup if you want. Some servos are not splined the same, there may be manufacturing anomaly where the default geometry is incorrect, etc. If you’ve set your four-servo heli up before with a FBL unit, you’ll know about this, and know whether or not you need to use the linear servo outputs.
This firmware is mainly for people that have four-servo heli’s to bench test it and see how it works for your heli, and provide us with feedback for any changes we may need to make. Anybody can use the firmware and fly it - it has been tested and flown by me. And it’s built on Copter 3.6.5 so you don’t have worry about other undocumented “features” that may be in Copter master. The only difference between this firmware and the current stable is the swashplate code.
Also note that your ground station will seem to take a long time to download params with this firmware after you select a swashplate type because it’s looking for some params that no longer exist after you reboot the controller. And a reboot is necessary after selecting your swash type. If it gets to the end of downloading params and seems to “hang” just hit cancel and proceed with setup. It will not make a difference.
Final note is that the old adjustable servo position setup is only being preserved in this firmware for backwards compatibility for upgraders. It will eventually disappear from the setup unless somebody can demonstrate some weird reason it must be retained. And some strange swash type is not a valid reason - if it exists we can write a mixer for it and add it as a swashplate type because this is all in a new swashplate library.
Any questions or comments, feel free. I’m sure maybe Bill will have more to add that I may have forgotten.