Jonathan Weaver
  • Home
  • Projects
    • PPMScope
    • Function Generator
    • LC Meter
    • Solder Fume Extractor
    • PIC ASM Library
    • Octave Library
    • High Altitude Balloon
  • Resources
    • Electronics
    • Software
    • Books
    • Links
  • Blog
  • Contact
  • About

Sharing projects, resources, and lessons learned

Curiosity makes us more receptive to learning. Questions fuel invention and creativity.
The journey of learning and creating  is joyful.

PPMScope - DIY Oscilloscope for Windows (Download)

PPMScope is a do-it-yourself oscilloscope design with a maximum sample rate of 1 MHz (bandwidth of 500 kHz). The hardware is based on the PIC16F877A Microcontroller. I am creating this tool for my general use at home, but I thought others may benefit from the software and schematics. The human interface to the oscilloscope is both a part of the box (knobs, switches, etc) and through a PC program written in C for Windows.

The scope interfaces with the PC and communicates with the Windows software to display the captured waveform in the both the time and frequency domains. The design combines a high frequency analog stage with AC/DC coupling and three gains, a MAX118 digital to analog converter, a trigger circuit, a PIC16F877A microcontroller, and some PC interfacing hardware.

Screenshots of the program and pictures of the oscilloscope are below.

Specifications and Goal Feature List

Current Version (v.2.19)

Goal Version

Sample Rate

Variable, single shot 1 MHz max, interlaced 417 kHz max, time equivalent 5 MHz max

Variable, single shot 1 MHz max, interlaced 500 kHz max, time equivalent 5 MHz max

Bandwidth

5 MHz analog bandwidth. 500 kHz practical bandwidth.

500 kHz

Number of Channels

Two

Two

Sample Depth

256 bytes per channel, 128 bytes per channel when interlaced

256 bytes per channel, 128 bytes per channel when interlaced

Sample Modes

Single shot, interlaced channel, and time equivalent

Single shot, interlaced channel, and time equivalent

Calibration

Voltage offset

Voltage per division and voltage offset calibration

Configuration Settings

Configuration of default and saving of settings for future use

Configuration of default and saving of settings for future use

Hardware Connection

Any parallel, serial, or USB port (using Serial over USB)

Any parallel, serial, or USB port

Coupling

AC and DC, reflected on PC

AC and DC, reflected on PC

Channel gain

Gain of 1, 2, and 5, reflected on PC

Gain of 1, 2, and 5, reflected on PC

Trigger

Variable level, slope, and timing

Variable level, slope, and timing

Frequency Spectrum

Yes

Yes with user selected sampling windows

Waveform Reconstruction

Spline, triangle, square, point, and sinc

Triangle, square, point, and sinc

XY view

Yes

Yes

Channel offset and volt per division settings

Yes

Yes

Cursors

Yes

Yes

Math functions

Addition, subtraction, auto period, auto peak-to-peak, etc.

Addition, subtraction, auto period, auto peak-to-peak, etc.

Waveform export

Comma delimited

Bitmap and comma delimited

Waveform logging

Comma delimited logfile containing waveform and measurement information

Comma delimited logfile containing waveform and measurement information

Files for Download

PPMScope for Windows version 2.19

A DIY (do it yourself) oscilloscope with a maximum sample rate of 1 MHz and an equivalent maximum sample rate of 5 MHz.

 

Filename

Description

Size/Date

 

PPMScopeWin.zip v.2.19

Includes a description, source code, executable files, hex files, schematics, and PCB layout. Earlier versions can be downloaded directly from SourceForge.

5.75 MB - 4/17/2014

 

PPMScopeDatasheets.zip

The component datasheets for the PPMScope.

4.33 MB - 8/20/2012

 

DaveDeBoer_Perfboard.zip

A perfboard layout with an integrated power supply on a 4"x6" board designed and contributed by Dave de Boer.

