[Solved] Complete new set-up; servos not responding

I just put a new set-up together…

  • Pixhawk4 with latest ArduRover
  • TX16S and MissionPlanner
  • The telemetry works
  • MissionPlanner reads the Pixhawk4 config

I have servo signal (and ground) connected to the Pixhawk4 Power Mgmt board (PM07).

  • The PM07 is fed by a 12V power supply.
  • The servos are and have a separate 12V supply (not via the PM07).
  • The PM07 is connected to the Pixhawk4 via I/O_PWM_OUT to I/O_PWM_IN on the PM07.

Using a scope, I cannot see any type of signal, when moving the remote controller sticks.

I can see channel 5-16 in the config in MissionPlanner, but not for channel 1-4; assuming these 4 channels are on by default, and relate to aileron, elevators, throttle and rudder.

Is this assumption correct?
I have not set-up anything in MissionPlanner; as in changed any config.

Any hint appreciated.

You need to arm it and also either push or disable the safety switch.

Hmm, I had done a ‘force disarm’.

Will connect a safety switch and LED to the GPS module port…

Set:
ARMING_CHECK=0
BRD_SAFETYENABLE=0

You can (and should) reenable arming checks once it’s off the bench. I’m not aware of anyone using the safety switch. It’s not very safe, nor intuitive to use.

Then you can arm at will.

Is there power on the center pin of the servo rail? Most PDBs leave that disconnected, and it’s up to you to supply appropriate servo bus voltage. Although, if those are 12V servos, I think I see the power leads leading to some alternate supply, which is correct. You don’t need a positive voltage reference on the center pin if that is the case.

Yep, what I just did :slight_smile:

(and understood)

Yes, by default the power (centre rail) is not connected.

The servos have two connectors, one with Vcc and ground for 12V, and one for signal and ground. Ground is connected on the PMB.

Yes, in short: your statement is entirely correct (and as wired).

In addition, both PMB and servos are connected to a 12V power supply. The PMB makes the 5V for everything else.

Shouldn’t I see any signal (on a scope) on one (or the first 4) of the FMU-PWM-OUT channels (1-8)?

Have you defined any SERVOx_FUNCTION parameters?

If not, then no. You’ll see no output.

:slight_smile:

Where do I do this?

You read the directions.

https://ardupilot.org/rover/docs/rover-motor-and-servo-configuration.html

Thank you…

The defaults where set.
On this page:

… I get “Command was denied by the autopilot”.

Have you done any measure of calibration? You really need to read the directions, starting here:

https://ardupilot.org/rover/docs/apmrover-setup.html

1 Like

OK… a couple of hours later…

I get “Command was denied by the autopilot”.

The message window shows this:

28/05/23 12:39:23 : Motor Test: Safety switch
28/05/23 12:38:37 : Motor Test: Safety switch
28/05/23 12:38:20 : Motor Test: Safety switch
28/05/23 12:38:14 : Motor Test: Safety switch

Mission Planner says: Disarmed".


Well, I rebooted the flight controller, and the messages have changed to:

28/05/23 13:15:32 : Throttle disarmed
28/05/23 13:15:21 : Throttle armed
28/05/23 13:14:30 : Throttle disarmed
28/05/23 13:14:26 : Throttle armed
28/05/23 13:14:25 : Throttle disarmed
28/05/23 13:14:23 : Throttle armed
28/05/23 13:14:17 : Throttle disarmed
28/05/23 13:14:15 : Throttle armed
28/05/23 13:14:02 : Throttle disarmed
28/05/23 13:14:00 : Throttle armed

However, still no servo movement. :frowning:


Further playing with this…
I noticed that if I set the throttle to 50% and for 300 seconds, which arms and then arms the system, the log file only records ~30 seconds.

28/05/23 14:06:19 : Throttle disarmed
28/05/23 14:05:47 : Throttle armed

28/05/23 13:58:57 : Throttle disarmed
28/05/23 13:58:22 : Throttle armed

Things like this drive me nuts. I sit here checking the servo ports for signals, while the darn thing has long stopped testing motors.


After lots of research I found the picture above, which implies, when using the I/O_PWM_IN (coming from the Pixhawk4), the purple connections ought to be used. I had happily connected my servos to FMU-PWM-OUT.

Connecting a servo to the M1 output, the servo would work.

  • M1 sends signals… forwards, backwards, on left stick that auto-centres; however, the servos react slowly
  • M3 sends signals… left, right on the right stick, these react very fast, as per stick movement.

Why this difference in movement?

