This new frame type was added in 3.5 but AFAIK it hasn’t been tested until now.
I have a problem with servos throw, they go to extreme with slight stick input or board movement.
I set H_CYC_MAX down to 300 to get reasonable throw (default = 4500) but still unflyable.
Additional info: I have been flying my synchropter with custom 3.4.5 code fine. Later decided to move to 3.5 and modified the servo mapping as usual but it had this same problem (plus few more) so I thought it was my bad coding but using official firmware does the same.
this is a transverse heli, right? In that case you need H_DUAL_MODE=1. Otherwise it’s setup as a longitudinal dual.
I know this probably doesn’t explain all your results, but it won’t work well with that setting
First is to check whether this problem is in the code or my incorrect parameter(s).
Neither transverse nor tandem dual mode will work on my frame, I use custom firmware modified from AC3.5.
The log I posted uses the official 3.5.2 heli firmware so I left things untouched since it won’t work anyway. (just ruled out my bad custom code)
Pitt,
Have you found a solution to this issue? It was interesting to see that the guys tuning their tandem aircraft had gains about 10 times less than what is typically used for single main rotor/tail rotor helicopters. Sounds like you are encountering the same thing. It has to be some scaling that is being done differently in the Heli_Dual motors library as compared to the Heli_single motors library. I tried looking through your Copter 3.4 motors library compared to the 3.5 motors library. You might clone the 3.5 repository and then copy your Heli_Dual motors file into the repository. Then do a “git diff” to see how they changed. it might reveal where the issue is. Just some thoughts.
I think it is very interesting that your 3.4 version works as expected and the 3.5 version has some scaling issue.
This is from the Heli_single motor file
float servo1_out = ((_rollFactor[CH_1] * roll_out) + (_pitchFactor[CH_1] * pitch_out))*0.45f + _collectiveFactor[CH_1] * coll_out_scaled;
float servo2_out = ((_rollFactor[CH_2] * roll_out) + (_pitchFactor[CH_2] * pitch_out))*0.45f + _collectiveFactor[CH_2] * coll_out_scaled;
Notice that in the Heli_single file that the 0.45 factor is multiplied but in the Heli_dual file they are divided by 0.45. I checked Pitt’s 3.4 version of the Heli_dual motors library and he has the 0.45 factor multiplied similar to the Heli_single file.
Hope this fixes the problem.
By the way this would result in a amplification factor of aproximately 10.
Hi pitt, I was wondering if you could clone the latest stable version of 3.5 and implement the changes that I suggested to fix the sensitivity problem. If you were convinced that my solution fixed the problem, then you or I could also submit a pull request and attach that to the issue that I posted. Let me know.
I am trying to set up a transverse rotors. I use Mission planner to view the servo output, but motor 1-4 seems to show a single rotor setup with tailrotor servo. should I get motor 4-6 works as the 2nd swashplate?