基于Atmega128的串行ADTLV1544设计.docx

上传人:b****5 文档编号:28993039 上传时间:2023-07-20 格式:DOCX 页数:20 大小:232.26KB
下载 相关 举报
基于Atmega128的串行ADTLV1544设计.docx_第1页
第1页 / 共20页
基于Atmega128的串行ADTLV1544设计.docx_第2页
第2页 / 共20页
基于Atmega128的串行ADTLV1544设计.docx_第3页
第3页 / 共20页
基于Atmega128的串行ADTLV1544设计.docx_第4页
第4页 / 共20页
基于Atmega128的串行ADTLV1544设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于Atmega128的串行ADTLV1544设计.docx

《基于Atmega128的串行ADTLV1544设计.docx》由会员分享,可在线阅读,更多相关《基于Atmega128的串行ADTLV1544设计.docx(20页珍藏版)》请在冰豆网上搜索。

基于Atmega128的串行ADTLV1544设计.docx

基于Atmega128的串行ADTLV1544设计

目录

1、设计任务………………………………………4

2、芯片简介………………………………………4

2.1特点…………………………………………4

2.2引脚说明……………………………………4

2.3电气特性……………………………………5

2.4时序分析……………………………………6

3、系统方案设计…………………………………9

3.1信号输入处理模块的论证与选择…………9

3.2AD转换模块的论证与选择………………10

3.3软件程序模块的论证与选择……………10

4、系统理论分析与计算………………………11

4.1信号输入处理电路的分析与计算…………11

4.2AD转换电路的分析与计算………………11

4.3软件程序的分析与实现……………………11

5、电路设计………………………………………16

5.1系统总体框图………………………………16

5.2信号输入处理电路原理图…………………16

5.3AD转换电路原理图…………………………16

5.4电源…………………………………………17

6、测试方案与测试结果…………………………17

6.1测试方案……………………………………17

6.2测试条件与仪器……………………………17

6.3测试结果与分析……………………………17

6.3.1测试结果(数据)……………………18

6.3.2测试分析与结论……………………….18

附录1参考文献…………………………………19

附录2系统原理图………………………………19

 

1、设计任务

设计制作一个AD转换电路,要求使用Atmega128对测量数据进行处理及显示。

AD转换芯片要求使用10位串行模数转换芯片TLV1544。

2、芯片简介

2.1特点

·转换时间≤10微秒

·10位分辨率的ADC

·可编程掉电模式1μA的...

·宽范围的单电源供电为2.7V至5.5V

·模拟0V至VCC输入范围

·内置模拟4路复用模拟输入通道

·TMS320系列DSP和微处理器SPI和QSPI的兼容串行接口

·转换结束标志(EOC)

·固有的采样和保持功能

·内建自测试模式

·可编程电源和转换率

·为扩展采样的异步起动转换

·硬件I/O输入时钟相位调整

2.2引脚说明

名称序号属性说明

A0-A36-9I模拟输入端口。

内部的模拟输入多路复用。

(对于一个源阻抗大于1kΩ的,应该用异步启动来增加采样时间)。

CS16I片选。

CS的下降沿复位内部计数器和控制端口,在最快时间内使能DATAIN,DATAOUT和I/OCLK。

CS上升沿在建立时间内禁止DATAIN,DATAOUT和I/OCLK。

CSTART10I采样/转换启动控制。

CSTART控制了从选定的多重通道模拟输入的采样开始。

它的下降沿启动模拟输入信号采样。

上升沿置于保持模式的采样和保持功能,并开始转换。

当CS为高时,CSTAR是受I/OCLK独立控制的。

其低电平控制开关电容阵列的采样周期。

如果不使用CSTART时,将其连接到VCC。

DATAIN2I串行数据输入。

4位串行数据输入控制字选择所需的模拟输入通道和测试电压在下一个正常周期内被实现。

这些控制字也可以设置转换率,使能掉电模式。

当在微处理器模式下运行时,数据的MSB首先输入,随着前4个I/O时钟的上升沿或下降沿。

