circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

December 2006, Issue 197

ARM Scope
Build an Analog Oscilloscope Companion


by Greg Cloutier


Start Hardware Overview Embedded Code User Interface Functional Code System Development Sources and PDF

SYSTEM DEVELOPMENT

The ARM Scope system met all three of my goals. It can output a PWM signal for verifying my old analog oscilloscope’s timebase through its entire range. It can capture and let me visualize analog signals at a slower rate than my oscilloscope can. And it can output any analog waveform that can be generated and sent to the data buffer. I set up my graph display so that it had 10 divisions just like a real oscilloscope. As it is, the timebase for the analog input and output functions can be set to a range from 2 s per division to 0.02 s per division. 

I’m considering a few upgrades for the code. Of course, both the processor code and the user interface code need to be updated as a matched set if functionality is added. I know that the ADC is capable of reading much faster. I can see filling a buffer up quickly and sending the data for display at a much more relaxed rate. For that matter, collecting extra data could be useful for triggering a signal or zooming in on the data. I would have to decide if this would be done by the user interface or in the processor code. LabVIEW also has some powerful built-in math and DSP functions, so I could analyze the data in various ways.

Note that I did not include any analog circuits. This project was meant to get analog data into and out of a processor. The way I scale the signal from a sensor to match the 0 to 3.3 V range would be another project altogether. There was no one-size-fits-all solution for this, so I left it to be application specific. If you add some control circuitry, there will be plenty of pins left over and the processor will have plenty of horsepower left.

By the way, I didn’t even make a dent in the amount of flash memory. I stayed well under the limits of the compiler as well, so there is plenty of room to grow the code as needed. The pins I used for inputs and outputs are shown in Table 2.