Problems with Throttle channel 8 on pixhawk

Just so I can understand where the change might have taken place that broke this feature. Did your previous version of software that worked have the servo output parameters in the parameter list?

Hi Bill
Params for end December Last Flight

222 build 221217.param (13.6 KB)

Your SERVO8_MIN is 1100 and SERVO8_MAX is 1900. I’m not sure that will work with most heli ESC’s because 1100 might be above the minimum initialization value for your ESC, so it will refuse to enable. Most require a range of 1000-2000. The old param file had those 1100 and 1900 values as well, but it might be not allowing your ESC to initialize after you did the firmware upgrade.

I think I see what happened. You got bitten by the change in parameters for the min, max, and reverse of the RSC output servo. The parameters that handled this in previous versions was H_RSC_PWM_MIN, H_RSC_PWM_MAX, and H_RSC_PWM_REV. In 3.5.5 that was changed so it used the parameters set for the servo it was assigned. So if you used channel 8 then the parameters are SERVO8_MIN, SERVO8_MAX and SERVO8_REVERSED. Looking at you param file from the previous version, your min and max were 1000 and 2000 respectively. And like Chris said the values for channel 8 are 1100 and 1900. So try changing them and see if that works.

looks if this could be the fault. I’ll try it in the morning, might be able to sleep to-night now.

@bnsgeyer do you think we should do a PR to 3.6 to change the defaults to 1000 and 2000 for SERVO8 for heli? Otherwise users doing a fresh install could end up trying to figure out why their ESC fails to initialize and starting at those values for pistons with throttle servo is normal anyway before setting the range.

I suppose it would have to be determined if setting those to 1000 and 2000 would affect multi-rotors in some way, and if it does we’ll have another if heli_frame statement in the code…

Yes I think that would be wise.

I think we can do it now that it doesn’t require an IF Frame statement. I think we can do it based on the Frame type or class parameter. That way it doesn’t require a unique build for the heli frame.

Looking at SRV_Channel.cpp the global defaults are set to 1100 and 1900 and I’m not 100% sure of the reasoning for that.

Altering Servo 8 did not work. I’ve gone back to V3.5.3 And the throttle works with the params supplied. I’m now going through the params that were working last December and checking if any cause problems.

Make sure you did not accidentally reverse the servo output on SERVO8
SERVO8_MAX,1900
SERVO8_MIN,1100
SERVO8_REVERSED,0

This is confusing because in the old code the REV param was 1 for normal
H_RSC_PWM_MAX,2000
H_RSC_PWM_MIN,1000
H_RSC_PWM_REV,1

In the new code 0 is normal, 1 is reversed. That was thought to make more sense somehow. So your parameter entries should look like this with 3.5.5.
SERVO8_MAX,2000
SERVO8_MIN,1000
SERVO8_REVERSED,0

Geoff, failing all else, if it will not work with Copter 3.5.5, try the ArduHeli 3.5.5 build and see if it works there. There is some extra parameters in the ArduHeli build that will not affect anything else just to try it. The code that affects this SHOULD be the same between the stable Copter build and ArduHeli build, and I have flown the ArduHeli builds for months before this was PR’d to Copter stable. But it would be an easy check.

Hi Chris
Well I went through V3.5.4 And had it all working. So then I updated again to 3.5.5. And got that working with the Servo8 numbers altered as you suggested. When I tried alterering them before, they made no difference.
How do I install your firmware?

It is good you got it working! The current ArduHeli build has features you will likely not need for your particular helicopter. The things that are different in the ArduHeli builds are noted on the page, and those builds are not done unless the features in them are tested from a separate branch first, and determined to be stable. And from there, selected features are PR’d to get into Copter.

If you wish to fly it or test it simply download the build that is suitable for your Pixhawk (-v2 for older Pixhawks, -v3 for newer ones with 2MB usable flash like PH 2.1, -v4 for Pixracer), and install it using the Custom Firmware File option in your ground station.

1 Like

Thanks Chris & Bill again for your help.

I’ve attached a Photo of the converted Trex 550E Helicopter

2 Likes

That’s a nice looking heli! Just curious where did you find the scale 222 body for a 550 frame? I am assuming it was a 600 body and it probably fits. Some of the kits I have seen require reversing the tail rotor gearbox and rotating the head the other way.

How much finishing work was required on the scale body?

It’s a FUNKEY Scale Fuselage Bell 222 .30 (550) size RED Color with Retractable Landing Gear. I brought it second hand. It didn’t look like it had been flown, but was a nice built job. You have to be a Surgeon to fit the copter in

1 Like

