Thursday, May 27, 2010

Poor student's oscilloscope

Enterprising undergrad engineering students can achieve a lot if given the right set of tools. Once you level up to designing some complex circuits, a signal generator and an oscilloscope would definitely go a long way in helping you in debugging your projects. I bought my first oscilloscope (Acute DS1202 200MHz PC based) for INR 37,500 after accumulating my salary for 4 months at my first job. But I always wished I has an access to an oscilloscope as a student. It seems that now days there is a low cost option for students to use: the PCs sound card.
Most modern motherboards have an onboard Audio Codec Chip which is used to accept and output sound, you can find atleast 3 audio jacks labeled Microphone, Line In and Line Out on the back side of your CPU Cabinet. You can then use specialized freeware/shareware applications which can turn your PC into an Oscilloscope/Signal Generator. Here are screen shots of some of these:

Oscilloscope 2.51 (aka Winscope) - the captured waveform is of the character 'a' being transmitted from a microcontroller UART at 9600 bits per second 8-N-1

Soundcard Oscilloscope 1.32 - the captured waveform is of the RC-5 packet as decoded by an InfraRed Receiver

There is also a concern that you may exceed the input voltage range and blow up the sound codec chip on your motherboard, so for that one can buy a cheap USB Audio Controller. These cost somewhere around Rs. 325 in India and so you won't feel that bad when you blow it up! These USB Audio Controllers show up as a standard Audio Controller in Windows Device Manager and can be used like a standard sound card. They are actually ment for use with VoIP applications like Skype, but we can surely use them for different purposes. Here are photos of two of these:

This one is based on the CM108 Chip

And this one on the eKA8562A Chip

So all you need to do to capture a signal is use a wire with 3.5mm mono audio lead at its end plugged into the microphone jack. If your audio controller has a "line in jack", you can capture two signals on the left and right channels. To use line-in you will require a 3.5mm stereo lead (instead of mono lead for microphone). The speaker out can be used as a dual channel signal generator when coupled with the proper software (e.g. Soundcard Oscilloscope 1.32 linked to above)

Also checkout this project: Sound card based multimeter
and another sound card based oscilloscope software: Zelscope

I guess it is also possible to re-purpose bluetooth headsets available now days into low bandwidth wireless oscilloscopes - how cool would that be? You can pair up bluetooth headsets (including those equipped with A2DP) with your windows based PCs running BlueSoleil. Should try that out one of these days.

There is another piece of cool software that one should be aware of: imagine you are in an aircraft (or a train) traveling to someplace and you have lots of time to kill. If you have friends/family traveling with you, then all of you can watch a movie on a laptop - the only problem would be to have multiple set of headphone. Rather than loading a single headphones jack with multiple headphones using a Y-splitter, you can plugin multiple USB audio controllers into your laptop and use Virtual Audio Cable to replicate audio stream to multiple devices. In case you decide to do this, you will also have to adjust the audio/video delay for this - all extra processing causes the video and audio to fall out of sync. If you are using the latest version of VLC media player, you can adjust the audio delay (with respect to video) using "j" and "k" keys - or you can try this. Virtual Audio Cable can also be used to record audio streams from various application (eg Youtube flash video being played from within Firefox, or music played while playing a game, or your conversation while talking to someone on Skype).


mUNISH said...

Hi... very nice compilation :)
But it would be very beneficial for a newbie if some links or info to hardwiring are given.

In the second image on this page (soundcard oscilloscope) how did you get it to display the constant high before & after the pulse train, since DC is blocked by most soundcards?

Post a Comment