Big servo and Maestro sharing power supply

Hello,

I need to power a massive 1/4 scale servo that needs 5VDC and standard PWM control. I love the Maestros, have been using them for years.
I need to know if I can connect the Maestro and the servo to a single 5VDC (70 A) power supply.
If so, does this wiring diagram look OK?

Thank you!

Please check the ground situation

Hello.

It should generally be fine to power the Maestro and servo from the same supply. In that kind of setup, the Maestro and servo should share a common ground connection. I am not sure why you have the ground rail on the Maestro connected to the AC ground on your power supply (that should not be necessary, but it’s probably okay to do), but please note that all of the grounds on the Maestro are connected internally (i.e. the GND pin for the VIN power is also connected to the GND rail for servo power).

The other potential concern would be noise or voltage dips; since the Maestro’s minimum operating voltage is 5V, and you’re right at that minimum voltage, it might be possible for the servo to draw enough current from the supply to cause the voltage to dip enough to cause the Maestro to brown-out and reset.

Brandon

1 Like

Hi Brandon,

To be clear the only grounds that need to be connected are the Maestro to the servo, correct? So I am absolutely clear here’s the last stupid question: the ground for the servo is the black lead, correct? That would mean that I would need to connect that to the ground on on the Maestro AND the -5V black terminal on the DC supply, right? Just checking.

Thanks!

Servos can have different coloring schemes for their wires, but they usually use either white,red, black or orange, red, brown with black and brown being the ground wires, respectively. If your servo uses a different color scheme (or if you just want to be extra careful), I recommend checking the manufacturer’s documentation.

The Maestro, the servo, and the power supply should all have a common ground. The “negative” terminal on your power is very likely a ground connection (and not actually some -5V rail), in which case, you can make your ground connection there. (The separate green ground terminal should correspond to the ground on the AC side, meaning you can leave it disconnected to have isolated outputs on your power supply or connect it to the black terminals to share a common ground between AC and DC.) You can double check this by measuring the voltage between the negative and positive terminals with a multimeter; if you see 5V across them, then it is a ground, but if you see 10V across them, it is a negative voltage source.

Brandon

1 Like

Thanks!

Quick Q: using a relay to trigger a sequence in a 24 channel Maestro. The manual says channel 18,19, and 20 can be used without having to install an external pull-up resistor. It says in channel settings to enable the internal pull-up resistor…but all I can see is the option to make that channel an “input”. Does that automatically enable the resistor or do I need to do something else?
Thanks!

After configuring them as inputs you will need to enable the “Enable pull-ups on channels 18-20” option, which is located at the bottom of the servo channel list:

Brandon

1 Like

Thank you sir!

1 Like

Last quick question:

I’m getting a “Error applying parameters. REPEAT must end a BEGIN…REPEAT block”

Do you see the problem? I need a second pair of eyes!

### Sequence subroutines: ###

begin

  trigger18 if # Sequence 0 endif

repeat

sub trigger18

  0 get_position 500 less_than            #trigger18 is ch18 on maestro

  return

# Sequence 0
begin
  1500 6400 6559 0 0 0 0 
  0 0 0 0 0 0 
  0 0 0 0 0 0 
  0 0 0 0 0 frame_0..17_19..23 # Frame 0
  2300 4276 5791 frame_0_1 # Frame 1
  1500 4731 6051 frame_0_1 # Frame 2
  1500 4224 frame_0 # Frame 3
  3000 4498 5744 frame_0_1 # Frame 4
  1500 4224 6134 frame_0_1 # Frame 5
  1800 6400 6712 frame_0_1 # Frame 6
  1500 5576 6559 frame_0_1 # Frame 7
  2200 6135 6334 frame_0_1 # Frame 8
  1500 6400 frame_0 # Frame 9
  2000 5755 6004 frame_0_1 # Frame 10
  2000 5312 frame_0 # Frame 11
  2100 4952 frame_0 # Frame 12
  1500 4646 6334 frame_0_1 # Frame 13
  1500 5090 frame_0 # Frame 14
  1500 5259 6464 frame_0_1 # Frame 15
  2500 4477 6346 frame_0_1 # Frame 16
  2000 4224 6039 frame_0_1 # Frame 17
  1500 6665 frame_1 # Frame 18
  1500 4900 6948 frame_0_1 # Frame 19
  2600 6019 6783 frame_0_1 # Frame 20
  1500 6304 6913 frame_0_1 # Frame 21
  2300 5671 6204 frame_0_1 # Frame 22
  2200 4952 frame_0 # Frame 23
  2600 4424 6075 frame_0_1 # Frame 24
  1500 4657 frame_0 # Frame 25
  1500 4308 5673 frame_0_1 # Frame 26
  1500 4224 frame_0 # Frame 27
  1200 6019 6594 frame_0_1 # Frame 28
  2200 6326 frame_0 # Frame 29
  1200 6400 frame_0 # Frame 30
  1500 5037 frame_0 # Frame 31
  2200 4435 6098 frame_0_1 # Frame 32
  1500 4224 frame_0 # Frame 33
  1500 6283 6547 frame_0_1 # Frame 34
  2500 6030 6216 frame_0_1 # Frame 35
  2500 5026 frame_0 # Frame 36
  1500 4572 6346 frame_0_1 # Frame 37
  2000 5702 frame_0 # Frame 38
  3000 6936 frame_1 # Frame 39
