Introduction: Arduino - Oscilloscope (poor Man's Oscilloscope)
Hi guys,
a few days ago i found this code in github and it's the best i found so far, so i've decided to spread this project as much as I can, for anyone who want a cheap oscilloscope around this is the best way! Let's start...
First, download processing. It's free Click here to download. You don't need to install anything, It runs like the Arduino IDE.
Now upload this code into your Arduino
After Run this code in Processing IDE
And then you just need to connect the Arduino analog pin 0 to the signal you want to read.
And It's done!
The Circuit I'll be measuring , it's a simple 555 timer circuit... that flashes a LED, parts list and wiring diagram:
1x Arduino
1x Breadboard
1x LED
1x 10k resistor
1x4.7k resistor
1x 1k resistor
1x 100nF electrolytic capacitor
Jumper cables
check my YouTube video and watch it working. you can also visit my website for more projects and tips.
a few days ago i found this code in github and it's the best i found so far, so i've decided to spread this project as much as I can, for anyone who want a cheap oscilloscope around this is the best way! Let's start...
First, download processing. It's free Click here to download. You don't need to install anything, It runs like the Arduino IDE.
Now upload this code into your Arduino
After Run this code in Processing IDE
And then you just need to connect the Arduino analog pin 0 to the signal you want to read.
And It's done!
The Circuit I'll be measuring , it's a simple 555 timer circuit... that flashes a LED, parts list and wiring diagram:
1x Arduino
1x Breadboard
1x LED
1x 10k resistor
1x4.7k resistor
1x 1k resistor
1x 100nF electrolytic capacitor
Jumper cables
check my YouTube video and watch it working. you can also visit my website for more projects and tips.
58 Comments
4 years ago
Here is a way of using an old analog oscilloscope with a webcam to get
digital storage oscilloscope type functions (well at least, basic DSO
functions): http://www.fadstoobsessions.com/Downloads-Products/Webcam-Oscilloscope.php
YouTube link for demonstration of features. https://youtu.be/Df9Vid53Hg8
8 years ago on Introduction
I don`t know whats happening. In processing appear nothing, just a red line. Even if I put 5V or 0V in power or GND port in Arduino. Do you have any idea to help me?
Reply 4 years ago
Just a quick tip.
If you are using a USB hub, or other devices... you may have some other device using serial port 1.
If this is the case, look in your arduino IDE and check to see what number your device is in the list.
For example, Mine is:
Com Port 1 -> That's port [0] in processing
Com Port 12 - Arduino Mega ----> That's port [1] in processing
So in this list, my arduino is actually in the second spot.
In machine code, 0 is first, and 1 is second.
So you would change this line in processing:
From:
port = new Serial(this, Serial.list()[0], 9600);
To:
port = new Serial(this, Serial.list()[1], 9600);
Hope this helps those getting a red line.
Tip 4 years ago
Just a quick tip.
If you are using a USB hub, or other devices... you may have some other device using serial port 1.
If this is the case, look in your arduino IDE and check to see what number your device is in the list.
For example, Mine is:
Com Port 1 -> That's port [0] in processing
Com Port 12 - Arduino Mega ----> That's port [1] in processing
So in this list, my arduino is actually in the second spot.
In machine code, 0 is first, and 1 is second.
So you would change this line in processing:
From:
port = new Serial(this, Serial.list()[0], 9600);
To:
port = new Serial(this, Serial.list()[1], 9600);
Hope this helps those getting a red line.
5 years ago on Introduction
Hey! Just wondering why my graph changes when I move my Arduino.
I haven't connected anything to the analog input.
Reply 5 years ago
idk if you got a reply yet, but you're simply getting the reading from that pin, it's like that since you don't have any reference, and it's picking up disturbances, if you connect it to something that has common ground with the board, it'll stabilize
10 years ago on Introduction
Hi, I am using your oscilloscope to view a PWM signal generated from a 555 timer. However, I have some doubt regarding the voltage boundary. Red Line means what ? My positive peak is at around 3.6V. And from my observation, I can never see my negative peak. Why ?
Reply 10 years ago on Introduction
This is because the ATMEGA328 cannot read a negative voltage, it would require a different ADC than the one that is built into the ATMEGA328 to be able to read the negative voltage. The lowest voltage that the ATMEGA328 can possibly read is GND. You could even actually use a MAX232 (RS232 to TTL converter) to be able to read higher voltages such as 10V. Personally the way I would do it is I would get an external ADC which can read below 0V (GND), and a MAX232 so that the Arduino would be able use the data (since it is TTL level). You would have a more efficient and possibly better Oscope. I think I might write an instructable on how I would do this so it is easier for you to do.
On another note, depending on the resolution of the ADC converter, you could be able to even read micro-volts, so an adjustable speed for an Oscope would be easier now, and the resolution could be a lot higher.
Reply 7 years ago
Hey did you get around to working on the 10+ V oscilloscope? I would love to see this as it would have a lot of application for automotive use which sometimes utilizes up to 14V.
Reply 7 years ago
Use a voltage divider. It would be a good idea to buffer the input, and polarity protection would be necessary.
Reply 7 years ago
sorry I'm pretty new to this. Where would the voltage divider be placed? On the probe end to split the voltage in half? (This way 14v would read as a fraction of itself). Would this have to be programmed into the arduino to display the voltage it receives X formula = actual voltage?
And what does it mean to buffer the input?
Sorry for all the questions, thanks again
Reply 7 years ago
exactly right.
buffer: http://www.learningaboutelectronics.com/images/Vol...
buffer adds considerable complexity to the circuit, but serves to increase the input impedance. (this means that the arduino circuit will not alter the voltage you are trying to measure).
Reply 7 years ago
ok, great. Thanks a lot!
Reply 10 years ago on Introduction
Since most ADCs do not read negative voltage, there is a better solution: inverting the voltage to be all positive. It would even be able to use the Arduino's built in ADCs, but would require an Op-amp. It would be a small amount of external hardware (as shown in the schematic). I will be making an instructable of an Oscope using cheaper parts than it costs to even buy an arduino, roughly $15 for a dedicated USB Oscope. (will use MSP430)
Reply 10 years ago on Introduction
http://www.ti.com/product/amc7812
This is an ADC and DAC and goes -5V -> +5V
9 years ago on Introduction
I revamped the Processing software this morning. I think I've made it much easier to use. Check it out at:
https://www.instructables.com/id/Arduino-Improved-Poor-Mans-Oscilloscope/
Reply 7 years ago
That one works GREAT!! THank you VERY much.
Arnold
Reply 8 years ago on Introduction
like ealves5 all i get with the orginal is one red line. Yours works. Thank you.
8 years ago on Introduction
Hi All! There is a nice project of an Oscilloscope with Arduino UNO with miuPanel that permits to see and control the oscilloscope with a smart phone. The sample rate is 50 kSa/s, it implements the trigger and can provide more than 20 FPS on a smartphone LCD. See: http://www.miupanel.com/Projects/Arduino-Advanced... You could use miuPanel too to provide the graphical interface to your Arduino project.
8 years ago on Introduction
can you send me an electrical scheme for this project please?and what kind of capacitor you used it?