An oscilloscope shows on its display a signal, on that we all agree, but how can it show it steadily and do not show it jumping around the screen? It has an internal trigger that is able to show the signal always on the same position of the screen (or at least most of the times), creating the illusion of a stable plot.
The trigger is associated with a threshold that activates a sweep
when the signal passes it. A sweep
is the phase in which the oscilloscope records and displays the signal. After a sweep another phase occurs: the holdoff
, in which the oscilloscope rejects any incoming signal. The holdoff period can be composed of a part of dead time
, in which the oscilloscope is unable to accept any signal, and a part that can be user selectable. The dead time can be caused by various reasons like having to draw on the screen or having to store the data somewhere.
Looking at the image we get a sense of what happens.
Signal 1 surpasses the threshold and activates the sweep;
signal 2 is inside the sweep time and gets caught with the first;
after the holdoff, signal 3 activates the sweep again;
instead signal 4 is rejected because it falls inside the holdoff region.
The raison d'être
of the holdoff phase is to prevent some undesired signals to get in the sweep region. It is a little bit long to explain this point and it eludes the purpose of this instructable.
The moral of this story is that we need:
a threshold level to wich we can compare the incoming signal;
a signal that tells the microcontroller to start the waiting phase (see preceding step).
We have several possible solutions for point 1. :
using a trimmer we can manually set a voltage level;
using the PWM of the Arduino we can set the level by software;
using the 3.3 V provided by the Arduino itself;
using the internal bangap reference we can use a fixed level.
For point 2. we have the right solution: we can use the interrupt of the internal Analog Comparator of the microcontroller.