2.97 MB - 1/10/2012

 

DWaddell_PCB.zip

A three board thru hole PCB layout designed in the free version of Eagle and contributed by Dennis Waddell. The boards stack and allow installation in a small 4 3/4 x 3 1/4 x 4 1/4 box. The design utilizes a FT232 breakout board available on Sparkfun.

713 kB - 2/11/2013

 

JanHuyser_PCB.zip

A PCB layout contributed by Jan Huyser in PDF format.

400 kB - 6/4/2016

 

DSOScope

 

DSOScope is a surface mount implementation that features the USB interface. Some improvements of this implementation of the PPMScope are:

  • Two board, doublesided (with board jumpers wires), SMT construction, and no panel wiring
  • Design includes mechanical layout using a widely available project box with a small form factor
  • USB powered with the option to power from a wall mounted transformer
  • Divide by 10 attenuator added to analog section increasing the operating range to +/-90V
  • Addition of GND position to coupling switch (AC-DC-GND)
  • Adds trigger source selection switch

Designed and contributed by Paul Messer.

 
 

SampleScope

 

If you're interested in the PPMScope, check out the SampleScope as well. It's a Crossplatform (Windows, Linux, and Mac) PC Digital Storage Oscilloscope that uses a USB interface. It is based on the PPMScope and developed by Rudolf Muehlbauer. The project is in early stages, but it's worth a look!

 
 

Online Help File  

 

Read the online help file for introduction, construction, and operation instructions.

 

Future Revisions

Here are my plans for future revisions of the hardware and software including:

  • Upgrade the microcontroller to increase the samples per channel, expand sample rates, and add USB support
  • Hardware calibration (voltage per division)
  • Extended math functions and math function graphing
  • User selectable windowing functions (Rectangular [default - included in software now], Hanns, Hamming, Gauss, Blackman, etc)
  • User interface enhancements, color choices, etc (fun stuff)
  • Multi-language support

Support

I'd be glad to help with the installation of this software, the construction of the oscilloscope hardware, the understanding of the source code, the addition of functionality to the software, or the accepting of bug reports and the repairing of bugs. If you just need someone to e-mail every now and then, I don't mind making friends. I am not nearly as enthusiastic about doing your homework or helping on some unrelated project unless I find it interesting. That said, you can ask, but I don't give any promises about my expertise in anything except matters directly relating to the software and hardware schematics delivered here.

Contributions

If you're interested in supporting the development of PPMScope, please consider contributing to the project by donating your time producing a PCB layout, improving the schematic, adding to the firmware or software code, or developing documentation. You can contact me here.

    E-mail List

    If you would like to be notified when I update the project, please join the mailing list.
Submit

Release Notes

Release Notes for version 2.19 build 4/17/2014

  • Modified side panel code to handle different text size selections (font screen DPI settings) correctly.
  • Made the hardware test automatically disable triggering and use the highest possible sample rate during the test to ensure a successful test for a correctly connected oscilloscope.
  • Changed the spectrum display voltage scaling to handle the display more intelligently for all volt per div modes.
  • Correction to the version 1.21 PCB layout (it was missing the AC/DC connection point).
  • Updated the wiring diagram for connecting the PCB to components not mounted on the PCB.

Release Notes for version 2.18 build 1/28/2014


  • Increased the performance of SINC reconstruction code to be as efficient as other methods of reconstruction.
  • Added COM10 through COM19 to the serial port dropdown list (for people using multiple COM Ports or Serial to USB converters)
  • Trigger indicators on the oscilloscope screen are no longer Channel 1, Channel 2, but follow the designation in the panel for Channel A and Channel B when possible.
  • Corrected a bug in oscdisp.c which caused the program to not work when compiled with the latest version of Code::Blocks (version 13.12) or Dev-Cpp (version 5.5.3)
  • Cleaned up source code to minimize compile warnings in Code::Blocks environment
  • Updated Help Documentation to include USB connections and usage with Fedora Linux

