Instructables

DPScope - Build Your Own USB/PC-Based Oscilloscope

Featured
Picture of DPScope - Build Your Own USB/PC-Based Oscilloscope
IMG_7279.jpg
dpscope_vs_mouse.jpg
dpscope_vs_lcs1m.jpg
dpscope_gui_02a.png
schematic_v1_1_complete.png

Step 1: Instrument Specifications

Below you see the specifications of the instruments. If you are familiar with oscilloscopes you will see that the DPScope has pretty much all the features you'd expect from a decent lower-end instrument.

If you aren't a number freak, feel free to skip this page as fast as you can :-)

On the next page I'll discuss a few of the key specifications.


Input:
      
Number of channels: 2
Analog bandwidth: > 1.3 MHz
Input impedance: 1 MOhm || 15 pF
Probe connection: BNC
Usable probe types: Standard 1:1, 1:10, 1:20 probes

Vertical (voltage) scale:

Vertical sensitivity (20 divisions):
- 5 mV/div to 1 V/div (1:1 probe)
- 50 mV/div to 10 V/div (1:10 probe)
- 100 mV/div to 20 V/div (1:20 probe)

Vertical offset: 0 - 20 divisions

Maximum voltage range   
-12V ... 20V (1:1 probe)
-120V ... +200V (1:10 probe)
-240V ... +400V (1:20 probe)

Probe compensation: yes (2 kHz calibration output)

Offset adjustment: yes

Horizontal (time) scale:
      
Max. sample rate (single shot): 1 MSample/sec
Max. sample rate (repetitive signals): 20 MSamples/sec

Timebase settings (scope mode): 0.5 usec/div ... 1 sec/div
Timebase settings (datalogger/roll mode): 0.5 sec/div ... 1 hr/div

Trigger:

Trigger source: CH1, CH2, auto (free run)
Trigger polarity: rising edge, falling edge
Trigger noise reject: yes (selectable)
Pre-trigger capability (i.e. can show what happened
before the trigger event): 0 - 20 divisions
Post-trigger delay (delayed scan, to look at the
signal long after the trigger event but with high
resolution): 0 - 200 divisions

Acquisition:

Record length (normal mode): 200 points/channel
Record length (FFT mode): 400 points/channel
Max. screen refresh rate: up to 40+ frames/sec
Datalogger mode (roll mode): yes (data can be logged to file in real time)

Display:

Real-time FFT: yes
FFT filters: Rectangular, Hanning, Hamming, Blackman
Averaging: yes (2 / 5 / 10 / 20 / 50 / 100)
X-Y mode: yes
Display styles (can be combined): Points, Vectors (Lines), Infinite Persistence

Time and level measurements: yes (using cursors)

Save & Restore:

Waveform export (e.g. to Excel):yes (CSV format)

Save/restore of scope setups: yes

PC Software:
      
PC connection: USB, 500 kbaud
PC software: Windows 2000, XP (SP3), Vista, 7
Minimum screen size: 800 x 600 pixel

Mechanical construction:

Power supply: through USB (5V / 250mA)
(external supply 7.5 - 9V / 300mA optional)

Approx. size (in enclosure): 4.5" x 2.6" x 1.2" (114 mm x 66 mm x 31 mm)
       
Component count: ~50
Solder connections to make: ~200
Required skill level for assembly: moderate; only through-hole components and DIP
packages (no surface mount or fine pitch parts)
Printed circuit board: Professional printed circuit board with corrosion-resistant, gold-plated pads and contacts (not cheap solder finish), with silkscreen
to denote component locations.

Enclosure: Sturdy ABS plastic enclosure with custom glass-fiber front- and back-panel, silkscreen. All
holes pre-drilled - no drilling required.

Microcontroller and USB interface: Fully pre-programmed; no programming required


 
Remove these adsRemove these ads by Signing Up
1-40 of 104Next »
(removed by author or community request)

