Looking back through some of the stuff I have built over the years I came across a number of logic probes. Some worked better than others. One used sound to differentiate logic states, others had a 7 segment display that showed more states than those that had dual color or multiple LEDs, some only handled TTL logic levels etc.
So in this project, I wanted to create the ultimate logic probe. It must have the following features:
- It has to be small enough to easily fit in your hand
- Be able to show LOW, HIGH and DON'T CARE states
- Be able to detect the difference between GND and the LOW state
- Be able to detect the difference between SUPPLY and the HIGH state
- A display system that is orientated for easy reading when being used
- Have audible feedback for LOW and HIGH states
- Handle different logic families of devices eg: TTL and CMOS
- Be able to detect whether the probe is measuring a fast changing signal
- Work on a wide range of supply voltages
- Have protected inputs for accidental over voltages.
The circuit is based around a ATtiny1614 microprocessor. It drives a 7-segment display and measures the voltage from the probe and the power supply. It drives a speaker allowing audible feedback. A tactile switch is used to switch between the different logic families being tested such as TTL or CMOS. A 3.3V regulator powers the microprocessor.
The probe and supply inputs are passed through a voltage divider with a 3.6V Zener diode protecting the analog inputs of the microprocessor. The probe also has two diodes to help protect the circuit from positive voltages that exceed the supply voltage or voltages that are negative in respect to ground.
I made a custom PCB to hold the microprocessor and associated connections. The board is single sided and is primarily made up of SMD components. The 7-segment display sits at right angles to the board.
The probe is highly configurable and allows other logic families to be added.
You can add entries to the families
table. The first number is the maximum voltage a LOW state can be. This is entered as a fixed voltage. The second number is the minimum voltage a HIGH state can be as a percentage of VDD. The third number is an index into the charset
table for the character the probe will display when this family is selected. You can add more characters to the charset table as required.
The push button will switch between each entry in the families table. On each iteration, the speaker will be enabled or disabled. Short to VDD, HIGH, LOW and Short to GND states each have a separate tone. (The frequencies are defined starting at line 56).
Building the unitThe case is 3D printed using a 0.2mm layer height. Open the STL files in your slicer software or if you don't have a 3D printer, provide them to your local print shop. You need supports for both the top and bottom parts of the case.
The top and bottom case pieces are held together using a 8mm M3 countersunk screw. Once you print the top case, drill out the mount hole with a 2.5mm drill and create a thread with a 3mm tap.
The Eagle files are included in case you want to get the PCB commercially made or you can make it yourself. I used the Toner method to make mine.
Start by adding the SMD components to the board. I find it easier to use solder paste rather than use solder from a reel when soldering SMD components. The footprint of the SMD speaker that I selected when designing the PCB was different than the one that I ended up using. To stop the speaker from shorting out the tracks underneath it, add a piece of Kapton tape over the copper traces under the speaker before soldering it onto the board.
Next add a darning needle to be used as the probe. To make it mechanically robust, tie it to the board using tinned copper wire. I used a technique called whipping (normally done on the end of a rope to stop it from fraying).
Once you have tied the needle, add some flux and impregnate the joint with solder. This will make a very robust connection.
Next add the seven segment display. Bend the pins on the copper side so they sit on the pads provided (trim if necessary). Use super glue to fix the display to the PCB. Note that it sits off center on the board. The center of the display should line up with the needle used as a probe.
Once the glue dries, push the pins against their pads and solder them in place. On the component side of the PCB, you will need to add tinned copper wire from the pins to their associated holes.
Next solder on the switch. Add the positive and ground wires to the PCB. I added test clips to the other ends.
Unlike the earlier ATtiny series such as the ATtiny85, the ATtiny1614 uses the RESET pin to program the CPU. To program it you need a UPDI programmer. I made one using a Arduino Nano. You can find complete build instructions at Create Your Own UPDI Programmer. It also contains the instructions for adding the megaTinyCore boards to your IDE.
To connect the programmer, tack a wire to the UPDI pad. Once you have programmed the ATtiny1614, this wire can be removed.
Once the board has been installed in the IDE, select it from the Tools menu.
Select the ATtiny1614 board in your IDE
Select Board, Chip, Clock speed, and the COM port that the Arduino Nano is connected to.
The Programmer needs to be set to jtag2updi (megaTinyCore).
Open the sketch and upload it to the ATtiny1614.
ConclusionThe probe meets and exceeds my initial goals. It is easy to hold and makes a great addition to any toolbox.
Update 2023-5-23Gerber files have been attached for PCB manufacturers that don't accept Eagle files as source files.
Comments