08/26/2019 at 19:50 •
We have been working hard on another Oscilloscope that is double the size (but way more than double the functionality) of this one! The Probe-Scope, our entry into the 2019 Hackaday Prize.
The Probe-Scope is a 60MHz Bandwidth, 250Msps Open Source oscilloscope, in the form factor of a cable; imagine you cut the BNC end off an oscilloscope probe, and replaced it with a USB port, that’s the Probe-Scope.
Check it out here!
10/08/2018 at 03:09 •
Check out or new promo video!
10/01/2018 at 18:29 •
Here is a description of how the analog fronted on our oscilloscope works.
The very first thing that happens is our signal goes into a 1M ohm terminator that also divides down our signal by 10X, allowing us to measure signals outside of the rails (up to around 30V Pk-Pk or ±15V). The very next thing that happens is the signal is passed through a pair of diodes connected to the rails that clamps the voltage to the rails preventing damage.
Notice how the divider goes to VGND, this is a signal that is halfway in between AGND and +3.3V_A so the incoming AC signal is centered around 1.65V. The other thing to note is that the 909k Ohm resistor is in-between the signal and the diodes so in the event of an over-voltage the current through the diode is limited to a small value (for example in the event of a 100V signal the current would be limited to about 100μA, of course there is not sufficient isolation to make 100V safe...).
The next step in the signal chain is the variable gain stage, that provides 10X gain, 5X gain, and 1X gain to allow for 3 total system gains, 1X, 0.5X and 0.1X gain. There are two main components of this subsystem, a TLV3541 op-amp and a ADG633 triple SPDT Analog Switch. Our op-amp was chosen to provide a power bandwidth (slew rate limited bandwidth) at around the response of our system. We had the same driving concern for the analog switch.
We can follow the signal path for the Gain Selection system now, to select 10X gain (for a total gain of 1X) we set D1 to connect to S1B and connect D2 to S2A (to remove the influence of R10) and connect D3 to S3B. Our circuit now looks like the one below:
We can change the contacts to select 5X in the same way, and disconnect R7, R10, and R11, just connecting the inverting input to the output to select unity gain.
When using analog switches like the ADG633 there is a trap for young players, the resistance of the switch is not negligible and varies with voltage sometimes significantly, here is a snapshot from the datasheet:
You can see that the on voltage can be as high as 240 Ohms and can vary significantly with applied voltage, luckily in our application the screen we were using needed 12V so we could supply 12V to the mux to get a much lower on resistance and a much flatter response over our region of interest(0V-3.3V). The average on resistance at 12V of 45 Ohms is less than the tolerance of our resistor part (we used 1% resistors across the board).
The next major section of the system was the ADCs, we used the PIC32MZ1024EFH064. The ADC module on the PIC32MZ is a 12-Bit Successive Approximation ADC. One of the advantages to a SAR ADC is that every extra bit of resolution takes a constant time, i.e. converting with 12-Bit accuracy takes twice as long as converting with 6-Bit accuracy so you can trade off speed and accuracy of the ADC.
The ADC module runs at a slower clock than the main core (in our case it runs at 50Mhz), every 20 nanosecond (1 50 Millionth of a second) period is called Tad (Time A to D) and the time everything in the ADC module takes is measured in Tads.
An ADC conversion starts with the sample and hold sequence, essentially there is a switch between the Microcontroller pin and the sample and hold capacitor and it takes some amount of time to fill that capacitor (it depends on the source impedance). We are driving it directly from an Op-Amp so we can assume a very low source impedance, so we can use the shortest sample and hold time 3 Tad or 20ns.
The next step is using the stored voltage on the capacitor to calculate the voltage and that time depends on the bit-depth selected:
We chose to use 6-Bit mode to give us the fastest conversion time (and becouse our screen is only 64 pixels tall or 6 bits tall). However this gives a total conversion time of 3 Tad + 7 Tad = 10 Tad or 200ns, only 5 Mega Samples Per Second. In order to get an even faster sample rate, up to our 20Msps target, we need to use a technique called interleaving.
Interleaving works by using several ADCs in parallel to sample at the same time. This allows us to get a much faster sample rate, the picture below shows how the system works.
In order to cope with the 120 Megabits per second of data coming out form the ADC module we take advantage of the Direct Memory Access (DMA) peripheral available on the PIC32MZ, it gives us the ability to write the data coming from the ADC directly into the memory of the Microcontroller without having to involve the processor at all.
10/01/2018 at 16:16 •
Wow! Apparently the deadline was at 9AM PDT, not 11:59PM. That's a bit of a bummer as there were still a couple things we wanted to polish, but we're still proud of our submission as it was at 9AM today. The code (unchanged since that time) is available at https://github.com/1o1-Oscilloscope/Firmware/tree/display. We'll upload an as-is archive of this code as well.
10/01/2018 at 07:29 •
Video update! We're still working to add a couple features and clean up the code before the deadline tonight, but we thought we'd show off where it's at right now. Aside from the screen being reversed, everything is working as expected. While not a final number, we're finding that we get around 1MHz of bandwidth.
09/27/2018 at 05:44 •
You can view our firmware on our github repo (at https://github.com/1o1-Oscilloscope/) , we are frantically developing the firmware before monday.
09/23/2018 at 02:10 •
We have got all our parts in and built up the first board! Next up: writing the software and testing.
We have also just posted the Altium source files for the board.
09/14/2018 at 19:45 •
We have published the gerber files and component ordering information. Soon we will post the Altium source files.
09/14/2018 at 15:30 •
WE have finalized the design and ordered our components and PCBs, we have also posted our schematics here. Soon we will be publishing our Gerbers as well