http://www.kakasoft.com/usb-security/how-to-password-protect-usb-on-windows.html
womai (author) 1 year ago
The analog bandwidth would be just about sufficient. You won't see nice square edges (rather rounded ones) but it will be enough to see what data is sent and how the clock edges align to the data.

The more important question is whether your signals are (or can be made) repetitive. This is because the single-shot sample rate is limited to 1 MSample/sec, i.e. just a single sample per bit period at 1 MHz. This would NOT be sufficient to capture the waveforms. But if they are repetitive you can use the equivalent time (where the waveform is put together from several acquisitions, each slightly delayed in time) which can go to an (equivalent) sample rate of 20 MSa/sec - so 20 samples per bit interval.
Hi,

With 1.3MHz bandwidth limit, can the said device actually capture 1MHz I2C and SPI cos they are square waves with much higher bandwidth. Please do correct me if I am wrong.

Thanks
Hello Friends,
i have mad this project now i need source cod for PIC30F..
please help me for this at (geraldino250@gmail.com) for my own scope
It would be useful to me if the program was available for Linux.
womai (author)  rocketman2212 years ago
Are you volunteering to convert it to Linux? :-)

The original is written in Visual Basic 6, so quite Windows specific - so I'm afraid it would be more a complete re-write rather than a quick conversion. I do get occasional requests for Linux or MacOS versions, but given my limited time for my hobbies I prefer to develop new instruments rather than spend a lot of time to serve a IMHO still niche market... - most people have access to some Windows PC or laptop when needed.

Over the years I had several people wanting/offering to convert some of my software to other platforms, despite my warnings about the time and effort required. Not surprisingly (to me) after initial enthusiasm (along the lines, "... all I'll have to do is...", "...and then I'll quickly...") none of them produced anything in the end, so my enthusiasm in this regard is a bit muted ;-)
can you give me source code of VB6 for this software?
thanks before.
Unfortunately the program is a bit more advanced than what I could write, but maybe someone could write a cross platform (possibly java based) version eventually.
shafiq2eng2 years ago
Hello Friends,
i have mad this project now i need source cod for PIC30F..
please help me for this at (shafiq2eng@hotmail.com)
rashmi19903 years ago
Hi this design is bit complicated for a beginner

if some body want a easy design then check this link
http://microembeded.blogspot.com/2011/07/two-channel-pcbased-oscilloscope-usb.html
womai (author)  rashmi19903 years ago
One other thing I noticed is that the design you refer to lacks any sort of input protection (series resistor, clamp diodes) in front of the first amplifier. So any overvoltage risks to kill the input stage and worst case make it straight back into the computer. (In comparison, the DPScope has a large input resistor in front of a pair of clamp diodes, protecting the scope and the computer for inputs up to ~ +/-200V static input - 10x the official max input range - and much more for short pulses like electrostatic discharges).
womai (author)  rashmi19903 years ago
Interesting project! Altough it seems limited to +/-5V input range.

I am actually working on a much simplified scope myself: about as easy as it can get, it uses just two chips, one PIC (USB capable, but not the 2550) and one op-amp - yet offers USB connectivity (power and data), two channels, variable gain (max. range +/-25V), standard 1 MOhm input impedance, analog bandwidth of ~300 kHz and sample rate up to 2 MSa/sec (for repetitive signals), FFT mode, as well as a 4-channel logic analyzer mode.

The new design (tentatively called DPScope SE) will not replace the existing one (which has much higher bandwidth and sample rate) but complement it. I already have the hardware (with custom printed circuit board, not just breadboarded) up and running, and the PC software is ~70% complete.

Stay tuned!
balaji113 years ago
when will be ur AWG??
atleast send circuit diagram
womai (author)  balaji113 years ago
I had to put the AWG on the back burner for the moment. I have the full schematic but still need to breadboard the full circuit in the real world and develop firmware and PC software. I don't want to publish a circuit that hasn't been thoroughly tested first...

