一种直接式智能ADC电路的制作方法

文档序号:12374783阅读:412来源:国知局
一种直接式智能ADC电路的制作方法与工艺

本发明涉及将模拟量转换为数字量的电路,属于ADC技术领域;尤其是一种直接式智能ADC电路。



背景技术:

ADC转换器是指将模拟量转换为数字量的设备,简称为ADC;传统的ADC转换器的分类有(1)积分型ADC工作原理是将输入电压转换成时间或脉冲频率,采用定时器/计数器获得数字值,优点是高分辨率,缺点是转换速率极低;(2)逐次比较型ADC电路由一个比较器和DAC电路通过逐次比较逻辑构成,当前逐次比较型ADC电路多为电容阵列式,即在内置DAC电路中采用电容矩阵方式,分辨率可以做高,转换速度慢;(3)并行比较型ADC电路采用多个比较器和精密电阻阵列,电路规模大、速度快、分辨率不高、功耗大、成本高;(4)Σ-Δ型ADC电路由积分器、比较器、1位DAC电路和数字滤波器等组成,主要用于音频和静态测量,转换速度不高;(5)流水线型 ADC电路 由若干级级联电路组成,每一级包括一个采样/保持放大器、一个低分辨率的 ADC电路和DAC电路以及一个求和电路,可以同时对多个采样进行处理,有较高的信号处理速度,高精度,高分辨率;基准电路和偏置结构过于复杂,对电路工艺要求很高;综上所述,ADC电路实现量化的方法有计数器计数、实现DAC累加、V/F变换等。

采用上述5类ADC电路进行测量或数据采集的过程是传感器将物理信号转换为模拟电量ui,经保持电路、固定放大倍数的数据放大电路将模拟电量信号放大,送ADC量化器,ADC电路输出数字量;上述数据采集过程将数据放大和ADC电路分段完成,增加了电路的复杂度,同时,当采集或测量变化范围大的物理量时ui值相差较大,由于数据放大器的放大倍数固定,会使小幅值信号的ui放大后达不到ADC电路对输入电压幅值的要求,也会使大幅值信号的ui经放大后超出ADC电路对输入电压值的要求。



技术实现要素:

为了克服放大倍数固定的数据放大器输出的电压可能不满足ADC电路输入要求、测量或数据采集电路结构复杂等问题,本发明采用微处理器IC5控制数据放大器的放大倍数KK值,解决了采集或测量变化范围大的物理量问题,将测量或数据采集过程中的数据放大和ADC电路量化两个阶段合,实现数据放大与ADC电路一体结构,降低了电路复杂度,通过编程方式解决了ADC电路连接不同感量的传感器问题,硬件电路主要包括数字电位器、运放、微处理器,使用软件替代传统ADC的部分硬件电路,增强相关企业的市场竞争能力。

本发明解决其技术问题所采用的技术方案分为电路和系统软件2个部分:将模拟输入电压信号ui加在A1、A2、A3组成的数据放大器输入端,ui经数据放大器放大后输出电压ub,ub和比较器A4另一个输入引脚的参考电压ua比较,通过微处理器IC5改变R1、R4、R5、R6、R7的阻值,改变数据放大器的放大倍数kk值,数据放大器输出ub=kk*ui,当ub>=ua时,A4输出电压发生翻转,A4输出引脚接IC5外部中断引脚,A4输出电压翻转时引起IC5中断,IC5通过执行中断服务程序和相关程序模块完成ADC转换。

一电路连接

运算放大器A1、A2、A3组成数据放大器,A4设置成比较器,R11的一脚接输入模拟电压ui的+端,R11另一脚接A1的3脚、R12的一脚接输入模拟电压ui的-端,R12的另一脚接A2的5脚;

R1的一脚接A1的2脚,R1的另一脚接A2的6脚, R2的一脚接A1的2脚,R2的另一脚接A1的1脚, A1的1脚接A6的13脚;

R3的一脚接A2的6脚,R3的另一脚接A2的7脚, A2的7脚接A7的13脚;

A3的9脚接A6的11脚和A9的13脚,A3的10脚接A7的11脚和A8的11脚,A3的8脚接A9的11脚和A4的13脚;

A4的12脚接A10的11脚和R10的一脚,R10的另一脚接地;A4的14脚接IC5的P3.2脚;A4的13脚接A9的11脚和A3的8脚;

