Velos 880 pixhawk build

Yep. I’m in Central Time Zone, -0600 GMT.

I think this quote above is what has you confused, and it’s not actually that difficult. It’s just a matter of understanding how the ArduPilot system does its outputs vs inputs. I can PM you my cell number, or if you want to hook up on ArduPilot Mumble we can use that too.

Could you do 10am your time tomorrow? PM me your number if ok and I’ll call.

Thanks

Jon

Well I think I got it figured out for the most part on the multirotor side of things. I haven’t tried rtl or auto missions yet but I think those are pretty basic. I am however bored with looking at a multirotor and am anxious to give a heli a shot now. I am going to work on getting the pixhawk 2.1 switched over to my nitro now. Need to figure out a good place to mount it on such a small machine as well as find a boom mount for the gps. I will check back in when I get it mounted and wired up.

Kind of funny, I got it sort of working but having the exact issue Jon is. I have the channels all mapped and working but I can not get to full range. I have tried changing the parameters as suggested and it does not affect the range the fbl unit is seeing.

Got it figured out, just had to have it in acro to bypass the pixhawk and give full range

Ok so after spending the entire day trying to get this programmed I am stuck. In order for my throttle servo to go the correct way it has to be reversed. By what I can tell it is causing a pre-arm motor interlock error. Atleast I think that is whats causing it since it sees throttle as being up, is there a way to bypass this alarm? Second thing is setting the endpoints for throttle I have to lower them to have the correct range without binding. I am only able to do this in the transmitter. Changing max and min on servo_x or rc_x does not affect it. One more thing, I want to use an aux port on my fbl unit to control onboard glow.
What is the complete mapoing for the sbus out and which in channel controls it? If that makes sense… After I get this straightened out I should be good to go.

Just wanted to add it is definitively because of reversing the throttle servo. It doesnt matter whether I do it in the tx or rc8, it makes it lock. For some reason I cannot reverse it using servo8. If only I could reverse it in the fbl software :frowning: it is the only channel I can’t reverse. Might have to use a different fbl unit if nobody knows another way to reverse it or bypass the interlock.

@ChadCarlin I just got back in here and catching up a bit.

Ok, so most FBL units are going to have to capture the throttle range so it knows where throttle closed is, and throttle wide open. And it may have to be reversed, depending on the direction the servo is installed, etc…

So, to start out - your FBL unit is going to be looking for the throttle signal on Channel 3, NOT channel 8. The S.Bus and the RC in ArduPilot cannot currently be remapped. So remapping of the S.Bus in the FBL unit will be required to match what ArduPilot uses (Channel 8). Most FBL units will support remapping of the S.Bus. But there are some like the SK540 that do not. Hopefully you have one that does allow it.

Reversing the SERVO8_REVERSED should reverse the signal the FBL unit is seeing, and reverse the direction of the servo so maximum pwm is throttle closed.

You MUST use a H1 swash setup in your radio (straight-thru control with no CCPM mixing) or an airplane setup, and you MUST use a H1 swash type in the Pixhawk params. No CPPM mixing is done in the Pixhawk for a downstream FBL unit.

DO NOT use a transmitter throttle/pitch curve at this point. Set up a switch in your radio for Channel 8, so the switch is on or off. This is the throttle signal to the Pixhawk. If the governor in your FBL unit requires a separate channel to turn the governor on or off, set that up (with the appropriate S.Bus mapping) in your FBL unit on Channel 9 or 10, or whatever is convenient.

Capturing the throttle range:

  1. Make sure the RC has been properly calibrated on Channel 8.

  2. Make sure SERVO8_FUNCTION is set to 31 (HeliRSC), and set the DISARM_DELAY to zero to disable auto-disarm.

  3. Disconnect the linkage from the throttle servo to the carb.

  4. Make sure H_RSC_MODE is set to 3 (software throttle curve)

  5. Make sure, for now, H_RSC_IDLE is set to 0

  6. Set SERVO8_MIN to 1000, SERVO8_MAX to 2000 and SERVO8_TRIM to 1000

  7. Power up your Pixhawk and observe where the throttle servo horn comes to rest. If it comes to rest at the wide open throttle position, then set SERVO8_REVERSED to 1. That should instantly move it to the throttle closed position.

  8. After setting the servo direction in the above step, set the SERVO8_TRIM to a value that will move the throttle to the throttle plate closed condition, with the throttle actually closed (so the engine will stop), and where the linkage can be installed without binding. But do NOT install the linkage yet. Note the trim value it took to achieve this. Enter that value for either the SERVO8_MIN or MAX, depending on if the throttle servo is reversed or not. If it is reversed, you will enter that value for SERVO8_MAX, as an example, because it is reversed. And vice-versa if the servo is not reversed

  9. Do the same thing as in the step above, but for throttle wide open, and enter the trim value it took to achieve it for the other SERVO8_MIN/MAX.

  10. You now have your throttle range. But the FBL unit doesn’t know what it is yet

  11. Go to the setup for your FBL unit and with the SERVO8_TRIM set to throttle closed, capture that in the FBL unit for 0% throttle.

  12. In your FBL setup do the same thing as the above step, except for wide open throttle, and capture it

  13. Your FBL unit now knows where 0% and 100% throttle are, and the SERVO8_MIN/MAX values should be set to the range that won’t bind it, set your SERVO8_TRIM to throttle closed.

  14. Power up your Pixhawk, with the throttle switch on your transmitter OFF. Arm the flight controller. The throttle servo should not move.

  15. Set the H_RSC_IDLE to 100. This should just crack the throttle open and this must be set to a value that will allow the engine to be started and idle without the clutch engaged.

  16. Test the above setup. Disarm the Pixhawk - throttle should go completely closed. Arm it, the throttle should barely crack open so the engine will idle, rotors not turning.

Setting up the throttle curve:
The procedure for flying is going to be to power up the system. Arm the flight controller, start the engine and let it idle and warm up. When the cylinder head temp is to a suitable value, throw the Channel 8 throttle switch on.

There is a three-point throttle curve in ArduPilot controlled by H_RSC_POWER_HIGH/LOW/NEGC. These three points correspond to maximum negative collective pitch (NEGC), zero pitch (LOW) and maximum pitch (HIGH). The range for setting these is 0-1000 (percent throttle x 10).

There is also adjustable ramp/runup times set with H_RSC_RAMP_TIME and H_RSC_RUNUP_TIME. The ramp time is how fast the system ramps the throttle servo from idle to whereever you have the collective lever placed when you throw the Channel 8 throttle switch on. The runup time is how many seconds it takes for the engine to actually reach speed. Runup must be at least one second greater than ramp.

Depending on how you set up your pitch range and how you set the throttle curve, will depend on how fast the system will spool up, engage the clutch and spin up the head.

So let’s consider a typical 3D setup where you may run -8 degrees to 12 degrees of pitch. Your throttle curve may look like:
H_RSC_POWER_NEGC: 350
H_RSC_POWER_LOW: 280
H_RSC_POWER_HIGH: 850
corresponding to 35% throttle at max neg, 28% throttle at zero pitch, 85% throttle at max pitch.

This has to be set to correspond to your engine’s torque curve as close as possible so the governor can fall back to the throttle curve if the governor’s speed sensor fails. Some governors will use a “stick switch” where the governor may become automatically active when the throttle percentage exceeds whatever you set it to. Some may use a separate channel for governor on/off, and not use the “stick switch”.

I would recommend using at LEAST 19 seconds for the H_RSC_RAMP_TIME to start with. And you’ll have to guess at the POWER HIGH/LOW/NEGC for now.

So arm the FC and without starting the engine, place your collective at zero pitch, throw on the throttle switch on the transmitter and watch the throttle servo. It should smoothly ramp up to the throttle setting that corresponds to your collective lever position. After it ramps up, you can move the collective back and forth and it should open and close the throttle accordingly. The governor will NOT be active, even with a stick switch, because there is no signal from the speed sensor without the engine running. So it should use the throttle curve.

After you get it to where you think it’s close, actually start it and fine tune the H_RSC_IDLE without blades on the heli to get the engine idle set properly. And spool it up without blades to see if your governor “stick switch” or governor on/off switch works properly. If something goes awry with the governor during that ground test, just flipping off the throttle switch will return it to idle before it overspeeds with no load on the engine.

