计算机测控技术实验指导书正文.docx
- 文档编号:8655795
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:35
- 大小:1.10MB
计算机测控技术实验指导书正文.docx
《计算机测控技术实验指导书正文.docx》由会员分享,可在线阅读,更多相关《计算机测控技术实验指导书正文.docx(35页珍藏版)》请在冰豆网上搜索。
计算机测控技术实验指导书正文
实验一A/D、D/A转换应用实验
一、实验目的
1.掌握A/D、D/A转换的实现方法;
2.熟悉计算机测控系统中数据输入/输出通道的硬件设计原理;
3.熟悉计算机测控系统中数据输入/输出通道A/D、D/A转换的软件实现原理。
二、实验设备
Dofly系列Mini80E型单片机开发板一套
PC机一台
三、实验内容
1.硬件实现
(1)基本原理
本实验需要用到Dofly系列Mini80E型单片机开发板A/D、D/A模块,其实物硬件连接如图1-1所示。
从图中可看到,该模块由四个电位器W1、W2、W3、W4,四组-二引脚跳线J21,二引脚跳线J23、PCF8591芯片以及一个发光二极管LED12组成。
图1-1A/D、D/A转换实验硬件连接图
其硬件原理图如图1-2所示。
图1-2A/D、D/A转换实验硬件原理图
由图1-2可知,该模块数据输入通道A/D转换由电位器W1、W2、W3、W4,跳线J21以及PCF8591芯片实现。
电位器W1、W2、W3、W4分别构成了A/D转化的四个模拟量输入通道,它们一端接有电源电压VCC,通过调整各电位器的阻值便可改变各通道电压模拟量的大小。
这四个电压模拟量通过J21四组-二引脚跳线连接到PCF8591芯片的AIN0-AIN3端口,该芯片将四组模拟量A/D转化后,利用SCL和SDA两条信号线将转化好的数据量传输给单片机,并用8位LED数码管分4组进行显示。
当然,J21可以通过4个跳冒连接4路AD,则模拟量输入由电位器电压给定(如上述分析);如果需要使用外部电压源输入,可以拔掉跳冒,然后电压源接至J21的2、4、6、8引脚。
数据输出通道D/A转换由PCF8591芯片、跳线J23以及发光二极管LED12实现。
首先单片机通过SCL和SDA两条信号线将待转化的数字量传输给芯片PCF8591,D/A转换完成后则经过跳线J23将模拟电压值加到发光二极管上,而二极管的亮度则反映了D/A转化模拟量的大小。
J23上若连有跳冒则DA输出直接到LED12,若拔掉跳冒则LED不起作用,这时可以在J23的第1脚和地之间测量电压或者波形。
(2)PCF8591芯片
通过上述分析可知,PCF8591芯片是实现该A/D、D/A转换的核心芯片,同时它还要完成与单片机的数据通信工作。
PCF8591是具有I2C总线接口的8位A/D及D/A转换器。
有4路A/D转换输入,1路D/A模拟输出。
这就是说,它既可以作A/D转换也可以作D/A转换。
A/D转换为逐次比较型。
引脚图如图1-3所示。
结构图如图1-4所示。
电源电压典型值为5V。
图1-3PCF8591引脚图
AIN0~AIN3:
模拟信号输入端。
A0~A3:
引脚地址端。
VDD、VSS:
电源端。
(2.5~6V)
SDA、SCL:
I2C总线的数据线、时钟线。
OSC:
外部时钟输入端,内部时钟输出端。
EXT:
内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:
模拟信号地。
AOUT:
D/A转换输出端。
VREF:
基准电源端。
图1-4PCF8591结构图
I2C总线是Philips公司推出的串行总线,整个系统仅靠数据线(SDA)和时钟线(SCL)实现完善的全双工数据传输,即CPU与各个外围器件仅靠这两条线实现信息交换。
I2C总线系统与传统的并行总线系统相比具有结构简单、可维护性好、易实现系统扩展、易实现模块化标准化设计、可靠性高等优点。
PCF8591是一种具有I2C总线接口的A/D转换芯片。
在与CPU的信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现。
●器件总地址
PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。
飞利蒲公司规定A/D器件地址为1001。
引脚地址为A2A1A0,其值由用户选择,因此I2C系统中最多可接23=8个具有I2C总线接口的A/D器件。
地址的最后一位为方向位R/w,当主控器对A/D器件进行读操作时为1,进行写操作时为0。
总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。
●控制字节
控制字节用于实现器件的各种功能,如模拟信号由哪几个通道输入等。
控制字节存放在控制寄存器中。
总线操作时为主控器发送的第二字节。
其格式如下所示:
其中:
D1、D0两位是A/D通道编号:
00通道0,01通道1,10通道2,11通道3
D2自动增益选择(有效位为1)
D5、D4模拟量输入选择:
00为四路单数入、01为三路差分输入、10为单端与差分配合输入、11为模拟输出允许有效
D6模拟量输出允许标志位
当系统为A/D转换时,模拟输出允许为0。
模拟量输入选择位取值由输入方式决定:
四路单端输入时取00,三路差分输入时取01,单端与差分输入时取10,二路差分输入时取11。
最低两位时通道编号位,当对0通道的模拟信号进行A/D转换时取00,当对1通道的模拟信号进行A/D转换时取01,当对2通道的模拟信号进行A/D转换时取10,当对3通道的模拟信号进行A/D转换时取11。
I2C总线在传送数据过程中共有三种类型信号,它们分别是:
开始信号、结束信号和应答信号。
开始信号:
SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:
SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:
接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。
若未收到应答信号,由判断为受控单元出现故障。
在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答…一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。
2.软件实现
该模块软件编程主要实现I2C协议下PCF8591A/D、D/A转换的控制。
即通过IIC协议对PCF8591芯片进行D/A、A/D操作,读取电位器的电压,并输出模拟量,用LED亮度渐变指示。
其主程序流程图如图1-5所示,完整源程序见附录1
图1-5PCF8591ADDA转换主程序流程图
#include
#include
#defineAddWr0x90//写数据地址
#defineAddRd0x91//读数据地址
sbitSda=P1^2;//定义总线连接端口
sbitScl=P1^1;
bitADFlag;//定义AD采样标志位
unsignedcharcodeDatatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段数共阴码管段码表
dataunsignedcharDisplay[8];//定义临时存放数码管数值
/*------------------------------------------------
主程序
------------------------------------------------*/
voidmain()
{
unsignedcharnum;//DA数模输出变量
unsignedcharADtemp;//定义中间变量
Init_Timer1();
while
(1)
{
DAC(num);//DA输出,可以用LED模拟电压变化
num++;//累加,到256后溢出变为0,往复循环。
显示在LED上亮度逐渐变化
mDelay(20);//延时用于清晰看出变化
if(ADFlag)//定时采集输入模拟量
{
ADFlag=0;
ADtemp=ReadADC(0);
Display[0]=Datatab[(ReadADC(0))/50]|0x80;//处理0通道电压显示
Display[1]=Datatab[((ReadADC(0))%50)/10];
ADtemp=ReadADC
(1);
Display[2]=Datatab[((ReadADC
(1))/50)]|0x80;//处理1通道电压显示此通道暂时屏蔽,可以自行添加
Display[3]=Datatab[((ReadADC
(1))%50)/10];
ADtemp=ReadADC
(2);
Display[4]=Datatab[((ReadADC
(2))/50)]|0x80;//处理2通道电压显示此通道暂时屏蔽,可以自行添加
Display[5]=Datatab[((ReadADC
(2))%50)/10];
ADtemp=ReadADC(3);
Display[6]=Datatab[((ReadADC(3))/50)]|0x80;//处理3通道电压显示此通道暂时屏蔽,可以自行添加
Display[7]=Datatab[((ReadADC(3))%50)/10];
}
}
}
四、实验步骤
1.完成硬件连接,将跳线J21、J23引脚全部按要求用跳冒连接,用串口下载线和USB电源线将PC机与单片机连接。
2.打开单片机编译环境KeilC,编写并编译程序,用程序烧写软件将其.hex文件下载到单片机,观察现象。
3.分别调节电位器W1、W2、W3、W4的大小,观察LED数码管的显示数值有何变化,同时观察发光二极管LED12的亮度有何变化。
4.将跳线J21上了四个跳冒拔掉,分别在J21的2、4、6、8引脚上接电压源,观察LED数码管显示值是否正确。
5.将跳线J23上的跳冒拔掉,在J23的第1脚和地之间接上示波器,观察D/A变换输出的波形图。
五、实验结果分析
1.完成步骤2和步骤3,观察并记录所得实验现象。
2.记录步骤4与步骤5中的数据与波形,并分析所测得数据与波形图是否正确。
3.为什么在程序初始化中将写数据地址设置为0x90,读数据地址设置为0x91?
4.PCF8591芯片通过哪些信号线与单片机连接?
实验二步进电机控制实验
一、实验目的
1.掌握步进电机的工作原理;
2.掌握单片机实现步进电机控制的基本方法,其中包括硬件和软件实现两部分;
3.熟悉计算机测控系统中,步进电机作为控制对象的系统设计方法。
二、实验设备
Dofly系列Mini80E型单片机开发板一套
PC机一台
28BYJ-48型步进电机一个
杜邦线若干
三、实验内容
1.硬件实现
(1)基本原理
本实验需要用到Dofly系列Mini80E型单片机开发板步进电机控制模块,其实物硬件连接如图2-1所示。
在实验过程中,应将步进电机的红色对准图中的VCC,其他对准ABCD插在J20上,然后用杜邦线从J18的ABCD于p1.0p1.1p1.2p1.3短接,即可完成实验硬件连线部分。
图2-1步进电机控制部分硬件连接图
该实验单片机与步进电机连接的接口电路原理图如图2-2所示。
从原理图中可知,由于单片输出信号的电压太小,无法驱动步进电机转动,因此在接口电路的设计中需要有ULN2003芯片进行电平转换,提高信号的电压值来驱动步进电机转动。
图2-2步进电机控制接口电路原理图
(2)ULN2003
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
其引脚如图2-3所示,相应功能框图如图2-4所示。
图2-3ULN2003引脚图图2-4ULN2003功能框图
由图2-4可知,LN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平。
具有如下特点:
●每片封装了7个达林顿管
●每个驱动管的输出电流可达500mA(峰值600mA)
●输出电压50V
●为感性负载集成了抑流二极管(SuppressionDiode)
●对于较大的电流,可以将输出并接使用
●输入TTL/CMOS/PMOS/DTL与兼容
(3)步进电机工作原理
步进电机是纯粹的数字控制电动机。
它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机只能通过脉冲电源供电才能运行,它不能直接使用交流电源和直流电源;此外步进电机的角位移与输入脉冲严格成正比,因此,当它转一转后,没有累计误差,具有良好的跟随性。
步进电机由定子和转子两部分组成。
以四相步进电机为例,定子上有四组相对的磁极,每对磁极缠有同一绕组,形成一相。
定子和转子上分布着大小、间距相同的多个小齿。
当步进电机某一相通电形成磁场后,在电磁力的作用下,转子被强行推动到最大磁导率(或最小磁阻)的位置。
本实验中使用的四相步进电机在八拍工作方式时,走动5.625°角度需64步;一圈分为64个刻度,因而走动一圈需64×64步,即4096步。
另外必须按照一定的次序给每个相通电,才能正常完成四步一个齿距的动作。
相电压为12V,其它参数按电机型号,查阅相关资料,本模块使用电机型号为:
28BYJ48型,如下图所示。
图2-528BYJ48步进电机实物图
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。
。
。
),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。
。
。
),八拍(A-AB-B-BC-C-CD-D-DA-A。
。
。
)。
图2-6步进电机原理图
四相四拍的通电顺序如表2-1所示:
表2-1
引线颜色
引脚号
1
2
3
4
红色
1
+
+
+
+
橙色
2
-
黄色
3
-
粉色
4
-
蓝色
5
-
红线接电源5V,橙色电线接P1.0口,黄色电线接P1.1口,粉色电线接P1.2口,蓝色接P1.3口。
由于单片机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,如上所述。
按照上述电机连线方式,即橙色线接P1口最低位,蓝色线接P1口高位,则A、B、C、D端分别通电对应P1口赋值情况如下:
蓝
粉
黄
橙
十六制(P1口)
0
0
0
1
0x01
0
0
1
0
0x02
0
1
0
0
0x04
1
0
0
0
0x08
根据以上分析可得,定义旋转相序:
unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};//正转表格
unsignedcharcodeB_Rotation[4]={0x08,0x04,0x02,0x01};//反转表格
同理,四相八拍的通电顺序如表2-2所示:
表2-2
引线颜色
引脚号
1
2
3
4
5
6
7
8
红色
1
+
+
+
+
+
+
+
+
橙色
2
-
-
-
黄色
3
-
-
-
粉色
4
-
-
-
蓝色
5
-
-
-
按照上述电机连线方式,即橙色线接P1口最低位,蓝色线接P1口高位,则A、B、C、D端分别通电对应P1口赋值情况如下:
蓝
粉
黄
橙
十六制(P1口)
0
0
0
1
0x01
0
0
1
1
0x03
0
0
1
0
0x02
0
1
1
0
0x06
0
1
0
0
0x04
1
1
0
0
0x0c
1
0
0
0
0x08
1
0
0
1
0x09
所以可以定义旋转相序:
unsignedcharcodeF_Rotation[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转相序表
unsignedcharcodeB_Rotation[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反转相序表
该步进电机主要技术参数如下:
注意事项:
相序不能接错,否则不能正常转动
速度不能过高,否则不足以驱动电机转动。
2.软件实现
根据硬件原理,程序按照下面方式就可以使电机运转:
AB-BC-CD-DA-AB或者A-B-C-D-A前者力矩大。
即表示A相通电,其他都断电,然后B相通电,其他都断电,以此类推。
A切换到B的时间可以调整,即调整转速。
反转如下D-C-B-A-D或者AD-DC-CB-BA-AD。
并且通过按键S4即可控制电机正转、反转或者停止,其源程序如下:
/*-----------------------------------------------
名称:
步进电机
内容:
1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/
#include
unsignedcharFlag;//定义正反转和停止标志位
sbitKEY=P3^3;
unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};//正转表格
unsignedcharcodeB_Rotation[4]={0x08,0x04,0x02,0x01};//反转表格
/******************************************************************/
/*延时函数*/
/******************************************************************/
voidDelay(unsignedinti)//延时
{
while(--i);
}
/******************************************************************/
/*主函数*/
/******************************************************************/
main()
{
unsignedchari;
EX1=1;//外部中断0开
IT1=1;//边沿触发
EA=1;//全局中断开
while(Flag==0)
{
P0=0x71;//显示F标示正转
for(i=0;i<4;i++)//4相
{
P1=F_Rotation[i];//输出对应的相可以自行换成反转表格
Delay(500);//改变这个参数可以调整电机转速,数字越小,转速越大
}
}
while(Flag==1)
{
P0=0x7C;//显示b标示反转
for(i=0;i<4;i++)//4相
{
P1=B_Rotation[i];//输出对应的相
Delay(500);//改变这个参数可以调整电机转速,数字越小,转速越大
}
}
while(Flag==2)//停止
{
P0=0x6D;//显示S
P1=0;
}
}
/******************************************************************/
/*中断入口函数*/
/******************************************************************/
voidISR_Key(void)interrupt2using1
{
Delay(500);
if(!
KEY)
{
Flag++;//s4按下触发一次
if(Flag==3)
Flag=0;
}
}
四、实验步骤
1.完成硬件连接,将步进电机的红色对准图中的VCC,,其他对准ABCD插在J20上,然后用杜邦线从J18的ABCD于p1.0p1.1p1.2p1.3短接,用串口下载线和USB电源线将PC机与单片机连接。
2.打开单片机编译环境KeilC,编写并编译程序,用程序烧写软件将其.hex文件下载到单片机,观察现象。
3.按下S4按键,观察步进电机能否正常正转、反转和停止。
4.分析并修改程序,运用四相八拍的通电顺序来控制电机正转、反转和停止。
五、实验结果分析
1.如果用杜邦线将J18的ABCD于p1.3p1.2p1.1p1.0短接(与实验步骤中接法相反),则可观察到怎样的现象?
2.如果用p1.1p1.2p1.3p1.4口来控制步进电机的正、反转和停止,程序应怎样修改?
3.画出本实验软件控制代码的流程图。
4.若用四相八拍的通电顺序来控制电机正转、反转和停止,程序应如何修改?
实验三计算机温度PID控制实验
一、实验目的
1.掌握计算机实现温度测控仪温度外部控制的系统组成结构与原理;
2.掌握该外部温控系统的P、I、D参数整定方法。
二、实验设备
杭州英联YL系列温度测量控制仪一台
YL610型现代检测技术综合实验台中RS485多通道数据采集控制器模块
PC机一台
导线若干
三、实验内容
1.系统介绍
该实验系统原理框图如图3-1所示。
它主要用于对实验室已有的温控对象——温度测量控制仪的温度进行实时的外部PID控制。
首先,通过上位PC机的控制界面,可以为系统设定一个温度值,另一方面通过实验台上的RS485多通道数据采集控制器模块可以对温度测控仪目前的温度进行采集得到反馈值,并传输到PC机。
PC机将给定值与反馈值进行比较,同时运用PID控制算法输出一个温度控制量,该控制量通过数据采集卡传输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 测控 技术 实验 指导书 正文