repeat

sub frame_0..17_19..23
  23 servo
  22 servo
  21 servo
  20 servo
  19 servo
  17 servo
  16 servo
  15 servo
  14 servo
  13 servo
  12 servo
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  4 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0_1
  1 servo
  0 servo
  delay
  return

sub frame_0
  0 servo
  delay
  return

sub frame_1
  1 servo
  delay
  return

Hello.

It looks like your ENDIF command is commented out. For reference, in the Maestro scripting language an IF command must be “closed” by an ENDIF command (and if applicable, an ELSE command should be between them. For example:

trigger18 if # Sequence 0
  #code here will run if trigger18 returns true

else
  #code here will run if trigger18 returns false

endif

Brandon

The incompetence is strong in me! So instead of buggin you I asked GROK A.I. to help. I fed it the whole Maestro PDF manual. It processed it and gave me this working script:

begin
  check_initial  # Check if relay is initially closed
  if
    debounce_and_recheck  # Debounce and recheck the relay
    if
      run_sequence  # Run the sequence
      wait_for_release  # Wait for relay to release
    endif
  endif
  10 delay  # Small loop delay
repeat

sub check_initial
  18 get_position  # Get initial reading
  500 less_than    # True if < 500 (relay closed)
  return

sub debounce_and_recheck
  50 delay         # Debounce for 50 ms
  18 get_position  # Recheck after delay
  500 less_than    # True if still < 500
  return

sub run_sequence
  Vanguard_part1  # Frames 0-9
  Vanguard_part2  # Frames 10-19
  Vanguard_part3  # Frames 20-29
  Vanguard_part4  # Frames 30-39
  return

sub wait_for_release
  begin
    18 get_position 500 greater_than  # Check if high
    if
      50 delay  # Debounce release
      return    # Exit when relay is released
    endif
    10 delay  # Small loop delay
  repeat

sub Vanguard_part1
  # Frames 0-9
  1500 6400 6559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 frame_0..17_19..23 # Frame 0: restored to full values
  2300 4276 5791 frame_0_1 # Frame 1
  1500 4731 6051 frame_0_1 # Frame 2
  1500 4224 frame_0 # Frame 3
  3000 4498 5744 frame_0_1 # Frame 4
  1500 4224 6134 frame_0_1 # Frame 5
  1800 6400 6712 frame_0_1 # Frame 6
  1500 5576 6559 frame_0_1 # Frame 7
  2200 6135 6334 frame_0_1 # Frame 8
  1500 6400 frame_0 # Frame 9
  return

sub Vanguard_part2
  # Frames 10-19
  2000 5755 6004 frame_0_1 # Frame 10
  2000 5312 frame_0 # Frame 11
  2100 4952 frame_0 # Frame 12
  1500 4646 6334 frame_0_1 # Frame 13
  1500 5090 frame_0 # Frame 14
  1500 5259 6464 frame_0_1 # Frame 15
  2500 4477 6346 frame_0_1 # Frame 16
  2000 4224 6039 frame_0_1 # Frame 17
  1500 6665 frame_1 # Frame 18
  1500 4900 6948 frame_0_1 # Frame 19
  return

sub Vanguard_part3
  # Frames 20-29
  2600 6019 6783 frame_0_1 # Frame 20
  1500 6304 6913 frame_0_1 # Frame 21
  2300 5671 6204 frame_0_1 # Frame 22
  2200 4952 frame_0 # Frame 23
  2600 4424 6075 frame_0_1 # Frame 24
  1500 4657 frame_0 # Frame 25
  1500 4308 5673 frame_0_1 # Frame 26
  1500 4224 frame_0 # Frame 27
  1200 6019 6594 frame_0_1 # Frame 28
  2200 6326 frame_0 # Frame 29
  return

sub Vanguard_part4
  # Frames 30-39
  1200 6400 frame_0 # Frame 30
  1500 5037 frame_0 # Frame 31
  2200 4435 6098 frame_0_1 # Frame 32
  1500 4224 frame_0 # Frame 33
  1500 6283 6547 frame_0_1 # Frame 34
  2500 6030 6216 frame_0_1 # Frame 35
  2500 5026 frame_0 # Frame 36
  1500 4572 6346 frame_0_1 # Frame 37
  2000 5702 frame_0 # Frame 38
  3000 6936 frame_1 # Frame 39
  return

# Restored frame_0..17_19..23
sub frame_0..17_19..23
  23 servo 22 servo 21 servo 20 servo 19 servo 17 servo 16 servo 15 servo
  14 servo 13 servo 12 servo 11 servo 10 servo 9 servo 8 servo 7 servo
  6 servo 5 servo 4 servo 3 servo 2 servo 1 servo 0 servo
  delay
  return

# Other frame subroutines (unchanged)
sub frame_0_1
  1 servo 0 servo
  delay
  return

sub frame_0
  0 servo
  delay
  return

sub frame_1
  1 servo
  delay
  return