基于STC12C5410AD设计10位高精度ADC
摘要:在此主要基于机内测试技术实际需求,为了能够实现监测点模拟信号的提取和转换,设计了模数转换器。运用STC12C5410AD芯片,设计了ADC硬件,同时为了达到快速稳定的性能,软件设计运用了滑动滤波算法。实现了模拟电压信号转换成10位精准稳定的数字信号。
关键词:机内测试技术;数/模转换器;滑动滤波器;单片机;STC12C5410AD
0 引言
测试性(Testability)是指:产品能及时准确地确定其状态(可工作、不可工作、性能下降)和隔离器内部故障的设计特性。1976年,F.L iour等人在《设备自动测试性设计》一文中首次提出了测试性的概念。随后,测试性相继用于诊断电路的设计和其他各个领域。随着装备的复杂程度和技术含量越来越高,维修性、测试性对装备的作战能力、生存能力、机动性、维修人员产生了越来越重要的影响。
在信息高速发展的时代,现代雷达装备的机内测试技术(Built-in Technology,BIT)追求实时性、准确性、高效性。因此需要状态监测中的信号采集技术拥有高速、稳定的特性。雷达装备中的许多非电物理量(如温度、压力等等)和一些其它电参量(如电容、电阻、功率等等)都可以变成电压形式,并借助ADC(模/数转换器)得到稳定的高精度的数字信号,为信号特征分析提供可靠保证。
运用单片机实现各种需求的ADC的技术已经被广泛应用,并且技术日渐成熟稳定。为了满足不同信号处理和信号检测等要求,诞生了大量的结构不同,性能不一的单片机数据采集电路。主流趋势不外乎2种算法:逐次比较数模转换器和双积分型数模转换器。各有不同的优缺点,在不同领域有十分广泛的应用。本论文从稳定性考虑,选择了运用逐次比较数模转换器的单片机:STC12C5410系列。
1 硬件设计
1.1 STC12C5410AD
芯片的选择直接关系到硬件电路的设计和机内测试系统的灵敏度,而单片机STC12C5410AD是高速、低功耗的新一代增强型8051单片机,如图1所示。
STC12系列单片机是美国STC公司在8051单片机标准的内核结构上进行了较大改进推出的一款增强型8051单片机。STC12单片机从内核到指令,完全兼容8051的单片机;C代表工作电压在5.5~3.8V;12代表CPU同样的工作频率时,速度是8051的12倍;54代表RAM是512B,PCA/PW M是4路;10代表程序存储空间大小10 KB。AD表示有A/D转换功能,共计有8个ADC口,分别是P1.0~P1.7。可以通过编程设定其中任意一路为A/D转换口(需要将选中的I/O口设定为开漏和高阻模式)和设定转换速率,最快转换速率为210个时钟周期/次(最快速度可达200kHz),另外3种选择为420个时钟周期/次,630个时钟周期/次,840个时钟周期/次。
I/O口共计23个接口,分别是P1口8个、P2口8个、P3口7个;
有内置复位电路,可以通过软设计进行复位。
1.2 电路设计
电路原理图如图2所示,STC12C5410AD芯片内部晶振为5.2~6.8 MHz,为了提高精确度,设计时可以采用外接晶振,晶振可以根据实际情况选固定值。STC12C5410AD可以保证10位精确度的数字信号输出,刚好符合设计要求。供电电压电路采用的是9805稳压电路器,为了提高转换输出精确度,也可采用LM317稳压器的供电电路,调节输出电压达到STC12C5410AD的设计精准要5 V。A/D转换电路的输入电压为0~5 V,用电位器进行调节输入,设计电路实时跟进,转换输出稳定信号。
将串行口RXD与TXD外接MAX232,与PC相连,便于烧写和修改程序以及程序的在线调试,输出结果的在线监测。并行输出口选择P2.0~P2.7(高8位),P1.0~P1.1(低2位),每个管脚外接一个LED灯,便于观察管脚是否能够正常输出高低电平。A/D转换接口选择P1.7,外接接地电容后可以直接与调节电位器相连,调节电压范围为0~5 V。
2 软件设计
2.1 寄存器的相关设置
STC12C5410AD单片机要实现上述设计,必须对相关寄存器进行设置:
通过设置P1M0,P1M1两个寄存器对P1口选择作为A/D转换的输入口进行设置,比如若是选择P1.7,则设置:
P1M0=0x80;
P1M1=0x80;
选择I/O口模式为开漏(Open Drain),可以作为A/D使用,还可以选择高阻输入,设置为:
P1M0=0x80;
P1M1=0x00;
ADC_CONTR特殊功能寄存器,从高到底依次表示:
ADC_POWER SPEED1 SPEED0 ADC_FLAG CHS2CHS1 CHS0;
选择P1.7作为A/D输入管脚需将CHS2/CHS1/CHS0设置为:
CHS2=1;
CHS1=1;
CHS0=1;
SPEED1/SPEED0是数/模转换速率控制位,为了达到最快的转换速率,本设计采用210个时钟周期转换一次,设置为:
SPEED1=1;
SPEED0=1;
ADC_FLAG位,为模/数转换结束标志位,转换结束后自动跳变为“1”,需软件清零;
ADC_START,为ADC开始控制位,设置为:
ADC_START=1; //模/数转换开始
ADC_DATA,ADC_LOW2分别是10位模/数转换结果的高8位和低2位的寄存器。转换计算公式为:
(ADC_DATA[7:0],ADC_LOW2[1:0])=1 024*Vin/Vcc;
式中:Vin为模拟输入通道的输入电压;Vcc为单片机的供电电压,由单片机的供电电路9805或者LM317稳压电路输出端决定。
2.2 软件调试
A/D初始化子程序和启动A/D转换的子程序:
3 结语
机内测试系统在装备系统中所占比例不得超过装备的10%,否则会影响装备的正常运行。在信号采集中,硬件设计的简化尤其重要。本设计不但达到设计电路的精简元器件且多个测试点共用的要求。10位精度的ADC分辨率理论上可达到1/1 024,为了能够稳定的输出频率,试验中加入了中转寄存器保持转换结果,同时运用滑动滤波器消除不稳定信号的噪声影响。最后试验结果可保持长时间稳定输出,达到试验预期要求。同时最低位能够连续跳变,保证输出的连续性和准确性。本设计对模数转换器的高精度要求,在调试过程中需对STC12C5410AD单片机的供电电压进行微调。设计中运用LM317稳压器供电电路,调节输入电压,保证电压精确稳定在5 V,所达到效果和效率远远高于雷达装备的BIT的模数转换要求。同时该设计简单有效,且故障率低,能够持续保持稳定工作。该设计在保证设计要求条件下优化了硬件电路设计,精简元器件,降低成本和实际电路运行的故障率。本设计的不足之处有两点:集成化程度还是太低,解决方法是采用贴片小板设计;没用同时处理信号的能力。后续研究将主要针对这两点对其进行改进。
评论