DATAOUT1O三态的A/D转换结果串行输出。

当CS为高电平时数据输出端口呈高阻抗态,当CS为低或在FS之后【在DSP(模式)】。

有了一个有效的CS信号,数据输出被删除从高阻抗状态,驱动级的逻辑对应的最高位或最低有效位值以前的转换结果。

数据输出的变化在降低(微处理器模式)或增加(数字信号处理器模式)的I/O时钟边缘。

EOC4O结束转换。

EOC从高逻辑电平到低的逻辑电平在第十上升或第十下降(DSP模式)的I/O时钟边缘仍然保持很低,直到转换完成和数据的准备转移。

EOC也可以表明,该转换器正忙。

FS13IDSP的同步输入。

FS表明一个串行数据到启动或出设备。

当与微处理器的接口设备时FS是绑到VCC,

GND11返回地面的内部电路。

所有电压测量方面的接地,除非另有说明。

INVCLK12I倒时钟输入。

当倒置的I/O时钟是作为输入源使用时INVCLK是接GND的,这会影响双方的微处理器和DSP接口。

如果I/OCLK不倒置,INVCLK是绑到VCC的。

INVCLK也可以调用一个内置的测试模式。

I/OCLK3I输入/输出时钟。

的I/O时钟接收串行I/O在这两种模式时钟输入并执行以下四个每种模式功能:

微处理器模式

•当INVCLK=的VCC,I/O的时钟时钟到输入数据输入数据的4位寄存器的第一个四上升边缘的I/O的政务↓后与多路复用地址后,可用时钟上升沿第四。

当智富时钟=接地,输入数据位时钟的第一个下降沿,而不是4个。

在第四次下降的I/O时钟,对选定的多重输入模拟输入电压的优势

•开始充电电容阵列,并继续这样做,直到第十上升沿我只有在取样周期延长/输出时钟的时间,以便在那里对CSTART确定何时结束采样周期。

•输出数据位变化的第一个下跌的I/O时钟边缘不论智富时钟条件10。

•I/O的时钟转移到内部的状态机转换控制我的第十上升的边缘/输出时钟不论智富时钟条件。

REF+15I上参考电压(名义上的VCC)。

最大输入电压范围取决于应用之间的电压差到REF+和REF的-。

REF-14I较低的参考电压(名义上地)

VCC5I正电源电压。

2.3电气特性

电源电压范围,Vcc--------–0.5Vto6.5V

输入电压范围,VI---------–0.3VtoVCC+0.3V

输出电压量程,VO---------–0.3VtoVCC+0.3V

正极参考电压,Vref+------VCC+0.1V

负极参考电压,Vref–-----–0.1V

除了高速转换器和多功能的控制能力,该设备具有一个片上4通道多路复用器,可以选择任何的8个模拟输入或任何3个内部自测电压之一。

在采样和保持功能是自动的,除了延长采样周期,其中采样周期是由异步CSTART下降沿开始。

在A/D转换结束,最终的转换(平机会)的输出变为高电平,表示转换完成。

TLV1544的设计与操作的电源电压低功率消耗非常广泛。

省电功能是进一步通过软件编程的掉电模式和转换率提高。

该转换器在设备注册功能差的高阻抗输入,方便参考比例转换,缩放,并从逻辑和电源噪声模拟电路隔离。

一个开关电容设计使低错误转换在整个工作温度范围。

 

2.4时序分析(微机模式下)

<1>

此模式下,在CS的下降沿复位内部计数器和控制端口,在最快时间内使能DATAIN,DATAOUT和I/OCLK。

在I/OCLK的前4个时钟脉冲的上升沿写入方式控制字的4位数据,MSB首先发送。

再经过6个时钟脉冲完成地址的输入。

方式控制字是来选定模拟输入通道以及参考电压。

在写入方式控制字之后,再经过10个时钟脉冲来完成模数转换,EOC的下降沿标志转换结束。