The "no-frills oscilloscope" is well on its way - the prototype is working fine and being tested and the software developed as we speak. Don't expect it to replace the DPScope though.
How do I obtain this kit?
womai (author)  burnerjack013 years ago
Go to the DPScope webpage http://www.dpscope.com --> "Buy It" tab
batman963 years ago
There should be flash storage in the scope so that when you plug it in it installs the program.
I got a question for someone who knows about osciliscopes, I saw one at a flea market, on the outside it looked good, it is about 30 years old, what are the chances of it working or being fixable?
saturnino3 years ago
Most nicely explained project. Could there be another projects ?
Best wiches.

Carlos Ahumada
Santiago de Chile
womai (author)  saturnino3 years ago
Yes, there will be. Right now I am working on a simple AWG (arbitrary waveform generator) and a very simple, no-frills oscilloscope (much less capable than the DPScope but also even lower cost). The AWG should make a nice complement to the DPScope.

Both instruments will use the PC for control and display, just like the DPScope. The challenge here is to reduce component cost to absolute minimum. Microchip has a couple low-end, low-cost (a third of the price of a 18F2550 or 18F4550) USB-capable microcontrollers that will be fun to work with. Right now I'm waiting for the development board for them.

Stay tuned!
hesslerk3 years ago
Hi there,

I am working on a PIC project right now with the PIC18F4550. Would it be possible for you to send me your C++ code for the oscillator, ADC, and SPI communication?
hesslerk@gmail.com

Thanks!
Kurt
womai (author)  hesslerk3 years ago
This scope is based on the 16-bit dsPIC30F2020, which has a very different architecture compared to the 8-bit PIC18F series, so that won't help you much.

For PIC18F series development I use MIkroelektronika's MikroC compiler and development boards. The compiler (2K limited demo download is free) comes with a few examples for the 18F4550 - just use these as a starting point, they should work right out of the box (they did for me). They use an external 8 MHz crystal and run the core at 48 MHz (maximum possible) which is probably what you want to do (USB needs exactly 48 MHz anyway). MikroC has native libraries for ADC and SPI - very easy to use - so there isn't any clever code I could share for that. E.g. adc read is my_var = adc_read(channel)

If you are interested in USB using the 18F4550, go to the MikroE web forum and search for "USB" and author "womai" - I posted a full example (including VB6 source code for the PC side).
jumbocat3 years ago
Wow, Im about 4 mos into building electronic projects, and I have yet to see such amazing detailed instructions for a project! You put a lot of thought into this. I will definitely be pick your self assembly up as soon as my Solder skills are better.
rosenred3 years ago
Although I cannot but marvel at the quality of your work, I could not bring myself to give you a good rating, or even consider buying your kit.

I have been a member of Instructables for quite some time and even before that, I would pop in to check on some project or another and trust me it's not the first time I see someone advertising their work. And believe me I am totally fine with that. As a matter of fact, I believe that if one can profit from a great design and/or personal work, it's not bad at all, as long as there are willing customers.

To be honest, I expected many more reactions in the comments so far, since I've seen people get upset for less obvious advertisement. But in most other cases, as I recall, the 'ibles were enough to complete the project without having to buy something from a specific someone.

In your case, you repeatedly refused to give the firmware and the circuit layout when asked and sometimes you did not even bother to answer.

I know that if I were more skilled in electronics and mc programming, I would work something out on my own, as you pointed out (using a proto-board for example).

Again, I am not giving you fault here, I just expected a little more honesty from your side. You could have stated in the beginning that this is an 'ible to build a very specific kit, as others have done. "Build your own" is a bit misleading don't you think? If I were to follow this 'ible, I would be building *your* USB/PC-Based Oscilloscope, not mine.

I have no intention of being offensive or anything, so I apologize beforehand if my comment upset you, I just thought I should give my two cents.

womai (author)  rosenred3 years ago
No offense taken. Two things I'd like to comment on though:

First, I don't agree with "you did not even bother to answer". If you read through the list of comments, I make an effort to always comprehensively answer whatever question - technical or otherwise - somebody has. A few - not many - of the comments though were not questions at all, for all can tell these individuals only wished to express their opinion but did not really seek any response or comment from my side. They are of course entitled to their opinion, so I let them stand as-is.

