微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DS18B20的自动调温光疗系统设计

基于DS18B20的自动调温光疗系统设计

时间:01-17 来源:互联网 点击:

1引言

自动调温光疗系统是一种医用理疗仪器,其原理是采用单片机对可控硅的控制来控制高压下的激光输出器进行理疗,在激光输出器工作的同时对其进行实时温度检测,利用检测到的温度状况决定可控硅的导通状态,达到改变激光输出器输出功率的目的,得到最佳的疗效。根据上述特点,本文选择了单总线数字温度传感器DS18B20进行温度采集,介绍了使用DS18B20的程序代码。为了使可控硅的输出功率连续均匀变化,本文设计了一种利用外部中断和定时器中断实现可控硅移相触发的编程方法,满足治疗光的强度均匀灵敏变化的需要。

2调温光疗系统介绍

2.1系统结构介绍

本系统由5部分组成:CUP处理单元,键盘输入单元,LCD显示单元,测量温度单元,可控硅控制激光器输出单元。CUP处理单元运行系统程序调度所有任务,键盘用于输入系统设定参数及控制状态模式选择,LCD为系统提供了良好的操作界面,测量温度单元负责对激光输出器的温度进行实时检测,可控硅控制输出单元针对设定参数及检测到的温度来控制激光输出器的输出。本文将详细介绍测量温度单元和可控硅控制单元的软硬件设计。

2.2系统程序流程介绍

本医疗系统的程序流程为:系统首先数据进行初始化,这里的初始化主要包括定时器和外部中断的设置,初始化完成后开外部中断,然后系统进行温度采集,根据采集的温度及系统的设置参数来决定定时器定时参数,该定时参数直接决定移相触发可控硅时导通角的大小。接着系统再进行温度采集,选择定时器定时时间参数,依次循环下去。在系统循环工作过程中,人工可以通过按键改变系统的各种工作参数,工作参数直接影响控制可控硅导通角的定时器参数的选择。系统的主流程框图如图 1(a)所示意。当系统循环执行时,外部过零脉冲信号会使系统进入外部中断服务程序,进而控制可控硅的的导通。

3 测量温度单元介绍

热电偶或铂电阻,需放大电路和A/D转换实现温度信号采集。为简化系统硬件设计,选用了DALLAS公司生产的单总线数字温度传感器DS18B20。 DS18B20提供的“一线”总线接口只需一个端口进行通讯;测温范围为-55~+125℃,在-10~+85℃的范围内,精度为±0.5℃;温度以 9~12位数字量读出,分辨率为0.0625℃,该精度满足本医用光疗系统的要求;同时DS18B20采用超小型的μSOP封装,体积很小,可以直接敷贴在激光器的前端。由于DS18B20提供的“一线”总线接口只需一个端口与CPU通讯,因此在硬件上,利用单片机AT89C52的一个端口P2.0与 DS18B20的DQ引脚相连。



图1:系统程序流程图

3.1DS18B20工作原理及程序

在对DS18B20进行读写操作之前,CPU首先发出一个复位脉冲,最小脉冲宽度为480μs的低电平信号;然后CPU释放单总线,使之处于接收状态。单总线经过上拉电阻被拉至高电平。当DS18B20检测测到I/0端的上升沿时,就等待15—60μs,再向主CPU发出应答脉冲(60一240μs的低电平信号)。初始化子程序为:bitinit_18b20(void);
{bitpresence;//用于保存DS18b20对CPU的应答信号
DQ=0;//复位脉冲低电平
delay_20us(25);//延时500us
DQ=1;//复位脉冲高电平
delay_20us(4);//延时80us
presence=DQ;//保存DQ的状态
delay_20us(20);//延时400us
return(presence);//返回DQ的状态}
当主CPU将I/O线从高电平拉至低电平时,且保持时间大于1μs,就作为一个读周期的开始。DS18B20的输出数据在读时序下降沿过后的15μs内有效,在此期间,主CPU应释放I/O线,使之处于读入状态以便读取DS18B20的输出数据。15μs后读时序结束,I/O线经上拉电阻变为高电平。通常读取一位数据至少要60μs,并且在两位数据之间至少要有1μs的恢复期。读温度字节的子程序为:byteread_byte(void)
{bytei;//变量用于循环自加
bytevalue=0;//用于移位操作的临时变量
for(i=8;i>0;i--)
{value>>=1;
DQ=0;
NOP_1uS;//延时1us的空操作宏的空操作宏
DQ=1;
NOP_1uS;NOP_1uS;NOP_1uS;
if(DQ)value|=0x80;
delay_20us(3);//延时60us
}return(value);//返回对到的字节}
CPU 把I/O线从高电平拉至低电平时,作为—个写周期的开始。写时序包括两种类型:写1时序和写0时序,写1或写0必须保持至少60μs,在两个写周期之间至少有1μs的恢复期。DS18B20在I/O线变低电平后的15—6Oμs的时间内进行采样。若I/O线为高电平,即认为写入了一位1;反之,则认为写入了一位0。主CPU在开始写1周期时,必须将I/O线拉至低电平,然后释放,15μs内将I/O线拉至高电平。主CPU在开始写0时,也将I/O拉至低电平,并保持60us的时间。写字节的子程序为:voidwrite_byte(charval)//“val”用语传递需要写的字节
{unsignedchari;//变量用于循环自加
for(i=8;i>0;i--)
{DQ=0;NOP_1uS;NOP_1uS;
DQ=val0x01;
delay_20us(5);//延时间100us
DQ=1;val=val/2;//右移一位
}delay_20us(5);//延时间100us}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top