Solution

Using an open drain buffer like the 74LVC1G07 did the trick. Note that this part only works for inputs with a pull-up resistor. There are other parts from the same lineup that can work with any input.

Problem

I have an ebike computer that has two inputs that accept square wave signals. The range is 0-5V. One of the inputs has no pull-up/down resistors on it. When I hook up a device producing signal, the signal is detected correctly. Both highs and lows are detected correctly. The other input has a built-in pull-up resistor. When I hook the same signal to it, only the high side is detected. Measuring the voltage of the low side, it’s a bit higher than when hooked to the other input and I’m guessing it isn’t crossing the low threshold the computer expects in order to register the low.

Am I right in thinking that the pull-up resistor is increasing the lows?

Is it possible to counteract the internal pull-up resistor by hooking a pull-down resistor to the input?

I’m a software guy with decent soldering skills and minimal knowledge in electronics so please answer like I’m not the brightest electronic bulb on the tree.

Thank you in advance!

Cross-posting my question from StackExchange.

  • hardware26
    link
    fedilink
    English
    arrow-up
    4
    ·
    2 years ago

    Problem you are having could be

    1. output impedance of the signal generator you use to generate the square wave. When you set it to low, output impedance of the signal generator builds a voltage divider together with the internal pull up, and the device ends up sensing a higher voltage than “low”. This is something you can see if you have an oscilloscope, try to hook up a probe to the input and ensure whether you get what you set in the signal generator.
    2. some signal sources have no or limited capacity to drain current. And when you set it to low, this is exactly what it us supposed to do, drain current from the internal pullup.

    As you mentioned in another comment, solution is a simple buffer. This could be an opamp, but even a simple nmos transistor should suffice (open drain as you said). But you need yo be careful with current ratings of the transistor, which you can easily calculate by dividing 5V by the pull up resistor. Send a message if you need help.

    Before these, I suggest you yo use an oscilloscope or multimeter to measure the voltage when it is supposed to be low, and see that in fact the problem is that voltage at the input doesn’t go “low”.

    • lightrush@lemmy.caOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      2 years ago

      Thanks for the explanation!

      I measured the signal generator alone, not connected to the input. It goes to 4.5V high and 0.001V low. Then I connected it to the input and measured at the input. I got 4.5V high and 1.1V low.

      Also I ordered the 74LVC1G07 buffer along with a breakout board which should allow me to hook it up inline and test. I’ll report back when I do.

      • hardware26
        link
        fedilink
        English
        arrow-up
        3
        ·
        2 years ago

        It should do the trick I think. If you are working on electronics a lot, you may consider buying a breadboard and variety of resistors, capacitors and nmos, pros, bjt transistors in bulk for quick fixes instead of waiting for orders to proceed. Have fun

        • lightrush@lemmy.caOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          2 years ago

          It works!

          I just built this monstrosity, tested and the signal is correctly detected by the computer. 👌

          Now I just need to wire it properly.