然后通过继续写入10个时钟脉冲来读取上一次转换的结果,第一个脉冲得到的是MSB,最后一个脉冲得到的是LSB。

整个写读过程需要30个时钟脉冲,在下一次读取数据的时候还需要重复上述过程。

<2>

此模式下,在CS的下降沿复位内部计数器和控制端口,在最快时间内使能DATAIN,DATAOUT和I/OCLK。

在I/OCLK的前4个时钟脉冲的下降沿写入方式控制字的4位数据,MSB首先发送。

再经过6个时钟脉冲完成地址的输入。

方式控制字是来选定模拟输入通道以及参考电压。

在写入方式控制字之后,再经过10个时钟脉冲来完成模数转换,EOC的下降沿标志转换结束。

然后通过继续写入10个时钟脉冲来读取上一次转换的结果,第一个脉冲得到的是MSB,最后一个脉冲得到的是LSB。

整个写读过程需要30个时钟脉冲,在下一次读取数据的时候还需要重复上述过程(完全类似于上一种模式)。

 

3、系统方案设计

本系统方案根据TLV1544的输入信号要求设计相对应的输入信号处理模块,并根据芯片的几种工作模式来选择芯片的连接电路以及程序的设计。

程序的设计是由芯片驱动程序设计、采样数据处理程序设计、显示程序设计等三个模块组成。

电路由电压跟随器、运放比例缩小电路、电位抬高电路、反相等比跟随电路、电压跟随器以及AD转换电路等电路模块组成。

真有效值计算公式:

3.1信号输入处理模块的论证与选择

根据TLV1544的测量信号输入要求“–0.3VtoVcc+0.3V”可见,输入信号要求单极性且峰峰值不得超过电源电压0.3V。

一般的输入信号均为双极性,如果输入信号峰峰值很大就需要将其等比缩小并将其的基准电压值抬高。

①比例缩小电路:

方案一:

通过电阻网络缩小信号幅值。

即通过分压电阻来实现,此方案对电阻的精确度要求很高,别电阻容易受温度影响,最后的结果误差可能很大,再者大电阻对信号的能量有损耗并且都含有一定的寄生电容,也会对分压效果有很大影响。

所以放弃此方案。

方案二:

通过运放缩小信号幅值。

根据运放组成的比例放大电路的原理来构成比例缩小电路。

,只需要增大输入电阻的阻值以及减小反馈电阻的阻值来完成放大比例小于1的缩小。

运放的精度比较高,且受外界影响比较小,所以选择此方案。

②通交隔直电容

在缩小电路后面加一个4.7uf的电解电容,来防止抬高电位的直流量灌入缩小运放中。

因为比例缩小运放的输出阻抗很小,而后一级的等比跟随输入阻抗很大,所以必需加通交隔直电容。

③抬高电位电路

用电阻分压网络来完成。

④等比跟随电路

因为AD转换要求输入阻抗很小来完成最大功率传输,所以前级应加电压跟随器。

由于前级比例缩小电路将信号反相,所以此极只能用反相等比运放完成电压跟随器的功能。

⑤电压跟随器

本电路在前后都加上了电压跟随器是为了降低外界对输入信号的影响。

实验结果表示输出波形很完美,几乎没有任何杂波。

3.2AD转换模块的论证与选择

采用TLV1544在微机模式下的方式一进行编程与实验。

3.3软件程序模块的论证与选择

由芯片驱动程序设计、采样数据处理程序设计、显示程序设计等三个模块组成。

1芯片驱动程序是根据时序分析里面,对微机模式下的

方式一时序图来编写程序。

2采样数据处理是通过冒泡发得到数据中的最大值和最小值。

通过均方根运算得到其真有效值。

4、系统理论分析与计算

4.1信号输入处理电路的分析与计算

①比例缩小

②等比跟随

4.2AD转换电路的分析与计算

通过程序调试当设定采样点数为360个时,误差接近为零。

4.3软件程序的分析与计算

实验程序:

/**************************tlv1544.h***************************/

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

