Signal Wire Length

This year we will be making our own PWM cables, as well as running several sensor lines. We have determined that we could connect all of our sensors (5V digital logic and PWM) using 24 AWG. This was the perfect size for us for a multitude of reasons, including the amount we have in stock and it’s fit into the PWM contacts and encoder connectors. However, we’re not sure how our signals will react over the (relatively) long length of wire - up to 7’ from endpoint to endpoint.

I can’t find any specs about the amount of current the GPIO pins source/sink, nor about the voltage threshold for the digital inputs, so I can’t calculate the voltage drop over my wiring nor would I know if it was acceptable.

Does anyone have any more info/another method of determination/advice?

I’d be very surprised if your digital signals suffered from resistive drop. Also, FIRST uses some very slow signals, so I again wouldn’t panic.

For more information on the GPIO signal pins, you should look up the NI 9403’s Operating Instructions and Specifications.

For information on the power supply capabilities of the DSC, look in section 3 (page 27) of the control system manual.

I’d be much more concerned with the amount of noise coupled in over those 14 foot runs.

From the Control System’s manual:

[ul]
[li]5V/3A buck power supply for DSC circuitry with excess power available at the GPIO and I2C headers
[/li][/ul]

Does this mean the DSC will source 3A to a nearly shorted connection, such as a depressed limit switch? What does “excess power” mean?

From the NI Documentation, Digital logic levels:

[ul]
[li]Input
[/li][LIST]
[li]Voltage …–0.25 to 5.25 V
[/li][li]High, VIH…2.2 V min
[/li][li]Low, VIL …0.8 V max
[/li][li]Hysteresis, VH…0.2 V min
[/li][/ul]
[li]Output
[/li][ul]
[li]High, VOH…5.2 V max
[/li][LIST]
[li]Sourcing 100 μA …4.75 V min
[/li][li]Sourcing 2 mA…4.4 V min
[/li][/ul]
[li]Low, VOL
[/li][ul]
[li]Sinking 100 μA …0.1 V max
[/li][li]Sinking 2 mA…0.26 V max
[/li][/ul]
[/LIST]
[li]Input current (0 V ≤ Vin ≤ 4.5 V)… ±250 μA max
[/li][li]Module output current …64 mA max
[/li][li]Input capacitance … 30 pF
[/li][/LIST]

Does the “Input current” mean that the module itself limits the input current to ±250 μA, or that is the maximum input current allowed into the module?

Finally, would adding a bypass capacitor across the ground and signal pins help reduce noise?

How familiar with circuits are you? From the questions, you may have current vs voltage confused.

It means that it will reliably source 5V at up to 3A. If you draw more than 3A, the overcurrent protection will trip and temporarily shutdown the supply.

A limit switch has an effective resistance of 10kOhms when wired correctly, because of the 10k pullup resistor on the DSC. The effective impedence of the cRIO module’s pin is very high.

If a pin is set to an input and you apply between 0V and 5V, up to 250uA may flow. It is effectively stating the pin’s impedance.

I’d stick it across the power lines myself.

Eric,
This is the rule in question…
<R68> A signal filter may be wired across motor leads or PWM leads. For the purposes of
inspection and rules compliance, such filters will not be considered custom circuits, and will
not be considered a violation of Rule <R53> or Rule <R67>. Acceptable signal filters are:
A. A one microfarad (1 μF) non-polarized capacitor may be applied across the power leads of
any motor on your ROBOT (as close to the actual motor leads as reasonably possible)
B. A ten kilo-ohm (10 kΩ) or larger resistor may be used as a shunt resistor in-line with the
PWM control signal feeding a servo.

In most cases you should not have an issue with a 7 foot PWM cable. Some teams have reported erratic camera behavior under certain conditions when running camera servo PWM cables next to/in parallel with high current motor wiring. The use of the above allowed filter methods have cured these issues in the past. Please be sure to insulate well if you use these methods. With the source impedance of the DSC the impedance on the PWM is fairly low and should not be a problem. Sensors in general, do not draw a lot of current unless there is a wiring error. However, there are some non-KOP sensors that can be found that use more current than allowed by simple #24 gage wiring. Those devices may need to be fed via #18 gage from a dedicated breaker on the PD. Know your sensors.

Al -

Thanks for catching my oversight. I thought that you were allowed to add bypass caps to digital sensors as well. I did not realize the 1uF rule was specific to motors.

Eric -

I’m in the “more bulk more better” school of thought when it comes to bypass capacitors. Therefore, most of the boards in the KoP have more bulk capacitance than they really need - I do love me some margin.

Honestly, I think you are worrying too much. However, I am glad that you are already exploring your options to improve robustness. I think they will prove to be unnecessary.

As others have said, you probably won’t have a problem with 7 feet for sensor wires. But just because it’s probably not a problem doesn’t mean we can’t use this as an opportunity for further learning in the community :slight_smile:

Most of the time when you’re dealing with electrical design, you use “ideal” wires - wires with 0 resistance. Of course, once we move from ideal to real world, you realize that every wire has some resistance to it. Thinner wires (larger gauge) have higher resistances than bigger wires. longer wires have higher resistances than shorter wires. If you want to know why that is, i’ll leave it up to you to figure out :slight_smile:

So, the big question in running long lengths of wires is what the resistance does to your signal. For that, we turn to our old friend, V=IR. In this case, R is the wire resistance, I is the current through the wire, and V is the voltage drop you see from 1 end to the other. For example, is a wire was carrying 1 amp and had a resistance of 1 ohm, the voltage you see on one end of the wire would be 1 volt less than what you see on the other. So if you had a spike that put out 12 volts, the motor on the other end would only “see” an 11 volt source.

So, what can we do to combat this problem? There are three options:

  1. Use shorter wire. Duh. Most of the time, you’re using long wires because the Mechanical team didn’t give you an option. What can we say, they just don’t understand :stuck_out_tongue:
  2. Use thicker (lower gauge) wire. Lower the resistance in the wire and you’ll lower the voltage drop from one end to the other. This makes a lot of sense, but most teams probably don’t have 8 gauge wire sitting around in the shop, and even if you do, thicker wire is much stiffer, and may be hard to route through energy chain or other components, especially if it needs to flex along with a manipulator.
  3. Use multiple wires. Two resistors placed in parallel serve the same purpose of using a thicker wire - the overall resistance is lower than each individual wire. This allows for some additional flexibility in your wire runs. To use this approach, you would run two (or more) wires into each terminal on a Spike, Victor, or Jaguar and run those same wires to the single motor they’re powering. Keep in mind <R47> - it says nothing about using multiple wires, just about the connection between electrical loads.

Last year, the Robettes used option 3 for motors on our elevator. We had 15 foot wire runs, pulling 10-15 amps when the motors were on. The sensors on the elevator worked just fine with normal wiring, however the motors saw a drop of several volts with normal wiring. We added in another wire to each, and everything worked great (the design prevented shorter runs, and the needed flexibility in the energy chain prevented a thicker wire)!

If you chose options 2 or 3, make sure you fully understand the reasoning behind it, and can explain it to the inspectors - most of them start to get real worried when they see multiple wires coming from a Spike! Of course, being able to fully explain the reasoning behind it and demonstrate that you’re following the rules helps to earn your team some brownie points :slight_smile: