AD与DA转换与数字PID调节器算法的研究实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东南大学自动化学院

实验报告

课程名称:计算机控制技术

第 1 次实验

实验名称: A/D与D/A转换 & 数字PID调节器算法的研究

院(系):自动化学院专业:自动化

姓名:学号:

实验室: 416 实验组别:

同组人员:实验时间: 2014年 3月 20日评定成绩:审阅教师:

第一部分实验一A/D与D/A转换

一、实验目的

1、通过编程熟悉VC++的Win32 Console Application的编程环境;

2、通过编程熟悉PCI-1711数据采集卡的数据输入输出;

3、了解采集卡AD转换芯片的转换性能;

4、通过实验了解字节数与二进制数的转换。

二、实验设备

1.THBDC-1型控制理论·计算机控制技术实验平台

2.PCI-1711数据采集卡一块

3.PC机1台(安装软件“VC++”及“THJK_Server”)

三、实验原理

1.数据采集卡

PCI-1711是输入功能强大的低成本多功能PCI总线卡。

特点:16路单端模拟量输入

12位A/D转换器,采样速率可达100KHz

每个输入通道的增益可编程

自动通道/增益扫描

卡上1K采样FIFO缓冲器

2路12位模拟量输出(仅PCI-1711)

16路数字量输入及16路数字量输出

可编程触发器/定时器

图1-1 PCI-1711卡管脚图

2. AD/DA转换原理

该卡在进行A/D转换实验时,输入电压与二进制的对应关系为:-10~10V对应为0~4095(A/D转换精度为12位)。

D/A通道输出围为0~10V。

四、实验步骤

1、仔细阅读“PCI-1711数据采集卡驱动函数说明.doc”文档。

2、将实验台上的“阶跃信号发生器”的输出端通过导线与PCI-1711数据采集接口的AD1通道输入端相连,同时将PCI-1711数据采集接口的AD1通道通过导线与实验平台上的交直流数字电压表(选取直流档)的输入端相连;

3、打开ADDA实验VC++程序文件夹,打开.dsw工程文件,添加缺少的main函数(主程序),编程实现以下功能:

在运行程序后的DOS界面上应显示AD第一通道输入值,同时并显示出转换后对应的以十进制存放的二进制码,并将其转换为二进制码;

在程序中使用输出函数通过DA1通道输出一个0~10V的电压(PCI-1711卡无法输出负电压),然后使用THBDC-1型实验平台上的直流数字电压表进行测量,并确认输出值是否正确。

五、实验记录

1.系统main函数如下:

void main() //主程序

{

init_1711();

for(;;)

{

ADinput(0); //读取AD1通道的电压值

printf("AD1通道输入值:%.3f\n",fVoltage);

ADbinaryIn(0); //读取AD1通道的二进制电压值

printf("AD1通道的二进制值为(以十进制数存放):%d\n",bin);

//-10V~10V对应为(0~4095) //AD数据转换为二进制

char *temp = new char[NUM+1];

Convert(bin,temp,NUM); //十进制数转换为二进制数的转换函数

printf("AD1通道数据转换为二进制为:%s\n",temp);

delete temp;

DAoutput(0,3.2); //从DA1通道输出3.2V的电压值

printf("DA1通道输出值:%.3f\n",ptAOVoltageOut.OutputValue);

DABinaryout(1,4095);

printf("DA1通道输出值:%d\n",ptAOBinaryOut.BinData);

printf(" \n");

Sleep(1000);

}

expexit();

}

2.程序的主要函数:

void Convert(USHORT data,char* temp,long Dim); //十进制数转换为二进制数

void ErrorHandler( DWORD dwErrCde ); //通过错误代码来获取相应的错误信息函数void ErrorStop( long*, DWORD ); //出错处理函数

bool init_1711(); //初始化设备

void expexit(); //关闭设备

float ADinput(unsigned char chan); //模拟量输入函数

bool DAoutput(unsigned char chan,float DAdata); //模拟量输出函数USHORT ADbinaryIn(unsigned char chan); //模拟量输入函数(二进制形式)

3.由于是验证性实验,以下为我们记录的两组数据:

①A/D转换

通过改变滑动变阻器的阻值,改变AD1输入端输入电压的大小,用电压表测出实际输入的电压值,并记录通过A/D转换计算机采集的十进制与二进制值,程序运行结果见下表中,

程序将外界输入电压通过A/D转换得到与原输入值大致相等的电压,输入电压与二进制的对应关系为:-10~10V对应为0~4095,采用“除二取余”法计算相应的二进制码,验证发现结果是比较准确的,误差较小。

②D/A转换

在程序中多次改变输出电压的大小(通过改变主程序中DAoutput(0,x)中的函数),利用电压表测量实际DA1输出的电压值,运行程序后,得到的具体的D/A转换的对应关系如

由表中数据可以看出,DA1通道的输出电压值与程序中设定的值十分接近(相等),在误差允许的围认为输出值正确。

相关文档
最新文档