Use your Arduino and PC as a fast Storage Oscilloscope.
The Arduino can reliably gather voltage readings at a frequency of between 141 and 153 KiloHertz.
1000 data readings can be taken in around 6.8ms .
Transfered to a PC, these points can be accurately plotted against time.
This Instructable will show you how the analogue input can be repeatedly added to a 1000 byte buffer and then transferred to a serial monitor. The data is collected using a high frequency interrupt, whose period can be accurately determined. The frequency can be altered to produce a range of possible periods.
I have written a PC interface to display the data and control the arduino. My PC program is presented as is - it would take a very long instructable to explain it!
The data output from the Arduino is not complex. I am sure others will write interfaces for the operating system of their choosing ....
I have written two slightly different versions for the Arduino data capture. One utilizes software triggering for when an accurate change in voltage is required, before the oscilloscope triggers. The second, uses hardware edge triggering based on an interrupt on Arduino pin 2. The hardware version runs a little faster at the highest frequency.
I did a minor rewrite today (31/8/2014). The PC interface now includes the option to set the voltage reference to accurately reflect the real value of the Arduino "5V" line. There are also small adjustments to the Arduino software.
As of 6/9/2014 I have developed a slightly modified version of the Software Triggered version which runs at up to 227.3 KHz on my Mega, using register commands to directly control single conversion reads. If there is interest, let me know.
The ADC Arduino Mega information is to be found in pages 242-260 of the Amtel atmega328p manual.
As of 29/9/2015 the PC and Arduino software have been updated.
The video is best viewed in High definition (720p), full screen:
Arduino Mega 2560 (Let me know if other arduino types work)
The following component works- alternatives may be viable (with program tweaking- I leave that to you!)
LCD Keypad Shield http://www.hobbytronics.co.uk/arduino-lcd-keypad-...
Simple Buffer box to accept analogue voltages: (Only required if you don't already have voltage buffers)
NE5534P op amp
22pf, 10nf capacitors
Two 100K variable resistors
22K, 4k7, 12K, two 470K resistors, 0.25W ok
10K precision resistor (1%)
Two 1K variable resistors
10uF electrolytic capacitor, 16V or more
Copper Stripboard, Plastic Box, Connectors and soldering equipment
Balanced +-9V supply (At least +-6V is needed to allow the NE5534P to produce 5V at the output)
A PC with a windows operating system. I have tested my interface on XP, Windows 7 and windows 8.
(Or make your own software interface.)