资源目录
压缩包内文档预览:(预览前20页/共27页)
编号:511749
类型:共享资源
大小:706.11KB
格式:RAR
上传时间:2015-11-12
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计
- 资源描述:
-
DZ264超声波测距电路系统的设计最终,毕业设计
- 内容简介:
-
课程设计 超声波测距电路系统的设计 摘要 :在分析超声波测距原理的基本上,提出设计测距仪的思路和所需考虑的问题,给出实现超声波测距方案的软、硬件设计系统框图。 关键词 :超声波传感器;超声波; MCS-51;测距; SMC1602A液晶显示器。 一 . 引言 由于超声波的指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。 超声测距是一种非接触式的检测方式。与其它方法相比,如电磁的或光学的方法,它不受光线、被测对象颜色等影响。对于被测物处于黑暗、在灰尘、烟 雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力。 因此在液位测量、机械手控制、车辆自动导航、物体识别等方面有广泛应用。特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的信息很容易检测出来,具有很高的分辨力,因而其准确度也较其它方法高;而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。 二 . 设计要求 1 设计并绘出超声波测距系统电器图; 2 根据电路图进行电路连接与调试,编制相应程序,并显示相应的结果; 3 整理所设计资料,提交设计报告。 三 . 超声波测距系统原理 1 压电式超声波发生器原理 超声波发生器即超声波换能器;它将其它形式的能量转换成超声波的能量(发射换能器来完成)和使超声波的能量转换成其它易于检测的能量(接收换能器来完成)。一般是用电能和超声能量相互转换。 总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波;一类是用机械方式产生超声波。本实验用到的是压电型超声波传感器。 压电型超声波传感器的工作原理:它是借助压电晶体的谐振来工作的,即陶瓷的压电效应。其结构原理如下图( a)所示。 nts 超声波传感器有两块压电晶片和一块共振板。当它的两电极加脉冲信号(触发脉冲),若其频率等于 晶片的固有频率时,压电晶片就会发生共振,并带动共振板振动,从而产生超声波。相反,电极间未加电压,则当共振板接收到回波信号时,将压迫两压电晶片振动,从而将机械能转换为电信号,此时的传感器就成了超声波的接收器。 2 超声波测距原理 脉冲法测距的原理如图 1所示: 首先超声波传感器向空气中发射声脉冲,声波遇到被测物体反射回来,若可能测出第一个回波达到的时间与发射脉冲间的时间差 t ,利用 12vt,即可算得传感器与反射点间 的距离 s ,测量距离 222hds,若 sh? 时,则 ds ,故 0h ,则 12d s t vg。 由于超声波也是一种声波,其声速 c 与温度有关。在使用时,如果温度变化不大,则可认为声速是基本不变的。 如果测距精度要求很高,则应通过温度补偿的方法加以校正。 四 . 超声波测距系统电路设计 总体设计: 我们把系统的总电路分为三个大块 : nts超声波发射及驱动电路; 超声波回波接收滤波整形及检波电路; 液晶显示部分电路。 超声波信号由 51 单片机产生,通过 P1.0 口输出一个 41.67kHz 的脉冲信号,持续发射 216 s。原始信号是 5p-p V,经过运放放大 3 倍,驱动超声波发射头发出 15p-p V, 41.67kHz 的脉冲超声波。接收头与发射头配对,接受后将超声波调制脉冲 变为交变电压信号,经运放放大 5倍后加至高通有源滤波电路。滤除一些低频杂波。然后信号接至带有锁定环的音频译码集成块 LM567,当 LM567输入信号大于 25mV,信号频率在 LM567的中心频率带宽内, 567的输出端 8脚由高电平跃变为低电平,作为中断请求信号,送至单片机处理。通过程序计算得到所测距离后,转化成 ASCII码送到液晶显示器显示。 总电路图: 分块电路详细介绍: 1.信号发射驱动: 超声波信号由 51产生,通过 P1.0口输出,一个 40kHz的脉冲信号,持续发射 216 s。原始信号是 5p-pV。采用的运放是 TL084CN,放大三倍,输出 15p-pV。 TL084CN: JFET 输入四运算放大器 , 引脚图: nts 主要工作参数: Vs(最大值) (V): 36 Vs(最小值) (V): 7 带宽 GBW(典型值 )(MHz): 3 转换速率(典型值) (V/ s): 13 输入失调电压 Vio(25 )(最大值 )(mV):15 共模抑制比(最小值) (dB):70 噪声电压(典型值) (nV/Hz开平方 ): 18 考虑实际后,我们选用 V的电源,由于同时要用正负,就要把两个电源连起来使用。导致后来使用的 5V时,又使用了另外一组电源,导线拖的较长。 经过运放放大,驱动超声波发射头发出 40kHz的脉冲超声波。 TL084CN,放大三倍,即 R2=3R1。令 R1=1K , R2=3K 。 Vcc =15.5v Vcc =nts 15.5v。 2.信号接收放大与整形 这一部分具体分为三个环节:接受放大,滤波 ,检波。 总体电路如下: 2.1 接收放大: 接收头与发射头配对,接受后将超声波调制脉冲变为交变电压信号输入到运放进行放大。 TL084CN 有 4个运放可以同时工作,于是我们的电路中所有的放大工作都在一个芯片里头,包括后面的有源滤波中的运放。 检测到接受的原始信号从发射时的方波变为了正弦波,幅值大约在 20 mV,于是把放大倍数定在 5倍,也就是 R3=1k , R4=5.1k 。 2.2 滤波: 放大 后的信号介入 C1,经 C1, R5 和运放组成的滤波系统滤波后从运放输出。 nts滤波这块是整个电路设计中改动次数最多的一块,最后决定用一阶有源高通滤波。 C1用的型号是 103,也就是 0.01 F。 R5 6.2k 截止频率 f =2= 12 RC=3 2 612 3 . 1 4 1 6 6 . 2 1 0 1 0 1 0 =2.6kHz 采用的是一阶滤波,也就是频率在 2.6 kHz 以下的信号以 20dB 的速率衰减。滤去了一些对我们来说的低频噪声。 2.3 检波 LM567 放大滤波后的信号经过 C2入 LM567。 带有锁定环的音频译码集成块 LM567。 LM567为通用音调译码器,是一个高稳定性的低频集成锁相环路解码器。 2.3.1 - LM567 内部结构及工作原理 nts LM567内部包含了两个鉴相器 PD1及 PD2、放大器 AMP、电压控制振荡器 VCO等单元电路。锁相环路输出信号由电压控制振荡器 VCO产生,电压控制振荡器的自由振荡频率 (即无外加控制电压时的振荡频率 )与外接定时元件 RC 的关系式为: f0 1/1.1RC 选用适当的定时元件,可使 LM567 的振荡频率在 0.01Hz 500kHz 范围内连续变化。电路工作时,输入信号在鉴相器 PD1中与 VCO的输出信号鉴相,相差信号经滤波回路滤波后,成为与相差成一定比例的电压信号,用于控制 VOC输出频率 f0 跟踪输入信号的相位变化。若输入信号频率落在锁相环路的捕获带内,则环路锁定,在振荡器输出频率与输入频率相同时,二者之间只有一定相位差而无频率差。 PD2 的工作方式与 PD1 略有不同,它是利用压控振荡器输出的信号 f0 经90移相后再与输入信号进行鉴相,是一正交鉴相器。在环路锁 定情况下, PD2的两个输入信号在相位上相差约为 90,因而 PD2 的输出电压达到其输出范围内的最大值,再经运算放大器 AMP 反相,在其输出端输出一个低电平。 AMP的输出端为 OC 输出方式,低电平输出时可吸收最大 100mA 的输出电流。该端口的低电平输出信号除可由上拉电阻转换为电压信号以与 TTL 或 CMOS 接口电路相匹配外,还可直接驱动 LED及小型继电器等较大负载。 值得一提的是,接在 2脚的环路滤波电容 C2与内部电阻一道构成锁相环路的 RC 积分滤波器,该滤波器时间常数的大小在很大程度上决定了锁相环路的环路带宽 BW 的大小。 当 BW 较大时,捕获范围大而稳定性差。减小 BW 则正好相反,其稳定性较好而捕获范围变小。 LM567 在正常工作时的最小输入信号为 25mV。当用于单音解码时,其工作特性为:当 LM567 信号输入端加入幅度为 25mV以上的交流信号且频率落入 f0 BW 范围内时,输出端输出一个低电平的检测信号,这就是所谓的“频率继电器”特性。 2.3.2 LM567 管脚排列及功能 nts LM567其、脚外接的电阻和电容决定了内部压控振荡器的中心频率 f0 f0 1/1.1RC。 、脚通常分别通过一电容器接地,形成输出滤波网络 和环路单级低通滤波网络。脚所接电容决定锁相环路的捕捉带宽:电容值越大,环路带宽越窄。脚所接电容的容量应至少是脚电容的 2倍。 脚是输入端,要求输入信号 25mV。 脚是逻辑输出端,其内部是一个集电极开路的三极管,允许最大灌电流为 100mA。 LM567的工作电压为 4.75 9V,工作频率从直流到 500kHz,静态工作电流约 8mA。 2.3.3 - LM567 特性: 逻辑兼容输出具有吸收 100mA电流能力 可调带宽从 0%至 14% 宽信号输出与噪声的高抑制 对假信号抗干扰 高稳定的中心频率 中心频率调节从 0.01Hz到 500kHz 电源电压 4.75 9V LM567 的内部电路及详细工作过程非常复杂,这里仅将其基本功能概述如下:当 LM567的脚输入幅度 25mV、频率在其带宽内的信号时,脚由高电平变成低电平,脚输出经频率 /电压变换的调制信号;如果在器件的脚输入音频信号,则在脚输出受脚输入调制信号调制的调频方波信号。 2.3.4 LM567 在本实验中的应用。 在我们这个实验中仅利用了 LM567接收到大于 25mV相同频率的载波信号后脚的电压由高变低这一特性,作为中断请求信号, 送至单片机处理。 通过 R6C3调中心频率 f: 超声波信号的频率是 41.67kHz,所以 RC011.1f 11.1 41670 52.18 10 选用 C3的型号: 103,即 C3 810 F,于是 R6=2.18 k ntsC4, C5形成输出滤波网络。 C4决定锁相环路的捕捉带宽:电容值越大,环路带宽越窄 。 C5 2C4 选用 C4型号为 22,即 2 122 10 10 , C4= 102 10 F C5型号 103,即 3 1 21 0 1 0 1 0 , C5= 810 F,符合 C5 2C4的要求。 其他元件大小: C2=1 F, R7 2 k 引脚 4接 Vcc=+5V,引脚 7接地。 引脚 8通过上拉电阻 R7接至 Vcc, 同时作为中断信号引入 INT0。 当 LM567 接收到大于 25mV, 40kHz 的载波信号后 8脚的电压由高变低,引起 INT0下跳沿触发中断。 3.液晶显示器 SMC1602显示结果 3.1 SMC1602 是一种 16 字 2行的字符型液晶显示模块,其引脚及其功能图如下图: nts 3.2 SMC1602 的内部结构 SMC1602主要是由 DDRAM 、 CGROM 、 CGRAM、 IR 、 DR 、 BF 、 AC等大规模集成电路组成。 DDRAM 为数据显示用的 RAM( Data Display RAM,简称 DDRAM),有以存放要 LCD显示的数据,只要将标准的 ASCII 码放入 DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示出该 ASCII 码对应的字符; CGRAM为字型 字符产生器的 RAM( Character Generator RAM,简称 CGRAM),可 供使用者存储特殊造型的造型码, CGRAM 最多可存储 8个造型; IR为指令寄存器( Instruction Register,简称 IR),负责存储 MCU要写给 LCD的指令码,当 RS及 /RW引脚信号为 0时且 Enable引脚信号由 1变为 0时, D0: D7引脚上的数据便会存入到 IR 寄存器中; DR 为数据寄存器( Data Register,简称 DR),它们负责存储微机要写到CGRAM或 DDRAM的数据,或者存储 MCU要从 CGRAM或 DDRAM读出的数据。因此,可将 DR视为一个数据缓冲区,当 RS及 /RW引脚信号为 1且 Enable 引脚信号由 1变为 0时,读取数据;当 RS引脚信号为 1, /RW引脚信号为 0且 Enable引脚信号由 1变为 0时,存入数据; BF 为忙碌信号( Busy Flag,简称 BF),当 BF 为 1 时,不接收微机送来的数据或指令;当 BF 为 0 时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看 BF是否为 0; AC为地址计数器( Address Counter,简称 AC),负责计数写入 /读出 CGRAM或 DDRAM的数 据地址, AC依照 MCU对 LCD 的设置值而自动修改它本身的内容。 其内部结构框图如下所示: nts 3.3 液晶显示器 SMC1602与 MCU51相连的电路图 定义: 3.0RS P / 3.1R W P 3 .5E nable P 0 7 0 . 0 0 . 7D D P P: nts 五 . 超声波系统软件设计 这里仅写出总程序,详细的程序模块分解,设计原理等,请见下文“六 .2软件部分的编程问题 ” RS EQU P3.0 RW EQU P3.1 E EQU P3.5 f bit 01h ORG 0000H ;上电,程序入口 AJMP MAIN ORG 0003H ;外部中断 0入口 AJMP INT ;转中断程序 ORG 0030H ;数据存储区入口 MAIN: mov sp,#0050h nts ;数据清零 ;MOV 30H,#0 ;MOV 31H,#0 ;MOV 32H,#0 ;MOV 33H,#0 ;MOV 34H,#0 ;MOV 35H,#0 ;MOV 36H,#0 ;MOV 37H,#0 ;MOV 40H,#0 ;MOV 41H,#0 ;MOV 42H,#0 ;MOV 43H,#0 ;MOV 44H,#0 ;MOV 45H,#0 ;MOV 46H,#0 ;MOV 47H,#0 ;MOV 48H,#0 ;MOV 49H,#0 ;显示的初始化 acall t5 ;延时 15ms acall t5 acall t5 mov p0,#38h ;写指令 38H(不检测忙信号) ;acall enable ;acall t5 mov p0,#38h ;acall enable ;acall t5 mov p0,#38h ;acall enable ;acall t5 mov p0,#38h ;显示模式 2行 acall enable mov p0,#08h ;关显示 acall enable mov p0,#01h ;清屏 acall enable MOV P0,#06h ;光标右移 ACALL ENABLE mov p0,#0Eh ;显示开,显示光标,不闪烁; nts acall enable SETB IT0 ;INT0 边沿触发,下跳沿有效 CLR ET0 ;关 T0溢出中断 MOV TH0,#00H ;定时器清零 MOV TL0,#00H MOV tmod,#01H ;选择定时 /计数器 0,用定时器模式,选择方式 1工作 SETB PX0 ;定义外部中断 0为高优先级中断 SETB P1.0 JIANCE: JNB P1.2,AA ;用 P1.2作为用户的外部控制口,高电位或悬空等待检测,低电位运行程序 SJMP JIANCE AA: MOV TH0,#00H ;定时器清零 MOV TL0,#00H SETB EX0 ;开外部中断 0允许 SETB EA ;开总中断 SETB TR0 ;启动定时器 T0 puzel: mov 14h, #12h ;超声波发射持续 210us here: cpl p1.0 ;输出 40kHz 方波 nop ; nop ; nop ; nop ; nop ; nop ; nop ; nop ; nop ; djnz 14h,here ;控制发射周期 数(即发射时间) jnb f,$ ;等待中断,用 f作为发射程序和中断程序的接口 clr f ;使下次发射时能无限循环等待中断 jmp AA ;重新发射 ntsINT: CLR EA ;关总中断 CLR TR0 ;关定时器 SETB f ;中止发射程序等待 PUSH PSW ;保护现场 PUSH ACC CLR EX0 ;关外部中断 0 MOV R5,TH0 ;读取时间值 MOV R4,TL0 MOV 36H,R5 ;R5,R4 做乘数 MOV 37H,R4 CLR C ;排除未经反射的超声波直接入接受口 MOV A,R5 SUBB A,#01H JNC TRAN LJMP OUT TRAN: MOV R6,#11H ;R6 做被乘数,计算得所测距离的二进制数 CLR C ;二字节数与一字节数相乘 MOV A,R6 MOV B,R4 MUL AB MOV 30H,A MOV 35H,A MOV R3,B MOV A,R6 MOV B,R5 MUL AB CLR C ADD A,R3 MOV 31H,A MOV 34H,A mov a,b ADDC a,#00H MOV 32H,a MOV 33H,A ;计算得所测距离的二进制数,结果在 33H、 34H、 35H 里,从高位到低位排列 nts ;3字节二进制数转化成 BCD数 BCD: MOV R1,#40H MOV R2,#03 INC R2 CLR A BB0: MOV R1,A INC R1 DJNZ R2,BB0 MOV A,#03 MOV B,#8 MUL AB MOV R3,A ;R3 为 24位,即总循环次数 BB3: MOV R0,#30H MOV R2,#3 CLR C BB1: MOV A,R0 RLC A ;通过 带进位左移取出最高位 MOV R0,A INC R0 DJNZ R2,BB1 MOV R2,#3 INC R2 MOV R1,#40H BB2: MOV A,R1 ADDC A,R1 ; 2+新位值 DA A ;BCD 数相加十进制调整 MOV R1,A INC R1 DJNZ R2,BB2 DJNZ R3,BB3 ;控制总循环次数 ;所测距离的十进制数,结果在 42H、 41H、 40H里,从高位到低位排列 ;BCD数转换为 ASCII码 mov a,42h anl a,#0f0h swap a add a,#30h mov 45h,a ;最高位放在 45h中 mov a,42h anl a,#0fh nts add a,#30h mov 46h,a ;第 2位放在 46h中 mov a,41h anl a,#0f0h swap a add a,#30h mov 47h,a ;第 3位放在 47h中 mov a,41h anl a,#0fh add a,#30h mov 48h,a ;第 4位放在 48h中 mov a,40h anl a,#0f0h swap a add a,#30h mov 49h,a ;第 5位放在 49h中 mov p0,#80h ;最高位数字显示在第一行第一个 acall enable mov a,45h acall write mov p0,#81h ;第二位数字显示在第一行第二个 acall enable mov a,46h acall write mov p0,#82h ;第三位数字显示在第一行第三个 acall enable mov a,47h acall write mov p0,#83h ;小数点显示在第 一行第四个 acall enable mov a,#2eh acall write mov p0,#84h ;第四位数字显示在第一行第五个 acall enable nts mov a,48h acall write mov p0,#85h ;第五位数字显示在第一行第六个 acall enable mov a,49h acall write mov p0,#86h ;字母 C显示在第一行第七个 acall enable mov a,#43h acall write mov p0,#87h ;字母 M显示在第一行第八个 acall enable mov a,#4Dh acall write mov r6,0ffh ;延时 5 256 1280ms,相当于 1.2s 左右显示一个数据 delay: acall t5 djnz r6,delay OUT: POP PSW ;恢复现场 POP ACC clr ie0 ;开中断 MOV TH0,#00H ;定时器清零 MOV TL0,#00H RETI ;中断结束,返回 ;延时 5ms 的子程序 t5: mov r3,#0ah d1:mov r4,#0ffh d2:djnz r4,d2 ;256*2=500us djnz r3,d1 ;500*10=5000us=5ms ret ;使能子程序 ENABLE:CLR RS ;RS 清零,选择命令寄存器 CLR RW ;RW 清零,选择写入 CLR E ;禁止使能 nts ACALL t5 ;调用延时 5ms子程式 SETB E ;启动使能 RET write: mov p0,a setb rs ;RS 置 1,选择数据寄存器 clr rw ;RW 清零 ,选择写入 nop ;延时 clr e ;禁止使能 acall t5 ;禁止使能 setb e ;启动使能 ret end 六 . 问题与分析 实验中的问题还是很多的,硬件部分和软件部分都出现了很多问题。 1. 硬件部分的电路问题: 1.1电源问题: 由于实验的放大要用到 运放器件 TL084CN,这个器件的电源输出和最后它能放大输出的最大电压是相同的,从 51出来的信号是 5V的方波,所以如果你选择正负 12V的电源,即使放大 3倍,最大输出也是 12V。所以后来我们选择了 15.5V作为 TL084CN 的工作电源。 (TL084CN 的最大工作电源为 18V) 由于同时要用正负 电源 ,就要把两个电源连起来使用。导致后来使用 5V电源时,又用了另外一组电源,导线拖的较长。 使用两组电源还有一个 问题需要注意,两组电源的地线要接在一起,就是共地问题,开始我们没有留意,以至于 TL084CN 的正负电位很不稳定,经常是正 18V,负 12V,后来共地后电压就很稳定了。 改进: 可以用 DC-DC 转换器把 5V的电源作为输入,输出为 15V的电源,这样就不需要使用两组电源,电源噪声也小,也不存在共地,导线拖长,仪器移动不便等问题,能使电路更为稳定。 1.2放大问题 放大倍数和相关的参数和检波中使用的 LM567 有很大的关系。 LM567 输入信号必需大于 25mV,输出 端 8 脚才会由高电平跃变为低电平,引起跳变,作为中断请求信号。而实际上我们发现 LM567 的性能在信号幅值更大的时候更好,例如 80mV。所以我们就以接入 LM567 的信号幅值在 80mV为放大的标准进行调试。 首先是发射信号的放大问题,我们比较过发射信号的放大和接受信号的放大,相比而言,发射信号的放大噪声问题要小很多,而且因为当时还未经空气,杂波的干扰也小,因此当时是想在发射信号处尽可能的放大,但是后来发现即使发射信号从 15V 增到 18V,接受的原始信号幅值还是在 15mV 左右,过nts分放大没有必要,因此最后定在放大 3倍。 然后是接受信号的放大问题,接受到的原始信号幅值在 15 20mV左右,根据放大到 80mV 的原则,放大定为 5倍。 1.3滤波问题 这一块电路是所有部分中改动次数最多的一块。包括滤波的方式和限频大小。 1.3.1 滤波方式的选择 我们先后想过一阶高通滤波,二阶高通, RC带通滤波,有源滤波。 首先想到的是一阶高通,因为最方便,电路如下: 使用 C=0.01 F (103), R=6.2 k 。 不久觉得一阶高通的衰减太小了,想采用二阶高通,于是又把电路改为: C1=C2=0.01 F (103), R1=6.2 k , R2=2R1=12.4k 但是发现滤波的效果和一阶差别不大,但却减弱了整个电路的稳定性。 后来又想到可以使用带通电路,使得杂波进一步减小,于是把滤波电路又改为: nts R1=R3=R, C1=C2, R2=2R, R4=1 k , R5=1.5 k 可是这时候发现带通电路的稳定性更差,而且它的 RC 电路基本上构成了一个选频网络,很容易自激振荡,尤其后面又和运放接在一起。 最后我们在一阶高通的基础上选择了有源一阶高通滤波,加入了无放大倍数的运放,增加了电路的稳定性。使得最后的滤波电路定为: C=103, R=6.2 k 1.3.2 滤波的限频大 小 开始我们以 40 kHz 为截止频率,然后通过计算: 选择 C=103, 则 R= 12 fC3 2 612 3 . 1 4 1 6 4 1 . 6 7 1 0 1 0 1 0 382 后来发现这样滤波把截止频率定的太高,还滤除了信号部分的有用分量。 于是降低频率,使用 C=103, R=6.2 k ,计算: f =2= 12 RC=3 2 612 3 . 1 4 1 6 6 . 2 1 0 1 0 1 0 =2.6kHz 滤除了大部分的杂波,而对信号基本无影响。 1.4 LM567的检波问题 整个实验中最大的问题出在 LM567 上,在一个星期以前我们就已经做完了nts软件和硬件,调试后发现,显示的数值总是在不停的跳变,有正确的也有不正确的。而且有很多数值非常小,例如 0.2, 0.5, 1.5 之类的,分析以后认为是 LM567跳变的过于频繁,即使对于一次信号,它也会在开始跳变后不久又重新引起跳变一次,这样,明明只是一次测 量,却引起了好几次跳变,而软件的中断却是根据跳变来的,然后进行测距计算,因此 LM567 不稳定的跳变使得我们的结果数据很不稳定。 在张日欣老师的指导下,我们使用函数信号发生器代替接受信号,调制函数信号发生器产生 41.67kHz 的正弦信号直接进行 LM567 的调试,发现 LM567 的跳变在纯中心频率信号的条件下还是出现不稳定的情况,于是开始更改 LM567的管脚 1和管脚 2 所接电容的大小,通过这个来调试它的稳定情况。 1.5 电容和电阻 整个实验中,用于不断的涉及放大参数和选频的问题,因此对电阻和电容的大小有很精确的 要求。可是实验室中有的电容和电阻型号有限, 1k 10k的电阻只有 1k, 2k, 5.1k, 6.2k, 电容有 50 F, 10 F, 3.3 F, 2.2 F,1 F, 104(0.1 F), 223(0.022 F), 103(0.01 F), 再小就只有 332和 22的电容了。 电阻的问题我们也曾用过滑动变阻器,这样电阻变动调整也方便一些,但是后来发现变阻器的阻值误差很大,而且稍微一碰触阻值又会跳变。于是还是选择固定电阻来配置我们所需要的阻值,这就需要非常大的计算量。 例如我们调制 LM567 的时候, 以 41.67 kHz 为中心, C 选择 103,那么 R值的大小就是 2.18 k ,这个阻值是个关键,如果偏差大了就对 LM567 的检波造成很大的影响,于是开始了艰难的配置电阻的过程。 首先是想到 3 k 和 8 k 并联: 1R = 13 + 18 R= 2411 2.18 k 开始以为这个数值刚好,于是开始配电阻: 实验室没有 3 k 和 8 k 的电阻,只好用 1 k 和 2 k 串联成 3k ,然后用 2 k 和 6.2 k 串联成 8.2 k ,然后再将两者并联,一个电阻值用到了 4个电阻: 由于这个配置中使用的是 6.2 k 的电阻,所以导致后来用万用表测得实际阻值大于 2.18 k ,变成了 2.22k ,偏大。 于是计算 3 k 和 7 k 并联: 1R = 13 + 17 R 2110 2.1 k ,配置过程同上, 3 1 2, 7 2 5.1, nts 同样因为 5.1k 造成了阻值偏大,用万用表检验后得实际电阻为 2.14 k 。 显然, 2.18在两者之间,也就是 3 k 和 7.5 k 并联: 1R = 13 + 17.5 R 157 2.1 4k 3 1 2, 7.5=5+2.5, 2.5k 又要用到 2个 5k的并联 , 于是电阻配置为: 检测后实际电阻为 2.19k ,偏差很小, 终于基本符合了要求。 电容的问题也类似,调试过程中有时候不得不也用两个电容并联的方法来增大电容值。例如,没有 334( 0.4 F)和 503( 0.05 F)的电容,就只能通过并联 104,以及并联 223来近似。给电路带来了很大的繁复。 2 软件部分的编程问题 : 由于以前学过的汇编语言是 8096 单片机的,而且我们在微机式医学仪器设计课上学的也都是些理论性很强的知识,与现在这个 C51汇编语言还是有很大不同的,总的来说 还是有很大难度的。这一块的主要问题有四个: 从 51发射 40kHz 的信号以用于驱动超声波发射头; 从 LM567 跳变引起 INT0 跳变中断,中断的入口,返回,以及与发射驱动程序的接口; 从 INT0中断开始读取定时器数据,计算所测距离,并转化为 ASCII 码; 把所测距离经由液晶显示器显示。 2.1 超声波发射驱动程序 从 51 发射 40kHz 的信号有多种方法,经过选择我们没有采取用定时器的方法,而是通过直接对 P1.0进行赋值和取反,这样更简单一些。 具体思路:要使方波的频率达到实验所要求的 40kHz。要使方波的 周期为25 s,也就是说半周期是 12.5 s, 即每经过 12.5 s 进行一次取反操作,由于单片机的晶振频率是 12MHz,所以指令的机器周期是 1 s,只可能经过 12个机nts器周期进行一次取反操作,这说明实际上从 51发出的波的周期是 24个机器周期,也就是 24 s,所以激发的超声波的频率实际为 41.67kHz。 在半周期的 12 s里,除去取反的 cpl 操作指令的一个机器周期和跳转到循环 djnz操作指令的两个机器周期,还有 9 s, 因此还要加上九个空操作即 nop。 2.2中断的入口,返回,以及与发射驱动程序的接口。 实验电路中把 INT0 接入 LM567 的 8 脚,那么当 LM567 接受到频率为41.67kHz BW,幅 值大于 25mV的信号时, 8脚从高位 5V跳至低位 0V,使 INT0也从高位跳至低位,负跳沿触发中断,进入中断程序。 进入中断后首要就是关总中断 (CLR EA)和停定时器 0(CLR TR0),先关总中断保证在中断程序运行时不被打断,否则根本无法进行计算和码制的转换等等。然后停定时器 0,也就是说从 INT0 跳变到定时器停止,有一个光中断指令的延时,也就是 1 s。中断要保护现场(程序状态字和累加器等等),也就是 PUSH PSW和 PUSH ACC。这些指令的顺序是以计时 误差最少为原则的。 中断结束后要恢复现场( POP PSW 和 POP ACC) ,开中断 (SETB EA), 定时器清零。然后返回中断点。 程序的一个难点在于中断和发射程序的接口。即如何使发射程序等待中断,并在中断完成之后发射新一轮的方波,这一点我们参考了 51 应用书中的一个类似的例子,基本思路是在发射过一轮方波后,为了停止发射,加入一个等待中断的操作(即使程序陷入一个无限循环),而在中断结束后跳出这个循环,开始新一轮的发射。关键就是在中断程序中安插一个语句作为中断和主程序的接口。于是,我们设计在程序开头引入一个变 量 f,当 f为零时,超声程序开始无限空操作循环。而在中断程序中将 f重新置为一,由于中断程序执行时,其他程序无法执行,则等中断完成后,返回现场, f=1,发射程序就会跳出循环,开始下一语句,重新把 f 清零(即使得下一轮发射时能等待中断),然后开始新一轮得发射。 2.3读取定时器数据,计算所测距离,并转化为 ASCII码 2.3.1 通过定时器数据计算所测距离。 定时器的数据存储在 TH0和 TL0两个字节中,由于我们采用定时器 0的 1方式,因此 TMOD 赋 00000001B,采用定时器模式和 1 方式即 16 位计时器计时。定时器的自增是以一 个机器指令为单位,也就是单位为 1 s。我们用定时器的数据去和 17相乘,得出一个以厘米为单位的距离,最高精确位为毫米。原理如下: 定时器为 16 位,也就是说计时的最大值为( 162 1) s,待测的最大距离记为 d,则按原理: 12d tv, (v=340m/s) ,d=170t( t单位为 s, d单位为m) 17 10 t 610 ( t单位为 s, d单位为 m)=17 t 510 ( t单位为 s, ntsd单位为 m) 17 t 310 cm 程序中,我们用定时器的数据去和 17相乘,也就是说最大距离为: ( 162 1) 17 310 cm( 65536 1) 17 310 114.095cm 10m 取前四位显示,五六两位舍弃,在第三位后显示小数点,于是我们设计的这个超声波滤波器的量程大致为 10米。精确到 cm。 所以这一块主要的程序就是两个字节数与一个字节数相乘。根据我们的计算量程,最大的结果数是( 65536 1) 17 114095,因为 162 1 114095 242 1,所以需用三个字节存储结果。 原理如下: 32H 31H 30H 33H 34H 35H TL0 与 11H(17)相乘,结果得 BA, B 为高位, A 为低位, A 即为整个乘法的低位,直接赋给 30H, B暂存入寄存器 R。 TH0与 11H(17)相乘,结果 BA, 把此时的 A与 R相加,即得到中间位的数值,赋给 31H,进位信息保留在 C中。 把 C与 B相加( ADDC),得最高位。赋给 32H。 由于后面程序中又要用到 30H, 31H, 32H, 为了方便检错,又把 32H(高位)赋给 33H存储,把 31H(中位)赋给 34H,把 30H(低位)赋给 35H。 以后可以直接按顺序读取 33H,34H,35H, 显示 16进制的待测距离值。 改进: 我们的显示,到小数点后两位截至,对最后一位,我们仅采用舍弃的方法,其实并不十分科学,如果用四舍五入会更精确一些,这里的程序可以继续改进。 2.3.2 对所测距离的数值进行码制转换 计算机 51 中的数据是以 2 进制存储的,而我们读习惯是 10 进制的,从计算机中显示到液晶显示器需要用 ASCII 码,因此这个码制转 换就是把二进制转换为 ASCII 码。这又可以分为两步: 从 2进制转换为 BCD码; 由 BCD码转换为 ASCII码。 nts 2.3.2.1 从 2进制转换为 BCD码 这块程序中主要难点还是在于将寄存器
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。