Sent the first design for fabrication. Used a PIC24EP64GP204 micro-controller. Initial goal was to implement a 4-channel scope with at least 1 msps per channel, inputs with programmable voltage range etc.
For waveform generation, added an ATTiny processor from Atmel. A 2 channel SPI DAC was used.
Hackaday Links up to this point.
[toggle title="Project Logs at Hackaday.io"]
- NRF24L01+,PIC16F1618 based wireless nodes for multi-point acquisition and control
- Add-on board: 24-bit ADC, 18-bit DAC
- Standalone Mode using a 128x64 OLED
- Controlling Daisy Chained Addressable LEDs [WS2812B]
- Designing an enclosure with SolidWorks and KiCAD for 3D printing, and Laser Cutting
- Building Blocks: Project logs dealing with the design of each tool present on the base board
- Calibrating the ADC for maximum accuracy from all analog inputs.
- GUIs for experiments. Embedded Videos
- Calibrating DACs
[toggle title="Analog Measurements" ]
- 10 and 12 bit measurement modes
- Up to 32x Programmable gain on most channels. Manual gain control on CH3
- 2-channel oscilloscope capable of monitoring all analog inputs at 1MSPS. Interrupt driven implementation frees up CPU to run other commands received during acquisition.
- Voltages ranges from +/-16V to +/-100mV
- High impedance inputs, and power supply monitoring channels.
- Current to voltage convertor(+/-3.3mA) with up to 32x gain, and independent offset control.
[toggle title="Digital Measurements"]
- Frequency counter tested up to 32 MHz. MCU supports up to 64MHz, but needs verification.
- 4-channel Logic analyzer
- 15nS resolution, and DMA based approach that does not block user access to other functions while it acquires data.
- Independent function calls available to measure time differences between specified level changes on different digital inputs.
[toggle title="Waveform Generators"]
- 28-bit , 0 - 2MHz Sine, triangular waveform DDS [AD9833] . Maximum amplitude +/-4V , attenuable to a few ten millivolts via manual control knob present on the hardware.
- up to four phase correlated PWM outputs with maximum frequency 32MHz, 15nano second duty cycle, and phase difference control.
- 15KHz standalone sine wave
[toggle title="Programmable Voltage and Current Sources"]
- 12-bit Constant Current source. Maximum current 3.3mA [subject to load resistance]. voltage monitoring must be carried out externally to check for saturation.
- 5V,3.3V,+/-8V power supply outputs.
[toggle title="Data buses and Expansion Slots"]
- SPI,I2C,UART outputs that can be configured and controlled entirely through Python functions.
[toggle title="Wireless subunits: Various data buses and outputs for aggregating data from multiple points."]
- Onboard NRF24L01+ transceiver for wireless data acquisition.
- Wireless nodes capable of I2C/SPI/UART as well as basic digital IO
[toggle title="Graphical Interfaces"]
- Graphical Interfaces for Oscilloscope, Logic Analyzer, streaming data, wireless acquisition, and several experiments developed that use a common framework which drastically reduces code required to incorporate control and plotting widgets
[toggle title="Standalone Mode "]
- Standalone Mode uses a 128x64 OLED to display a few basic measurements.
- Firmware detects a plugged in display automatically, and continues showing readings until a PC takes over.
- Entire Unit can be battery powered and used as a portable test equipment.
- For Advanced portability, use the android application.
An ESP-12 wifi module can also be used in place of a USB connection, but a separate 5V power supply will be required. This will either simply provide a TCP socket, or host standalone web pages with control widgets (Work in progress ).
Space for a CH240G USB-Ser has been left as an option in place of the more expensive MCP2200, but has not been tested so far.
[toggle title="Damage Proofing" state="opened"]
Users will often make wrong connections, and the design must withstand reasonable assaults.
A few measures have been taken in this regard.
- A 500mA poly-fuse is part of the main USB input. This fuse auto-repairs when the offending load is removed.
- The DAC channels are specified as short-circuit proof, and the outputs will simply load the bipolar power supplies, causing their voltages to drop .
- Analog inputs are all high impedance, but exceeding voltage limits in either direction on multiplexed channels(CH1,CH3-7,I2V ) will distort the rest of the multiplexed channels. This will not damage the unit within generous limits.
So what can you kill ?
If you're not excessively harsh, only the outputs broken out into the expansion slot are sensitive. Most of these come directly from the main processor, and you should be as careful with these as you are with your Arduino's outputs.
The CAP input is directly connected to the Charge Time Measurement Unit of the processor, so please discharge any high voltages that may be present on capacitors before plugging them in.
[toggle title="Software Licenses"]
All client software is Python based, and no proprietary modules have been used. These include Python,Scipy,Numpy, Python-Qt4 , and PyQtGraph . All these work on multiple platforms, and are chosen to facilitate ports in the near future.
- Python - GNU GPL compatible
- Python-qt4 - GPL. Also requires that apps using PyQt4 be similarly open-sourced.
- PyQtGraph - MIT licence
- iPython - BSD License
- All Python Modules and Apps developed specifically for the vLabtool are hosted on github, and licensed with GPL-V3
6 June 2015
Vlabtool went through many changes, PCB was revised 3 times before the final unit was made.
It worked fine and had a local LCD display.
- 12-bit offset control along with up to 32x gain control gave very fine oscilloscope resolution along the full voltage range
- 2.5ppm digital reference, 5ppm Analog reference
- 128*64 pixel OLED display that shows readings until a USB connection is detected
21 June 2015
Decided to make a very low cost version [no high precision references, PGA etc], attempted gain control using op-amps and uC pins. , but it failed because of reverse voltage protection on uC pins via internal schottky diodes.
28-bit DDS sine wave generator with 0.004Hz resolution up to 2MHz was included. External amplitude control .
Added PGA back, for gain control. WS2812B RGB LED for status display
The need was felt for more suitable I/O connectors than the existing banana sockets which require special connecting cables, and are largely cumbersome for quick prototyping in labs. Found some spring loaded speaker terminal connectors, that looked like a good option since any sort of wire could be plugged in.