Introduction: DPScope SE - the Simplest Real Oscilloscope/logic Analyzer on the Planet

The DPScope SE is the result of a challenge I set for myself – to build a practically usable oscilloscope with a minimum amount of components and for minimum cost. The practical benefit is of course that this is an instrument that I hope will be interesting to many teachers, students and hobbyists looking for an affordable, simple tool for their electronics work.
There were a few basic requirements for whatever circuit I came up to justify the “practically usable” label: There are quite a few simple “sort of an oscilloscope” type circuits out on the web, but all I know fall short in one or more respects:

• Only one input channel  – very often one must display one signal in relation to another (e.g. clock and data, or input vs. output) or trigger on a signal different from the one to be displayed, and this needs at least two channels.
• No reasonable protection against overvoltage at the input.
• Very limited range of input voltages (e.g. just 0…5V) and no adjustable input amplification or attenuation.
• Only usable for very slow signals because of limited sample rate (a few kSa/sc) and/or low bandwidth (a few kHz).
• Non-standard input impedance – standard scope probes need 1 MOhm. Input stage not frequency compensated (limits bandwidth to a few kHz at best).
• Use of exotic, obsolete or unnecessarily expensive components.
• Unnecessarily complex circuit especially given the limited performance.

With the DPScope SE I tried to address all these issues. Of course the end result can never compete with a professional Tektronix or Agilent scope costing hundred times more, but it is still good for a large number of applications.
To minimize cost some preliminary considerations set the general direction:

• Try to integrate as much of the scope hardware into a single chip.
• The instrument should use a PC for control and display – saves the cost of a dedicated LCD display (while providing unmatched resolution and processing power) and front panel control knobs and buttons.
• Connection should be through USB (fast and today’s standard – legacy serial port connection require USB converters which again adds cost since most new PCs don’t even have RS-232 ports anymore).
• Power to be provided through USB connection – saves the cost of a wall-wart power supply.
• Be very careful about adding components and be diligent looking for low-cost, easily available components.
• Don’t use hard-to-solder, fine pitch components so the scope can be distributed as a self-assembly kit anybody can build.

In the end I was able to squeeze almost everything onto a single microcontroller (a Microchip PIC18F14K50) – acquisition control, capture memory, USB interface, digital-to-analog converters (ADC), trigger circuitry and trigger threshold generation. The only major block outside is the analog frontend – and even this is just one quad op-amp chip and a number of resistors and capacitors.

If you have any questions or feedback, do not hesitate to contact us:


Step 1: Circuit Overview

The picture on this page shows the complete oscilloscope schematic. We will dive into each section in detail later, but first let’s get a broad overview.

Don't worry if the schematic seems too small and does not show any details: Click on the "i" in the top left corner to get to a page where you can download the full-sized image.

The signals to be displayed enter on the left side. There are two input channels, their design is identical. First the signals get attenuated to make sure they do not exceed the range of the op-amp or the ADCs (0…5V). The attenuator has very high impedance and also acts as protection against excessive voltage at the inputs, together with the clamping diodes.

A low impedance divider provides some fixed offset to shift the input signal up, that way positive as well as negative voltages can be measured.

The signal then continues to the amplifier stage, consisting of two op-amps (both on the same physical op-amp chip). The first one acts as a simple unity gain buffer, the second stage provides 10x amplification.

Finally the signal enters the microcontroller where it gets digitized. The scope can change its voltage resolution by selecting which version of the signal to use – the one from the unit-gain buffer (for large input signals) or the 10x amplified version (for small signals).

The microcontroller captures the signal – the acquisition parameters (sample speed, voltage scaling, trigger setup come from the controlling PC) and sends the data back to the PC for display.

There is also a logic analyzer port – four digital inputs into the microcontroller.

Finally, the USB interface transmits data between microcontroller and PC and also provides power to the whole circuit.

Step 2: Microcontroller

The microcontroller (a Microchip PIC18F14K50) is the heart of the whole instrument. Above you see a high-level block diagram of its internal structure. As said before, almost all functions are integrated into this single chip, Microchip really managed to pack a ton of features into this little marvel costing just around $3.

Even though there seem to be several ADC input pins the truth is that there really is just a single ADC whose input gets multiplexed onto these pins. That means one can only take one sample on one channel at a time; for two channels the acquisition is done interleaved, i.e. one sample from CH1, then one from CH2, again one from CH1, and so on. The maximum achievable sample rate is just above 50 kSa/sec. (For finer resolutions the scope uses equivalent time sampling, up to 2 MSa/sec equivalent sample rate). The ADC’s analog bandwidth is a few hundred kHz (the data sheet does not specify bandwidth, this number is from my own measurements).

As with the ADC, the comparator inputs can get multiplexed on several different pins – here, CH1 low (1x) and high (10x) gain path and external trigger. The other side gets the trigger threshold, produced by the PWM (pulse width modulation) module. The microcontroller can set up an interrupt that reacts whenever the comparator output changes state (i.e. the input signal crosses the threshold) which allows for very fast, low-latency reaction to trigger events.

The sample logic (actually a piece of code) controls the acquisition process – processing interrupts from the comparator, timer interrupts to sample at regular intervals, transfer of the sampled signal data into the microcontroller’s internal memory (RAM). It can either capture data from the two analog scope channels or from the four digital logic analyzer inputs.

The microcontroller also has a complete USB interface built in which provides data connection to the PC. A program on the PC lets the user control the acquisition settings and displays the data, so it looks and feels like a regular oscilloscope.
The main program running on the microcontroller takes care of communicating with the PC (receiving commands and sending the captured data) and sets up the sample logic, comparator, ADC with the acquisition parameters.

Step 3: Input Stage

Let’s have a look at the input stage first. Since the two channels are identical in their design we will concentrate on scope channel 1 (CH1).

To allow for connection of different types of probes the input offers three different options for the connector. The standard one is the BNC connector, which is mandatory if the scope shall be mounted in the Serpac enclosure with the provided custom end panels. For bare-board variants the user can install RCA connectors (also known as Cinch or audio connectors) – some people prefer these because it’s easier to build cheap probes for them. There is also space for a 0.1” spacing jumper header – useful to hook the scope e.g. to a breadboard through jumper cables.