This should get you a basically functioning throttle control for a piston heli. We’re looking at making a better throttle curve than with just three points because that three-point curve does not fit the torque curve on piston engines very well. It works ok with a governor “stick switch”, but even then the feedforward from the throttle curve will cause some governors to over-react to rapid collective change. @bnsgeyer was going to try to code something up for an improved throttle curve. I’ll initially test it, but if you’re interested in testing that as well, just contact one of us when he gets it done and you can partake in the testing fun as well :grinning: We’ll have some special builds to test that when he gets a working system with more points in the throttle curve.

And actually, a throttle curve with more points will make it pretty feasible to fly electrics without a governor too. So it kinda kills two birds with one stone, so to speak.

1 Like

One further note on this, Chad, you can set it up with H_RSC_MODE 1 as I demonstrated in my video. You will get a better throttle curve with the transmitter (at this point). But it is more complicated than using ArduPilot’s MODE 3 with the built-in V-curve.

So to get it basically functioning, at first, try setting it up according to the instructions in my previous post and see if you can working on the bench at least for your NX4. And then we’ll go from there once you figure out how to interface ArduPilot’s throttle control with your FBL unit/governor. That will eliminate, for now, problems with the transmitter causing you to have a “motor interlock engaged” error, as using a transmitter curve and getting it to work with both ArduPilot and the FBL unit is somewhat of a more advanced setup.

In my other topic I started it was pointed out that in the firmware I am using and on h_rsc mode 1, that I actually reverse the throttle servo with h_rsc_rev. I did so and it is working now.

Chad, I think I would highly suggest going to 3.5.5-rc1 because in our ArduHeli development and stable builds, and now in Copter, the old H_ params for setting servos are deprecated. So rather than do a one-time setup with Copter 3.5.4, then have to to re-do the whole thing again, it would better to start with the most current changes.

Those old H_params were deprecated in ArduHeli 3.5.4, AP_MotorsHeli_Single.cpp, long ago, which is what eventually makes it into Copter stable (and is actually now in Copter 3.5.5, and 3.6-dev).

You can certainly set it up with Copter 3.5.4, just be aware you’ll have to change it to the SERVOx_ params when you move to Copter 3.5.5.

I will install 3.5.5 and start over

You don’t really have to start over. Just install 3.5.5-rc1 right over the top of 3.5.4 and instead of using the old H_ params you can use the SERVOx_ params instead. All the rest of your setup you have done so far will be retained.

There is one little caveat. The Pixhawk will retain old params and if those still show up in your ground station, save your parameters to a file on your hard drive of your PC. Then, in the full parameter list use the Reset to Defaults. Then load your saved parameter file and don’t use the old params that no longer exist when reloading your params into 3.5.5. We recently had another user that got “bit” by that one and those old H_ params were still showing up. He had to use the Reset to Defaults to get rid of them out of the Pixhawk’s flash.

Chris, I installed 3.5.5 and verified there were no more h params. I am sticking with rsc mode1, I do not want to use any premade throttle curves. I have it set up to work correctly now with a linear throttle curve when Im in acro as well as a switch that changes curves so I can make a idle up. I am not going to be able to set up a gov on this fbl unit because of the throttle reverse. It will not operate correctly since it will not see the right direction. I am good with this though as this heli is way overpowered and I do not need it. How does this all correspond when I go into stabilize or position hold? WIll the autopilot try and control the throttle as well as collective for altitude? I could always run a flat line in my idle up and leave it there for the auto. If that is the case I am good to go on the throttle set up.

Next thing I need to do is get the cyclic set up correctly. Not sure what I did when mI buzzed through set up the second time but it looks like it is mixing. For example if im full aileron one direction, as i use elevator forward the elevator increases but the aileron decreases O_O not sure what I did there but il work more on that tomorrow.

In Stabilize it won’t make any difference. In Alt Hold it will. In the altitude controlled modes the autopilot looks for the stick center for no altitude change. And from 40% to 60% collective it’s pretty much a “dead zone” where the collective barely responds. That is a LOT of stick with a throttle pitch curve, so you’ll have to flip in a different curve for any altitude controlled mode.

The other thing is RC failsafe. The autopilot does not have control of the throttle in MODE 1 with no governor. It is straight pass-thru. So make sure you config your receiver to hold last received value, and that may get it home, may not.

For UAV you’ll be running a LOT more conservative headspeeds than for 3D. Normally. At least if you want the heli to last and get decent flight time. So proper throttle handling gets more important for UAV. Here’s running the head at 1,150 and 1,350 tuning the rate PID’s for UAV:

Here’s the same helicopter, same engine, ramped up to 3D power:

For UAV you’ll typically be running the engine slightly above the peak of its torque curve. For 3D you’ll be running at the peak of it’s hp curve. The throttle needs less adjustment running at the peak of it’s hp curve than it does running at the peak of its torque curve. I’m only using 24% throttle to hover that 806 at 1,150 rpm. So it’s going to tend to “bog” a lot easier with collective change on a UAV config than it will for a 3D setup. Although I’m using a governor reading the throttle curve for feedforward so the governor responds quicker, and why it tends to change speed a bit at the lower headspeed setting.

Nitro engines don’t have anywhere near the low-end torque that a big gasser 2mm stroker engine has. So with no governor, you’ll have no choice but to ramp it right up so it’s got power. Or it won’t work and you’ll have to set up your RC so it flips in a different throttle curve for the alt controlled modes automatically to reflect the change in how the collective responds. And you’re going to have to do this for each idleup, which means at least four different throttle curves.

I’m a little confused as to why your FBL won’t accept the servo being reversed. How does it do it with just the RC radio if you have to reverse the direction of the throttle servo? Does the FBL unit have an option to reverse it so you can still use the governor function?

I was not really planning on getting long flight times with this, just really learning the system on a smaller helicopter before going to the Velos. At normal 3d head speeds I get about 7-8 minutes since I have an aux tank on it as well, that is also beating on it pretty hard. I would imagine I could get a bit more not beating on it. I have the idle up switch completely independent of the flight mode switch. If I get a standard nitro throttle curve in the radio for idle up one that should be sufficient correct?

The throttle reversing and gov issue is something they have been working on. I do not understand why they made this unit without the ability to reverse throttle in the fbl unit. The problem is that when the throttle is reverse from outside it sees the throttle as backwards. The way the gov works is by seeing a positive jump of at least 15% to activate the gov. For example how it works on my Velos is by coming straight from throttle hold into idle up 1 so it sees a jump. It spools up and once it hits target head speed it speeds up a bit and then drops to engage or lock in the gov. I do not really like the system but it flys amazing on the Velos and the gov is rock solid. I found out late last night that there is some kind of update for my tx that should fix it so I will try that tonight. Not really sure how it works but Il mess with it. I have never used this fbl unit on a fueled heli before. I pulled it off the Velos so I was learning how to set it up with the same unit id be using on the next step.

Yeah, with nitro if you run the engine fast enough it should be ok to get a “feel” for how the system works. Learning how to use the throttle curve system in ArduPilot will be good because with the 880 you will have to use an external governor with a y-cable to the ESC throttles. If you use one of the ESC’s for governor signal, you won’t have the redundancy you desire because that drive providing the speed signal can’t be shut down. Using the radio is good for a quick setup but ultimately ArduPilot needs control of the throttle for a UAV.

It might be designed for electric, which does not use a reverse signal. Any way to flip the servo over so the horn can be put on the other way? That will mechanically reverse it. You will be way happier with the nitro experiment if you can get the governor to work! I flew a Trex 700 Nitro for a long time with a Rev Lock governor. I could fly it as low as 1,600 rpm with a 105HZ engine, but below that the engine was too far off its peak and just didnt’ have any power. Without the governor, it would’ve been pretty much impossible to fly it at that low of an engine rpm because it would’ve been all over the scale on headspeed with just a throttle curve. Once you get the engine up into its “sweet spot” then the throttle curve works pretty good.