A6、A7、A8、A9、A10的2脚接IC5的P1.6脚,A6、A7、A8、A9、A10的4脚接IC5的P1.7脚,A6、A7、A8、A9、A10的6脚接IC5的P1.5脚,A6、A7、A8、A9、A10的5脚接IC5的P1.4脚,A6、A7、A8、A9、A10的10脚接IC5的P1.3脚;

A6、A7、A8、A9、A10的A0接地,A6、A7、A8、A9、A10每个芯片自己的11、12脚连接;A10的9脚接IC5的P2.0;A6、A7的9脚连接后接IC5的P1.0,使R4=R5;A8、A9的9脚连接后接IC5的P1.1,使R6=R7;A10的13脚接Vc;

IC5的P2.5、 P2.6 、P2.7外接显示器;IC5的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7外接键盘;IC5的P3.0、 P1.1作为数字量输出;

A1的ZC-1、A2的ZC-2、A3的的ZC-3分别接IC5的P2.3、 P2.4 、P2.2脚,进行A1、A2、A3线性调整,本发明中不需要对A1、A2、A3进行线性调整,不要连接此连线;

本发明选择的运放A1、A2、A3、A4是型号LM324集成电路的1/4运放;数字电位器A6、A7、A8、A9、A10是型号X9110集成电路,A6、A7、A8、A9、A10分别对应电阻R4、R5、R6、R7、R9,最大阻值是Rmax=100K,由1023个单元电阻组成;微处理器IC5是STC12C5A60S2;本发明选择R1=1K,R2=R3=50K,R4=R5,R6=R7。

各个电路模块本身的附属电路及电源电路的连接没有涉及;模拟电源和地、数字电源和地的电路连接没有涉及;信号输入端的接地环电路没有涉及;人机交互的电路和人机交互的软件没有涉及。

该装置具有电路简单、成本低廉点、使用方便、工作稳定等优点,已经产生了较大的社会和经济价值。

二设计系统软件核心内容

1.确定系统分辨率、量程、初始化IC5

(1)传感器能够分辨被测对象最小变化量的输出电压变化量uf,最大能够辨识mm个uf,量程对应的数据放大器输出电压值ua,计算ua= uf*mm,将ua作为电压比较器A4的参考电压,保存在eeprom中,在数据放大器输入端加ui,调节数据放大器的放大倍数kk至比较器A4翻转, A4输出电压下降沿送IC5的P3.2,通过R1、R2、R3、R4、R5、R6、R7的阻值计算kk值,由R1=1K,R2=R3=50K,R4=R5,R6=R7,计算kk=R6*(1+2R2/R1)/R4,通过kk和设定的ua值求出ui=ua/kk,测量出ui,实现ADC转换;

(2) IC5串口初始化;

(3)定时器/计数器1初始化;

(4)中断系统初始化;

2.SPI接口初始化子程序

(1)通过SPI控制寄存器SPCTL设置:/SS引脚的控制、SPI使能、数据传送的位顺序、设置为主机或从机、SPI时钟极性、SPI时钟相位、SPI时钟选择,设置SPI接口为退完推挽工作方式;设置SPI控制寄存器SPCTL=01110100;

(2)清零寄存器SPSTAT中的标志位SPIF和WCOL:向标志位SPIF和WCOL写“1”;

(3)开放SPI中断:IE2中的ESPI=1,IE2寄存器不能位寻址,使用“或”指令;

(4)开放总中断,IE中的EA=1;

3.写数字电位器子程序

(1)将写数字电位器的数据送变量aa;

(2)选择数字电位器:通过IC5的P1.0脚输出低电平选中芯片A6和A7或IC5的P1.1脚输出低电平选中芯片A8和A9或IC5的P2.0脚输出低电平选中芯片A10;

(3)被IC5选中的数字电位器芯片的-HOLD引脚和-WP送高电平;

(4) 设置数字电位器:将R/W、I2、I1、I0置成写状态,A0=0;IC5执行写数字电位器滑动端计数寄存器WCR:01010000 10100000 XXXXXX D9D8D7D6D5D4D3D2D1D0;

(5)延时;

4.计算数据放大器的放大倍数kk子程序

(1)确定数据放大器第一级放大器的放大倍数kk1;

(2)根据kk1=1+2R2/R1计算KK1;如果要求数据放大器的放大范围可变,R1换成数字电位器;

(3)由R1=1K,R2=R3=50K,R4=R5,R6=R7,计算kk=R6*(1+2R2/R1)/R4值;

5.设置量程对应的数据放大器输出电压值ua子程序