Release Notes for version 2.17 build 7/2/2013


  • Added support for features in Paul Messer's DSOScope Rev 3 implementation. These include:
    • Pretrigger in XY sampling mode (chop sampling) available at around 500 uS per division
    • An interrupt driven sampling mode also available at around 500 uS per division capable of drawing the channel as it is captured
    • Extended the range of the low end sample rates available by a couple of orders of magnitude
    • Integration of attenuation and trigger source switch statuses into the software panel
    My thanks to Paul for his addition of features, interest in the PPMScope project, and encouragement in development.
  • Improvements to the protection circuitry on the analog front-end improve protection and the analog bandwidth. In October, a user pointed out that the oscilloscope was bandwidth limited. The bandwidth limit was around 1 MHz. However, you could see the bandwidth limitation readily with a lower frequency square wave when the square wave is sampled at 5 MHz time equivalent sampling mode. The changes are simple and can be implemented without re-etching boards, but by changing out four components. The changes raised the analog bandwidth of the scope to 5 MHz or higher.
  • Fixed a scaling bug to the spectrum window introduced in the 2.16 release
  • Changed the trigger indication
  • Serial and USB communications improvements. The 2.16 release resulted in slower waveform refresh rates because of a bug that caused every waveform update to utilize a timeout. In short, the timeout was killing the refresh rate. Now the timeout is avoided.
  • Window mouseover and cursor measurements now indicate the time in reference to the trigger instead of the left hand of the display.
  • Corrected a bug in the Hardware Testing.
  • Corrected a bug that could misreport the first sample in XY mode at higher sample rates.
  • Changed the functionality of the coarse time per division and volts per division adjustments to jump according to a traditional 1, 2, 5 sequence.
  • Additional cubic spline reconstruction method. This method provides a smoother reconstruction than the straight line reconstruction while introducing less oscillation in the reconstruction than the sinc reconstruction method.
  • Addition of a high resolution mode. In many cases, this effectively adds around 1.5 bits of resolution to the scope. While the scope uses an 8 bit ADC, the high resolution mode uses averaging to achieve nearly a 10 bit resolution.
  • Added documentation on parallel, serial, and USB setups to the help file.

Release Notes for version 2.16 build 10/1/2012


  • Corrected more software and firmware bugs in the serial port interface. The particular nasty bug caused the scope hardware to freeze temporarily while sampling or triggering at low rates.
  • Added a USB to Serial port daughterboard adaptor for connection of the oscilloscope via a USB port. The board is built around the FT232 USB interface IC.
  • Incorporated Firmware modifications for use with the PIC16F887 contributed by Paul Messer.
  • Timebase code changes to allow for continuous changes in time per division. The time per division is always calibrated in the display and you can use any time per division you like.
  • Other corrections to glitches in the oscilloscope and frequency displays.