Edit:
ArduPilot’s throttle curve is not really a “pre-set”, just that it only has three-points so you can do a standard V-curve. That should actually work better for a nitro than it does for a gasser - I used it here for the 700. The nitro engines like to spin at high rpm, where gassers have a wider operating range. Bill is going to work on that and see if we can improve it with a spline, 5-point curve that will be smooth, and provide more adjustment. I think when he gets it done it will work awesome for the Velos 880 with its twin E-drives, or for gassers. I was playing with a macro he wrote last night that creates the throttle curve, and I was quite impressed with it, as to how it creates the throttle curve from 5 points. He said maybe next week he’ll have something coded up to try in an actual helicopter. I’m really looking forward to that one! It is something ArduPilot has needed for a long time!

This is an example of a throttle curve created with the macro in an Excel spreadsheet for a gasser, with a ground idle-rotors turning, flatten the curve for zero pitch and hover collective, then increase it to 100% throttle as collective loading increases. This is gonna work awesome without using radio curves! I can hardly wait to test it :grinning:

So if I set up throttle curves in ardupilot and say one of the escs goes out, and it happens to be the one sending signal, it will naturally fall back on the ardupilot curves correct?

You are correct, it was originally designed for electric. In fact they just finally came out with a internal gov last year so they are not up to speed and what settings we need and way behind in times. They only made a nitro option a couple months ago. There is no way to reverse the horn because the tail servo is directly next to it and the horns would hit each other and bind.

Another question, is it true that whichever throttle curve or set gov headspeed it is in when I switch to auto modes is what it will use? So if Im governed at 1500 for example, ardupilot would then just use collective and cyclic to control the rest? Just want to make sure I am understanding how it works.

Only if the governor unit is set up that way. Most are. It sounds like your governor uses a “stick switch” to activate it. So that will work using one of the ESC’s for the rpm signal, if that ESC or drive should fail. Most every governor I’ve seen, in absence of the rpm signal, will fall back to the throttle curve. But if there is no throttle curve it will use whatever the level the signal is at. Which may be ok for an electric if the signal is high enough to give good power (around 85%). For a piston, obviously, this would be a disaster.

Yes, when it goes to auto it will use the same throttle curve or set speed it uses in all other flight modes. In RSC MODES 2 & 3 ArduPilot has the throttle. In MODE 1 the RC radio has the throttle.

In MODE 2 ArduPilot sends a constant throttle signal - whatever the H_RSC_SETPOINT is set to.

In MODE 3 it sends a throttle signal based on the throttle/pitch curve defined in the parameters, depending on how you set the H_RSC_POWER settings for (currently) the three-point curve. The MODE 3 throttle signal will vary, depending on collective pitch loading, just like it does with a throttle curve in your RC radio.

The difference with MODE 3 (or MODE 2) vs MODE 1 is that ArduPilot can control it in the absence of the RC signal from the radio. So if you are going to fly auto and fly out of RC range it is highly recommended to use MODE 2 or MODE 3, and set up your receiver to send last received value to the Pixhawk on Channel 8 (either on or off). If Pixhawk has to land the helicopter autonomously with no RC signal present, it will automatically shut down the engine(s) on landing, despite the fact that the receiver is still sending a throttle signal with no RC.

MODE 2 or 3, properly set up, will get your heli home and land it with no RC. MODE 1 maybe will, maybe won’t, depending on what the last received throttle signal was because it depends on the RC radio. MODE 1 with no governor would be a disaster for a piston engine if RC signal is lost - or the RC signal is lost AND the governor fails.

I have been loosely following this thread. So it sounds like @ChadCarlin is planning to mode 1 with no rotor speed governor. Is this correct? I’m only guessing that because, he mentioned that he’ll be using his RC transmitter for different idle ups which I’m assuming is providing different head speeds.

Correct me if I’m wrong @ChrisOlson, but if he intends to use mode 1 with no governor, then he can NOT use any mode where the autopilot is controlling collective. Reason being that the autopilot will not be able to control throttle with changes in collective since throttle is a passthrough on channel 8(mode1). I just want to be sure he is aware of this. Again, just chiming in but haven’t read the entire thread.

Sorry if this has already been discussed.