The microcontroller's analog-to-digital converter (ADC) has a fixed input range of 0 to 5V. The op-amp (rail-to-rail input and output, see next section) can only transmit signals in this range as well.  Signals smaller than that range will get measured with reduced resolution (because they don’t span the full range of possible digital ADC values), and larger signals will get clipped. Since the input signal that the scope is supposed to measure can span a wide range from quite small to quite large, we need an input stage that can attenuate and/or amplify the incoming signal to make it suitable for the analog-to-digital converters (ADC).
First, in the input stage, the incoming signal is attenuated by a factor of 10 by the voltage divider formed by resistors R1 and R3. This increases the maximum voltage range to 50V peak-to-peak. R1 and R3 in series yield 1 MOhm total resistance so the scope input has the correct, standard impedance required to use standard passive 1:10 or 1:100 scope probes.

Since the subsequent circuits cannot deal with negative voltage (to keep the circuit simple, the scope has only a single +5V supply and no negative supply), the only way to measure negative signals is to shift them up with an offset voltage, provided by the low impedance divider built from resistors R16, R17, and trimmer R12. Capacitor C4 assures that this offset voltage does not float around when the input signal changes quickly (the power supply could not react fast enough to quick changes – C4 takes care of that because it acts as a charge buffer).

R12 is adjusted so the voltage going to the op-amp input is at 2.5V (i.e. exactly at half the supply voltage and thus the ADC range) when 0V is applied to the scope input. The 2.5V level thus acts as sort of a “virtual ground level” for subsequent processing stages. Since the input divider reduces the input swing by a factor of 10 this means the scope can now measure input signals between -25V (resulting in 0V going to the op-amp) and +25V (resulting in +5V going to the op-amp).

If you use a 1:10 scope probe – basically a glorified (well, actually frequency compensated) 9 MOhm resistor, the input divider ratio becomes 1:100 (divider formed by probe and R1 on one side and R3 on the other) and the range increases to +/-250V  ( but be VERY CAREFUL whenever working with such high voltages!).

Important note: One source of confusion is the fact that the bottom of the input divider is not going to ground (0V) but rather to the offset voltage. This is different from how most other scopes work and is the price to pay for using just a single, positive supply rail. It means that if the input is left open (nothing connected to it) it will float up to the offset voltage and as a result the scope will NOT show 0V but rather some positive offset. It also means  that the software has to adjust the vertical offset applied slightly when going from a low-impedance 1:1 probe to a 9 MOhm 1:10 probe.

The input divider (attenuator) deserves some further consideration. It is a so-called compensated divider and consists of a parallel combination of a resistive divider (R1 and R3) and a capacitive divider (C12 and C11). The reason for adding the capacitive divider is the fact that the protection diodes (D1 and D2) and the input of the op-amp (OP1.1) have some unavoidable parasitic capacitance C_par on the order of a few pF. With only R1 and R2 this would create a low-pass R-C filter (the divider feeding the parasitic capacitance which would need some time to charge up), severely limiting the achievable bandwidth (in our case to just a few kHz).

The solution - if you can't beat them, join them. Adding the capacitive divider and adjusting it to the same division ratio (1:10) as the resistive divider makes the frequency response flat from DC to light (at least in theory - but close enough for our purpose). The necessary condition is that the division ratio of the resistive divider (R1, R3) is the same as the division ratio of the capacitive divider:

(C11 + C_par) / C12 = R1 / R3

In many higher end scopes one of the capacitors is made adjustable to trim the exact capacitance ratio, but to keep things simple (and low cost) I opted for fixed capacitors. One less thing to adjust! Since nothing comes for free in life, it's not surprising there is a price to pay - the capacitive divider causes the scope's input impedance to drop for higher frequencies. Still this is a worthwhile tradeoff and thus such a compensation circuit can be found in virtually every oscilloscope.

Finally the two diodes (D1, D2) act as input protection, clipping any signals to the preamplifier that exceed either +5V or 0V by more than one diode drop. They need to be fast-switching (both in conduction as well as in recovery) and have low input capacitance. On the other hand, given the high input resistance value (900 kOhm) between input and diode they don't need to shunt a lot of current even at large overvoltages at the scope input. The diodes used (1N914) are very easily available yet offer very fast switching. (Actually almost any CMOS IC, including the op-amp, has a similar protection structure on their inputs and outputs, but for scope inputs that may be subject to significant overvoltages I did not want to rely on this for circuit protection). R1 is rated to a static load of at least 100V or 200V (depending on specific model), so this gives good headroom compared to the specified input signal range (25V peak). For short times the input structure can withstand much higher voltages (but don’t rely on that!).

Step 4: Amplifier Stage

The next stage for the signal is the op-amp (operational amplifier). The DPScope uses the MCP6024 which has 4 single op-amps in one package. Its gain-bandwidth product of 10 MHz (meaning for small signals you can get a bandwidth of 10 MHz for 1:1 gain, or 1 MHz for 10x amplification) is more than sufficient for our purposes (a few 100 kHz at most). For large signals the slew rate is actually the more important parameter to look at since that tends to be the limiting factor. The MCP6024 can do 7V/µs so it can span a 5V range in less than one microsecond – again well sufficient for the required performance here. (A rise time of 1 µs corresponds to a bandwidth of roughly 330 kHz).

What is also important – the MCP6024 is a so-called rail-to-rail amplifier, i.e. it works fine even if the input signal or is output signal go all the way to its supply rails (0V and 5V in our case), or at least very close to them (a few mV) as long as it does not need to drive large currents. This is by no means a given – most op-amps need some margin between their supply levels and the maximum and minimum signal levels they can work with. In any case rail-to-rail capability makes our life very easy and helps keeping circuit simple.

But back to the signal chain of our scope: The signal is first fed into a simple non-inverting op-amp follower (buffer) stage (OP1.1) which produces a 1:1 copy of the signal.  This buffering is also necessary because the input stage constitutes is a high impedance source which could not drive the ADC directly (Microchip states that the maximum source impedance should be 10 kOhm or less to guarantee settling to 1 LSB within one sample period, and we need even better because the scope performs equivalent time sampling for fast sweep rates – meaning the signal has to settle faster than one “real time” sample interval).
The buffered signal (output of OP1.1) drives one of the microcontroller’s ADC inputs directly (pin RC1/AN5), and also feeds the input of a 1:10 gain stage (OP1.2, hooked up as a standard non-inverting amplifier) that produces a signal amplified by 10, which in turn goes to a second ADC input (microcontroller pin RC2/AN6). That way one can choose between less amplification for large input signals and large amplification for small signals simply by telling the microcontroller to sample on RC1 or RC2, respectively, without the use of any relays or switches (which would make the design larger, more complex, and more costly).