Release Notes for version 2.15 build 6/20/2012


  • Upgraded version of inpout32.dll for parallel port compatibility in Windows 7 and 64 bit versions of Windows XP and Windows Vista. See the readme.txt file for instructions to install the new parallel port drivers on Windows 7 and Windows Vista.
  • Corrected software and firmware bugs in serial port interface.
  • Changed functionality of continuous and single shot buttons to allow infinite persistence in single shot mode (previous versions only allowed infinite persistence in continuous sample mode.
  • Removed the limitation to a single running instance. This allows multiple instances of the program to connect to multiple PPMScopes connected to different ports on the same PC. The limitation is still an option in the source code.
  • Added some accelerator keys and side panel acceptance of the "enter" key for changing Time/Div, Volts/Div, Voltage Offset, and Trigger Delay.

Release Notes for version 2.141 build 3/30/2012


  • Correction of bug. The program would sometimes freeze when turning the trigger off.
  • Fine tuning of waveform and measurement logging.
  • Feedback of modes on the toolbar using depressed buttons.
  • Upgrade of software license to GPL v3.
  • Ground plane added to PCB layout.
  • Parts list added for version 1.2 of the hardware.

Release Notes for version 2.14 build 12/12/2011


  • Addition of user configurable parallel port.
  • Addition of serial port interface.
  • Addition of hardware testing dialog.
  • Change to the firmware and software to correct yet another triggering bug. On single capture trigger events, the scope had to be triggered twice to capture one waveform. Now every event is captured.
  • Addition of user defined refresh rate.
  • Implementation of all configuration file options.
  • Addition of waveform and measurement logging. This adds data recorder capability to the oscilloscope program which could be helpful for capturing behavior like battery discharge curves or filter bode plots.
  • PCB layout drawn in FreePCB and exported as Gerbers and PDF files.
  • Modifications to hardware for future USB interface (now hardware version 1.2). Prior versions of the hardware are still supported in software and firmware updates.

Release Notes for version 2.131 build 2/1/2011


  • Change to the firmware to correct yet another triggering bug. Thanks to Ger Van Den Hoek for his help in discovering and troubleshooting the bug.

Release Notes for version 2.13 build 11/18/2009


  • Change to the firmware to correct a triggering bug. At slower trigger intervals, the software would attempt communication during a trigger event. The trigger event would cause the communication to be interrupted. Periodically, the interruption of communication would leave the communication lines in an invalid state and the oscilloscope would quit responding to further communications. This bug has been corrected in the firmware.
  • Added auto measurements (auto peak to peak, rise time, fall time, period, frequency, signal rms, signal average, duty cycle, etc.).

Release Notes for version 2.12 build 4/1/2009


  • Added Repetitive sampling, "time equivalent" modes for sampling waveforms up to a 5 MHz sample rate
  • Expanded interlaced sampling mode to 417 kHz maximum sample rate
  • Changed trigger functionality so that when the trigger is turned off, the scope reconfigures without a trigger event (before the scope would not update until a trigger occurred. This caused some confusion, because the user turned the trigger off and had to toggle the power on the oscilloscope or force a trigger event to see the screen update.
  • Shortened minimum trigger delay to 2.6 us, improved trigger delay resolution, and extended maximum trigger delay
  • Changed the panel incremental buttons to spinner buttons. This change adds keyboard arrow and mouse scroll wheel functionality to selecting the Time-per-Div, Volts-per-Div for each channel, Voltage Offset for each channel, and the Trigger Delay
  • Program Menu enhancements, the addition of radio buttons and check boxes to indicate oscilloscope settings
  • Other interface enhancements such as larger buttons for toolbar, changing of mouse cursors with "see thru hole" for better measurement on the scope screen
  • Correction of bug that was causing the Time-per-Div reported by the scope panel to be slightly in error
  • Correction of bug that was causing incorrect behavior when sampling at less than 9,000 Hz. The oscilloscope software was always assuming that data was recieved whenever requested. However, at the lower sampling rates, data wasn't aways ready to be reported to the PC
  • Correction of bug that was causing the voltages to be scaled incorrectly by 23 percent
  • Clarification on note for R24 on the Schematic
  • Additional topics added to the help system
  • Additional wiring diagram added to the PCB directory showing how components are connected to the PCB that are mounted on the front or back panels of the oscilloscope enclosure
Picture
Picture
Picture
Picture
Picture
Picture

PPMScope

  • PPMScope
  • Download
  • DSOScope Project
  • Sample Scope Project​
  • Online Help

Projects

  • PPMScope - DIY Oscilloscope
  • Function Generator
  • LC Meter
  • PIC ASM Library
  • Octave Library

    E-mail Updates

Submit
Picture
Content on this site is licensed under a Creative Commons Attribution 4.0 License.
I hope the information here is useful to those that find it.


Page last update 2016 Nov 15.
Powered by Create your own unique website with customizable templates.