문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
moacon:gettemp:index [2016/03/23 14:33] Comfile Technology [사용예제] |
moacon:gettemp:index [2020/02/23 13:59] (현재) Comfile Technology [사용예제] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== getTemp ====== | ||
+ | ''int getTemp (u8 tempId, u8 tempCh) '' | ||
+ | |tempId : 온도모듈의 ID (0 부터 9 사이의 값) | | ||
+ | |tempCh : 읽어올 채널 (1 부터 4 사이의 값) | | ||
+ | |||
+ | ==== 설명 ==== | ||
+ | RS-THRT4 (온도 입력모듈)을 위한 함수입니다. | ||
+ | tempId 는 온도입력모듈 전면부에 있는 ID 라고 적힌 로터리 스위치를 의미합니다. tempCh 는모듈에 있는 4 개 채널중 측정하고자하는 하나의 채널을 뜻합니다. 본 함수는 해당 채널에 | ||
+ | 연결된 PT100 온도 센서로부터 읽어온 –1000 부터 5000 사이의 값을 반환합니다. | ||
+ | |||
+ | 원래는 소수점 밑으로 내려가야될 1 자릿수가 포함되어 있습니다. 즉, 20.5 도는 205 로 반환됩니다. 나누기 10 을 해야 실제 온도값이 됩니다. 소수점 아래 자릿수는 10 으로 나눈 | ||
+ | 나머지값으로 알 수 있습니다. | ||
+ | |||
+ | <code c> | ||
+ | j = getTemp(2,1); | ||
+ | k = j / 10; //온도값 정수부 | ||
+ | m = j % 10; //온도값 소수부 | ||
+ | </code> | ||
+ | |||
+ | 이렇게 하는 이유는 실수형 변수를 사용하지 않고 정수형 변수만으로 처리하기 위해서입니다. GetTemp 함수는 단지 소수점 아래 1 자리만 필요로 하므로, 10.2 의 경우 | ||
+ | 102 로 반환합니다. (정수형변수가 실행속도면에서 유리하기 때문입니다.) | ||
+ | |||
+ | 만약 센서가 연결되어 있지 않거나, 접촉불량일 경우, 또는 측정범위를 넘어선 경우에는 다음과 같은 값이 반환됩니다. | ||
+ | |||
+ | ^예외상황 (10 진수) ^설명^ | ||
+ | |20001 ~ 20003 |모듈과 통신중 에러가 발생된경우| | ||
+ | |20004 |모듈이 없거나, 해당 ID 가 없는 경우| | ||
+ | |20005 |센서가 연결되어 있지 않거나, 단선된 경우| | ||
+ | |55555 |+영역을 초과한 경우| | ||
+ | |11111 |-영역을 초과한 경우 | | ||
+ | |||
+ | ==== 온도 센싱 속도 ==== | ||
+ | |||
+ | 온도센서의 채널별 샘플링 주기는 200 밀리 초입니다. 온도센서 모듈은 항상 온도센싱을하고 있다가 getTemp 함수가 실행되면, 측정해 놓은 값을 보내줍니다. | ||
+ | |||
+ | 온도센서 모듈은 4 개의 채널을 가지고 있으므로 모든 채널을 한번 스캔하는데 800mS , 즉 0.8 초가 필요합니다. 따라서 0.8 초보다 빠른 주기로 getTemp 함수를 실행시키는 것은의미없는 불필요한 동작입니다. GetTemp 함수의 실행시간은 대략 3mS 입니다. | ||
+ | |||
+ | 최초 파워온시 모든 채널을 한번 스캔하는 데 걸리는 시간동안은 getTemp 함수를 실행하지 말아야 합니다. 아직 온도센싱을 하지 않았기 때문에 엉뚱한 값이 읽혀지게 됩니다. | ||
+ | |||
+ | 파워온후 0.8 초 이후에 getTemp 함수를 사용하십시오. | ||
+ | ==== 사용예제 ==== | ||
+ | <code c> | ||
+ | #include "moacon500.h" | ||
+ | void cmain(void) | ||
+ | { | ||
+ | int i; | ||
+ | short j; | ||
+ | clcdI2cInit(0); // 슬레이브 어드레스는 0 으로 합니다. | ||
+ | clcdPower(1); // lcd 의 Power 를 On | ||
+ | delay(100); // clcd 기동시간 대기 | ||
+ | clcdCls(); | ||
+ | clcdCsr(0); | ||
+ | delay(800); // 온도센서모듈 최초 샘플링시간 대기 | ||
+ | while(1) { | ||
+ | j = getTemp(2,1); | ||
+ | if (j > 9000) | ||
+ | clcdPrint (0,1,"Temp Err:%d",j); // 에러상황 (단선, over range 등) | ||
+ | else | ||
+ | clcdPrint(0,2,"Temp:%d.%d",j/10,j%10); // 100 번지에서 읽은값을 print | ||
+ | |||
+ | delay(100); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 위 프로그램을 실행하면 LCD 에 온도값이 표시됩니다. | ||
+ | |||
+ | {{ :moacon:gettemp:tempdisplay.png?nolink |}} | ||
+ | |||
+ | |||
+ | [[moacon:index#-f-|라이브러리 목록으로 가기]] |