Coax Continuity Tester:  The object of this project was to play around with logic circuits (TTL) along with computer software for logic circuit design and analysis. It is trivial to test the continuity of an ordinary length of coax using an ohmmeter. Touching the ohmmeter probes to the center conductor at both ends should show near zero resistance, and the same for the shield.  Probing between the center conductor and shield should indicate an open circuit (infinite resistance).

 Coax Continuity Tester
Flying Saucer Coax Tester

    The tester pictured above has four TTL chips, two pushbuttons, three LEDs, some visible point-to-point wiring, and additional wiring under the circuit board. When a cable is connected between two coax jacks, one from the left copper panel and one from the right, pressing the left pushbutton (near left end of circuit board) tests the center conductor. Pressing the other button tests the shield. The green LED indicates that the tested conductor is good. The red ‘Open’ LED indicates a break in continuity, while the other red ‘Short’ LED indicates a short circuit between center conductor and shield. Since the unit is battery powered I thought it would be prudent to include a power indicator as well (yellow LED).

    I first drew the planned circuit using the program Logisim. After making a couple of simplifying revisions I constructed the project on a breadboard and it appeared to work as intended. At this point I became curious as to whether I could write down a valid logical expression for the ‘Good’ indicator, based on the four inputs (center left, center right, shield left, and shield right). However, I tended to make mistakes, such as having unbalanced
parentheses or a missing or superfluous ‘not’ symbol. So instead I wrote a simple computer procedure that accepts a list of equations as input, each equation corresponding to a single logic gate, and additionally a target expression—the thing to solve for.  By iteratively substituting symbols the procedure converts the target expression to a form that references only input variables, stopping when no further simplification is possible.

    Using this ‘helper’ utility I was able to obtain an expression for the ‘Good’ indicator. Next, a Google search for ‘logic simplifier software’ yielded several relevant resources. The one that I ended up using is another excellent free program called Logic Friday.  My goal was to create three expressions, one for each indicator LED, then to simplify each, and in the end to produce a simplified combined circuit. However, when I entered the ‘Good’ expression into Logic Friday the program’s truth table included two unexpected rows. After spending a lot of time proofreading the circuit and double-checking the breadboard implementation, a question popped to mind: Had I really tested the exact combination of inputs that unexpectedly evaluated as good? The truth table was saying that if one of the coax conductors was open and the other not, AND if both buttons were pressed simultaneously the ‘Good’ indicator would illuminate. Upon testing these exact conditions that was what indeed happened. This unanticipated observation led to a minor change in the logic, after which the truth table exhibited by Logic Friday consisted of only two rows, corresponding to a good center conductor and good shield.

    This account has omitted details of the analysis, but supplementary information may be found here. In any case, the logic diagram shown below corresponds to the circuit that was finally implemented (photo at the top of this description).  It is revision 4 of the original seat-of-the-pants design. Note that the two fault LEDs are inverted, and also that coax center and shield probe pins are not connected
in the diagram.

Revision 4

    Logic Friday includes a ‘Minimize’ option that accepts a messy equation as input, and produces a minimized version of the same logic.  It is then possible to translate the minimized expression back into a circuit. Combining separate minimized circuits without further simplification leads to the following diagram, which has not been implemented or tested. (However, see Arduino addendum below.)

Combined minimized circuits

    Since the diagram above represents a combination of three independently derived circuits, it includes some redundant elements (duplicate inverters). In general, minimizing logic in a small-scale circuit such as this one is not necessarily the same as minimizing the circuit, due in part to the way that gates are packaged in ICs. Other considerations include the ready availablity of ICs or their cost, if they must be purchased.

    Coax continuity tester: TTL/coax_tester_demo.mp4 (Video shows early version of tester, before additional coax jacks were added.)

* * *

   Arduino Logic Simulation :  (June 2025) - A functionally equivalent Arduino application is a natural project idea, and one that would be easily implemented from scratch. Perhaps a less obvious approach would be to duplicate the TTL logic exactly as described in the preceding paragraphs, in other words to construct a one-to-one mapping of the TTL circuit’s logic functions to an Arduino sketch. Every input and output in the diagram has a one or two character label: LEDs are L1, L2, L3; the rest are single letters. The previously referenced supplemental pdf refers to these same labels when representing the circuit’s logic gates as equations. In a similar vein, each gate can be represented in computer programming language form as a boolean operation. For example, the ic7408 AND gate may have the following implementation:

AND gate definition
 
    Each logic gate shown in the TTL coax continuity tester circuit diagram can be defined in a similar way, as a one-line boolean return expression. The J-to-P inverter (NOT) is implemented as a NAND gate with one of its inputs pulled high. This is indicated in the original diagram by the inverter’s numeric label ‘2’, which references IC type 7400. When all integrated circuit logic functions have been thus defined, the entire circuit can be expressed in programming language form, starting at the top of the leftmost column of gates, and proceeding from top to bottom, left to right through the diagram. This one-to-one mapping procedure leads to the following Arduino code:

Arduion Equivalent of TTL circuit

    The Arduino sketch may be examined or downloaded from here. The choice of digital pins to use for inputs and outputs is more-or-less arbitrary. I tested this implementation using a Sparkfun RedBoard, essentially an Arduino Uno equivalent. The RedBoard may also be purchased from Amazon
