色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 醫(yī)療電子 > 設(shè)計應(yīng)用 > 基于DS18B20的自動調(diào)溫醫(yī)用光療系統(tǒng)的設(shè)計

          基于DS18B20的自動調(diào)溫醫(yī)用光療系統(tǒng)的設(shè)計

          作者: 時間:2012-05-08 來源:網(wǎng)絡(luò) 收藏

          1 引言

          本文引用地址:http://cafeforensic.com/article/199144.htm

          自動調(diào)溫光療系統(tǒng)是一種醫(yī)用理療儀器,其原理是采用單片機(jī)對可控硅的控制來控制高壓下的激光輸出器進(jìn)行理療,在激光輸出器工作的同時對其進(jìn)行實(shí)時溫度檢測,利用檢測到的溫度狀況決定可控硅的導(dǎo)通狀態(tài),達(dá)到改變激光輸出器輸出功率的目的,得到最佳的療效。

          根據(jù)上述特點(diǎn),本文選擇了單總線數(shù)字溫度傳感器20進(jìn)行溫度采集,介紹了使用20的程序代碼。為了使可控硅的輸出功率連續(xù)均勻變化,本文設(shè)計了一種利用外部中斷和定時器中斷實(shí)現(xiàn)可控硅移相觸發(fā)的編程方法,滿足治療光的強(qiáng)度均勻靈敏變化的需要。

          2 調(diào)溫光療系統(tǒng)介紹

          2.1系統(tǒng)結(jié)構(gòu)介紹

          本系統(tǒng)由5部分組成:CUP處理單元,鍵盤輸入單元,LCD顯示單元,測量溫度單元,可控硅控制激光器輸出單元。

          CUP處理單元運(yùn)行系統(tǒng)程序調(diào)度所有任務(wù),鍵盤用于輸入系統(tǒng)設(shè)定參數(shù)及控制狀態(tài)模式選擇,LCD為系統(tǒng)提供了良好的操作界面,測量溫度單元負(fù)責(zé)對激光輸出器的溫度進(jìn)行實(shí)時檢測,可控硅控制輸出單元針對設(shè)定參數(shù)及檢測到的溫度來控制激光輸出器的輸出。本文將詳細(xì)介紹測量溫度單元和可控硅控制單元的軟硬件設(shè)計。

          2.2 系統(tǒng)程序流程介紹

          本醫(yī)療系統(tǒng)的程序流程為:系統(tǒng)首先數(shù)據(jù)進(jìn)行初始化,這里的初始化主要包括定時器和外部中斷的設(shè)置,初始化完成后開外部中斷,然后系統(tǒng)進(jìn)行溫度采集,根據(jù)采集的溫度及系統(tǒng)的設(shè)置參數(shù)來決定定時器定時參數(shù),該定時參數(shù)直接決定移相觸發(fā)可控硅時導(dǎo)通角的大小。接著系統(tǒng)再進(jìn)行溫度采集,選擇定時器定時時間參數(shù),依次循環(huán)下去。

          在系統(tǒng)循環(huán)工作過程中,人工可以通過按鍵改變系統(tǒng)的各種工作參數(shù),工作參數(shù)直接影響控制可控硅導(dǎo)通角的定時器參數(shù)的選擇。系統(tǒng)的主流程框圖如圖1(a)所示意。當(dāng)系統(tǒng)循環(huán)執(zhí)行時,外部過零脈沖信號會使系統(tǒng)進(jìn)入外部中斷服務(wù)程序,進(jìn)而控制可控硅的的導(dǎo)通。

          系統(tǒng)程序流程圖

          圖1:系統(tǒng)程序流程圖

          3 測量溫度單元介紹

          熱電偶或鉑電阻,需放大電路和A/D轉(zhuǎn)換實(shí)現(xiàn)溫度信號采集。為簡化系統(tǒng)硬件設(shè)計,選用了DALLAS公司生產(chǎn)的單總線數(shù)字溫度傳感器20。

          DS18提供的“一線”總線接口只需一個端口進(jìn)行通訊;測溫范圍為-55~+125℃,在-10~+85℃的范圍內(nèi),精度為±0.5℃;溫度以9~12位數(shù)字量讀出,分辨率為0.0625℃,該精度滿足本醫(yī)用光療系統(tǒng)的要求;同時DS18采用超小型的μSOP封裝,體積很小,可以直接敷貼在激光器的前端。由于DS18提供的“一線”總線接口只需一個端口與CPU通訊,因此在硬件上,利用單片機(jī)AT89C52的一個端口P2.0與DS18B20的DQ引腳相連。

          3.1 DS18B20工作原理及程序

          在對DS18B20進(jìn)行讀寫操作之前,CPU首先發(fā)出一個復(fù)位脈沖,最小脈沖寬度為480μs的低電平信號;然后CPU釋放單總線,使之處于接收狀態(tài)。單總線經(jīng)過上拉電阻被拉至高電平。當(dāng)DS18B20檢測測到I/0端的上升沿時,就等待15—60μs,再向主CPU發(fā)出應(yīng)答脈沖(60一240μs的低電平信號)。初始化子程序為:

          bit init_18b20(void);

          { bit presence; //用于保存DS18b20對CPU的應(yīng)答信號

          DQ = 0; //復(fù)位脈沖低電平

          delay_20us(25); // 延時500us

          DQ = 1; //復(fù)位脈沖高電平

          delay_20us(4); //延時80us

          presence = DQ; //保存DQ的狀態(tài)

          delay_20us(20); //延時400us

          return(presence);//返回DQ的狀態(tài) }

          當(dāng)主CPU將I/O線從高電平拉至低電平時,且保持時間大于1μs,就作為一個讀周期的開始。DS18B20的輸出數(shù)據(jù)在讀時序下降沿過后的15μs內(nèi)有效,在此期間,主CPU應(yīng)釋放I/O線,使之處于讀入狀態(tài)以便讀取DS18B20的輸出數(shù)據(jù)。15μs后讀時序結(jié)束,I/O線經(jīng)上拉電阻變?yōu)楦唠娖?。通常讀取一位數(shù)據(jù)至少要60μs,并且在兩位數(shù)據(jù)之間至少要有1μs的恢復(fù)期。讀溫度字節(jié)的子程序為:

          byte read_byte(void)

          {byte i; //變量用于循環(huán)自加

          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);//返回對到的字節(jié) }

          CPU把I/O線從高電平拉至低電平時,作為—個寫周期的開始。寫時序包括兩種類型:寫1時序和寫0時序,寫1或?qū)?必須保持至少60μs,在兩個寫周期之間至少有1μs的恢復(fù)期。DS18B20在I/O線變低電平后的15—6Oμs的時間內(nèi)進(jìn)行采樣。

          若I/O線為高電平,即認(rèn)為寫入了一位1;反之,則認(rèn)為寫入了一位0。主CPU在開始寫1周期時,必須將I/O線拉至低電平,然后釋放,15μs內(nèi)將I/O線拉至高電平。主CPU在開始寫0時,也將I/O拉至低電平,并保持60us的時間。寫字節(jié)的子程序為:

          void write_byte(char val)//“val”用語傳遞需要寫的字節(jié)

          {unsigned char i;// 變量用于循環(huán)自加

          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的操作都是以初始化器件開始,然后發(fā)出ROM命令和功能命令。初始化器件會使主機(jī)接到應(yīng)答信號,ROM 命令與各個從機(jī)設(shè)備的惟一64位ROM 代碼相關(guān),允許主機(jī)在1一Wire總線上連接多個從機(jī)設(shè)備時,指定操作某個從機(jī)設(shè)備。這些命令還允許主機(jī)能夠檢測到總線上有多少個從機(jī)設(shè)備以及其設(shè)備類型,或者有沒有設(shè)備處于報警狀態(tài)。

          本系統(tǒng)是只有一個溫度傳感器的單點(diǎn)系統(tǒng),利用跳過ROM(SKIP ROM)命令,主機(jī)不必發(fā)送64 b序列號,從而節(jié)約了大量時間。ROM命令后,主機(jī)就可以發(fā)出指定功能命令(溫度轉(zhuǎn)換、讀暫存器等)來完成操作。本系統(tǒng)中讀取溫度的程序為:

          unsigned int Read_Temperature(void)

          { unsigned char a,b;// 用于存儲溫度數(shù)據(jù)的變量

          if(init_18b20()==0)

          {write_byte(0xCC); //發(fā)送Skip ROM指令

          write_byte(0x44); // 發(fā)送溫度轉(zhuǎn)換指令

          delay_20us(1);

          if(init_18b20()==0)

          {write_byte(0xCC); //發(fā)送Skip ROM指令

          write_byte(0xBE); //發(fā)送讀取暫存寄存器指令

          a=read_byte(); //讀出低八位溫度數(shù)據(jù)

          b=read_byte(); //讀出高八位溫度數(shù)據(jù)

          temperature=((b*256+a)/16);//計算出10進(jìn)制溫度值

          }}return(temperature);}

          4 可控硅控制輸出單元

          4.1 可控硅控制單元硬件設(shè)計

          可控硅控制輸出單元原理圖

          圖2:可控硅控制輸出單元原理圖

          本系統(tǒng)利用MOC3021光電隔離電路來觸發(fā)可控硅。AT89C52利用P21引腳與MOC3021的2腳相連。圖2(a)為觸發(fā)電路原理圖。MOC3021是雙向晶閘管輸出型的光電耦合器,其作用是隔離單片機(jī)系統(tǒng)和外部的雙向晶閘管。

          4.2 過零檢測電路設(shè)計

          利用過零檢測電路捕捉交變電壓的零點(diǎn)信號。以便在過零點(diǎn)啟動定時器,當(dāng)計時時間到達(dá)后觸發(fā)可控硅。過零檢測電路如圖2(b)所示,利用兩個TIL117與18V的交流電相連,兩個TIL117分別在交流電的正負(fù)周期當(dāng)電壓達(dá)到0.3V使三極管T導(dǎo)通,進(jìn)而使三極管T的集電極在交流電的零點(diǎn)附近產(chǎn)生脈沖信號。

          4.3 可控硅移相觸發(fā)程序設(shè)計

          過零檢測電路在交變電壓每個周期產(chǎn)生兩個過零點(diǎn)電壓脈沖信號,使AT89C52產(chǎn)生外部中斷。 在中斷服務(wù)程序中開始定時器計時。定時器的定時時間小于兩個過零脈沖信號間隔,即10ms,這樣可以使定時器中斷在下一個外部中斷來到之前工作。

          在定時器中斷服務(wù)程序中,觸發(fā)可控硅,并裝入新的定時器定時時間常數(shù)。等待下一個過零脈沖信號到來引發(fā)的外部中斷,進(jìn)而開始新一個周期的可控硅觸發(fā)周期。程序流程圖如圖1(b)。

          利用過零檢測電路產(chǎn)生的下降沿作為外部中斷信號,在中斷程序中根據(jù)系統(tǒng)此時功率輸出判斷是否啟動定時器,如果功率輸出為非零則啟動定時器進(jìn)行計時。

          void guicontrol(void) interrupt 2

          { if(power!=0) //判斷負(fù)載功率輸出是否為零時,非零則進(jìn)入

          { DT=1;//關(guān)斷可控硅輸出,DT為AT89C52的P21引腳

          TR0=1;//啟動定時器 } }

          當(dāng)定時器中斷產(chǎn)生時,停止定時器計時,并且在中斷函數(shù)中裝入在程序主控制流程中根據(jù)檢測到的溫度及系統(tǒng)的功率設(shè)定而實(shí)時變化的新定時時間常數(shù),觸發(fā)可控硅導(dǎo)通??煽毓鑼?dǎo)通時間會持續(xù)到負(fù)載電流每個半周的終點(diǎn)。

          void time0(void) interrupt 1

          { TR0=0;//停止定時器計時

          TH0=timehigh;//裝入新的定時器定時時間常數(shù)

          TL0=timelow;

          DT=0;//觸發(fā)可控硅導(dǎo)通,DT為AT89C52的P21引腳

          TF0=0; //清除定時器溢出標(biāo)志位 }

          5 結(jié)束語

          本文闡述了醫(yī)療系統(tǒng)的溫度測控設(shè)計原理,選用了單總線數(shù)字傳感器DS18B20作為溫度傳感器,簡化電路。設(shè)計了一種實(shí)現(xiàn)可控硅移相觸發(fā)的編程方法,給出了具體應(yīng)用電路和軟件設(shè)計。 所采用設(shè)計方案使該醫(yī)療系統(tǒng)硬件簡單實(shí)用,可靠性增加。

          更多醫(yī)療電子信息請關(guān)注:21ic醫(yī)療電子頻道



          關(guān)鍵詞: 18B B20 DS

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