I have been scratching my head on my problem of driving a 800 kHz signal through a 10 meter twisted pair cable (signal+ground) with an abysmal worse case scenario of 1 nF wire capacitance.

What I know works, is that the Arduino uno's GPIO has the drive capability to do that, I have physically tested this myself.

The Arduino unos GPIO has a push/sink capability of 40 mA, above the rating of what most common voltage shifters. In my circuit there are power MOSFETs that are being drivern by a push-pull MOSFET driver IX4427MTR. I was thinking of using this MOSFET driver as a voltage shifter, the capacitance of the long cable should prove no problem for these IC,

I could even use the faster mcp14a witch has better propagation delay.

Am I correct to assume I can use the MOSFET drivers this way?

This thread is a possible solution im exploring inorder to solve my main problem discussed in this thread

  • 2
    \$\begingroup\$ Do you know about the category of IC's called line drivers? \$\endgroup\$
    – Jeroen3
    Sep 30, 2021 at 6:02
  • \$\begingroup\$ I don't consider 1pF to be "abysmal", it's nothing. As that a typo? \$\endgroup\$ Sep 30, 2021 at 6:05
  • \$\begingroup\$ @SimonFitch yes thats a typo thats 1nF \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 6:18

3 Answers 3


Forget about the cable capacitance. Drive it source terminated through a \$100\Omega\$ resistor as I suggested in the other question. The cable looks like another resistor (about \$100\Omega\$) during the transient. At the far open-circuit end 10m down the cable, you will see a clean edge, just 50ns later. If the cable was 20m long, you would still get a clean edge at the far end, just now 100ns later.

If you have voltage swing issues (need to get closer to 0V - 5V), you could use two GPIO outputs, each connected to the cable through a \$200\Omega\$ resistor, and you change the two outputs at the same time.

If the signal is only going to one location and the receiver is high impedance, then source termination produces just as good a signal at the receiver as terminating at the receiver, but is simpler and substantially lower power.

Here is an example:

enter image description here

The red trace is the voltage at the input to the transmission line, it does something a bit unusual during the transition. Simply put, for the time it takes for the reflection to come back from the far end (2 x cable delay), the cable looks like a simple resistor. Note there is nothing that looks like an RC time constant. The yellow trace is the voltage presented to the receiver. It is good. Note in this case, the CMOS driver is assumed to have an output impedance of \$25\Omega\$ so to make up to the \$50\Omega\$ source termination resistor (as they have a \$50\Omega\$ transmission line), only an additional \$25\Omega\$ resistor is used.

I was going to suggest that you could play around with the size of your \$100\Omega\$ resistor but didn't as you don't have an oscilloscope to investigate, but it's possible that a resistor in the range of \$75\Omega\$ to \$100\Omega\$ would be optimal. (or two of double that value if you use two outputs). If you do get access to an oscilloscope, you want the best waveform at the receiving end, and that should correspond to the flat part of the waveform at the transmitting end being about Vs/2.

The image is from: https://resources.altium.com/p/using-terminations-control-reflections

Just for fun, here is an LT Spice sim:

enter image description here

A voltage source with a series resistor (R1 = 25 ohm) represents pretty closely the output of the GPIO pin. You can add a bit of input capacitance for the receiver, 10-20pF isn't an issue.

  • \$\begingroup\$ I tried simulating using the buffers and the main problem is voltage is not reaching high enough to trigger high. As you mention the delay is not really a problem as long as the signal that is recieved on the other end is clean. thus this crazy idea of using mosfet drivers, they basically have a buffer+level shifters built right into them. A question though why source terminated? it quite contradicts what lorenzo said that to terminate at the end? \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 6:41
  • \$\begingroup\$ The datasheet is not clear on the input impedance of the modules, so I'm assuming that it is high impedance. I could be wrong. If it is, then source termination is probably the simplest, just drive the line through a resistor and it will all work out. Try it out! If you are across transmission line theory look up 'source termination', I tried to find some simple graphics but couldn't. Maybe someone else can. \$\endgroup\$
    – Tesla23
    Sep 30, 2021 at 6:50
  • \$\begingroup\$ well i can always leave slots on the pcb for source termination, so im prepared for both scenarios, if it is indeed better when i will be able to scope it no problem, if it turns out its better to do it at the end, no problem also ill just place a 0 ohm resistor in its place. Thank you for your help :) \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 7:05

Well, they are quite overpowered for the job but a mosfet push/pull driver would do the work. Your voltage would be at least 5V to make them work correctly.

A pair of consideration:

  • 10m of twisted pair for only 1pF seems a little low to me. Are you sure it isn't more like 1nF ?
  • The AVR GPIO is rated for 20mA, 40mA is the absolute maximum

Since you are driving a twisted pair with a somewhat high frequency logic signal I'd suggest converting a line to LVDS (which is exactly designed for that). If you are more interested to go far rather than fast you could also look into an RS485 transceiver. Since you are using a 5V logic level an RS485 would be easier to find (LVDS is mostly a 3.3V technology)

These chips also have the added benefit to usually contain protection for esternal nasties (being designed to drive cables). Also be wary of possible ground potentials and loops, at 10m they could be significant (both LVDS and RS485 have provisions for that)

The minimum absolute would be a logic buffer (but that's only 24mA against the 20mA available from the AVR)

  • \$\begingroup\$ Sorry about the typo its 1nF. About converting the line, sadly i cannot do that, it is one of the things i set out to do that is there should be no reciever on the other end. A good thing of using these mosfets drivers is my circuit already use them so they are relatively cheaper than buffers and line drivers since i buy them in bulk \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 6:23
  • \$\begingroup\$ You didn't say these things:P go for the fet driver then, put at least a current limiting resistor to reduce signal reflection \$\endgroup\$ Sep 30, 2021 at 6:24
  • \$\begingroup\$ Should i put current limiting on the other end too? or only at the drivers output? \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 6:27
  • \$\begingroup\$ for signal integrity is better at the receiving end. exactly like the gate resistor near the gate! \$\endgroup\$ Sep 30, 2021 at 6:28

For long-distance and high frequency signal transmission, you can try the following two methods:

  1. Use shielded coaxial cable.
  2. Use subsystem, the control signal transmission by differential method, CAN, RS-485 eg.

The method 2 is recommend.

  • \$\begingroup\$ with no doubt method 2 is better, but one of my requirements is there should be no recievers on the other end. \$\endgroup\$
    – DrakeJest
    Sep 30, 2021 at 6:24
  • \$\begingroup\$ Even though can drivern by MOSFET, for high-frequency signals, the cable capacitance cannot be ignored. \$\endgroup\$
    – yolee599
    Sep 30, 2021 at 7:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.