Voltage Translation for Analog to Digital Interface

孕龙逻辑分析仪 ZeroPlus Logic Analyzer

How to modify analog output range of Arduino Due

In today's microcontroller market, most of the Analog to Digital converters

are only able to accept voltages from the Vcc of the device to ground.

But what if you want to measure a bipolar signal?

This short tutorial plans to show you a simple but effective method

to interface a bipolar voltage to any single polarity input.

On the left is the ideal basic circuit for interfacing.

vi is the input voltage,  vo is the voltage sent to the ADC,

vr is a reference voltage used for setting the center or zero input voltage,

and R1 and R2 are used for input scaling and current limiting

to bring the input voltage into the range of the ADC.

On the left are the 5 formulas needed to determine the values of vr and R2.
R1 will be chosen initially as we will see in an example below.  
 
As you can see in formulas I,III,IV, and V, 
the term is the voltage divider ratio of the resistors calculated by formula II.
Now that I have my basic circuit, and the required formulas, let's now create a useful example.
        In this example, my parameters will be as follows:        
        - Input impedance of at least 1Mohm.
        - vin = +/- 12V
        - vo = 0-5V 
        So when vin = 12v, vo = 5v
                       vin = -12v, vo = 0v
                       vin = 0v, vo = 2.5v

To begin, I need to calculate the value of R 

This will be the scaling factor applied to the incoming voltage.
To do this, I take the vo range and divide it by the vin range. In this case, 
        R = 5/24 = .2083 [ 12v - -12v = 24v ]
 
Next I will calculate the value of R2.
Because I want an input impedance of at least 1Mohm, I will use 1M as R1.
Using formula V, the value for R2 is:

R2 = (R * R1)/(1-R) = (.2083 * 1M)/(1-.2083) = 208,300/.7917 = 263,104 ohms.

Next I need to calculate the value of vr.
    Using the case of vin = 12, vo = 5, and using formula III:

vr = (vo - R * vi)/(1 - R) = (5 - .2083 * 12)/(1 - .2083) = 2.5004/.7917 = 3.158v 

I now have the 3 values required for my design.
    R1 = 1M
    R2 = 263,104
    vr = 3.158v

I can now plug these numbers into formula I
and calculate the three input voltages of +12, 0, and -12 and verify that the design is correct.

vo (vin=+12) = R(vi - vr) + vr = .2083(12 - 3.158) + 3.158 =  5.000
    vo (vin= 0)    = .2083(0 - 3.158) + 3.158 =  2.500
    vo (vin=-12)  = .2083(-12 - 3.158) + 3.158 = 0

    To the left is a practical circuit to interface to an ADC. The features are:
    - A diode and zener diode used to protect the ADC input from overvoltage.
    - R2 is composed of a fixed value, and a trim pot to dial in the correct value.
    - A trim pot connected to the non inverting input of an op amp in a voltage follower configuration for setting vr.  

To calibrate the circuit, adjust the op amp trim pot for an output voltage of vr as calculated above.
Next, input a voltage to vi and calculate what the vo should be,
and adjust the R2 trim pot until that voltage is achieved.

Note:
Generally, zener diodes will always have some current flow.
This will adversely affect the accuracy of the ADC measurements as well as the linearity. 
A method of switching in the zener when max voltage is reached would be preferable,
but would increase the part count.

Now I have a working circuit, but the last thing to calculate is the maximum and minimum input voltages.

This will be determined by the two diodes and using formula IV.
The maximum input voltage will occur when the zener diode goes into breakdown regulation.
If we assume a zener voltage of 5.1v, the maximum input voltage is:

vi = ((vo - vr)/R) + vr = ((5.1 - 3.158)/.2083) + 3.158 = 12.481v
  
The minimum input voltage will occur when the diode is forward biased.

Assuming a forward voltage of 0.7v, the minimum input voltage is:

vi = ((-0.7 - 3.158)/.2083) + 3.158 = -15.363v  

Effective input impedance can be calculated as follows:

zin = vin(R1 + R2)/(vin - vr)

This is a varying quantity depending on vin.

 

Voltage Translation for Analog to Digital Interface ADC的更多相关文章

  1. Fully Digital Implemented Delta-Sigma Analog to Digital Converter

    http://www.design-reuse.com/articles/14886/fully-digital-implemented-delta-sigma-analog-to-digital-c ...

  2. Analog/digital converter (ADC)

    1.ADC1 and ADC2 are 10-bit successive approximation Anolog to Digital Converters. 所谓successive appro ...

  3. STM8S——Analog/digital converter (ADC)

    1.ADC1 and ADC2 are 10-bit successive approximation Anolog to Digital Converters. 所谓successive appro ...

  4. DG449 High Voltage Single SPDT Analog Switch in SOT23-8

    DESCRIPTION The DG449 is a dual supply single-pole/double-throw (SPDT) switches. On resistance is 38 ...

  5. How to modify analog output range of Arduino Due

    Voltage Translation for Analog to Digital Interface ADC How to modify analog output range of Arduino ...

  6. 孕龙逻辑分析仪 ZeroPlus Logic Analyzer

    Voltage Translation for Analog to Digital Interface ADC http://openschemes.com/2010/03/23/zeroplus-l ...

  7. quick start guide for XMEGA ADC

    This is the quick start guide for the Analog to Digital Converter (ADC), with step-by-step instructi ...

  8. BOOST Converter Analog/Digital Adjusted Output Voltage TPS61045 MAX1932

    DIGITALLY ADJUSTABLE BOOST CONVERTER The TPS61045 is a high frequency boost converter with digitally ...

  9. Digital Adjustment of DC-DC Converter Output Voltage in Portable Applications

    http://pdfserv.maximintegrated.com/en/an/AN818.pdf http://www.maximintegrated.com/app-notes/index.mv ...

随机推荐

  1. Android JAR包、Library项目

    [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目 (1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2. ...

  2. jQuery实现鼠标点击div外的地方div隐藏消失的效果

    css部分: <style type="text/css"> .pop { width:200px; height:130px; background:#080;} & ...

  3. mockito简单教程

    注:本文来源:sdyy321的<mockito简单教程> 官网: http://mockito.org API文档:http://docs.mockito.googlecode.com/h ...

  4. h5之js生成二维码

    目录架构: index.html <!DOCTYPE> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang=& ...

  5. [转]Hadoop参数汇总

    出自:https://segmentfault.com/a/1190000000709725 Hadoop参数大全 主要配置文件: core hdfs yarn mapred 重要性表示如下: 重要 ...

  6. python调用修改变量新方法

    def foo(): count = [1] #将变量放在列表中,此时,内部函数就可以修改了 def bar(): count[0] = count[0] + 1 return count[0] re ...

  7. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  8. python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)

    一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...

  9. 20155309南皓芯 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M

    实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...

  10. oracle查询出来的时间吸附为每5min

    to_char(PACKET_TIME,'yyyy-mm-dd hh24:')||floor(to_char(PACKET_TIME,'mi')/5 )*5||':00' as start_time, ...