======ML-NTC2 2채널 써미스터 온도변환 모듈 ====== ML-NTC2 모듈은 NTC 써미스터 온도센서를 측정할 수 있는 2채널 소형 온도변환모듈 입니다. {{ :ml-ntc2:ml_ntc2_a.jpg?nolink |}} -40도 ~ 99도까지 측정할 수 있는 실용적인 저가형 온도변환 모듈입니다. 통신 방식은 RS485이며 MODBUS RTU 프로토콜을 이용하여 측정된 온도값을 읽어올 수 있습니다. 최대 15개까지 동일 선로에 연결할 수 있습니다. 주로 큐블록/모아콘 또는 MCU와 연결하여 사용합니다. 여러분은 온도변환 테이블과 변환공식등은 신경쓰실 필요없이 직접 온도값을 읽어와서 사용하실 수 있습니다. 센서이상유무 (오픈과 쇼트등)도 체크합니다. =====ML-NTC2의 사양 ===== * 전원입력 : 5VDC * 센서 TYPE : NTC 10K옴(3970) * 측정범위 : -40℃ ~ 99℃ * 사용습도 : 35 ~ 85%RH * 정밀도 : ± 1% * 크기 : 42mm X 26mm * 통신방식 : RS485 **//(57600보레이트, 8비트, 1스톱비트)고정, NONE패리티//** / 변경불가 * 프로토콜 : MODBUS-RTU =====각부의 기능 ===== {{ :ml-ntc2:1-4각부의_설명.png | }} ^ID 설정 스위치 \\ (슬레이브 어드레스) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ^ 1 | | on | | on | | on | | on | | on | | on | | on | | on | ^ 2 | | | on | on | | | on | on | | | on | on | | | on | on | ^ 3 | | | | | on | on | on | on | | | | | on | on | on | on | ^ 4 | | | | | | | | | on | on | on | on | on | on | on | on | * 1~15까지 사용가능, 0번은 사용할 수 없음 * 공백은 OFF를 의미함 =====측정온도 데이터처리 ===== ML-NTC2 센서로부터 -40℃ ~ 99℃ 의 값을 2 Byte의 data값으로 반환하고 예외 상황이 발생하면 해당 에러코드를 반환합니다. ==== 양수 데이터처리 ==== 기본적으로 곱하기 100한 온도값을 반환합니다. 2054(0x0806) 을 반환한다면 20.54℃ 를 뜻하는 것입니다. ==== 음수 데이터처리 ==== -40℃ ~ 0℃의 음수의 온도 값은 data값의 최상위 비트가 1이 됩니다. **즉, -20.54℃는 34822(0x8806) 값을 반환합니다.** 음수의 온도 값을 처리하기 위해서는 최상위 비트를 비교하여 32768(0x8000)값을 빼주면 됩니다. ==== 에러 데이터 ==== * 온도센서 Open일 때 : 22222 * 온도센서 Short일 때 : 22229 * 측정온도 120도 이상일 때 : 22223 * 측정온도 -40도 이하일 때 : 22224 =====통신 패킷 ===== ML-NTC2의 슬레이브 어드레스(Slave address)는 DIP스위치로 설정하며, 센서 체널0, 1의 시작어드레스(Start address)는 500(0x01F4), 501(0x01F5) 이며, Function은 0x03(Word read)를 사용하여야 합니다. 아래는 ML-NTC2의 온도 값을 읽기 위한 통신패킷 설명 및 예제 입니다. **//☞기존 시작어드레스(Start address) 각 체널별로 0, 1주소값이 500, 501로 변경되었습니다. 기존 사용자는 유의하시기 바랍니다.//** ====Request==== {{:ml-ntc2:1-2_페킷_req_.png|}} * Slave address(ID) : 읽어올 모듈의 ID스위치 값 사용합니다. * Function : 1워드를 읽을 수 있는 0x03(Word Read)을 사용합니다. * Start address : 체널0은 0x01F4(500), 체널1은 0x01F5(501)를 사용합니다. * Length : 읽어올 체널수 1, 또는 2 사용합니다. * CRC: Slave address부터 Length(low)까지의 CRC16의 값. ==== Response==== {{:ml-ntc2:1-3_페킷_rep_.png|}} * Slave address(ID) : 읽어온 모듈의 ID스위치(Slave address) 값 * Function : 0x03고정(Word Read) * Byte count : DATA의 BYTE 개수 * data : 측정된 온도의 값 (0x0806 = 2054 => 20.54℃) * CRC : Slave address부터 Data(Low)까지의 CRC16의 값. =====컴파일 제품군과의 결선 ===== * MSB 제품군 결선 {{ :ml-ntc2:msb제품군_결선:1-5_msb_.png | }} * CUSB 제품군 결선 {{ :ml-ntc2:cusb제품군_결선:1-6_cusb_.png | }} * MOACON 결선 {{ :ml-ntc2:moacon_견선:1-7_moacon_.png | }} =====제품구성===== * ML-NTC2 제품 (보드) * NTC 서미스터 2개 * 5선 케이블 1개 {{ :ml-ntc2:ml_ntc2_full_a.jpg?nolink&400 |}} MSB시리즈중 RS485포트가 있는 모델에는 바로 연결가능합니다. {{ :ml-ntc2:dsc04031.jpg?nolink&400 |}} 기본적으로 포함되어 있는 NTC서미스터를 케이블형 NTC서미스터(추가 구매) 로 바꾸면, 원격지에 있는 온도를 측정할 수 있습니다. {{:ml-ntc2:ntc2.png?nolink|}} 추가 구매한 케이블형 NTC서미스터 끝부분에 있는 모렉스 콘넥터 (본래 MSB시리즈에 결합할 수 있는 형태로 만든 제품이기 때문에 모렉스형으로 되어 있음)를 제거하신뒤 터미널 블록에 연결하시면 됩니다. 극성은 따로 없습니다. {{ :ml-ntc2:ntccalbe.png?nolink |}} =====큐블록 연결 예제===== 큐블록 MSB 에서 RS485 채널3에 연결된 온도센서(NTC 서미스터)를 읽어와 DEBUG창에 표시하는 샘플 프로젝트입니다. {{ :ml-ntc2:msb_ntc2_.zip |Cubloc 소스 다운로드}} {{ :ml-ntc2:msb_ntc2.jpg?700 |}}
===== 소스코드 ===== '================================================= ' ' MSB rs485 CH3 으로 ML-NTC2 온도변환모듈 연결후 HMI에 온도값 표시 ' '================================================= ' 큐블록 제품에 rs485포트가 있는 제품은 ML-NTC2 바로연결 가능하며, rs232만 있다면 컨버터 사용하여 연결해야함. #include "MSB6XX" Dim K As Byte Dim txb(10) As Byte Dim c As Integer Dim data(10) As Byte Dim data1 As Long Dim Ch0 As String Dim Ch1 As String On Recv3 Gosub RCV_RTN ' ch3 수신 인터럽트, 데이터가 들어오면 RCV_RTN Ramclear Do MLNTC_TX 1,500,2 ' *슬레이브어드레스 (ID설정), ' *시작어드레스(Start address)채널0은 0, 채널1은 1 ' *읽어올 채널수 1, 또는 2 Delay 100 ' 100ms 주기 Loop RCV_RTN: '수신 데이터 값 If Blen(3,0) > 0 Then '버퍼에 데이터 수신시 data(K)=Get(3,1) '수신된 패킷중 9바이트 data()배열 변수에 저장 Incr K data1.BYTE3 =data(3) '온도값만 변수에 저장 data1.BYTE2 =data(4) data1.BYTE1 =data(5) data1.BYTE0 =data(6) Ch0=Dp(data1.Word1) Ch1=Dp(data1.Word0) Debug "CH0:", Left(Ch0,2),".",Right(Ch0,2) ,Cr Debug "CH1:", Left(Ch1,2),".",Right(Ch1,2) ,Cr Endif If K=9 Then '9바이트 수신시 수신버퍼 clear K=0 Bclr 3,0 Endif Return Sub MLNTC_TX( _slavead As Byte,_startad As Integer, _lench As Integer ) '송신 데이터 전송 값 txb(0)= _slavead txb(1)= 3 txb(2)=_startad.Byte1 txb(3)=_startad.Byte0 txb(4)=_lench.Byte1 txb(5)=_lench.Byte0 Getcrc c,txb,6 ' ┐ txb(6)=c.Byte1 ' │ 자동 계산하여 넣은 CRC값 txb(7)=c.Byte0 ' ┘ Puta 3,txb,8 ' 배열에 저장됐던 데이터값 송신 End Sub [[:index|Comfile Technology's Document Library]]