‘Beep’, as we nicknamed our logic probe, is a simple tool that employs sounds to indicate signal levels so you can use it without having to look up from your work. Beep will produce a low frequency sound if the SUT has a low level and a high frequency sound when the SUT’s level is high. When the SUT is undefined because it is tri-stated (i.e. in high-impedance output mode) an unconnected input, or because the output is of the open collector type and is missing a pull-up resistor, Beep will remain silent. Many circuits also contain signals that change level (very) fre- quently, too often for our human ears to hear, and so Beep has been empowered to make such signals audible as well.

Oscillate and divide
How can Beep do all this without a microcontroller? Easy, thanks to two oscillators and a fre- quency divider. One oscillator (IC3B, R4, C5) is responsible for the low-frequency sound; the other (IC3C, R5, C6) generates the high-frequency sound. The frequencies are determined by the values of R4/C5 (low) and R5/C6 (high). Since the SUT cannot be high and low at the same time only one oscillator can be active at any time hence the oscillators’ outputs can be connected in parallel to drive the buzzer.

The choice of the oscillator depends on the SUT connected to pin 1 of JP2. When its level is low the level on the Enable pin (8) of IC3C will be low too, consequently IC3C’s output will be a steady high (that’s how a NAND gate works, Schmitt-trigger inputs or not) and the oscillator is blocked. The output of IC3A will be high too analogous to IC3C. Its input pin 2 will not be exactly at 0 V, but it will be low enough for the gate to decide that its output should be high. Contrary to IC3C, IC3B sees a high level on its Enable pin (5) and so this oscillator is free to operate. A low-frequency sound will be heard.

The opposite happens when the SUT represents a high level. Now both inputs of IC3A will be high, causing its output to go low, effectively blocking the low-frequency oscillator IC3B. The Enable pin (8) of IC3C on the other hand will be high and the oscillator starts producing a high-frequency sound.

When Beep encounters an unconnected input, a tri-stated (i.e. high-impedance) output or an open-collector output without a pull-up resistor, the SUT will not have enough power to force Beep’s high-impedance input (due to the high values of R1, R2 and R3) to a well-defined low or high level. Because of the voltage levels created by the voltage divider ladder R1, R2 and R3 the inputs of IC3A will both be high and IC3C’s Enable pin will be deemed low. Now both oscil- lators are disabled and Beep will remain silent. When the SUT isn’t a steady level, i.e. it’s alter- nating between high and low, the oscillators will be activated alternatively resulting in a two-tone sound. As the SUT frequency increases the two-tone sound changes faster until a point is reached where the oscillators can no longer follow the SUT and fall silent. This is where the frequency divider IC1 comes in. It divides the input signal’s frequency by 256, 1024 or 2048, allowing you to notice frequencies up to 4 MHz (faintly assuming your hearing goes all the way to 20 kHz). Switch SW1 selects the divisor to bring the output frequency in a range that suits your ears best.

The oscillator’s outputs are too weak to drive the buzzer directly. Consequently they are connected to an output stage consisting of two buffers in parallel that provide enough oomph for the buzzer. Such a stage was added to the frequency divider too to make sure that the sound always has the same loudness.

Insert 1