Second, I do think there is a lot to learn from this project even if you have no intention of getting the board or kit. The whole hardware design - as well as the high-level software design - is documented and explained in detail - so you get a proven, usable analog frontend - a variable gain amplifier chain with ove a MHz of bandwidth - for free (of better design quality than many low-end commercial scopes have as I can assure you), as well as a good idea how a real digital sampling scope works. In fact I personally know about more than one person who copied all or part of the analog portion for his/her own project. I have seen many other instructables where the total amount of usable information was quite a bit less than this alone.

Finally, I have published a fully open scope design as well - including firmware, board layout and so on, which everybody is free to use if so desired, so overall I do feel I contribute to this community in the way intended:

http://www.instructables.com/id/LCS-1M-A-Full-Featured-Low-Cost-Hobby-Oscillosc/

Regards,

womai
rosenred womai3 years ago
Thank you very much for taking the time to answer. I never said though, you are not contributing to this community, I assure that would be horrible on my part. I do get your point. I might have exaggerated a little and for that I must apologize.

Thank you for the link to your other project. Again (with my little experience in electronics) I cannot but admire the design.

I sincerely hope you were not offended or in any other way annoyed by my comment. I just expressed what was in my head at the time of reading.

womai (author)  rosenred3 years ago
If you like to get a quick and easy start in electronics, have a look at the Picaxe microcontroller (on which my other scope project is based). www.picaxe.co.uk - typical times - for an absolute beginner! - to get up and running and have e.g. an LED blinking is normally measured in minutes, not hours or days (no kidding). That's what go me started with microcontrollers and re-started with electronics a few years back. There is a very beginner friendly support forum for any questions you may have.

And no, I don't get any kickbacks from them ;-)
rosenred womai3 years ago
Thanks! I was considering the Andruino, but I am sure this one would be much simpler for a beginner like me :)

Much appreciated!
womai (author)  rosenred3 years ago
The Arduino is very nice platform with a large community. But IMHO the Picaxe has a much easier learning curve for an absolute beginner. The basic circuitry is the Picaxe, two resistors for the program download connection to the PC (using a serial cable or a USB-to-serial converter cable), and potentially one 0.1uF capacitor between power and ground. Can't beat that in terms of simplicity! It's also very inexpensive - just a few $ will get you there.

The good thing is, once you got you feet wet with the Picaxe (and gained some experience with general electronics while working with it), moving over (or up) to any other platform (Arduino, bare PIC or Atmel or any other microcontroller) will be much easier as all the basic concepts stay the same.
lgeorge1233 years ago
I use visual c# to display my scope screen , your screen is 40+ frames/sec , do you feel your screen flicker ? in my code I use timer to update my ADC data and set timer to 4ms interval , I feel my screen flicker very fast :

