element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Members
    Members
    • Benefits of Membership
    • Achievement Levels
    • Members Area
    • Personal Blogs
    • Feedback and Support
    • What's New on element14
  • Learn
    Learn
    • Learning Center
    • eBooks
    • STEM Academy
    • Webinars, Training and Events
    • More
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • More
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • More
  • Products
    Products
    • Arduino
    • Dev Tools
    • Manufacturers
    • Raspberry Pi
    • RoadTests & Reviews
    • Avnet Boards Community
    • More
  • Store
    Store
    • Visit Your Store
    • Choose Another Store
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
DIY Test Equipment
  • Challenges & Projects
  • Project14
  • DIY Test Equipment
  • More
  • Cancel
DIY Test Equipment
Blog Arduino oscilloscope - DIY entry device
  • Blog
  • Forum
  • Documents
  • Events
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
DIY Test Equipment requires membership for participation - click to join
Blog Post Actions
  • Subscribe by email
  • More
  • Cancel
  • Share
  • Subscribe by email
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: idanre1
  • Date Created: 21 Aug 2017 5:46 PM Date Created
  • Views 1175 views
  • Likes 18 likes
  • Comments 28 comments
  • diytestequipch
  • arduino_projects
  • test and measurement
  • arduino_classic
  • osciloscope
  • arduino
  • diytestinstruch
Related
Recommended

Arduino oscilloscope - DIY entry device

idanre1
idanre1
21 Aug 2017

  • The Software
  • The Hardware
  • The probe - Try 1 (not that good, please review try 2)
  • The probe - Try 2
  • Summary
  • Proof of work

 

The big problem with being a maker newbie, is that you have to have equipment.

When I started, I bought soldering kit and a multimerter - things that don't cost allot and are very needful to start your first steps.

But I believe the most important test equipment one need is oscilloscope, but it also very expensive.

So there is a conflict...

Many times you need to debug a circuits because things can go wrong (we all know that...) and you need a scope to figure out what's the problem.

Consider you still in the noob phase, you don't want to spend hundreds of $$$'s just for buying a simple scope

 

If you could just have a simple cheap one that is good enough for very simple circuits you wouldn't think twice

 

Now, let's define what is a simple circuit.

For me it has two major parameters

1. Low bandwidth

2. Low voltage, let's say 0-5Volt and if you insist 0-15Volt

 

I have searched the internet and found many of them, some are better then others, some are complicated to build than others.

I put my eyes on Girinoscope www.instructables.com/id/Girino-Fast-Arduino-Oscilloscope/

This scope is using aruino uno (I built my with arduino nano) and reaching 150Ksps with 5V voltage swing.

The problems with the tutorial are:

  1. Its explaining allot of the software and a general knowledge on how a scope trigger works, but:
    1. The info not that well explained to a noob that just want to build it.
    2. There isn't even a simple connections diagram.
    3. You need to deep dive the Atmel documentation to really understand what the tutorial explains.
  2. The provided code needs to have patches to work in max BW (Currently 150kbps).
  3. The GUI provided by 3rd party only visualizing the sample but can't save it for future use.
    1. GUI link: https://github.com/Chatanga/Girinoscope

The Software

The instructables describes how to configure arduino's CSR and you get a pretty good feeling what is happening, but only if you have some knowledge in VLSI and logic design (Muxes, Flipflops, PADs, etc...)

I have tweaked the SW a little bit to support higher sampling rates (code improvements to save MIPS)

I also put the GUI in the same github for ease of access, Also with script to run it from arm CPU (RPI, db410c)

https://github.com/idanre1/Girinoscope2_0

  • main path contains the arduino code
  • capture_exe - perl program to acquire samples that can be saved to a disk (not just watching on the screen)
    • excel can be used to manipulate data and show graphs
  • scope
    • contains the GUI
  • db_src
    • source code for test suites in db410c.
    • RPI can be also used with minor changes.

 

The Hardware

All you need is an arduino + some resisters and capacitors.

For simple testing purposes I used 555 timer with output swing from 0-5v, calculated the expected frequency and tried to match expectations with result samples.

 

{gallery} My Gallery Title

Full circuit: Arduino ADC connected to LM358N as input probe. ne555 as the test circuit. ne555 is supplied with 7v rail to rail so the output will be about 5v.

