I wanted a desktop version of the DIY Transistor Curve Tracer designed by Peter Balch published at
https://www.instructables.com/Transistor-Curve-Tracer/ Peter's original design is running on dry batteries. My modified version runs on 230VAC mains supply.
I have redesigned the power supply to use a pure analogue circuit by getting rid of the switching components to eliminate as much interference RF as possible.
The oversized power transformer irradiates almost pure 50Hz noise inducing around 120mVpp at 3cm distance over a 10cm open loop wire connected to a 10MOhm oscilloscope probe, and almost zero at 10cm distance.
The DC raw power voltage is around 21VDC that is then reduced to 15VDC with a 7815 before being passed to the CT PCB power supply regulators.
I had to create a new PCB layout to place the ZIF socket side by side with the display, and include the required voltage regulators for 12VDC, 5VDC, and 3.3VDC.
I decided to use the Nano version of the Arduino module to have an USB port for easier programming. A cable extender brings the Arduino Nano USB-C port to the cabinet back panel, for easier software updates and PC remote control.
The ZIF socket is mounted on a small stripboard daughterboard that is electrically connected to the main CT PCB by using Zero Ohm (DC) ferrite beads.
These are mechanically strong enough to maintain the daughterboard in place.
Also the ferrite beads terminals were cut as short as possible ( at 3cm) to reduce possible potential unwanted source of interference.
During the testing using breadboard and jumper wires, I noticed the obvious Clock signal rise and fall time degradation as a result of using resistor networks to adapt the Arduino nano 5V output signals to the Display 3.3V input signals.
The 5V clock square wave output from the Nano turns into a triangle with around 50% amplitude at the Display clock inputs at 8MHz SPI commands.
At 4MHz it loses less amplitude but keeps looking a bit like a triangle.
At 1MHz it looks vaguely with a square wave.
This behavior is to be expected, as the resistor network divider forms a RC network with the parasitic capacitance of the Display clock inputs.
I tried to correct the signal, initially by using compensation capacitors, later by using CMOS level shifters.
In both cases the clock signal looked like a square wave at the display inputs, however in both cases the display stopped working.
I didn't investigate this any further and just sent the Gerber files to the production factory in China using the original resistor network level shifters that proved to be fine once the circuit was assembled into the PCB.
Another issue is related to the ILI9341 display modules available from AliExpress shops.
I have ordered three displays, each from a different shop, to test different hardware versions.
As usual, each one behaves in different ways on the display and on the touch screen components.
I notice an horizontal shift when printing pixels that varies in length depending on the display unit I use.
This seems to happen with the Peter's display driver software. I tested it with LCDWIKI and it looked correct.
The shift in printing can be corrected in the Peter's display driver, but I didn't look into it yet.
Also the rotation configuration is different from what Peter's display module is using.
I had to change the display rotation in the Arduino sketch to adjust it for my displays.
The touch screen response (in poll mode, Interrupt mode is not used in the Peter's project) is distinct between my display units.
One unit keeps returning a touch press with random XY readings even when no press is done. I had to increase the threshold level in the Arduino sketch to stop getting these kind of garbage readings.
The other two units did work as expected on the touch screen, although the rotation configuration is distinct between them. Easily corrected inside the sketch.