M1/M3 seem to drive the servos for the hydro stats.

At last some success!. :slight_smile:

Now where is the throttle output (will test this shortly).

Yeah this module trips up many people who are not building a copter. The pm07 if you plug in the fmu and io cables normally is completely laid out for 4 to 8 motor escs connected on those little motor pads in the corners, they are the primary flight controls. the pin headers for servos look fine for planes or rovers erc but are intended for a couple of auxiliary servos on the quad and are by default aligned with output 9-16 not 1-8 where you might want them.
You can swap the plugs or just get rid of that power module all together and just use the little servo header board and a normal small power module.

1 Like

[… as in how: connect IO (an the P4) to FMU (on the PMB)?]

Thanks… yes, saw a few posts with the same problem… even connecting both FMU to FMU and I/O to I/O.

I looked for a schematic to understand what the PMB does; to no avail.

I actually swapped the IO to FMU and mixed the ports/connectors, but had no success… other than what I have now: I/O to I/O and the Mn points for the servos.

I do not understand the difference between FMU and I/O PWM connectors and did not find anything authorative on this either.

Do I understand you correctly that I can easily connect the little boards (or one of it) to the I/O_PWM_OUT of the flight controller?


Other than that, silly me has found the ‘throttle’, with is the amount of moving forward|backwards… oh dear, this was a long day.

Yes the little boards with the 90deg pin headers can be used instead of the power module pins, the only reason the m1-8 pads are even on the pm07 is because its would be convenient for connecting the 8 esc at the same place as the power wires in an octo coper.
With my pix 4 i just use the little servo header board and a pm02.
This issue was discussed recently here, have a read.

You should have exactly ZERO outputs assigned to “Throttle” (servo function 70) or “Steering” (servo function 26). Rather, outputs 1 and 3 should be ThrottleLeft and ThrottleRight (73 and 74) for a skid-steered mower.

For the additional servo outputs that will control engine throttle and choke, you’ll need to use raw RC output - RCIN7 (function 57), for example, if you wanted to assign RC channel 7 to a servo output. There is no combustion engine support in the Rover firmware (yet).

Do not conflate autopilot throttle output with engine control on a hydrostatically operated vehicle.

I shall be forgiven for not being across the correct terminology :slight_smile:

I think I do have outputs 1 and 3 for throttle left and throttle right.

I am not yet clear on all the functions, but can sort of trace what you’re saying, I have:

  • SERVO1_FUNCTION as 73
  • SERVO3_FUNCTION as 74
  • all others 1-16 (except 1 and 3) are 0
  • meaning I did not see 70 or 26 in the ‘full parameter list’.

In any case, I appreciate you’re sharing your knowledge.

The questions left unanswered though:

  • M1 sends signals… forwards, backwards, on left stick that auto-centres; however, the servos react slowly
  • M3 sends signals… left, right on the right stick, these react very fast, as per stick movement.

Why this difference in movement?

I’d argue this should be the other way around (if it should be different at all), as in slower steering movements, but faster ‘throttle’, or shall I say, acceleration changes?

Also, talking about the other servo assignments, could you please suggest:

  • which to use for motor throttle and motor choke?
  • Do I just change|assign these in the full parameter list?
  • Or is there a menu|page where these need calibrating as well?

Hello Max_G,
on the foto it looks to me you connected a small servo to Output 1 and a big one to Output 3. maybe the big one ist just not as fast as the small one or maybe the big one is drawing more current than you supply to the servo rail?

I have a also a suggestion regarding the IO PWM and FMU PWM cable. i would put the cable from FMU PWM on the pixhawk to FMU PWM on the powermodule. and then use outputs 9 and 11 instead of 1 and 3. This way you can use all the rest of the PWM pins as GPIO pins! (which is a cool way to use relays etc.) also all of the pin numbers stay correct.

regards and good luck!

1 Like

Well…

It’s amazing how much can be learned in a few days…

When I put this together I did not pay much attention to the servo size; I just connected these to see what’s happening.
In the meantime, the big servos for the hydro-stats are connected to 1 and 3, while the others are no longer connected.

My focus is at present on creating a “minimum viable product”; that is:

  • connect/control only the hydro-stats via the flight-controller
  • tune it
  • create a mission
  • let it loose

This means: I fill up the mower with petrol; start it manually; set the throttle, and then run the mission.

I can add all other ‘features’ later.


What is the difference between FMU PWM and I/O PWM?
Is there even one or do these have the same function/capability?
If so, a swap should be fine (and is how I interpret your message).