So what is an R-2R ladder?
Well, it is just a cleverly arranged set of resistors that gives you the unique action of turning binary signals into an analogue output voltage. It works by the principle of superposition where switching on binary inputs adds more voltage at the output.
Here is a diagram of one showing binary inputs and analogue output.
The above ladder is just 4 bits long but you can extend it to any length (the limiting factor is the accuracy of the resistors).
Using a ladder network is a common way of creating an 8 bit DAC (Digital to Analogue Converter) as each control bit contributes to a binary weighted output voltage. However, for a highly accurate DAC, the resistors will be laser trimmed and located inside a chip.
The ladder is still a useful construct to use as you can create a very cheap 8 bit DAC if you are not too worried about accuracy ( using 1% resistors will allow fairly good output).
It uses Kirchhoffs current law which states that the sum of currents entering a node must be equal to the sum of the currents leaving a node. In the ladder, at each node, the current is split in half. By switching the currents into each node the total current flowing is binary weighted.
Using the principle of superposition when you add more current into a resistance the total voltage appearing is the sum of the voltages caused by all the individual currents i.e. as each bit is activated so the voltage increases at the output.
Another clever thing about the R-2R ladder, and the reason that it works is that if you look to the left you always see the same impedance:
Using Thévenin's theorem you can work out the voltage
contribution of each bit. A Thévenin circuit is the
equivalent of a network of resistances and voltage sources (and current
sources). You can replace the network with a Thévenin
equivalent circuit and it will work in exactly the same way as the
original network.
To use the Thévenin theorem replace all voltage sources with short circuits and all current sources with open circuits - calculate
the resistance looking into the port for the Thévenin
resistance Rth. For the Thévenin voltage calculate the no
load output voltage.
Contribution if bit 3 is active (the MSB):
Contribution if bit 2 is active (the MSB):
Contribution if bit 1 is active (the MSB):
When each bit is active it contributes a binary weighted voltage to the output Vo.
These are the two main uses. There are probably more that you can use it for.
As I described earlier the primary use of the binary weighted resistor ladder is for digital to analogue conversion as a DAC.
The other useful, and related function, is to implement a key detector feeding the analogue voltage to an ADC pin inside a microcontroller.
The primary advantage of this key input method is that since each key is connected to one control pin of the ladder, each input key generates a binary weighted current and therefore a binary weighted output voltage.
This means you can determine whichever set of keys have been pressed even if they are pressed at the same time as another key!
Note: Use 1% resistors to ensure the ladder works correctly.
Practical limits of achievable linearity/accuracy.
According to US patent: 7362253
"Practical circuit implementations of the D/A converter utilizing R2R ladders are 1) scaling the switch sizes in a binary-weighted fashion and 2) decoding the MSBs into segments of resistor value R. Even with these techniques, the best D/A converters still only achieve 12 to 13 bits linearity accuracy." (in a 16 bit DAC).
Extract from : http://www.freepatentsonline.com/7362253.html
The R2R ladder is a current operating device, so the binary inputs can be connected directly to the outputs of the port either a discrete device or a microcontroller.
When the ground referenced ladder has an input bit that is set to 0V then no current flows so it contributes nothing to the output and conversely, current flows when +V is applied.
Also when using the ladder as a multiple key press detector you can connect only (push-to-make) to +V (Current flows) and leave no connection for zero (No current flows).
Summary : It generates a binary weighted output current, that by superposition becomes a binary weighted voltage.
***FACEBOOK-LIKE1***Oct 16, 20 09:35 AM
How to use the MCP23017 to increase your I/O by 16 pins (or more) and use its interrupt system.
Oct 02, 20 01:12 AM
Arduino Battery Charger: A very useful project that lets you charge 'un-rechargeable' alkaline batteries!
Sep 21, 20 01:13 AM
Digispark ATtiny85: Essential information on setting up and using this tiny, but powerful, chip
Sep 06, 20 02:11 PM
How to make magnetometer tilt compensation work for a magnetometer such as a QMC5883L using an ADXl345 accelerometer.
Aug 13, 20 03:40 AM
HMC5883L - How make a digital compass, Find out the differences between the HMC5883L and the QMC5883L and whether they are compatible.
Jul 28, 20 02:10 PM
Secrets of Arduino absolute value abs() - Why it might fail, Why it may cause problems...and how to fix it.
Subscribe to the MicroZine Newsletter,
Collect your free micro- controller Ebooks,
Download project code and more...