Issue details
I was running tradheli 3.5.4 with the throttle set as setpoint mode and setpoint to 1425.

H_RSC_MODE | 2 | | 1:Ch8 Input 2:SetPoint 3:Throttle Curve | Determines the method of rotor speed control
H_RSC_SETPOINT | 1425 | PWM | 0 1000 | PWM in microseconds passed to the external motor governor when external governor is enabled

At ch8out at version 3.5.4 it gives out the right setpoint of 1425.
But at version 3.5.5 is gives out whatever is set on SERVO8_MAX ignoring the setpoint of 1425

SERVO8_FUNCTION is checked that is 31

Why is this happening? is a bug of V3.5.5?
As first time posting a HUGE THANK YOU to all developers for their time and effort to keep the project alive!

A value of 1425 is not a valid value for the H_RSC_SETPOINT. Would it possible to export your param file from your Pixhawk and post it here, or on a hosting service such as Google Drive or DropBox, and post the link to it?

Seeing the parameters would help to diagnose the problem.

In version 3.5.4 i was tuning the heli. The throttle was working properly. the H_RSC_SETPOINT i think by default was around 1700 but i then set it to 1425 to reduce the headspeed. After some flights i upgraded to 3.5.5 and the throttle was not working (esc not arming). As i read the H_RSC_MIN/MAX are not working anymore. (this change was not mention in the changelog).
By investigating i found out that the Servo8 min/ max replaced the H_RSC_MIN/MAX but i also see now that the range of H_RSC_SETPOINT is between 0 and 1000. I will look at it.
Where can i find such changes from 3.5.4 to 3.5.5 as their are not mention in changelog?
It is a bit dangerous such chances without knowing. (after seeing throttle not working i am worried about all the other parameters also).
I will try to post my parameters list tomorrow as the heli is not available now
Thank you

The RSC_SETPOINT has always been 0-1000. The commit that moved the old RSC_PWM_MIN/MAX values to the SERVO library is this one (to master, but was also PR’d to 3.5-backports) but the range is the same and for an electric should be set to 1000 MIN, 2000 MAX. The only reason to change those would be if you are flying a helicopter with an engine that has a throttle servo, to set the endpoints for the servo.

As noted earlier in the thread we may look at changing that for heli because the defaults are 1100 and 1900, and I don’t know why that was done as a global default for the SERVO MIN/MAX. But it prevents ESC’s from arming because most require a signal < 1.06ms to arm.

So I would suggest setting the SERVO8_MIN to 1000, SERVO8_MAX to 2000, SERVO8_TRIM to 1000 and SERVO8_REVERSED to 0. This is assuming you have an electric helicopter. If you are flying combustion engine let me know because those limits have to be set different for the throttle servo with piston engine.

The H_RSC_SETPOINT has had no changes. The values are 0-1000, which is scaled as percent throttle x 10. So, for instance, a setting of 700 would be 70% throttle signal to your ESC.

I do not understand the 1425 RSC_SETPOINT you were using. Even in 3.3 or 3.4 the range has always been 0-1000 for that parameter. And it is only valid if you are using H_RSC_MODE = 2. If you are using RSC_MODE 1 or 3 that parameter is not used.

Once I get a chance to look over your parameters I will be able to see more about your setup.
Thanks!

Chris is right, the setpoint parameter has always been scaled as 0 to 1000. The default value is 700. Which produced a value of 1700 in 3.5.4.
So I performed a test with 3.5.4. I entered a value of 1700 for the set point and mission planner warned me that the value was outside the recommended range. I wrote the parameter to the flight controller anyway. I proceeded to arm and engage with this and the pwm that came out CH8 was 2700. I’m not sure what the ESC would have seen if CH 8 was given this value. Again that was using 3.5.4.
In 3.5.5, I put the set point at 1425 in Mission Planner full parameter list page and it again told me that the value was out of range but I wrote that to the aircraft. As you reported, the pwm output on ch8 was 1900, the max value for the servo. When I set the setpoint in mission planner to 425, it output 1440 pwm on channel 8 which is slightly different because of the min/max endpoints are defaulted to 1100 and 1900 respectively.

I’m sorry for your unexpected result when you moved to 3.5.5. I also apologize for not making is clear in the change logs that the min/max values had changed. I’m not sure why things work with entering a setpoint of 1425 in 3.5.4. I would have thought that you would have got a high value like you did with 3.5.5. I think the 3.5.5 software works as it did in 3.5.4, except with the fact that the default endpoints have changed which affects the output to the ESC.

If there is anything I can help you with on the set up, please don’t hesitate to post to the forum.

Thanks
Bill