private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics(); // pictureBox1 is picture that
display grid
pictureBox1.Refresh();
// function to display adc data;


}
womai (author)  lgeorge1233 years ago
No, my software does not suffer screen flicker. The flicker in your case is most likely due to the fact that you initialize the display (copying the grid) and then draw the traces on a control visible to the user. The drawing takes some time (and the display may update each time you draw a line, making it even slower). A better (flicker-free) method is to draw everything on a hidden control (e.g. a second display hidden behind the "real" display object) and then copy over the complete picture. That's what I use. It's faster, too, because the hidden display does not get updated while drawing.
kalnas4 years ago
What bandwidth I can see with this oscilloscope? from 1.3 MHz to ...?(60MHz)? Thanks for answer
womai (author)  kalnas4 years ago
The analog bandwidth is ~1.3 MHz. The maximum sample rate is 1 MSamples/sec real-time (for single-shot acquisition) and 20 MSa/sec in equivalent time mode (for repetitive signals). The 20 MSamples/sec means you can display signals up to ~2 MHz frequency (at that frequency they will be somewhat attenuated because the analog bandwidth is a bit lower than that, but you can still display them.)
lgeorge1234 years ago
Can you disclose how you do the trigger level function of your scope , as I want to do a project in my college .
womai (author)  lgeorge1234 years ago
For the trigger I use the built-in comparators of the dsPIC. It has an internal DAC (10 bits resolution) to set the compare threshold (note that it only covers 0V to VCC/2, so the scope has a 1:2 voltage divider in front of the comparator inputs). The comparator is set up so it generates an interrupt when the input rises above the threshold (i.e. compare output going from low to high); that calls an interrupt function which then performs the signal capture. You need to put a jump address to this function in the dsPIC's interrupt table at the proper location (see dsPIC data sheet). There is also a bit to invert the compare output so you can easily trigger on rising and falling edges, respectively. The beauty of all this for the scope is that apart from the voltage divider (two 1kOhm resistors) all the trigger circuit hardware resides within the dsPIC. For details about the comparators DACs etc. please refer to the dsPIC30F2020 data sheet - but basically you just write the appropriate value to a specific address in the dsPIC's RAM.
taurus1234 years ago
This is not much of a scope, especially when you are doing digital work. It is slow, the software freezes, the screenshots are not that great. Look around before you buy this. For a few more bucks, you can do better than this.
iEdd4 years ago
 I just built mine, and I'm a bit disappointed. Here's the problems I have so far:

1. The microcontroller gets pretty hot. I think hot enough to burn your finger if you leave it there for more than 10-15 seconds.

2. The waveforms in the software will be active for about 5 seconds, then freeze for about 5 seconds, then active again, etc.

3. After about 1 minute of constant operation, it freezes. The waveforms are frozen, but the software still works (I can move the sliders, etc). So I think it's a hardware/firmware problem and the microcontroller that is freezing. I have to unplug the USB cable and plug it back in to get it going again.

Is any of this normal? I've been looking, but haven't found any shorts or bridges in my soldering. Has anyone else had these problems?
womai (author)  iEdd4 years ago
Hello iEdd,

the microcontroller becoming hot is not a problem, but a feature :-) But seriously, this is normal, the Microchip dsPIC30F series is known for that, it uses relatively large power which produces heat accordingly. I should probably add a note to the assembly instructions so people don't wonder. I measure about 65degC on my DPScopes, which is indeed uncomfortable to touch but will not affect reliability (the chips are spec'd up to 125 degC operating temperature).

The software freezing up is not normal though. I have built dozens of DPScopes so far and had them continuous in operation for days and weeks without this happening, on different computers. Also I have not a single other user report about this happening. As a first step, please try to operate the scope on a different computer and see if the problem persists.
Womai, i bought your dpscope also, and mine does the the same thing with the software, where it will work for a little while, but then after measuring, the waveform freezes, sometimes i cant even see the waveform, i have actually put it into a modded removable hard drive case this way i have a place to put a fan that will hopefully keep it cooler, i dont remember if that fixed it or not, i havent used it in a while, but i have another question, is it possible to not use the +5 power supply from the usb? in other words, is it possible to use a wallwart power supply to supply the power to the board, i saw that there were provisions in your schematics to run on external power, but i couldnt get it to to turn it on with the wall adapter, the i put in the 5v regulator, and the capacitor as well, i just made some rough mods, i painted it, but havent finished the whole thing yet, so if anyone likes i can put pics up when i finish it, it may be a while though
womai (author)  Jeffrey G C4 years ago
Hello Jeffrey, can you tell me what exactly the marking of your dsPIC is? Especially on the second line, does it say -20E or -30E? And the what is the last line (which is the batch code)? I recently encountered a batch of marginal dsPICs that had some issues (they did not freeze but their ADC was working too slowly once it heated up). That said, this only affected about 1% of the dsPICs I have tested. As for the external power supply, yes, all the hooks are there, you only need to add a 7805 regulator and another 100uF capacitor. Please refer to the assembly guide for details. From your description I suspect you simply forgot to move the power supply jumper to the "ext." position. (been there, done that :-) Wolfgang
1-40 of 104Next »