• 沒有找到結果。

A/D 转换

在文檔中 目 录 第 1 章 (頁 68-72)

第 5 章 单片机及嵌入式系统的课程教学

5.5 A/D 转换

int a;

a=serial_getchar();

beep();

printf("Rev a = %d\n",a);

}

AS-UII 的 JC 发射程序:

void main() {

int a=0;

serial_putchar(a);

beep();

printf("Sen a = %d\n",a);

}

5.5 A/D 转换

A/D 转换器是将模拟量转换为一定进制的数字量。A/D 转换器大多是将电压量转换为正 比的二进制数字量,乘以转换系数后可获得电压的数值量,也有先将电压量转换为时间或频 率,然后再经计数得到电压的数值量。

A/D 转换器的电路主要由时钟脉冲发生器、逻辑电路、移位寄存器 aN-1,...a1,a0、D/A 电路及其开关指令数字寄存器 BN-1,...B1,B0 构成。其转换原理如图 5.8 所示。该图以八位 以及 0~10V 量程的 A/D 转换器为例说明采样原理。假设欲测量的采样电压 Vinp=6.6 伏,则 A/D 转换器的工作流程是:当启动脉冲输入后,控制逻辑开始工作,它使移位寄存器初始化 为零,同时给时钟脉冲开门,系统在时钟脉冲节拍控制下同步工作。第一个时钟脉冲控制移 位寄存器、D/A 数据寄存器的最高位 a7 和 B7 置“1”,其余各位置“0”。二进制数 10000000 加到 D/A 转换器上,这时 D/A 转换器的输出电压

VDA= =5v

图 5.8 A/D 转换电路逐步逼近原理图

AS-UII 的 ASBUS 总线上有 A/D 转换接口。可以直接对模拟量进行转化。以红外测距卡为例 来说明 A/D 转换原理。

用 AS 红外测距卡可以精确地测量 10cm~80cm 范围内障碍物的距离。通过测量发射和反 射红外光之间的相位差来测量物体的距离。红外测距卡能够把相位差的变化转化为输出电压 的变化,输出电压可以通过红外测距的信号线(黄)接到微控制器的 A/D 转换口上。在这里,

红外测距卡的输出端通过 ASBUSB 接入模拟信号输入口 PE5 口(如图 5.9 所示)。因此,在插 传感器的插针时要注意插针的方向。红外测距卡通过电压的变化来反映测量距离的变化,它 可以连续的读出距离,被测物体带色并不影响其测距功能,并且不需要多余的外接电路,操 作简单。

PE5

VCC GND

ASBUSB ASBUSA

图 5.9 连线原理图 参数说明:

1.测试距离:10cm ~ 80cm;

2.输出终端电压:Vo 0.5 ~2.25V 3.提供电压:Vcc=5V

4.平均电流:Imax=50mA

使用说明

AS 红外测距卡的安装如图 5.10 所示,安装使用时请注意以下几点:

图 5.10 红外测距卡安装示意图

1、 模拟口转接卡上的 ASBUSA 插针对应主板上的 ASBUSA 插槽,ASBUSB 插针对应 ASBUSB 插槽;

2、 AS 红外测距卡的头部引出线有三根,红色为电源线,黑色为接地线,黄色为信号 线,应分别与 ASDIY 板上的电源、接地和信号线相连接;

3、 红外测距卡输出的是电压的变化值,可以通过调用库函数 analog(5)来获得,但要 显示距离,则需要进行转换。在此提供一例程供读者参考,因不同的红外测距卡可 能有差别,必须要实测参数。

使用前最好进行标定。标定方法与普通传感器标定相似。测试距离(10cm ~ 80cm)

与输出终端电压:Vo(L=80cm 时) 0.5 ~2.25V;

10cm : 2.25v;

20cm : 1.25v;

40cm : 0.78v;

60cm : 0.5v;

图 5.11 测量距离与 A/D 值之间关系图 例程:

int irdata[4]={10,20,40,60};

int irADValue[4]={114,64,40,25};

void main()

{ while(1) {

printf("dis=%d\n",iranger());

wait(0.3);

} }

int iranger() { int i,data;

data=analogport(5);

if(data>120) return -1;

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

if(data>irADValue[i]) {

return (irdata[i]);

} } return -1;

}

在文檔中 目 录 第 1 章 (頁 68-72)