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的低电平信号)。初始化子程序为:
bit init_18b20(void);
{ bit presence; //用于保存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的恢复期。读温度字节的子程序为:
byte read_byte(void)
{byte i; //变量用于循环自加
byte value = 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的时刻。写字节的子程序为:
void write_byte(char val)//“val”用语传递需求写的字节
{unsigned char i;// 变量用于循环自加
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 }
每次拜访DS18B20的操作都是以初始化器材开端,然后宣布ROM指令和功用指令。初始化器材会使主机接到应对信号,ROM 指令与各个从机设备的专一64位ROM 代码相关,答应主机在1一Wire总线上衔接多个从机设备时,指定操作某个从机设备。这些指令还答应主机可以检测到总线上有多少个从机设备以及其设备类型,或许有没有设备处于报警状况。本体系是只要一个温度传感器的单点体系,运用越过ROM(SKIP ROM)指令,主机不用发送64 b序列号,然后节省了很多时刻。ROM指令后,主机就可以宣布指定功用指令(温度转化、读暂存器等)来完结操作。本体系中读取温度的程序为:
unsigned int Read_Temperature(void)
{ unsigned char a,b;// 用于存储温度数据的变量
if(init_18b20()==0)
{write_byte(0xCC); //发送Skip ROM指令
write_byte(0x44); // 发送温度转化指令
delay_20us(1);
if(init_18b20()==0)
{write_byte(0xCC); //发送Skip ROM指令
write_byte(0xBE); //发送读取暂存寄存器指令
a=read_byte(); //读出低八位温度数据
b=read_byte(); //读出高八位温度数据
temperature=((b*256+a)/16);//计算出10进制温度值
}}return(temperature);}
4 可控硅操控输出单元
4.1 可控硅操控单元硬件规划
本体系运用MOC3021光电阻隔电路来触发可控硅。AT89C52运用P21引脚与MOC3021的2脚相连。图2(a)为触发电路原理图。MOC3021是双向晶闸管输出型的光电耦合器,其作用是阻隔单片机体系和外部的双向晶闸管。
图2:可控硅操控输出单元原理图
4.2 过零检测电路规划
运用过零检测电路捕捉交变电压的零点信号。以便在过零点发动守时器,当计时时刻抵达后触发可控硅。过零检测电路如图2(b)所示,运用两个TIL117与18V的交流电相连,两个TIL117分别在交流电的正负周期当电压抵达0.3V使三极管T导通,然后使三极管T的集电极在交流电的零点邻近发生脉冲信号。
4.3 可控硅移相触发程序规划
过零检测电路在交变电压每个周期发生两个过零点电压脉冲信号,使AT89C52发生外部中止。 在中止服务程序中开端守时器计时。守时器的守时时刻小于两个过零脉冲信号距离,即10ms,这样可以使守时器中止鄙人一个外部中止来到之前作业。在守时器中止服务程序中,触发可控硅,并装入新的守时器守时时刻常数。等候下一个过零脉冲信号到来引发的外部中止,然后开端新一个周期的可控硅触发周期。程序流程图如图1(b)。
运用过零检测电路发生的下降沿作为外部中止信号,在中止程序中依据体系此刻功率输出判别是否发动守时器,假如功率输出为非零则发动守时器进行计时。
void guicontrol(void) interrupt 2
{ if(power!=0) //判别负载功率输出是否为零时,非零则进入
{DT=1;//关断可控硅输出,DT为AT89C52的P21引脚
TR0=1;//发动守时器 } }
当守时器中止发生时,中止守时器计时,并且在中止函数中装入在程序主操控流程中依据检测到的温度及体系的功率设定而实时改动的新守时时刻常数,触发可控硅导通。可控硅导通时刻会继续到负载电流每个半周的结尾。
void time0(void) interrupt 1
{ TR0=0;//中止守时器计时
TH0=timehigh;//装入新的守时器守时时刻常数
TL0=timelow;
DT=0;//触发可控硅导通,DT为AT89C52的P21引脚
TF0=0; //铲除守时器溢出标志位 }
5 完毕语
本文论述了医疗体系的温度测控规划原理,选用了单总线数字传感器DS18B20作为温度传感器,简化电路。规划了一种完结可控硅移相触发的编程办法,给出了详细使用电路和软件规划。 所选用规划方案使该医疗体系硬件简略有用,可靠性添加。