DB410c as tester: I use the 1.8v digital GPIOs on the dragonboard to the arduino ADC. I sometimes using level shifer txs0108e to provide arduino with 5v from DB410c

Girinoscope schematic: From girinoscope intructables it is very hard to tell what to connect where. You need to deep dive the arduino code to understand what to do. This simple schematic can help allot

555 Timer: I use this circuit to see if the calculated frequency of the 555 timer will match what I sample using arduino.

GUI: Acquiring sample from the girinoscope GUI

 

The probe - Try 1 (not that good, please review try 2)

If I want to cross more than 5 volts I actually need to create a probe.

Special thanks to jc2048 and DAB for helping me navigating the world of opamps (there are thousand of them, and you gotta choose )

I have tried a simple simulation with the MCP6024

Basically I made a 1/4 voltage divider for being able to insert arduino more than 5V.

This is the simulation results:

WAY BETTER THAN LM358N! (See photo gallery for old opamp result)

Vin is square wave 20V@15KHz

You can see output is 4.98V (fair enough for basic scope)

Only thing that worries me is rise and fall time on the max acquired BW (15KHz)

 

Questions:

  1. Maybe I need a higher BW op-amp?
    1. Does adding some passive component to the feedback loop will help?
  2. Do I need to add to Vout of the opamp some reverse protection diode to save arduino from human fault?
  3. Why V_rise is slower than V_fall?

 

The probe - Try 2

  • Red circuit is is Differential amplifier
    • Vout=(R3/R1)*(V+-V-)
      • R1=R2 and R3=R4
    • How to reach that formula: http://www.electronics-tutorials.ws/opamp/opamp_5.html
    • C2 is for remove ringing. Real circuit have capacity in the wires, might need to be adjusted.
  • Orange Circuit is voltage offset
    • Since the opamp is 5V we need to offset for half meaning 2.5v
    • By adding 2.5V to to red circuit V+ we get -2.5v:2.5v input only by supplying 5v and GND to the opamp supply.
      • That I understood but could find proper analysis why??? (TODO - find a link to article)
  • Power supply
    • C2,C3 are for noise cancellation of the power supply (power supply decoupling)
  • U2,U3 are only 1:10 multiplier to work on low voltages.
    • http://www.electronics-tutorials.ws/opamp/opamp_3.html
  • C1 - power supply filtering
    • Remove some of the noise coming from the 5V and give a cleaner pseudo ground to work with.
  • R11
    • Isolates any capacitance on the output a little from the op-amp
  • R14
    • Input pit of GND that is connected to GND of the circut
    • Resistor is there to prevent high current from flowing when grounds are uneaven.

 

Probe schematic

Simulation result

I put square wave of 20v out of 25v.

You can see the output is from 0.5v-4.5v.

T_fall is about 4u_sec which is pretty reasonable. less than 1/7 of the square wave low voltage time...

 

Pad schematic from atmel datasheet:

 

 

I think the next step is to order this opamp

This would probably not happen during this competition period (shipping takes a while where I live)

 

Summary

Hope every noob will find this article:

  1. with full details how to built it
  2. Step by step explainable
  3. Have enough analysis details for understanding without inner assumptions not said.

 

I want to have a special thanks to jc2048 for helping me allot trying to build the probe.

 

Proof of work

The following video shows db410c (similar to RPI) generating square wave using one of its GPIOs in 1.8v

Then a level shifter which is design to between-chips communication is used to amplify the signal to 5v www.ti.com/lit/ds/symlink/txs0108e.pdf

The signal is captured by girinoscope and The specified item was not found. for a reference.

I demonstrates trigger modes and sampling of the square wave by both scopes using girinoscope GUI.

You don't have permission to edit metadata of this video.
Edit media
x
Upload Preview

 

The following video shows the probe detailed in this thread with 1:10 attenuation

Currently the opamp is the only one I have got LM358n which is manufactured around 30 years old, I have extracted it from an old circuit I have.

The opamp output is very noizy, I hope a newer opamp will do a better job (I put this video for proof of work of the probe)

Again caputes of both scopes are provided for a reference.

You don't have permission to edit metadata of this video.
Edit media
x
Upload Preview

 

 

 

Regards

Idan

Anonymous