The negative (inverting) input to OP1.2 is biased to 2.5V through the divider R4/R6 since as outlined in the previous section our virtual ground is sitting at half the supply voltage. The gain of this stage is given by R7 and the parallel combination of R4 and R6 as:

Gain = 1 + R7 / (R4*R6 / (R4 + R6)) = 1 + 4.53k / 0.5k = 10.06

which is the very close to the desired value of 10 (better than the 1% tolerance of the resistors used anyway).

Step 5: Trigger

The trigger uses the comparator built into the microcontroller – again great, no external circuitry required for this functionality. The trigger compares the incoming signal (actually the scaled copy of the input signal arriving at the ADC) with a user-controlled threshold level.

We still need to generate the required trigger threshold (the voltage level at which the trigger should fire and start the acquisition), and this threshold must be adjustable. Instead of using a digital-to-analog converter (DAC) which would add significant cost, the scope generates this level using pulse width modulation (PWM). The microcontroller has a PWM generator built into hardware so it can generate PWM signals with programmable frequency and duty cycle independently in the background while the program runs. The frequency is fixed, and the duty cycle (time within one period where the signal is high) is variable, depending on the desired trigger level. E.g. if the signal is high for 20% of the period (and low otherwise), the average level is then 20% of the supply voltage, i.e. 1V. Of course this signal is not yet a static DC level but rather a fast square wave, so the PWM output feeds a low-pass filter consisting of R5 and C2. The time constant (R5*C2) is chosen fast enough for the level  to settle to a new value within less than about 200ms, but much longer than the PWM period. That way the output settles to the average voltage of the PWM signal.

Step 6: Logic Analyzer Port

In addition to the normal scope function (to measure analog signals) the DPScope SE also offers a logic analyzer mode. In this mode it can acquire up to four digital signals (i.e. at each sample instant it will only show if the signals are high or low). The advantage is that is can store longer records (since there is only 1 bit of data per channel for each sample instant, instead of 8) and sample much faster (because it simply reads the state of its digital inputs instead of performing a – much more complicated and time consuming – analog-to-digital conversion with its ADC).

The digital signals enter through the multipin connector on the backpanel of the scope and go through 10 kOhm protection (current limiting) resistors directly to four PORTB inputs of the microcontroller. Triggering in this case is done by setting up a “interrupt on change” on the channel selected as trigger channel.

Note that different to the scope channels the logic analyzer inputs do rely on the protection diodes internal to the microcontroller (plus the current limiting function of the series resistors, which makes this approach safe for up to about 15V). Microchip explicitly condones such an approach (there are even apps notes making use of it), and second the logic analyzer port is only intended to probe digital signals which normally do not exceed 5V, but take care not to exceed that.

The logic analyzer port also “breaks out” ground (must be connected to the circuit under test of course), an additional external trigger for the scope mode, and the 5V USB supply. There is an option to install a thermal fuse (F1) that limits the supply current in case of a short circuit. The main reason for the 5V pin is to enable attachment of (yet to develop) add-on boards, e.g. a signal generator. The scope supplies power to these boards and send and receive data through the trigger pin and the logic analyzer channels – the board itself then can be very simple because it needs neither its own power supply nor an extra USB connection to the PC.

Step 7: USB Connection

The USB connection has two functions here – it serves as the data link between scope and PC, and in addition it provides the circuit with power.

The PIC18F14K50 microcontroller has a full USB interface already built in (actually that is one of the main reasons to use this particular microcontroller), so implementing the USB data connection becomes almost trivial on the hardware side – the connector and two 47 pF capacitors (C1, C7) is all that is needed! The device is set up as a HID (human interface device), which is one of the two most common choices for simple USB enabled devices (the other being CDC = virtual serial port). HID can transfer data at up to 64000 bytes/sec (almost 64 KB/sec), or – more precisely – up to 1000 data packets per second where one data packet can contain up to 64 bytes of data. This is absolutely sufficient for our purposes: One full data record on the DPScope SE has around 420 bytes (210 bytes for each of the two analog channels), i.e. needs just 7 maximum-length packets. Then there is some overhead to set up acquisition parameters, start the acquisition and query the scope status, but still one full acquisition uses less than 20 data packets, so the USB data bandwidth is not a limiting factor for the capture rate.

The power supply was kept as simple as possible as well. It relies on the fact that the USB supply voltage is at least roughly regulated (nominally 5V but it can vary between ~4.3V and ~5.3V) and matches the voltage requirements of our circuit (5V), so there is no voltage regulator. (More advanced USB supplied circuits typically run at 3.3V so they can use a simple low-dropout regulator to provide regulated 3.3V from the raw USB supply voltage. But to get regulated 5V from the 4.3…5.3V input – i.e. sometimes lower and sometimes higher than the output voltage – we would need a buck-boost switching regulator which would roughly double the scope’s complexity).

There is some minimum power supply decoupling – the bulk electrolytic capacitor C8 in combination with chock L2 and ceramic capacitor C10 filter the USB supply: C8 acts as a buffer (reservoir) to take care of surges in the circuits power consumption. C10 and L2 block high frequency noise coming from the PC to the scope or disturbances coming from the scope.

Step 8: Mechanical Design

The oscilloscope is built up on a regular, custom printed circuit board. This minimizes the work to put it together, and also minimizes the chance for wiring mistakes. The board can be mounted in a sturdy off-the-shelf enclosure (model Serpac A-21) to protect it from damage in everyday work.
I took a lot of care to make assembly as quick and easy as possible, and to give the completed instrument a professional look. For the latter I designed custom front and end panels; these panels are made as part of the printed circuit board and V-scored so one can simply snap them off the main board by hand. Creating panels from printed circuit board is a nice and often-used trick, and not coincidentally the grooves in the enclosure that hold the endpanels in place happen to have exactly the same width as the standard board thickness (around 1.6mm or 62mil): Since there is no extra setup cost (they are part of one board) one gets colored panels of arbitrary shape and with custom labels, holes and cutouts almost for free! Since the panels are machine-made the instrument has a very professional look – no skewed cutouts or roughly filed slots! I also really like the design and shape of the Serpac enclosure – not quite as boring as the typical project boxes.
The main board is held in place by the two BNC connectors screwed into the front panel, so there is no complicated alignment procedure or many screw connections – everything falls in place by design.