. A simple test jig was used to exercise the Arduino sketch for all input conditions that pertain to testing real coax, but substituting pin headers in place of coax connectors.

Test Jig for Arduino Sketch

The TTL circuit diagram specifies 100 ohm resistors to pull down center and shield TTL inputs. In place of these resistors the test jig has four voltage dividers to bias the corresponding Arduino inputs (labeled A, B, X, Y). Each voltage divider consists of a 20k and 1k resistor in series. Thus, when not driven high by a test button press, each digital I/O input is pulled to 1/20 × 5 volts = ¼ volt = logic LOW (false).

   IC Chip Simulation:  The preceding few paragraphs describe an Arduino-based coax continuity tester, where microcontroller code performs each logic function in the original diagram: and, nand, etc. The simulation (mapping) is one-to-one, physical TTL gate to virtual TTL gate, preserving ID labels from the circuit diagram as variable names in the code.  There is another way in which the circuit could have been simulated. Instead of mapping logic functions, map entire multi-pin integrated circuits. To explore this approach I created a code library that currently simulates 32 different kinds of TTL chips (download zip here). Only integrated circuits having 16 or fewer pins are included at present. However, more and larger devices are easily appended.

    To exercise this alternative simulation, the caller instantiates a chip as Arduino type
uint16_t, and, after setting input pin values, passes the chip to the appropriate library function by reference.  The chip-specific function  performs all logic defined for the chip, and then returns. At this point the caller examines the relevant output pins, and continues the process with the next IC for which input values are available, and so on. The code snippet below illustrates setting up the 7400 quad 2-input nand IC #1 in the coax tester diagram, calling the corresponding library function, and sensing/reading outputs.

Simulating 7400 coax tester IC #1

    Not surprisingly the result is the same when the entire TTL coax continuity tester circuit is simulated in this way. All test conditions (good, open center, open shield, short) are correctly identified. This simulation success leads to another idea, namely to exercise the Logic Friday minimized circuit in the same way. I do not have any 3- or 4-input physical AND gates on-hand, but virtual AND gates of any desired input configuration are in infinite supply.

Supplementary test jig for Logic Friday solution

    The Logic Friday solution enables outputs in a consistent way. All LEDs are enabled high. To avoid fudging this part, I made another small jig consisting of just the output LEDs (above). The Arduino simulation matches Logic Friday’s diagram with one exception. Being a composite of separate functions, the diagram
duplicates inverting the inputs (not A, not B, not X, not Y). It would be pointless to duplicate these inverters in code. Therefore, just one virtual 7404 (hex inverter) was used in the simulation.

    All test conditions passed, the same as with the original TTL circuit, and with the two previous simulations. Thus, the Logic Friday minimization was proven valid.
It would have been possible, of course, to prove the circuit using Logism, without either a test jig or Arduino code, but the Arduino exercise was instructive and satisfying. The revised sketch with the additional test code described in these addendum paragraphs may be examined or downloaded here.

    It would be simpler to make a practical coax continuity tester using the Arduino platform than to construct the discrete TTL chip circuit described at the beginning of this page. The device could be made without buttons or LEDs. Each conductor could be tested separately and automatically by the control program and, optionally,
a textual display substituted for the result, “Continuity good” or “Center open” or etc.  The original TTL-based device has served well. I have used it many times when preparing a new cable run, or custom adapter. On the other hand, ...

TTL Chip Emulation - LCD Revision

   
Final thoughts: One of the challenges with battery-powered devices is remembering to switch them off, or to power-save mode. A 9-volt battery connected to the Red Board auxiliary jack (round) suffices to power the Arduino and LCD with backlight, as well as accessory LEDs, if included. Would it be feasible to power-off the Arduino-based continuity tester automatically after a defined period of inactivity? I don’t know if a circuit that has zero off-current draw is possible, i.e., the same as a mechanical SPST switch. However, if off-current were small enough, such a circuit would likely have negligible effect on battery life. Something to think about!
 
Automatic power-off circuit schematic
   
    (Later) Not much thinking was needed. The simple circuit shown above consumes no power when the Arduino is off, and almost no additional power when it is on. One DIO pin powers the relay coil. The diodes are the ubiquitous 1N4148 type (because I have at least a hundred of them). The relay is type EDR201A0500, again because that type was on hand. The relay should require minimum current to operate.

Implementation of power-saver circuit

    Software was simpler than the hardware, if that is possible. I set the inactivity-shutdown time to 1 minute for testing (60,000 milliseconds in Arduino time). Time of last activity gets updated
each time a button is pressed. DIO pin #8 was used to activate the relay, HIGH = on, LOW = off. Of course, any pin that is not otherwise used will do. The relay pin goes high immediately on startup. Thus it is only necessary to press the button for a second. In testing I held it until the LCD came on and then released it. By this point the Arduino is powering the relay coil via the specified DIO pin. Once the inactivity-shutdown time interval expires, the relay pin drops to LOW, interrupting power. Pressing the momentary SPST button again restarts it.



Projects Home







Project descriptions on this page are intended for entertainment only. The author makes no claim as to the accuracy or completeness of the information presented. In no event will the author be liable for any damages, lost effort, inability to carry out a similar project, or to reproduce a claimed result, or anything else relating to a decision to use the information on this page.