Top Comments

  • DAB
    DAB over 4 years ago in reply to idanre1 +5

    That is why I suggested it.

     

    Even if you do not use their devices, they provide an excellent overview on what you need to consider for good instrumentation.

     

    DAB

  • idanre1
    idanre1 over 4 years ago in reply to jc2048 +3

    Hi

    Since I only did analog in the university and in my day job I am doing digital I still considering myself as noob

     

    I think I will order your suggested opamp. But I am not sure I will get it in time for…

  • DAB
    DAB over 4 years ago in reply to idanre1 +2

    Go check the free ebook that Analog Devices is giving away on instrumentation amplifiers.

     

    I am sure you can get some good ideas.

     

    You could do a couple of very good posts just hooking some off the shelf Opamps…

  • neris.io
    neris.io over 4 years ago

    Very cool!

    Wanted to share 8x Arduino Logic Analyser and protocol decoding via sigrok https://hackaday.io/project/26356-ginlogic-arduino-due-uno-ginlab that could easily be accomplished via reading a port and dumping raw data

    Also Arduino(and other hardware) HTML oscilloscope coming sometime in the future https://hackaday.io/project/19374-ginscope-science-toolbox-oscilloscope

    Will check this project later, when I get my lab back!

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • jc2048
    jc2048 over 4 years ago in reply to jc2048

    For risetime and bandwidth, a fuller treatment can be found in:

     

    An Analog Electronics Companion
    by Scott Hamilton

     

    there's a huge amount of good stuff in this book and it's very well worth reading.

     

    For op-amp circuits

     

    IC Op-Amp Cookbook
    by Walter G. Jung

     

    is still useful after all these years (my copy is the 1979 reprint).

    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
  • jc2048
    jc2048 over 4 years ago in reply to idanre1

    This is what I was trying to guide you towards originally (I was hoping your university course might have introduced you to some simple op-amp circuits).

     

    I didn't design using the formula, but it's fine. The output is simply the difference between the input voltages multiplied by the ratio of the resistors. For the formula to be true, you probably need to add that R1=R2 and R3=R4.

    If you want to understand what it's doing, put voltmeters on both input pins in the simulation (the inverting and the non-inverting inputs) and see where they sit. [I tend to think of op-amp circuits in terms of levers and pivots - possibly that's how it was originally taught to me - and follow a sort of visual approach to mental design rather than working through formulae.]

     

    The orange circuit is just a pseudo ground sitting at half the supply. If you had two voltage rails, plus and minus relative to ground, you'd just use ground as your reference, but here we need to produce a ground of our own. That's quite common in single rail circuits. By fooling the differential amplifier into thinking that's where ground is, we get the swing both ways around 2.5V at the output, giving 0-5V out for -25V to +25V in.

     

    C2 and C3 are power supply decoupling. They make no difference to the simulation, but you'd want them in there for a real circuit (make the 10u an electrolytic and get it the right way round, the 100n is best as a ceramic and put it as close to the op-amp supply pins as you can get it). You might need to review this if your power comes from something like an Arduino, as it could be quite noisy [remember that this is a starting point for a prototype, not a finished, polished circuit].

     

    C1? That gives a bit of filtering - it will remove some of the noise coming from the 5V and give a cleaner pseudo ground to work with. The value I chose was a bit arbitrary (100n might have been enough) - I didn't sit down and calculate anything. If you are going to use 1k resistors, you may want to increase the capacitance a little (it's an RC filter, so as you decrease the resistors, you need to increase the capacitance to keep the same degree of filtering).

     

    R11? I just threw that in. It would probably be fine without it. It just isolates any capacitance on the output a little from the op-amp. If someone were to use the circuit with something other than Arduino, it might help a bit. It would also help if you wanted a length of screened cable between the output and the Arduino.

     

    R14? Connecting the grounds together gives a reference point to work with. The resistor is in case of accidents - ie if your Arduino wasn't floating and its ground was tied to mains ground, and your circuit had mains ground too, and you then clipped the ground to something in the circuit under test that wasn't ground, you might have a lot of current flowing in that connection, whereas with the resistor it's limited. Value is a bit high and you could reduce it a bit. Again, this is just ideas for your prototype, not a fully worked circuit. The actual measurement is between the plus input and the minus input, the ground just pulls both sides together if one or the other has a floating supply.

     

    Rise time came from

     

    Handbook of Linear Integrated Electronics for Research
    by T.D.S. Hamilton

     

    It's based on an assumption that the input of the vertical amplifier looks like an RC circuit, which is reasonable for practical amplifiers. Things are a bit different now, with digital 'scopes, but as far as I can see the manufacturers arrange their waveform reconstruction to give the equivalent result - that's certainly the case with my Tek scope where the risetime is the same as you would have seen with an old analogue scope of the same bandwidth.

     

    Don't worry about the time for the questions - it's all for the greater good, isn't it. [And remember I'm essentially a digital designer, so you'd probably do much better talking to someone who does this kind of thing for a living.]

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • idanre1
    idanre1 over 4 years ago in reply to jc2048

    Hi Jon

    I was searching the internet how to do a attenuation with opamp and didn't find, Only after you provided the differential amp structure I was able to get to the point.

    Thanks for pointing that out...

     

    Since this is a noob scope I want to make a in-depth analysis on the circut. So a novice which basic knowledge will know what he/she building.

     

    Please correct my analysis if it's wrong.

    • Red circuit is is Differential amplifier
      • Vout=(R3/R1)*(V+-V-)
      • How to reach that formula: http://www.electronics-tutorials.ws/opamp/opamp_5.html
      • C2 is for remove ringing. Real circuit have capacity in the wires, might need to be adjusted.
    • Orange Circuit is voltage offset
      • Since the opamp is 5V we need to offset for half meaning 2.5v
      • By adding 2.5V to to red circuit V+ we get -2.5v:2.5v input only by supplying 5v and GND to the opamp supply.
        • That I understood but could find proper analysis why??? (TODO - find a link to article)
    • Power supply
      • C2,C3 are for noise cancellation of the power supply
    • U2,U3 are only 1:10 multiplier to work on low voltages.
      • http://www.electronics-tutorials.ws/opamp/opamp_3.html
    • Why you need C1?
    • Why do you need R11?
      • Have you calculated impedance matching to the PAD of arduino (Schematic is provided below)
    • Why do you need R14 to GND?

     

    Probe schematic

    Pad schematic from atmel datasheet:

     

     

    More questions (Hope you have the time for all of my questions)

    Where did you get that from? can you provide a link with in-depth or something?

    For a traditional oscilloscope, the rise time is tr =  0.35/f.

     

    Trigger

    If you will take a look on the original circuit you will see AIN0/AIN1.

    I am using arduino ISR of a comparator to catch IRQ when Vin is answers to one of the triggers:

    Toggle, Rising edge, Falling edge

     

    Basically arduino always buffer 1K readings in internal memory and upon trigger capturing 0.25/.075 per-post trigger and sends it to PC upon IRQ.

    Indeed I am using 8bit for reaching 15KHz using arduino MIPS budget

    In-depth on how its done you can find in the instructables link I have provided at the top of the blog

     

    That's it for now.

     

    Regards

    Idan

    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
  • jc2048
    jc2048 over 4 years ago in reply to idanre1

    Here's a revised circuit. I tried to replace the existing one, but just end up with the red ribbon telling me I'm probably logged out (even though I'm obviously not).

     

     

    I've increased the input resistors to 1 MOhm (I forgot to modify the previous one before posting it).

     

    Looking at what it does if you throw a very fast edge at it, the differential amplifier rings a bit. One way to deal with that is the capacitor I've added (C2). You might need to experiment a bit if it is a problem - that value works in the simulation, but won't be right for a real circuit (a real circuit might be fine without the cap at all; might need a larger value; you might need to adapt the internal compensation in some other way; or you might need to stop the fast edge reaching the op-amp at all).

     

    For a traditional oscilloscope, the rise time is tr =  0.35/f. For your 18kHz bandwidth, that gives a risetime of something like 19uS. So your slew time of a couple of microseconds shouldn't be an issue.

     

    Finally, I ought to say that this is just a circuit suggestion to experiment with. I haven't tried it and there's no warranty. (That's for the benefit of anyone who has just stumbled upon this blog and thinks they're looking at an expert piece of analogue design.)

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
>
Element14

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2022 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • Facebook
  • Twitter
  • linkedin
  • YouTube