Step 9: Assembly

While we made every effort to create an instrument that is robust and simple to assemble, there are some components that are sensitive to mishandling, e.g. putting them in with wrong polarity, so please pay close attention to the description for every step. Moderate soldering experience is required. You will need a few tools for the assembly:

Small soldering iron (about 17 Watts power) with sufficiently fine tip
Small gauge rosin core solder
Flat-nosed pliers (to bend component leads)
Small wire cutter (to cut off component leads)
15 mm wrench or small adjustable wrench (to fasten the BNC connectors to the front panel)
Small Philips screwdriver (to adjust the trimmer resistors and for the enclosure
Mid-sized Philips screwdriver (for the enclosure screws)
An ohmmeter is very helpful to identify the different resistors.

All components are mounted on the top side of the board. All soldering is done on the bottom side of the board.

The time required for putting the scope together will depend on your experience – a seasoned hobbyist should be able to do it in around one hour, but if you are new to this it will take longer.

If you have any questions or feedback, do not hesitate to contact us:


Step 10: Unpacking the Kit

Below you see the kit as it comes out of the box:

Turn it upside down, unscrew the four screws on the bottom of the enclosure and carefully lift the bottom – make sure not to drop any components.

To attach the scope to your PC you will also need to supply a standard size USB cable (USB-A connector on one end, USB-B on the other; not supplied with the kit).

Step 11: Identifying Resistors

Resistor values are color coded (see table below).

The resistors used in the kit with 5% tolerance have 4 colored bands (two significant digits, one multiplier, one tolerance). E.g. brown(1) – red(2) – yellow(10E4) – gold(5%) means 12*1E4 Ω = 120 kΩ, Tolerance 5%

Resistors used in the kit with 1% tolerance have 5 colored bands (3 significant digits, one multiplier, one tolerance).

If available, checking each resistor value with an Ohmmeter is recommended.

Step 12: Identifying Capacitors

Ceramic capacitors:

The value is given in pF as one 3-digit number “xxy” comprising 2 significant digits (xx) and one multiplier (y). The markings may be small so to read them use a magnifying glass if necessary. Sometimes there is only a single digit or two digits, this then gives the capacitance in pF directly. Letters (e.g. J, K,…) denote tolerances etc., for our purposes here simply ignore tem (i.e. “k” does NOT mean “kilo”!).

474 means 47 * 10E4 pF = 47 * 10000 pF = 470 nF = 0.47 µF 104 means 10 * 10E4 pF = 10 * 10000 pF = 100 nF = 0.1 µF 181 means 18 * 10E1 pF = 18 * 10 pF = 180 pF 220 means 22 * 10E0 pF = 22 * 1 pF = 22 pF 24 means 24 pF 1 means 1 pF

Electrolytic capacitors:
Their values are typically printed without any encoding. Just be careful not to overlook the decimal point.

E.g. 100 µF, 4.7 µF

Since electrolytic capacitors are polarized (must be connected to positive and negative side the correct way, otherwise they will destroyed), their polarity is indicated as well. Aluminum capacitors normally have the negative terminal denoted (by a big bar with “-” signs), while tantalum capacitors have the positive terminal marked.

This kit uses only normal aluminum capacitors.

Step 13: Components

On this page you see all the components spread out. Everything you need to build the oscilloscope is included. Please use the component list (also attached) to verify that you have all the parts shown below. Also shown below is a picture of the board layout (component placement).

Some general remarks:

Some components may look somewhat differently than in the pictures – different color, different leg length, etc. Make sure you reliably identify each component before you solder it onto the board. Take your time! It is much easier and much faster to perform a very careful assembly than it is to troubleshoot a circuit that does not work because some component was installed incorrectly!

The integrated circuits, the diodes and the LED (light emitting diode) are very sensitive to electrostatic discharge – it is good practice to use a grounded wrist strap to avoid damage to them during assembly, and to place all the components on an antistatic surface. Unpainted wood is a good choice. Don’t wear clothes that get easily charged up (e.g. wool sweater). In most cases such discharges are too weak for you to notice, but they can still damage or destroy the tiny components in an instant!

You’ll also need a USB cable (not included in the kit), but most people have already a few lying around anyway. If you need to buy one, e.g Digikey part# AE1462-ND works fine.

Step 14: Starting the Assembly

As a general rule, we’ll start out with the lowest components and work our way up to the higher (bigger) ones. The most sensitive parts will get installed last.

Again, make sure to correctly identify each component before placing it onto the board, and verify it is in the correct position before soldering it down!

We’ll start out with the bare printed circuit board. All components mount on the top side. Note that each component position is labeled with the respective component name (called reference designator or RefDes) for easy identification.

A “helping hand” – shown on the right – holding the board is very convenient when placing the components because the component leads (legs) can freely stick out on the bottom.

Step 15: Resistors

Place all the resistors – bend their legs at the proper distance and stick the legs through the vias (holes) on the PCB. Bend the component leads apart on the bottom – this will hold the resistors securely when you turn over the board to solder them on. The picture shows what the top of the board should look like. In the bottom view you can clearly see how the leads are bent apart to hold the resistors.

Step 16: Resistors

To solder, touch the component lead (wire) with the soldering iron and the solder wire at the same time. Add enough solder so it completely fills the hole and leaves a small “hill” of solder. Remove the solder wire and the soldering iron but don’t move the board before the solder has become completely solid again. The solder joint should be shiny and bright (if you are using lead solder; the new, RoHS compliant solder will look dull). Repeat for the other leads. This is how the bottom of the board will look like when you are done:

Now clip off the protruding wire ends with the wire cutter. Take your time – this is a good opportunity to check that you did not accidentally forget to solder some of the connections!

Step 17: Inductor, Diodes

Next are the inductor and the clamping diodes. Works the same as the resistors. The diodes are quite sensitive to overheating, so be careful to solder them quickly. The best approach is to first solder only one end of all diodes, then the other end – this gives them enough time to cool down in the time between.

Note: Be careful– the diodes have to be put in with correct polarity (orientation); the negative end is denoted by a black band around the diode body. The silkscreen outline also shows a (white) stripe – when properly installed, the black diode band should match the white silkscreen stripe. Note that the orientation is not the same for all diodes – see picture below. Installing the diodes the wrong way around will prevent the instrument from working and may even damage the diodes.

The inductor on the other hand is not polarized and can be put in either way.

Step 18: Ceramic Capacitors

Now on to the ceramic capacitors – same mode of operation as before. These components can look very similar to each other, and their color may vary and be different from what you see in these pictures. You really need to identify them through the markings printed on their housing (there are usually additional markings – letters and maybe numbers denoting package type, tolerance and so on, but only the capacitance is important for us):

474 --> 0.47 uF
104 --> 0.1 uF
181 -->180 pF
470 or 47 --> 47 pF
220 or 22 --> 22 pF

Step 19: Chip Sockets

Now come the sockets. Be careful with their installation because once soldered down a socket is almost impossible to remove. The best way is to do it step by step:

1. Place the socket on the board as shown in the big picture. Note the position of the notch on the left side of the silkscreen outline – make sure to orient the notch on the socket to the same side. This will make installing the chips less error-prone.

2. Turn the board over and solder only two of the corner pins as shown in the zoomed-in picture below. The reason is simple – two pins diagonally opposed will securely hold the socket in place, but still allow you to make corrections.

3. Press the socket onto the board and re-heat both of these solder joints – this allows the socket to sit flush against the board. Visually inspect the socket to make sure this is really the case.

4. Only now solder all the other pins.

Step 20: Electrolytic Capacitors, Trimmer Resistors, Resonator

The electrolytic capacitors are next. Watch out, they may look similar but have different values (4.7uF and 100uF) – clearly printed on their housings.

Note: Be careful – these capacitors have to be put in with correct polarity. The negative side is clearly labeled with a white stripe and “-” (minus) symbols – make sure you install them as shown in the pictures below! Installing the wrong way around will damage them immediately once the circuit is powered up – they may even explode!

Next are the trimmer resistors – note that two of the holes will remain unused – the footprint can accommodate different common pinouts.

Finally install the 3-pin ceramic resonator – its orientation is not important.

Step 21: USB Connector, Logic Analyzer Header

The USB connector is easy to install. Make sure though that it sits flat and straight – like sockets and any multi-pin component it is very difficult to correct errors once all the pins are soldered down. Thus install the connector and solder one of the big pins (tabs) on the side. Check for proper alignment, correct if necessary by re-heating the solder joint and readjusting the connector. Then solder all the other pins.

Similar for the 8-pin header – solder one pin, check alignment, then do the rest of the pins. Below is also a side view to show the proper vertical position of the connector, the bottom of its plastic piece just flush with the top of the printed circuit board.

Step 22: Front Connectors – RCA

If you are assembling the bare-board version of the scope (i.e. without enclosure) then you can install RCA (cinch, audio) connectors instead of the standard BNC connectors (note: only BNC connectors are included with the kit). Some people prefer RCA connectors because it is a bit easier to build cheap probes for them. The connectors fit into the same location as the BNC connectors.

Similarly, there is also space for 0.1” jumper headers, which can be convenient if you want to hook up the instrument to some breadboard circuit.

Both options are shown below.

Note that the BNC connectors are mandatory if you want to mount the board in the Serpac enclosure.

Step 23: Front Connectors – BNC

The standard connectors coming with the DPScope SE are BNC connectors. These are the same connectors you find on commercial oscilloscopes, and they allow you to connect standard scope probes or standard BNC cables.

Install the connectors and verify they fit through the custom front panel (you may even attach the front panel to assure the connectors keep the correct distance. Like the sockets and any multi-pin component it is very difficult to correct errors once all the pins are soldered down. Thus solder only one of the big tabs first. Check for proper alignment, i.e. make sure though that it the connectors sits flat and straight on the board (see pictures). If necessary re-heat the solder joint and readjust the connector, then check again. Only when everything is correct solder all the other pins. The big pins will need a lot of solder to fully fill up the mounting holes – don’t be shy, because that will be the only thing holding the board in place when it is sitting in the enclosure!

Step 24: Indicator LED

Take the LED (light emitting diode) and bend its legs by 90 degrees as shown in the picture. Fit it into the board.

Make sure the long leg of the LED goes into the side where the silkscreen indicates (“long pin”).

Do not solder the LED yet – we need to install the front panel first!

Step 25: Front Panel

Now put on the front panel – the LED must go through the center hole. For the BNC connectors add the washers (if included), the frontpanel, and finally the nuts. Tighten the nuts with a wrench. Be careful not to over-tighten them, damaging the connectors threads!

The front panel now holds the LED securely in place. Turn the board over and solder the LED’s legs onto the board. Cut the wire ends. Press the LED back so it does not stick out too far at the front.

Step 26: ICs, Back Panel, Enclosure

Now it’s time to install the ICs (integrated circuits). Make sure to put the chips on in the correct orientation. Each chip has a notch on one end – this notch must go on top of the notch in the silkscreen outline (and the notch in the socket if you installed those correctly!). Verify that none of the pins is bent and they all make good contact in the socket.

Put the back panel on and place the board into the enclosure bottom. Snap on the top. The end panels should fit snug into the grooves on either end which holds them firmly in place. Do not screw the box shut yet – we still need to perform offset adjustment.

Congratulations – your oscilloscope is fully assembled!

Step 27: Software Installation

If you haven’t already done so, go to the DPScope website ( and download the DPScope SE software (make sure you get the software for the DPScope SE, not for the “classic” DPScope!):

Go to
On the navigation bar on the left of the webpage, choose “DPScope SE”.
Click on “Download” on the top navigation bar
Look for the PC software link and click on it

On the same page you can also find the User Manual.

To attach the scope to your PC you will also need a standard size USB cable as this is not included in the kit. The cable needs a USB-A connector on one end, USB-B on the other. These are the “garden-variety” (“normal sized”) USB connectors, i.e. not the miniature ones – one is the “flat/rectangular” type and the other the “squarish” one – see picture below.

No special USB driver is needed. The instrument runs as a HID (human interface device) class peripheral, and Windows 2000 and higher include generic HID drivers right out of the box.

Install the DPScope SE software: Simply unpack the installation files, click on Setup.exe, and follow the instructions. The installation program will create an entry in the Start menu.

Step 28: Startup

Attach the DPScope SE to a free USB port on your computer.

The oscilloscope’s frontpanel LED should blink a few times and then stay on. The blinking should last for about one second total. If that’s the case then your oscilloscope has just passed the first functional test! (The LED will only come on if the microcontroller actually starts successfully. If the blinking speed is much slower this would indicate a problem with the 12 MHz resonator or its connection to the microcontroller).

Wait for a minute or two to give the computer time to recognize the new instrument (you should get a status message when that happens).

Note 1: The oscilloscope gets its power from the USB bus (it needs only about 70mA). The actual USB supply voltage can vary between ~4.3V and ~5V. You can measure the USB supply voltage directly by selecting Utilities � Check USB Supply in the DPScope SE software.

Typically the supply voltage is on the lower end when other devices draw a lot of current from the bus. Also many laptops tend to have pretty noisy supplies, which will show up as noise on the scope signals. Thus it can be preferable to attach the DPScope SE to a self-powered USB hub instead in order to have a cleaner supply voltage closer to 5V.

Note 2: The DPScope SE software needs a screen resolution of at least 800 x 600 pixels. Also note that increasing the Windows font size (through the Display control in the Setup panel) can mess up the screen layout because some labels etc. will no longer fit into their allotted space.

Step 29: Sodtware Start

Launch the DPScope SE software. It should look like the picture below. This means the scope communicates successfully with the PC! (If you get a message saying that no instrument has been detected, unplug the USB cable, wait a few seconds and plug it in again. Normally this should not happen though.)

Press the “Run” button – the button label changes to “Stop” and the two scope traces should come alive. Sometimes – when there is very little noise on the signals – it can be hard to see whether the traces get updated or not. Choose some higher average setting and see if the number of acquisiton counts up all the way to this setting.

Step 30: Offset Adjustment - Part 1

Make sure the settings are the same as on the page before, and press Run if necessary:

- Horizontal: 0.5 ms/div
- Vertical: 2V/div for both CH1 and CH2
- Trigger: Auto
- Acquisition: continuous, No Avg.
- Display: CH1 and CH2 on, Lines, FFT off

In the “Acquisition” menu change the averaging to “Avg 10” if you want to.

In the “Position/Levels” frame move the sliders “CH1” and “CH2” to the middle (simply click on the read and the blue “x” buttons).

The ground level indicators (blue and red arrow on the left in the waveform display) will be in the middle as well.

Press “Run” to start acquiring waveforms.

Connect grabber probes and short them, i.e. connect red grabber and black grabber together.

With a small screwdriver you can now adjust the offsets of the two channels:

Adjusting the two trimmers (R12 and R13) will move the respective trace (red = CH1 and blue = CH2) up and down.

Adjust the trimmers so the red trace is exactly at the height of the red arrow on the left, and the blue trace is exactly at the height of the blue arrow. (The red arrow may hide behind the blue one.)

Step 31: Offset Adjustment (Part 2)

First we perform coarse offset adjustment in the 2V/div range:

Step 32: Offset Adjustment (Part 3)

Next we perform the fine offset adjustment:

Change the voltage scale on both channels to 50 mV/div.
Change averaging to 10 to reduce visible noise (makes adjustment easier).

Step 33: All Done!

Congratulations, you have successfully assembled, set up and tested your new oscilloscope!

Now put the bottom cover on the instrument and screw it shut with the four Philips screws.

If you still have questions:



User Forum:

Step 34: Software & User Interface

Below you see the scope software running on the PC. It offers all the functionality typical of a real scope. You can switch between scope mode, datalogger mode and logic analyzer mode:

Scope mode shows the analog signals applied to CH1 and CH2. You can trigger on CH1, on an additional external trigger input, or perform free-running acquisition.

Datalogger mode is useful for slowly changing signal. Here you can acquire the digital signal inputs (from the logic analyzer port) in addition to the analog (CH1 and CH2) signals. You can log the data directly to the harddrive.

In logic analyzer mode the instrument can only distinguish between digital levels (high and low), but on up to 4 channels and up to much higher real-time sample rate.

Step 35:

The DPScope SE can perform a number of automated measurements on the signals, like amplitude, frequency, and so on. It can also display the frequency spectrum (FFT, Fourier Transform) of the signal - very handy to discover periodic noise e.g. from a power line.

There is also a DMM mode where you can display a measurement of your choice in a separate, large, easy-to-read panel - great e.g. when trimming the frequency of an oscillator.

Step 36: Contact

I hope you liked this Instructable. I always like to hear from people - questions, suggestions, constructive criticism, whatever. To contact me, use



User Forum:

On the webpage you can also get the DPScope SE as a complete selff-assembly kit.


avrpic made it!(author)2017-03-28

Hi very interesting kit. But is X-Y input mode available? If not will you add it in next software update?

womai made it!(author)2017-03-28

No X-Y mode in the current version of software, and not likely that I will add this feature in the near future.

Nighter3D made it!(author)2016-07-31

Looks well designed, Good reasoning, proper care on the oscilloscope input to be compatible with scopes.

But that doesn't change that this is more of a Assembly instruction manual of a kit then a instructable. without the source code and a "how to program" it is pretty much useless to the people that come to this site to be able to build their own. You can showcase you kit, but people would need to able to build their own without having to buy it.

joseph+winson+ made it!(author)2016-02-23

Does the Microchip PIC18F14K50 have to be programmed............?

It seems you haven't talked anything about it...............

Please do reply immediately..............

gaurang02 made it!(author)2015-10-30

Hi Friend

A very well written instructable.
I have one question regarding the compensated circuit in the input stage. Should'nt the capacitive divider (cap. C11) be also connected to the reference terminal of 2.5V instead of ground just like the resistive divider ?

Only then it will correctly finction as a frequency compensated voltage divider.

Please comment

Blank44 made it!(author)2015-10-04

good day sir, im trying to make an oscilloscope for my final project in electronics, you gave your schematic but the code for the pic18F14k50 was not their how can i make it running then? i am hoping for the codes is their any way to get it?

cmunozcortes made it!(author)2015-07-28

I am trying to write firmware for my own PIC18 - USB oscilloscope and I was wondering if you had knowledge of any good resources that might help me get started? I have never written firmware/drivers before. My idea is to do something similar to what you have done here, meaning eventually writing a Windows app that controls the operation of the device. Also, if your firmware is available somewhere, if would appreciate if you could point me to it.

Thank you!

cmunozcortes made it!(author)2015-07-28

I would*

abhishek7xavier made it!(author)2015-05-08

can i get the source code for this windows application??

womai made it!(author)2015-05-08

You can download the application from my webpage (; the source code is not included though.

alexei.dolganov.50 made it!(author)2014-11-08

I've just assembled one! Took me roughly one hour of work, and after installing the software, plugging it and calibrating as described in the doc, the damn thing just started working no questions asked :)

Cool little piece of hardware that WORKS as advertised.

dsol%C3%ADs+pi%C3%B1an made it!(author)2014-08-17

what is the supply voltage for the op amps?

womai made it!(author)2014-08-17

Vcc=5V like for the rest of the circuitry. The op-amps are rail-to-rail input as well as output (meaning they accept input voltages from 0 to Vcc) and their output can swing to within a few mV of 0V and Vcc. This makes them very simple to use.

DVSRIDHAR made it!(author)2013-12-17

Dear sir,
Can you say in which way you will post the self assembling kit, that is buy courier or by post.........

womai made it!(author)2013-12-17

Regular international mail (Deutsche Post / DHL).

DVSRIDHAR made it!(author)2013-07-04

i'm doing my BE final in TAMILNADU,INDIA i need DPSCOPE SE self assembling kit, in how many days can I receive your kit..........
please reply me sir........

womai made it!(author)2013-07-04

Postal delivery times vary quite a bit, but in my experience the package typically takes between 2 and 5 weeks to arrive in India.

DVSRIDHAR made it!(author)2013-12-17

Thank you for your kind reply sir.........,

DCengineer made it!(author)2013-10-29

Is there a way to make either DPScope or DPScope SE work on Mac or Linux machines? What is different when using the SE in logic analyzer mode? Can you get all of the same functionality with the DPScope with its faster reading?

womai made it!(author)2013-10-29

WINE seems to be the way to go, although I don't own a Linux machine to try it yourself. There are some users who reported that it works:

The DPScope SE has significantly lower specs regarding bandwidth and sample rate compared to the DPScope. The latter lacks the logic analyzer functionality though. A more detailed discussion of the differences is here:

obsidianjaguar made it!(author)2013-09-27

Hi ,
I am doing my first experiments with electronics and am in the middle of buliding project ... they say to test you are better of with an oscilloscope ... Will this cope have the speed and voltage range required to test my project? Sorry but I ma so new I dont really know how to check this out for myself

womai made it!(author)2013-09-29

I must admit I only did a cursory check of the project, but it being a tesla coil means it works with high voltages. I would NOT recommend a USB based scope to be used with such high voltages as any mistake will risk frying your PC...

agrushetski made it!(author)2013-06-02

Hello! nice work! I want to make it at home! How I programme the PIC ?

womai made it!(author)2013-06-02

The PIC in the kit comes already pre-programmed, so no need to do this yourself:

rcottle2 made it!(author)2013-04-28

very well thought out design which saved me endless hours doing it myself half as well

many thanks Rick

dieferman made it!(author)2012-12-16

Really Nice Project !!!!
Thanks For Sharing !!!!
.... I'll Be Buying Your Kit Soon !!!!

idayham made it!(author)2012-09-22


iman123 made it!(author)2012-07-31

Womai, can you provide more info on the logic analyzer portion of the project. I'd like to know about the triggering aspect in particular. It would be nice to be able to trigger on a particular hex code, for instance. (I2C or SPI)

womai made it!(author)2012-08-01

Triggering is fairly basic. I use the "interrupt on change" feature of the PIC. I.e. you get an interrupt whenever the state of a particular pin changes and then have to check whether the state is now "low" or "high". That way the scope can trigger in either a rising or a falling edge. The advantage is very fast, stable reaction time since the interrupt gets generated by dedicated logic, not in a software polling loop.

I have not implemented triggering on a full pattern. You'd probably want to allow trigger masks that comprise two subsequent samples, and mask them accordingly. E.g. masks X01X and X11X (where X means "don't care") would tell the scope to trigger on "rising edge on channel 2 and logic high on channel 3". Or masks XXXX and 0011 would mean to trigger on the vector "channels 1 and 2 are low, channels 3 and 4 are high". I had been playing with such a scheme, but even with clever logic operations I got nowhere close to 1 MSa/sec, that's why I abandoned the scheme. This is a place where I'd go for an implementation in hardwired logic (e.g. 74xx gates or a CPLD/FPGA) instead.

womai made it!(author)2012-08-01

If you want to trigger on the start bit of an I2C transmission, here is a simple circuit you can use:

The output then acts as the trigger for the scope.

ooger made it!(author)2012-05-06

Is the software to run the scope made with LabVIEW?

womai made it!(author)2012-05-07

No, it's written in Visual Basic (VB) 6 Professional.

frugalguy made it!(author)2012-05-07

Very nice. A couple of typos (I think) in the Input Stage description:

(C11 + C_par) / C19 = R1 / R3 should read (C11 + C_par) / C12 = R1 / R3

R1 is rated to a static load of at least 100V or 200V (depending on specific model), so this gives good headroom compared to the specified input signal range (25V peak). I think that should say D1.

womai made it!(author)2012-05-07

Thanks for pointing out the mistake in the formula.

As for the second one, it is indeed the resistor R1 that is the limiting factor, since it gets 90% of the applied input voltage, while D1 and D2 only see 1/10th, so their voltage rating (also > 100V) is largely irrelevant.

ajoyraman made it!(author)2012-05-07

Excellent Piece of Work & a very clear Instructable , My Compliments !

I am currently using a Sound Card oscilloscope with a custom interface:

The Sound card samples at 49KSa/sec and the PC displays wave-forms up to 4Khz .

I have a fundamental question:

You state that "The maximum achievable sample rate is just above 50 kSa/sec. (For finer resolutions the scope uses equivalent time sampling, up to 2 MSa/sec equivalent sample rate)."

Can you explain how you are able to display 20Khz and 39Khz wave-forms ?

Would Love to hear from you and possibly go in for your  DPScope SE kit

Best  Wishes,

Ajoy Raman

womai made it!(author)2012-05-07

As long as the signal you want to display is repetitive with respect to some trigger (can be the signal itself, i.e. a periodic wave), you can get an "equivalent time" picture put together from several (or many) partial acquisitions. E.g. just taking one sample per trigger, each time with a slightly larger delay after the trigger. I describe this in more detail in the DPScope SE technical description on my webpage ( --> DPScope SE --> Downloads), or read about it in the Tektronix app note "XYZs of Oscilloscopes" on the same page. The increment can be much smaller than the fastest real-time (single-shot) sample rate. For the DPScope SE the smallest such increment is 0.5us, for an equivalent time sample rate of 2 MSa/sec. Thus the ability to show a >20 kHz signal. Without interpolation you need about 8-10x oversampling for useful display, so 2 MSa/sec means ~250 kHz usable analog bandwidth.

ajoyraman made it!(author)2012-05-07

Thank You for the Lucid Reply and the Tek application brief !

Best Wishes,

Ajoy Raman

schmitta made it!(author)2012-05-07

Very nice and very cool. I was floored when I saw it was a kit. May get one just for fun.

gjken made it!(author)2012-05-07

This is a great project. I've been considering the purchase of a PC scope for some time but the prices always seemto high to justify for hobby use. This is a winner so I placed my order for the kit just now!

Treknology made it!(author)2012-05-06

Two challenges that I propose:

Make a quad-scan device with higher bandwidth (100MHz)
Seeing as the whole thing is powered from one USB port, I'm waiting for an entire laptop that can be powered on 5V 0.5A.


womai made it!(author)2012-05-06

What's your budget? :-) 100 MHz / 4 channels is certainly doable from a technical point of view (although it may need a bit more than 500mA), but the cost would exceed the prize of a good off-the-shelf instruments like e.g. a Rigol 1052E which you can find for under $400 nowadays... This is why I concentrate on building scopes for the super-low budget minded, where there is not a whole lot of choice.

Treknology made it!(author)2012-05-06

I was being facetious. When I look through the other "Oscilloscope" 'ibles, yours is by far one of the easiest, safest, and fairly quickly built as well.

womai made it!(author)2012-05-06

I took it that way but probably came across too serious! And one day I'll build a 10 GHz version with all through-hole part :-)

Azayles made it!(author)2012-05-06

This is brilliant, Wolfgang!
I don't know if you remember, but I bought one of the previous versions from you just over two years ago now, and it continues to serve me VERY well!
It's up there with my multimeter and my component analyser as one of THE most used tools on my work bench.
I wonder how small you could make this with SMT parts? Now THERE'S a challenge :D Matchbox DSO anybody? :P

womai made it!(author)2012-05-06

Sure, SMD components would allow for a VERY compact design (go for 0201 components if you want :-) But I guess many hobbyists would be scared away by that... this is why I deliberately kept everything large-pitch through-hole.

You could place components on both sides of the board to make it even smaller. The limiting factor would likely be the BNC and USB connectors.

Azayles made it!(author)2012-05-06

Indeed, it would be crazy difficult with SMTs, tried that myself before! These people who use skillets and hotplates for reflow work make it look so easy :( (I'm pointing at you, Ladyada! :P)
I was just looking at the support forums, too. There's some intriguing threads there, like isolating the scope from the computer using opto isolators. may have to try that one.

wa7jos made it!(author)2012-05-06

Don't let SMD parts scare you away. It's the way the world is going, and many parts are only available in those packages, so if the DIY'er wants to stay in business, we need to learn to adapt.
I taught a class to our ham radio club last year demonstrating that it isn't that hard to work with SMD. You don't need all that reflow apparatus unless you are doing production quantities. I used to design VERY large and complex PCB's and my prototypes were built by hand using nothing more than a soldering iron.
Here are the essential items to do SMD by hand:
A good temperature controlled soldering station with a TINY tip. I prefer the Metcal, but they're pricey, unless you can find a used one, which I did for $80.
Some form of magnification. You can get by with a head mounted visor, or work your way up to a bench mounted stereo microscope.
small tools including a couple of different shapes of tweezers for parts placement.
VERY small solder. If you look, you can find small quantities on eBay and elsewhere. You need something smaller than 0.015".
Solder wick - for fixing the boo-boos. Sometimes it is easier to lay down too much solder and then take some back. Solder wick and good visibility allow you to do that.
And the final item that is ESSENTIAL is a flux pen. Apply flux liberally to the pads immediately before placing the part with tweezers. The flux is a bit sticky and keeps the parts from sliding away, but it is amazing what a difference it makes to solder flow. You can tin the soldering iron tip and touch it to the component lead and pad, and it flows instantly.
I've used parts down to 0201, but for home hobby use, I mostly use 0603. Small enough to keep things compact, but large enough to see what I'm doing!
These techniques will allow you to hand solder ANY SMD device except BGA's.

Azayles made it!(author)2012-05-06

One day I'll pick up the SMT reigns and have another go. One day :P
The last time I tried I completely ruined an FTDI chip before I learned of the solder wick trick. That bit looks SO easy. Also drag soldering!
Once I sort my workspace out and maybe upgrade some of my tools, perhaps I'll have another go. Maybe start with some SMT kits from Sparkfun or something.

It's definitely something I want to get into :) particularly as you mention the industry is heading that way anyway, and all the nicest flavoured chips, like that pesky FTDI part, are only available in SMT.

womai made it!(author)2012-05-06

Yeah, I'm resonably skilled with SMD myself so I know it is doable (although reworking multi-pin ICs does need a hot-air soldering station and a selection of different size adapters), but from experience I can tell you almost any beginner or intermediate electronics hobbyist shies away from it. Just look at the list of equipment you mention yourself and imagine pushing this to someone who is loath to spend more than $20 on components...

Azayles made it!(author)2012-05-06

Indeed, very true! The cost of different tools can mount up, particularly if you already have things like a solder iron, but it's not temperature controlled. Luckily I have things like solder wick and a flux pen. I'd love to get a hot air gun, but haven't been able to find an affordable one.
Oh and to the hobbyists who can work with BGA and QFN chips, my hat goes off to you all!

About This Instructable




More by womai:Electronic Heart (Flashing LEDs) - Mother's Day ProjectDPScope SE - the simplest real oscilloscope/logic analyzer on the planetDPScope - Build Your Own USB/PC-Based Oscilloscope
Add instructable to: