SEElab development history 1-July-2014 onwards


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.

Characterizing a band pass filter



2014 Sep: Corrected many errors of the first prototype.
Added two arbitrary waveform generators, using 2x PIC1572 processors.  Communication to these was established via 9-bit UART
Cross talk between channels indicated the need for better ground plane design

October 2014

Replaced quad op-amps with dual, separate op-amps for each channel. Minor bug fixes. PGA reference needs a low output imepedance drive.

Introductory Video

Hackaday Links up to this point.

Project Logs at



Features implemented

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.


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.


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


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.


Data buses and Expansion Slots


  • SPI,I2C,UART outputs that can be configured and controlled entirely through Python functions.


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


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


Standalone Mode


  • Standalone Mode uses a 128×64 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.


Additional Features



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.


Damage Proofing


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.


Software Licenses

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


November 2014

Lot of corrections and improvements. Everything seems to be working, demonstrated during 2014 conference at IIT Bombay.

April 2015

Hardware and software working as expected but packaging issues remained. Decided to go for 2mm round sockets and Berg strips for Input/Output connectors. Added an inductance meter also.

Prototype made with acrylic cabinet. Added Ad9833 waveform generators.

April 2015

One more round of prototyping to correct some errors.

May 2015

Added ESP8266, for WIFI support, made some changes to I/O connector locations.
tested with transparent UART firmware as well as eshttpd web server

May 2014 #2

Made a compact version with two bipolar channels and remaining unipolar channels. Called it Vlabtool.

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.

Key Features:

  • 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 .

25 July 2015

31 July 2015

September 2015

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.

Nov 2015

Made an adapter board to fix the speaker terminal to the main board so that the heights of the Berg strips align with them on the same plane.

Dec 2015

Decided to make one batch of boards, and integrate with Orange Pi / Raspberry Pi.

An injection mould was made to was made to fit an OPi/RPi along with the acquisition board

March 2016

Several issues with making the ABS plastic cabinet were sorted out, and final assembly process was streamlined. four desktop versions were bought by Farook College, Calicut, followed by several other institutions.

July 2016

Demonstrated at Startup Mission, Kerala.

August 2016

Redesigned the unit with a different form factor, with 2 connector blocks. Added a 5ppm/C clock generator and 50ppm/C analog reference (5ppm optional) for better accuracy. After a couple of rounds of prototyping , one batch was produced, with a new plastic mould.