Introduction: How I Made a Virtual Oscilloscope and Won 1000$ on a Worldwide Contest
Have you ever thought that you could ever make alot of money by making something you really love making?
Yes, I actually made it. I won $1000 as a prize on a design contest from Renesas.
At the year of 2008 , I found an advertisement in Appliance magazine about a free kit from a Microcontroller company called Renesas.
I really wanted to get this development kit. It was dedicated to motor control. I registered for this kit but unfortunately it was available only in USA and Canada.
However, my email was added in the company's clients database. Next, the company started a design contest at the same year called Renesas HTS Design Contest 2008.
The company invited me to participate in this design contest. It was a world wide contest which included shipment of free development kit to each eligible participant.
First I was admired by the idea itself of receiving a free development kit for the contest. I wanted to have this kit to learn more about Embedded C programming and to learn the Renesas technology which was new to me until that time.
To be eligible to receive the kit, there was a short demo for the company's other educational boards over a Virtual Lab environment. Then you are asked few questions to qualify for receiving the kit.
I passed through the stages of qualification and waited to receive the kit. When I received it I started to develop my design right away.
The company made a very good idea for improving the challenge through the launch of a forum for the challenge.
Each participant posted the idea of his entry and provided some technical details about it . This idea was very helpful and motivational. Any visitor or another participant can see your posted details and get admired with it or comment on it.
Here is my Channel on Youtube:
Step 1: Concept
My design was a Multichannel Oscilloscope. The idea was very simple. I made the analog signals read by the analog-to-digital converter of the Microcontroller M16C ( on which the board is based )
The M16C has many A/D inputs but and there were 3 of them available in the challenge board.
The signals values were converted into digital in the Microcontroller and they were sent to a PC based client software which incorporated the display of a virtual Multichannel Oscilloscope.
This project is a simple implementation of a 3 input channel oscilloscope. The Neutrino development kit has 3 available A/D inputs (including the photo-resistor).
The A/D inputs are used as analog signals input port; they are converted into the M16C microcontroller in the AD repeat mode. The host PC then reads the digitized number in the three registers of the each AD channel. The host draws the signals on the virtual oscilloscope interface.
Step 2: Hardware
The three A/D inputs are:
1- AN1 ( connected to the photo resistor )
2- AN4 ( connected to the kit ‘s I/O connector )
3- AN5 ( connected to the kit ‘s I/O connector )
The Kit I received form Renesas had i/o ports and some of them are analog input.
Step 3: PC Software and Embedded Software
Addresses of the three registers that contain digitized signals are
AN1 3C2h 962
AN4 3C8h 968
AN5 3CAh 970
Here is part of Firmware code:
Description: Initialization of a AD converter on AN1
void InitAD( void )
// adcon0 = 0x09; /* sw trigger, repeat mode, AN1 */
// adcon1 = 0x20; /* vref connected, 8 bit mode */
// adcon2 = 0x01; /* P10 group, sample and hold */
adcon0 = 0x09; /* sw trigger, repeat mode, AN1 */
adcon1 = 0x20; /* vref connected, 8 bit mode */
adcon2 = 0x01; /* P10 group, sample and hold */
adst = 1; /* start conversion */
The host PC runs a VB express program which read from the mentioned addresses on the user selection of the desired input port and handles this input data to a virtual oscilloscope class which draws the signal in real-time.
The user selects the input channel by a radio box. The result is loading the analog-to-digital control register 0 (adcon0 Address 982) with one of a three inputs according to the desired input port:
From the PC based client, the user can choose the input channel to be displayed on the virtual oscilloscope and the rate at which it is displayed.
Here is part of Visual Basic.net code ( Running on PC )
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Button2.Text = "Run" Then
Button2.Text = "Stop"
Button1.Enabled = False
Button4.Enabled = False
Dim D1(2) As Double
' Dim Db As Double
Dim i As Integer
ScopeStarted = True
D1(0) = 0
hts.GetMemory2(lBegin, lEnd, lDisplayWidth, vMemData)
outValue = vMemData.GetValue(0)
D1(0) = outValue * 0.01953125
TextBox1.Text = outValue
TextBox2.Text = D1(0)
For i = 0 To 10000 Step 1
'Call ExternalNext(scopehandle, Db)
Call ShowNext(scopehandle, D1(0))
Loop Until (Not ScopeStarted)
Button2.Text = "Run"
Button1.Enabled = True
Button4.Enabled = True
ScopeStarted = False
Step 4: Win a Prize
Before the last day of the deadline of the contest I submitted the source code for the Microcontroller side (written in Embedded C ) and the source code of the PC client (written in Visual Basic.Net) .
The results of the contest were announced on Renesas DevCon 2008.
I've got the 4th honorable mention prize for my entry "Multichannel Oscilloscope".
This contest was very challenging and rewarding. Thanks to Renesas who has helped me through all this contest.
Location for the HTS 2008 projects:
Here is the link for the article on my blog
Thank you for reading my instructable.
You can also find my book Learn By Making on Amazon website.
If you like this instructable you can support us by many ways:
1. Leave comments stating your point of view about this article.
2. Buy our book on Amazon Learn By Making.
Thank you for visiting our instructable.
Here are some of my latest books on Amazon.
Participated in the
Full Spectrum Laser Contest