Summary of PWM Waveform Capture using AVR microcontroller
This article describes a low-cost method for capturing repetitive waveforms using an Atmel AT90S2313 microcontroller. By combining fast internal comparators with a PWM circuit, the system samples analog signals by iteratively comparing them against varying PWM voltages triggered by the waveform itself. This technique achieves sub-microsecond resolution without requiring high-speed ADCs, making it suitable for analyzing encoded data, radio signals, and audio.
Parts used in the PWM Waveform Capture Project:
- Atmel AT90S2313 microcontroller
- One capacitor
- Two resistors
- Liquid crystal display (LCD)
- Computer for spreadsheet manipulation
- Pulse Width Modulation (PWM) D-to-A converter
- On-chip voltage comparator
- RAM array for storage
Described are the waveform capture method, example firmware and hardware designs. This material formed the basis of an article that was first published in the October, 2003 issue of Circuit Cellar magazine.
(one capacitor and two resistors) to allow waveform sampling with < 1 microsecond
resolution at 1 volt full scale, are inside the black outline.
Download AVR Studio Source wfcao 030326 .asm
The impetus for developing this technique came from my own need to capture repetitive waveforms using the least expensive and lowest part-count means possible. I wanted to be able to view the waveforms on either a liquid crystal display dedicated to the purpose or upload the waveform to a computer to manipulation on a spreadsheet.
The approaches using on-chip A-to-D converters on AVR, PIC, and Cypress controllers reached sample rates of up to about 60 kHz. Not really very useful for the sort of thing I was thinking about using this for: encoded data, radio control signals, A-to-D converter waveforms, checking the dynamic range of amplifiers and capturing audio waveforms for filtering and power calculations. I realized that the comparators in AVR devices were pretty fast with a response time of several hundred nanoseconds, and that the PWM (pulse width modulation) circuit could be made fairly responsive. If there was just some way to combine these to sample analog values quickly…
Eventually it became apparent that repetitive sampling was the only way to get high enough voltage and temporal sampling resolution using these on-chip components. Rather trying to sample and digitize the waveform as is comes in, this method finds out a little bit about the waveform using the relatively high speed comparator every time the waveform is repeated, building up a more and more detailed picture with each repetition by changing the relatively low speed PWM voltage each time.
It's all in the timing. Firmware timing loops set the interval between
samples in a burst of waveform samplings that starts with a trigger signal.
The Green dots represent voltage levels of the sampled signal at the time of sampling.
Capture time = 100 x [sample interval] x 64 (+ 64 X ([ trigger latency]) + 68 ms ,
where is ” trigger latency” is the average time the controller waits for the trigger edge after the last sample, and the 68 milliseconds comes from 1 millisecond settling time of the PWM circuit after each step, plus 5 milliseconds for initial settling.
When capturing waveforms with long periods, the total time needed to capture the waveform is dominated by the time it takes the waveform to make the requisite number of repetitions. For shorter periods, the total time is dominated by the settling times for the PWM. For example, for the example design to capture a waveform with 64 level resolution over a 100 microsecond interval, sampling at 1 microsecond intervals, it takes a little over 72 milliseconds. To capture a 1 second waveform at the same resolution, it takes a little over a minute.
The preceding suggests that the higher the sampling rate, the greater the possible reduction in sampling time by speeding up the DAC. A resistor network connected to some port pins could suffice for low resolution (6 bit) waveform capture. An integrated circuit DAC would probably be much better for higher resolution measurements.
For more detail: PWM Waveform Capture using AVR microcontroller
- How does this method capture waveforms?
The method uses timing loops to compare the incoming voltage against a changing PWM voltage at regular intervals during repeated waveform cycles. - Can this system achieve less than 1 microsecond resolution?
Yes, the design allows for waveform sampling with less than 1 microsecond resolution at 1 volt full scale. - What is the main advantage of using on-chip comparators?
Comparators in AVR devices have a very fast response time of several hundred nanoseconds, enabling quick sampling. - Does this approach work for non-repetitive signals?
No, the article states that repetitive sampling is the only way to get high enough voltage and temporal resolution using these specific components. - How is the PWM voltage adjusted during the process?
After testing all sample times against a set PWM voltage, the voltage is decremented and the comparison process repeats until the minimum value is reached. - What limits the capture time for short period waveforms?
For shorter periods, the total time is dominated by the settling times required for the PWM circuit after each step. - How many levels can the initial design sense for LCD display?
The initial use case with an LCD display senses 64 different levels. - What alternative hardware could improve sampling speed?
An integrated circuit DAC would likely be much better for higher resolution measurements compared to a simple resistor network.