#define_1602C_PPORTF

#define_1602C_DDDRF

#define_1602D_PPORTE

#define_1602D_DDDRE

#defineOUT_PPORTA

#defineOUT_DDDRA

#defineIN_PPORTC

#defineIN_DDDRC

/**************************main.c***************************/

#include

#include

#include

#include"tlv1544.h"

#defineCS2//PA2输出

#defineDO0//PC0输入

#defineA1//PA1输出

#defineCLK0//PA0输出

#defineN480

#defineV5.0

uintDAT[N];

floatV_max,V_min;

floatV_effective;

voidinit()//端口初始化函数

{

OUT_P=0XFF;//对ADC芯片的CS、A、CLK的控制

OUT_D=0XFF;//输出数据

IN_P=0X00;//对ADC芯片的DO的数据接收

IN_D=0X00;//接收数据

_1602C_P=0XFF;

_1602C_D=0XFF;

_1602D_P=0XFF;

_1602D_D=0XFF;

}

voidmain()

{

uintc1,c2,c3,i;

init();

while

(1)

{

for(i=0;i

{

DAT[i]=TLV1543(0X00);

NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();

NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();

}

RMS();

c1=(V*V_max/1023)*10000;

c2=(V*V_min/1023)*10000;

c3=V_effective*10000;

show_1602(c1,c3);

}

}

uintTLV1543(ucharport)//读数据

{

ucharah=0,al=0;

uinti,j,ad=0x0000;//确定得到数据的格式

OUT_P|=BIT(CS);

OUT_P&=~BIT(CLK);

OUT_P&=~BIT(CS);//片选使能

port<<=4;

for(i=0;i<4;i++)

{

if(port&0X80)

{

OUT_P&=~BIT(CLK);

OUT_P|=BIT(A);

OUT_P|=BIT(CLK);

}

else

{

OUT_P&=~BIT(CLK);

OUT_P&=~BIT(A);

OUT_P|=BIT(CLK);

}

port<<=1;

}

for(i=0;i<6;i++)

{

OUT_P&=~BIT(CLK);

OUT_P|=BIT(CLK);

}

for(i=0;i<10;i++)

{

OUT_P|=BIT(CLK);

OUT_P&=~BIT(CLK);

}

OUT_P|=BIT(CS);

NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();

OUT_P&=~BIT(CS);

for(i=0;i<2;i++)//取D9,D8位数据

{

OUT_P|=BIT(CLK);

ah<<=1;

if(PINC&BIT(0))

ah+=0x01;//上升沿读数据

OUT_P&=~BIT(CLK);

}

for(i=0;i<8;i++)//取D7~D0数据

{

OUT_P|=BIT(CLK);

al<<=1;

if(PINC&BIT(0))

al+=0x01;

OUT_P&=~BIT(CLK);

}

OUT_P&=BIT(CS);

ad=(uint)ah;

ad<<=8;

ad+=(uint)al;//得到AD值

returnad;//返回10位ad采样数据

}

voidRMS()

{

uinti;

floatconvert;

V_effective=0.0;

V_max=V_min=DAT[0];

for(i=0;i

{

if(DAT[i]>V_max)V_max=DAT[i];

if(DAT[i]

}

for(i=0;i

{

convert=V*DAT[i]/1023;

V_effective+=convert*convert;

}

V_effective=sqrt(V_effective/(N));

}

/**************************1602.c***************************/

#include

#include

#include"tlv1544.h"

constucharju_1[]="MAX:

";

constucharju_2[]="T-RMS:

";

constucharASCII[]={48,49,50,51,52,53,54,55,56,57,46,47,114,86};

//012345678910.11\12r13s

voidshow_1602(uintx,uinty)

{

ucharDAT_1[8]={0,},DAT_2[8]={0,};

ucharm,n,i,j;

_1602C_P&=~BIT

(2);

write_com(0x38);

delay(5);

write_com(0x0c);

delay(5);

write_com(0x06);

delay(5);

DAT_1[0]=x/100000;

DAT_1[1]=x/10000%10;

DAT_1[2]=10;

DAT_1[3]=x/1000%10;

DAT_1[4]=x/100%10;

DAT_1[5]=x/10%10;

DAT_1[6]=x%10;

DAT_1[7]=13;

DAT_2[0]=y/100000;

DAT_2[1]=y/10000%10;

DAT_2[2]=10;

DAT_2[3]=y/1000%10;

DAT_2[4]=y/100%10;

DAT_2[5]=y/10%10;

DAT_2[6]=y%10;

DAT_2[7]=13;

write_com(0x80+0x01);

delay(5);

for(n=0;n<4;n++)

{

write_dat(ju_1[n]);

delay

(1);

}

write_com(0x80+0x06);

delay(5);

for(m=0;m<8;m++)

{

write_dat(ASCII[DAT_1[m]]);

delay

(1);

}

write_com(0x80+0x40);

delay(5);

for(i=0;i<6;i++)

{

write_dat(ju_2[i]);

delay

(1);

}

write_com(0x80+0x46);

delay(5);

for(j=0;j<8;j++)

{

write_dat(ASCII[DAT_2[j]]);

delay

(1);

}

}

voidwrite_com(ucharcom)

{

_1602C_P&=~BIT(0);

_1602C_P&=~BIT

(1);

_1602D_P=com;

_1602C_P|=BIT

(2);

delay

(1);

_1602C_P&=~BIT

(2);

}

voidwrite_dat(uchardat)

{

_1602C_P|=BIT(0);

_1602C_P&=~BIT

(1);

_1602D_P=dat;

_1602C_P|=BIT

(2);

delay

(1);

_1602C_P&=~BIT

(2);

}

/**************************delay.c***************************/

#include

#include

#include"tlv1544.h"

voiddelay(uintms)

{

intj;

for(;ms>0;ms--)

for(j=0;j<114;j++)NOP();

}

5、电路设计

5.1系统总体框图

5.2信号输入处理电路原理图

5.3AD转换电路原理图

 

5.4电源

电源为AD芯片提供+5V电源,为输入处理电路提供±5V电源,确保电路的正常稳定工作。

要确保正负极接法的准确性。

6、测试方案与测试结果

6.1测试方案

将电路分级进行测试,也就是说,从方波振荡信号产生到最后波形合成,一级一级的检测。

确认一级准确无误后,再接上下一级电路,测量前后两级是否正常工作。

所有模块板子都要保证所有地线共线、电源线共线。

6.2测试条件与仪器

测试条件:

检查无误,硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

测试仪器:

数字万用表、示波器、稳压电源。

 

6.3测试结果与分析

6.3.1测试结果(数据)

f(KHz)

VMAX(源)

VMAX(测)

VRMS(源)

VRMS(测)

5.07

2.58

2.60

1.76

1.77

10.01

2.58

2.60

1.76

1.76

15.53

2.58

2.60

1.75

1.76

20.10

2.58

2.60

1.75

1.76

25.86

2.58

2.62

1.75

1.77

30.76

2.58

2.62

1.75

1.77

35.61

2.58

2.62

1.74

1.77

40.89

2.58

2.62

1.74

1.76

45.63

2.58

2.62

1.74

1.76

50.45

2.58

2.62

1.74

1.76

6.3.2测试分析与结论

根据实验数据,随着输入信号频率的增加,误差也随着增加。

误差基本保持在40mv以内。

误差率为:

1.5%。

在测试过程中,AD芯片的输出很不稳定,时有时无,通过多次实验观察发现,将示波器探头接触到DATA-OUT时,输出就很稳定,由此联想到示波器本身含有1MΩ的阻抗以及30pF的电容,所以在DATA-OUT输出端口通过一个10pF的小电容接地,输出稳定。

附录1参考文献

[1]邱关源、罗先觉主编·《电路》。

北京:

高等教育出版社。

2006.5

[2]康光华主编·《模拟电子技术基础》。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1