Page 1 of 20 비접촉온도측정 방사율조절 원거리온도측정 High Accuracy Digital Interface : SPI 아두이노코드제공 제품설명 DTPM Series는접촉을하지않고원하는물체표면의온도를 500ms 이내에정확하게측정할수있는온도센서모듈입니다. DTPM Series는온도계산프로세서를내장하고있어정확한온도값을출력합니다. (Master Controller에온도계산알고리즘이필요하지않습니다.) 방사율조절이가능합니다 ( 초기값 0.97ε 값으로출하 ). DTPM Series는디지털통신 (SPI) 으로온도값을출력합니다. 주변온도와대상온도를동시에측정합니다. 특징 응용분야 DTPM11 측정온도구간 : -20 ~100 DTPM81 측정온도구간 : -20 ~200 DTPM151 측정온도구간 : -20 ~270 동작온도구간 : -20 ~ 70 분해능 : 0.1 DTPM11 DS ratio : No lens( 측정각 :100도) DTPM81 DS ratio : 8:1 DTPM151 DS ratio : 15:1 정확도 : ±2% 입력전압 : 3.3V 통신인터페이스 : SPI 과열방지시스템 산업용온도측정장치 체온측정을통한인체감지 가전기기
Page 2 of 20 Absolute Maximum Ratings - Supply voltage : 3.5V - Operating Temperature Range : -20 ~ 70 - Storage Temperature Range : -40 ~ 85 위조건을넘어서게되면제품의수명을보장할수없습니다. 반드시아래 Electrical Requirements 를지켜주세요. Electrical Requirements Parameter Symbol Conditions min Typ Max Unit 공급전압 Vcc Measured versus GND 3.1 3.3 3.6 V 방사율 (Emission Coefficient) ε 0.1 1 공급전류 Full ambient temp. range, Typical value, no output load 10.96 12 ma SPI Clock 1 MHz INPUT High Level 3.1 3.5 V INPUT Low Level 0.9 V OUTPUT High Level Vcc-0.3 Vcc V OUTPUT LOW Level Vss Vss+0.3 V Operational Characteristics if not otherwise noted, 25 ambient temperature, 3.3V supply voltage and object with ε =0.97 were applied Parameter Symbol Conditions min Typ Max Unit DS ratio : DTPM11 DTPM81 DTPM151 No lens 8:1 15:1 온도측정범위 : DTPM11 DTPM81 Tobj -20-20 100 200 DTPM151-20 270 동작온도 ( 주변온도 ) Tamb -20 70 온도측정시간 Fout 0.5 sec 정확도 AccT ±2 % Resolution Digital 0.1 Standard Start-UP Time tstart 3 sec Stabilization Time tstab 1 min
Page 3 of 20 Mechanical Dimensions 단위 : mm
Page 4 of 20 Pin Assignment number Name Description Type 1 GND Ground Ground 2 SCE ENABLE Input 3 SCK CLOCK Input 4 SDI Signal Input Input 5 SDO Signal Output Output 6 VCC Supply Voltage Supply Connector : HANLIM SW0500-06( 반대편 Connector : HANLIM CH0500-06 )
Page 5 of 20 SPI Communication and Timings : Target( 대상 ) & Ambient( 주변 ) 온도읽기
Page 6 of 20 방사율 READ
Page 7 of 20 방사율 WRITE
Page 8 of 20 온도계산방법 영상온도계산 ( 주의 : 소수점첫째자리까지출력됩니다. 결과값에 10 을나눠주면됩니다.) Target 0x6D 0x01 주변 0xFA 0x00 * 타겟온도계산 : 상위 Byte(0x01) + 하위 Byte(0x6D) = 0x016D => 365(HEX 10진수 ) 즉 36.5 도입니다. * 주변온도계산 : 상위 Byte(0x00) + 하위 Byte(0xFA) = 0x00FA = >250 (HEX 10진수 ) 즉 25.0 도입니다. 영하온도계산 ( 영하 (0 도미만 ) 일때는 2 의보수값으로전송됩니다.) Target 0xF1 0xFF 주변 0x9C 0xFF * 타겟온도계산 : 상위 Byte(0xFF) + 하위 Byte(0xF1) = 0xFFF1 0xFFF1 = 1111 1111 1111 0001 (1의보수값 + 1 의연산을합니다 ) 0000 0000 0000 1110 1의보수값 0000 0000 0000 1111 +1 = 0x000F 0x000F = 15 즉, -1.5도입니다. * 주변온도계산 : 상위 Byte(0xFF) + 하위 Byte(0x9C) = 0xFF9C => 즉, -10.0도입니다. 방사율 READ DTPM 모듈의방사율설정을읽어옵니다. 수치는방사율ⅹ100 입니다. 예 ) 읽어온값이 0x5F(95) 이면방사율 0.95를의미합니다. Request : 0xA2, 0x22, 0x22 Response : dummy, 방사율, 0x00 데이터범위 : 1~100 page16. 방사율표참고
Page 9 of 20 방사율 WRITE DTPM 모듈에방사율을저장합니다. 수치는방사율ⅹ100 입니다. 예 ) 방사율 0.95를쓰고자하면 0x5F(95) 값을통신하면됩니다. Request : 0xA3, 0x22, 방사율 Response : dummy, 0xdd, 0xdd 데이터범위 : 1~100 page16. 방사율표참고 DISTANCE AND SPOT SIZE Spot Size 는아래그림에서와같이측정하고자하는대상의면적보다반드시작아야합니다.
Page 10 of 20 Optical field of view (FOV) The optical chart below indicates the nominal target spot diameter at any given distance from the sensing head and assumes 50% energy. Ordering Guide DTPM DS ratio 측정온도구간 11 1 : 1-20 ~ 100 81 8 : 1-20 ~ 200 151 15 : 1-20 ~ 270 CT-Testboard-Plus 테스트보드 ( 별도구매 ) 손쉽게측정하여온도값을다른 device(mcu, PC, embedded 등 ) 로전송 (RS-232) 할수있습니다.
Page 11 of 20 DW Testboard ( 신제품 - 별도구매 ) PC 와연결하여온도측정 / 실시간기록이가능한테스트보드신제품이출시됐습니다. < PC 화면 > < DW Testboard - 신제품 >
Page 12 of 20 Appendix - A (Example Code - Sonix SPI 레지스터이용 ) 아래소스코드는 DTPM 모듈과통신을위한참고용소스코드입니다. SPI 초기값세팅 - Clock 주파수최대 1Mhz - Internal SPI Clock(Master Mode) - SCK data transfer edge : Rising Edge - MSB first data transfer - SCK idle status : High 사용하는 MCU 환경에따라다르므로내용을이해하신후적용하고자하는컴파일러에서레지스터설정해주시면됩니다. 레지스터설정이힘들다면 Appendix - B 의 IO 제어코드를참고하시길바랍니다. 예제코드는 SONIX사의 MCU 예제입니다. SPI 초기화함수는 MCU마다다르니생략합니다. 전체적인흐름을참고하십시오. long Check_Temp(unsigned char datum) // Sonix 컴파일러에는 Long 이 2byte 입니다. { long temp_bank=0; SIOB = datum; // Buffer 레지스터에저장 NOP(1); EN_LOW; // Enable Low ( 중요 ) delay_us(10); // 10us delay ( 중요 ) FSTART = 1; // SPI 전송시작 while(fstart==1); // 전송완료 flag check buffer2=siob; // dummy SIOB = 0x22; // 0x22 or 0x00 가능합니다. delay_ms(10); // 10ms delay( 중요 ) FSTART = 1; // SPI 전송시작 while(fstart==1); // 전송완료 flag check buffer=siob; // 하위 Byte 저장 SIOB = 0x22; // 0x22 or 0x00 가능합니다. delay_ms(10); // 10ms delay( 중요 )
Page 13 of 20 FSTART = 1; while(fstart==1); // SPI 전송시작 // 전송완료 flag check buffer1=siob; // 상위 Byte 저장 EN_HIGH; // Enable High ( 중요 ) temp_bank=(buffer1*256)+buffer; // 상위, 하위 Byte 온도계산식. // temp_bank : 최종온도 return temp_bank; void main(void) { Long Target_Value, Ambient_Value; // 부호있는 2byte 선언 Port_init(); // PORT 초기화 LCD_init(); // LCD 초기화 EN_HIGH; // CS idle High SPI_init(); // SPI 초기화 while(1) { Target_Value = Check_Temp(0xa0); // SPI 통신 ( 타겟온도 ) delay_ms(50); Ambient_Value = Check_Temp(0xa1); // SPI 통신 ( 주변온도 ) LCD_view(); // 온도값 LCD 표시 delay_ms(500); // 500 delay( 필수 ) // 온도값 read 명령후다음명령까지 500ms delay
Page 14 of 20 Appendix - B (Example Code - I/O) 하단코드는컨트롤러에서 SPI 레지스터설정이아닌 I/O 포트제어를통해통신하는예제코드입니다. I/O 포트전압레벨이 3.3V 인지를꼭확인하세요. SPI.H #define SCK_HIGH #define SCK_LOW #define SDO_HIGH #define SDO_LOW #define EN_HIGH #define EN_LOW FP16=1 FP16=0 FP14=1 FP14=0 FP17=1 FP17=0 long CHECK(unsigned char datum); Main.C #include "SN8F27E65.h" #include "delay.h" #include "SPI.H" Long Target_Value, Ambient_Value; // sonix 컴파일러는 long이 2byte 입니다. 해당하는컴파일러에맞게 2byte변수선언하세요 void main(void) { While(1) { Target_Value = CHECK(0xa0); // 대상온도 delay_ms(50); Ambient_Value = CHECK(0xa1) // 주변온도 delay_ms(500); // LCD View CODE here
Page 15 of 20 SPI.C unsigned char buffer_lo, buffer_hi, p02; //1byte 선언 long CHECK(unsigned char datum) //2 byte return 함수 { unsigned char i=0; buffer_lo=0; buffer_hi = 0; EN_LOW; delay_us(10); for(i=0; i<8; i++) { if(((0x80 >>i)&datum)==0){sdo_low; else {SDO_HIGH; SCK_LOW; delay_us(1); SCK_HIGH; delay_us(1); SDO_LOW; // 0x22 or 0x00 전부가능합니다만코드간결을위해 0x00 사용 delay_ms(10); for(i=0; i<8; i++) // Low byte read { buffer_lo = buffer_lo <<1; SCK_LOW; delay_us(1); SCK_HIGH; delay_us(1); p02=fp02; // 포트의상태읽는문장 if(p02 == 1){buffer_Lo = buffer_lo 0x01; else{buffer_lo = buffer_lo&0xfe; SDO_LOW; delay_ms(10); for(i=0; i<8; i++) // High byte read { buffer_hi = buffer_hi <<1; SCK_LOW; delay_us(1); SCK_HIGH; delay_us(1); p02=fp02; // 포트의상태읽는문장 if(p02 == 1){buffer_Hi = buffer_hi 0x01; else{buffer_hi = buffer_hi&0xfe; EN_HIGH; return (buffer_hi*256+buffer_lo);
Page 16 of 20 Appendix - C ( 방사율표 ) 방사율이란물체가외부적외선에너지를흡수, 투과및반사하는비율을말하는데, 이론적으로외부에너지를흡수만하고반사하지않는물체를흑체라하여이때의방사율은 "1" 입니다. 하지만, 일반적으로물체의표면상태 ( 광택, 거침, 산화여부등 ) 에따라흡수, 반사하는에너지량이변합니다. 재질에따른방사율값은하단의 " 방사율표 " 를참고하여변경하면됩니다. 단, " 방사율표 " 의값은절대적인값이아니며표면상태와그외복합적인환경요인에따라오차가있을수있으니, 이점참고하십시오. 대상 방사율 대상 방사율 대상 방사율 산화아연 0.1 에나멜 0.9 구리 ( 연마된 ) 0.5 아연도금철 0.3 페인트 0.95 구리 ( 산화된 ) 0.8 주석도금철 0.1 라카 0.9 니켈 ( 순수 ) 0.1 금 ( 연마된 ) 0.1 고무 (smooth) 0.9 니켈 ( 산화된 ) 0.4~0.5 은 ( 연마된 ) 0.1 고무 (Rough) 0.98 니켈크롬 0.7 크롬 ( 연마된 ) 0.1 플라스틱 0.8~0.95 니켈크롬 ( 산화된 ) 0.95 붉은벽돌 0.75~0.9 플라스틱필름 0.5~0.95 직물 0.9 흙 0.92~0.96 주철 ( 연마 ) 0.2 피부 0.98 석면 0.95 Steel 0.6 가죽 0.75~0.8 콘크리트 0.7 산화 Steel 0.9 얼음 0.96~0.98 대리석 0.9 목재 0.8~0.9 모래 0.9 모르타르 0.89~0.91 스테인레스 ( 연마된 ) 0.1 아스팔트 0.9~0.98 석고 0.85 스테인레스 ( 기타 ) 0.2~0.6 유리 0.8~0.9 시멘트 0.96 알루미늄 ( 연마된 ) 0.1 물 0.8~0.9 규토 ( 정제된 ) 0.4 알루미늄 ( 합금 ) 0.1~0.25 종이 0.9 세라믹 0.90~0.94 황동 ( 연마된 ) 0.1 실리콘 0.7 석영 0.9 황동 ( 거친 ) 0.2 주철 ( 부식된 ) 0.95 석탄 0.75 황동 ( 산화된 ) 0.6 Mild Steel 0.3~0.5 Fe( 부식된 ) 0.7~0.85
Page 17 of 20 Appendix - D (Example Code - Arduino UNO) 하단코드는아두이노 UNO 코드예제입니다. /***************************************************************************** * * Copyright (C) 2016 Diwell Electronics Co.,Ltd. * Project Name : (DTPM 시리즈 ) SPI Master Code * Version : 1.0 (2016.05.04) * SYSTEM CLOCK : 16Mhz * BOARD : Arduino UNO. 5V operation PORT Description 1. ChipSelectPin : 10 2. MOSI(Master Output) : 11 3. MISO(Master Input) : 12 4. SCK : 13 온도센서모듈입력전원은 3.3V 로하셔야하며포트연결방법은회로도를참고하십시오. 온도센서통신포트의논리레벨은 3.3V 이기때문에반드시회로도를참고하시기바랍니다. Revision history. 1. 2016.5.4 : First version is released. ****************************************************************************/ #include<spi.h> #define TARGET_CMD 0xA0 // 대상온도커맨드 #define SENSOR_CMD 0xA1 // 센서온도커맨드 const int chipselectpin = 10; unsigned char T_high_byte; unsigned char T_low_byte; int itarget, isensor; // 부호 2byte 온도저장변수
Page 18 of 20 void setup() { /* Initalize PORT */ pinmode(miso, INPUT); pinmode(chipselectpin, OUTPUT); pinmode(mosi, OUTPUT); pinmode(sck, OUTPUT); Serial.begin(9600); /* Setting CS & SPI */ digitalwrite(chipselectpin, HIGH); // CS High Level SPI.setDataMode(SPI_MODE3); // Setting SPI Mode SPI.setClockDivider(SPI_CLOCK_DIV16); // 16MHz/16 = 1MHz SPI.setBitOrder(MSBFIRST); // MSB First SPI.begin(); // Initialize SPI delay(500); // wating for DTS setup time int SEND_COMMAND(unsigned char ccmd) { digitalwrite(chipselectpin, LOW); // CS Low Level delaymicroseconds(10); // delay(10us) SPI.transfer(cCMD); // Send 1st Byte delay(10); // delay(10ms) T_low_byte = SPI.transfer(0x22); // Send 2nd Byte delay(10); //delay(10ms) T_high_byte = SPI.transfer(0x22); // Send 3rd Byte digitalwrite(chipselectpin, HIGH); // CS High Level return (T_high_byte<<8 T_low_byte); // 상위, 하위바이트연산
Page 19 of 20 void loop() { while(1) { itarget = SEND_COMMAND(TARGET_CMD); delay(50); // 대상온도 Read // 50ms : 이라인을지우지마세요 isensor = SEND_COMMAND(SENSOR_CMD); // 센서온도 Read delay(500); // 500ms : 이라인을지우지마세요. Serial.print("Target Temp : "); Serial.print(float(iTARGET)/10); Serial.print(" Sensor Temp : "); Serial.println(float(iSENSOR)/10); 아두이노 UNO 와 DTPM 연결회로도.
Page 20 of 20 Additional Information manufacturer : Diwell Electronics Co., Ltd. <( 주 ) 디웰전자 > Homepage : www.diwell.com shopping mall : www.diwellshop.com Phone : +82-70-8235-0820 Fax : +82-31-429-0821 Technical support : expoeb2@diwell.com, dsjeong@diwell.com DTPM Revision History Version Date Description 1.0 2014-06-10 First version is released. 1.3 2014-09-11 Page11. FOV 그림오류수정 1.4 2016-08-31 입력전압 3.3V 고정. DW Testboard 신제품내용추가 Arduino 코드 / 회로도추가