(1)选择R10值、vc值、A4的12脚参考电压ua =R10*vc/(R9+R10)值,调试或第一次使用ADC时,可以通过键盘输入ua值,也可以用软件拟合ua值;

(2)选定ua后计算R9的滑动端位置aa,aa=int(1023*R10* (vc-ua)/( ua*Rmax));

(3)由IC5的P2.0脚输出低电平选中芯片A10,调用"3.写数字电位器子程序"将aa值写入A10,保存在A10;也可以将aa值保存在IC5中,在IC5启动阶段再将该值写入A10;

6.同步调节数字电位器A8和A9、数据处理子程序核心部分

(1)aa=1023;bb=1023;cc=0;

(2)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa写入A8、A9;

(3)判断IC5的中断标志ii==1成立否;

(4)如果6(3)中ii==1;调用“5.设置量程对应的数据放大器输出电压值ua子程序”重新设置或拟合ua值;跳转到6(1) 步;

(5)如果6(3)步中的ii==0;执行6(6)步;

(6)aa=bb;bb=cc;

(7)dd=aa;if((aa-bb)%2==0)aa=(aa-bb)/2+bb else aa=(aa-bb+1)/2+bb);

(8)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa值写入A8、A9;

(9)判断IC5的中断标志ii=1成立否;

(10)如果6(9)中的ii==1,跳转到6(7)步;

(11)如果6(9) 中的ii==0,执行6(12)步;

(12)计算abs(dd-aa)值,判断abs(dd-aa)<2成立否;

(13)如果在6(12)步中abs(dd-aa)<2成立,求出ui=ua/kk数字量;通过P3.0、P3.1输出数字量;跳转到6(1)步;

(14)如果在6(12)步中abs(dd-aa)<2不成立,执行6(15);

(15)bb=aa;aa=dd;

(16)cc=bb;if((aa-bb)%2==0) bb=(aa-bb)/2+bb else aa=(aa-bb-1)/2+bb);

(17)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa值写入A8、A9;

(18)判断IC5的中断标志ii==1成立否;

(19)如果6(18)中的ii==0时,跳转到6(16);

(20)如果6(18)中的ii==1时,执行6(21);

(21)计算abs(cc-bb)值,判断abs(cc-bb)<2成立否;

(22)如果6(21)中abs(cc-bb)<2不成立,跳转到6(6);

(23)如果6(23)中abs(cc-bb)<2成立,求出ui=ua/kk值;通过P3.0、P3.1输出数字量;跳转到6(1);

7.同步调节数字电位器A6和A7、数据处理子程序

同步调节数字电位器A6和A7、数据处理子程序的方法与“6. 同步调节数字电位器A8和A9、数据处理子程序核心部分:”的方法相同,只要将其中A8和A9换成A6和A7即可;

8.主程序部分关键内容

8(1)调用"1.确定系统分辨率、量程、初始化IC5:(2) IC5串口初始化;(3)定时器/计数器1初始化;(4)中断系统初始化;"

8(2)调用"2. SPI接口初始化子程序";

8(3)调用"4.计算数据放大器的放大倍数kk子程序;"

8(4) 调用"5.设置量程对应的数据放大器输出电压值ua子程序";

8(5) 循环调用"6.同步调节数字电位器A8和A9、数据处理子程序关键部分"或"7.同步调节数字电位器A6和A7、数据处理子程序";

9 .中断服务子程序部分关键内容

9(1)调用"1.确定系统分辨率、量程,初始化IC5:(2) IC5串口初始化;"

9(2)调用"1.确定系统分辨率、量程,初始化IC5:(3)定时器/计数器1初始化;"

9(3)调用"1.确定系统分辨率、量程,初始化IC5 :(4)中断系统初始化;"

9(4)调用"2. SPI接口初始化子程序"

9(5)修改中断标志变量ii。

附图说明

下面结合附图和实施例对本发明专利进一步说明:

附图1是本发明的电路结构图;

附图2是本发明的电路连接图;

附图3是本发明中系统软件的数据处理流程图中关键内容。

具体实施方式

一电路连接

运算放大器A1、A2、A3组成数据放大器,A4设置成比较器,R11的一脚接输入模拟电压ui的+端,R11另一脚接A1的3脚、R12的一脚接输入模拟电压ui的-端,R12的另一脚接A2的5脚;

R1的一脚接A1的2脚,R1的另一脚接A2的6脚, R2的一脚接A1的2脚,R2的另一脚接A1的1脚, A1的1脚接A6的13脚;

R3的一脚接A2的6脚,R3的另一脚接A2的7脚, A2的7脚接A7的13脚;

A3的9脚接A6的11脚和A9的13脚,A3的10脚接A7的11脚和A8的11脚,A3的8脚接A9的11脚和A4的13脚;

A4的12脚接A10的11脚和R10的一脚,R10的另一脚接地;A4的14脚接IC5的P3.2脚;A4的13脚接A9的11脚和A3的8脚;

A6、A7、A8、A9、A10的2脚接IC5的P1.6脚,A6、A7、A8、A9、A10的4脚接IC5的P1.7脚,A6、A7、A8、A9、A10的6脚接IC5的P1.5脚,A6、A7、A8、A9、A10的5脚接IC5的P1.4脚,A6、A7、A8、A9、A10的10脚接IC5的P1.3脚;

A6、A7、A8、A9、A10的A0接地,A6、A7、A8、A9、A10每个芯片自己的11、12脚连接;A10的9脚接IC5的P2.0;A6、A7的9脚连接后接IC5的P1.0,使R4=R5;A8、A9的9脚连接后接IC5的P1.1,使R6=R7;A10的13脚接Vc;

IC5的P2.5、 P2.6 、P2.7外接显示器;IC5的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7外接键盘;IC5的P3.0、 P1.1作为数字量输出;

A1的ZC-1、A2的ZC-2、A3的的ZC-3分别接IC5的P2.3、 P2.4 、P2.2脚,进行A1、A2、A3线性调整,本发明中不需要对A1、A2、A3进行线性调整,不要连接此连线;

本发明选择的运放A1、A2、A3、A4是型号LM324集成电路的1/4运放;数字电位器A6、A7、A8、A9、A10是型号X9110集成电路,A6、A7、A8、A9、A10分别对应电阻R4、R5、R6、R7、R9,最大阻值是Rmax=100K,由1023个单元电阻组成;微处理器IC5是STC12C5A60S2;本发明选择R1=1K,R2=R3=50K,R4=R5,R6=R7;

各个电路模块本身的附属电路及电源电路的连接没有涉及;模拟电源和地、数字电源和地的电路连接没有涉及;信号输入端的接地环电路没有涉及;人机交互的电路和人机交互的软件没有涉及。

二设计系统软件核心内容

1.确定系统分辨率、量程、初始化IC5

(1)传感器能够分辨被测对象最小变化量的输出电压变化量uf,最大能够辨识mm个uf,量程对应的数据放大器输出电压值ua,计算ua= uf*mm,将ua作为电压比较器A4的参考电压,保存在eeprom中,在数据放大器输入端加ui,调节数据放大器的放大倍数kk至比较器A4翻转, A4输出电压下降沿送IC5的P3.2,通过R1、R2、R3、R4、R5、R6、R7的阻值计算kk值,由R1=1K,R2=R3=50K,R4=R5,R6=R7,计算kk=R6*(1+2R2/R1)/R4,通过kk和设定的ua值求出ui=ua/kk,测量出ui,实现ADC转换;

(2) IC5串口初始化;

(3)定时器/计数器1初始化;

(4)中断系统初始化;

2.SPI接口初始化子程序

(1)通过SPI控制寄存器SPCTL设置:/SS引脚的控制、SPI使能、数据传送的位顺序、设置为主机或从机、SPI时钟极性、SPI时钟相位、SPI时钟选择,设置SPI接口为退完推挽工作方式;设置SPI控制寄存器SPCTL=01110100;

(2)清零寄存器SPSTAT中的标志位SPIF和WCOL:向标志位SPIF和WCOL写“1”;

(3)开放SPI中断:IE2中的ESPI=1,IE2寄存器不能位寻址,使用“或”指令;

(4)开放总中断,IE中的EA=1;

3.写数字电位器子程序

(1)将写数字电位器的数据送变量aa;

(2)选择数字电位器:通过IC5的P1.0脚输出低电平选中芯片A6和A7或IC5的P1.1脚输出低电平选中芯片A8和A9或IC5的P2.0脚输出低电平选中芯片A10;

(3)被IC5选中的数字电位器芯片的-HOLD引脚和-WP送高电平;

(4) 设置数字电位器:将R/W、I2、I1、I0置成写状态,A0=0;IC5执行写数字电位器滑动端计数寄存器WCR:01010000 10100000 XXXXXX D9D8D7D6D5D4D3D2D1D0;

(5)延时;

4.计算数据放大器的放大倍数kk子程序

(1)确定数据放大器第一级放大器的放大倍数kk1;

(2)根据kk1=1+2R2/R1计算KK1;如果要求数据放大器的放大范围可变,R1换成数字电位器;

(3)由R1=1K,R2=R3=50K,R4=R5,R6=R7,计算kk=R6*(1+2R2/R1)/R4值;

5.设置量程对应的数据放大器输出电压值ua子程序

(1)选择R10值、vc值、A4的12脚参考电压ua =R10*vc/(R9+R10)值,调试或第一次使用ADC时,可以通过键盘输入ua值,也可以用软件拟合ua值;

(2)选定ua后计算R9的滑动端位置aa,aa=int(1023*R10* (vc-ua)/( ua*Rmax));

(3)由IC5的P2.0脚输出低电平选中芯片A10,调用"3.写数字电位器子程序"将aa值写入A10,保存在A10;也可以将aa值保存在IC5中,在IC5启动阶段再将该值写入A10;

6.同步调节数字电位器A8和A9,数据处理子程序核心内容

(1)aa=1023;bb=1023;cc=0;

(2)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa写入A8、A9;

(3)判断IC5的中断标志ii==1成立否;

(4)如果6(3)中ii==1;调用“5.设置量程对应的数据放大器输出电压值ua子程序”重新设置或拟合ua值;跳转到6(1) 步;

(5)如果6(3)步中的ii==0;执行6(6)步;

(6)aa=bb;bb=cc;

(7)dd=aa;if((aa-bb)%2==0)aa=(aa-bb)/2+bb else aa=(aa-bb+1)/2+bb);

(8)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa值写入A8、A9;

(9)判断IC5的中断标志ii=1成立否;

(10)如果6(9)中的ii==1,跳转到6(7)步;

(11)如果6(9) 中的ii==0,执行6(12)步;

(12)计算abs(dd-aa)值,判断abs(dd-aa)<2成立否;

(13)如果在6(12)步中abs(dd-aa)<2成立,求出ui=ua/kk数字量;通过P3.0、P3.1输出数字量;跳转到6(1)步;

(14)如果在6(12)步中abs(dd-aa)<2不成立,执行6(15);

(15)bb=aa;aa=dd;

(16) cc=bb;if((aa-bb)%2==0) bb=(aa-bb)/2+bb else aa=(aa-bb-1)/2+bb);

(17)IC5的P1.1脚输出低电平选中芯片A8和A9,调用"3.写数字电位器子程序"将aa值写入A8、A9;

(18)判断IC5的中断标志ii==1成立否;

(19)如果6(18)中的ii==0时,跳转到6(16);

(20)如果6(18)中的ii==1时,执行6(21);

(21)计算abs(cc-bb)值,判断abs(cc-bb)<2成立否;

(22)如果6(21)中abs(cc-bb)<2不成立,跳转到6(6);

(23)如果6(23)中abs(cc-bb)<2成立,求出ui=ua/kk值;通过P3.0、P3.1输出数字量;跳转到6(1);

7.同步调节数字电位器A6和A7、数据处理子程序

同步调节数字电位器A6和A7、数据处理子程序的方法与“6. 调节数字电位器A8和A9、数据处理子程序核心部分:”的方法相同,只要将其中A8和A9换成A6和A7即可;

8.主程序部分关键内容

8(1)调用"1.确定系统分辨率、量程、初始化IC5:(2) IC5串口初始化;(3)定时器/计数器1初始化;(4)中断系统初始化;"

8(2)调用"2. SPI接口初始化子程序";

8(3)调用"4. 计算数据放大器的放大倍数kk子程序";

8(4)调用"5. 设置量程对应的数据放大器输出电压值ua子程序";

8(5)循环调用"6.同步调节数字电位器A8和A9、数据处理子程序关键部分"或"7. 同步调节数字电位器A6和A7、数据处理子程序";

9 .中断服务子程序部分关键内容

9 (1)调用"1.确定系统分辨率、量程,初始化IC5:(2) IC5串口初始化;"

9 (2)调用"1.确定系统分辨率、量程,初始化IC5:(3)定时器/计数器1初始化; "

9(3)调用)"调用"1. 确定系统分辨率、量程,初始化IC5:(4)中断系统初始化;"

9(4)调用"2. SPI接口初始化子程序"

9(5)修改中断标志变量ii。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1