Jim Brannan EDN Combining PWM with a small R2R ladder improves both. It reduces PWM ripple significantly and increases the DAC’s resolution.
In this Design Idea, an eightresistor array and three output pins construct a modified R2R ladder (Figure 1). The modification is to connect the bottom 2R to a PWM output rather than to ground.
The ladder divides V_{CC} into eight slices, with the PWM filling the space from each level (0% PWM) to the next higher one (100% PWM). This reduces ripple to one eighth, while adding three extra highorder bits of resolution. Alternatively, you can take those three bits from the top of the original PWM dutycycle value, multiplying its clock rate by eight. You still get the 8:1 ripple reduction, but the increased clock rate pushes PWM noise further out into the lowlands of the filter for greater attenuation. SimulationI have simulated this hybrid approach.
To compare with the traditional simple lowpass filter (Figure 2) you should remember that the output resistance of an R2R ladder is R, and since I propose paralleling two resistors from the array to form R (with individual resistors for 2R), a 10 kΩ array yields 5 kΩ output resistance. That is what I used for the traditional approach along with the same 1 µF capacitor. I set the PWM to 50% duty cycle as that is where the worst ripple occurs. The results of the simulation (Figure 3) show the traditional approach with about 4 mV of ripple, while the first option (adding the three new bits to the original eight) resulted in 493 µV of ripple, just about one eighth. The second option (increasing the PWM clock by eight, leaving eight bits total) generated only 61 µV, around one sixtyfifth of the original.
Figures 4a (PWM + lowpass) and 4b (11bit hybrid) are the results of a complex simulation which slowly steps the voltage from 0 V to 5 V. The capacitors in the filters are deliberately too small so we can see the ripple at this scale. A normal R2R ladder adds a stairstep graph (Red in 4b) to show how the PWM moves from one level to the next, and even beyond the top of the R2R ladder up to 5 V.
This would also work with the NCO (numericallycontrolled oscillator) technique in place of PWM. NCO (add a value to an accumulator and output the carry) has the advantage over PWM because it reduces ripple around the 50% setting (by increasing the frequency of transitions), which is where simple PWM is the worst. And this can also work with any other DAC: just connect the PWM/NCO/whatever signal to the least significant bit position. TestingNow for some test results: The resistor array that I was considering has a tolerance of ±2%, but can also be obtained in ±1% and even ±½%, but since I didn't have any of those, I just used individual 1% resistors. I set up timer1 of an ATmega328 running at 16 MHz for 8bit PWM, and used the 10bit ADC to take some measurements. Since PWM, R2R, and ADC are all referenced to V_{CC}, we can factor it out and just examine the values read from the ADC for each of the eight levels, with PWM set at 0% and 100%. Ideally, the 100% entry of one step should equal the 0% entry of the next (with the caveat of any ADC reading being off by up to two, as described in the “ADC characteristics” section of the ATmega328 data sheet). These seem to be quite reasonable. I then used a technique I've nicknamed “Slowscilloscope™”, which uses the ability of the ATmega328 to schedule an AD conversion with a timer – the same timer that is producing the PWM. Thus we can measure ripple across a given PWM cycle. Figure 5 is a composite graph of both the traditional PWM with lowpass filter (Green) and the hybrid (Black+Red). Both use capacitors that are way too small so we can see the ripple.
Finally, Figure 6 is a (boring) trace of nonsynchronized AD conversions at each hybrid setting, allowing the ripple to make (more or less) random variations in the result. This one uses a larger capacitor for more realistic results.
In the end, we have seen that, depending on your point of view, PWM can fill in the spaces between an R2R DAC’s steps, or an R2R ladder can drastically cut the ripple of the usual PWM plus lowpass filter. Or both. Materials on the topic 

