I built the ubiquitous battery voltage monitor using the equally ubuiqutous LM3914. It monitors a 12V battery and controls a charger.

The datasheet mentions the IC can interface with TTL or CMOS logic, but I can't find how this is actually done anywhere. I want to do it properly.

Right now I connect the relevant IC's output pins to a 4013 Set/Reset flip-flop via a small-signal transistor, either a PNP or NPN to produce the required high and low signals for the CMOS. I also used small signal mosfets to the same effect.

However I feel the intermediary transistors are redundant. I tried direct connection to the flip-flop, and while the LM3914's output open state of course is at VCC, in the closed state (LED "on"), the output voltage is 9V, and if I undestand the datasheet correctly, the output is in fact a programmable current sink so this "low" voltage can vary with the programmed current. I feel this makes it hard to correctly interface with CMOS logic circuitry.

What am I missing? Many thanks in advance for insights. -Joe

Disclaimer: I am only a hobbyist but I think I have the basics down enough to undestand technical explanations.

  • \$\begingroup\$ What voltage is Vcc? Do you have LEDs connected to the outputs? \$\endgroup\$ Commented May 14, 2022 at 1:50
  • \$\begingroup\$ For the moment VCC is whatever the battery or charger is at, between 11.9 and 14.4V, but the final build will be regulated at 12V, with the signal voltage separate. My measurements were made at 13V. There are LEDs connected to all outputs. I guess if I had pull-up resistors instead of LEDs on the pins connected to the CMOS that would work. However I'd like the possibility to choose whatever output for CMOS link, with or without LED attached. \$\endgroup\$
    – Joe
    Commented May 14, 2022 at 2:01

1 Answer 1


The LED driver outputs are open-collector with current limiting.

Simply use a pull-up resistor, of value large enough that the output goes into saturation (Vout < 2V say). CD4000 will receive this just fine, for Vdd > 5V.

LM3914 isn't very good for battery monitoring, for several reasons: poor accuracy (10 levels); high supply consumption; poor availability (it's obsolete now, or soon to be; granted, supplies will likely be available for many years still); etc. It's also just a voltage converter (indeed, an analog-to-digital converter, with 10-bit unary coded output), it doesn't know anything about batteries, particularly the nonlinear V(C) curve, or hysteresis or other behaviors that batteries exhibit. You would be better off, for example, using an Arduino's ADC (10+ bits ==> over 1000 detected levels!) with a short sketch, which will draw less supply current and interface with whatever 3.3/5V logic you might have handy. (Granted, less handy if the rest of your circuit is based on 9 or 12V or whatever supplies and logic.)

Better still, using a proper battery monitor chip, and, since they're usually I2C or SPI, you'd still need the microcontroller to talk to it.

  • \$\begingroup\$ Thanks Tim for this very thorough answer. Yes I know this is not a proper solution for a true battery management; however for the scope of this project, which is for my garden watering system, it is ok. Of course an MCU would do a better job but I try to keep it simple for the moment. Maybe later... \$\endgroup\$
    – Joe
    Commented May 14, 2022 at 17:57

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.