로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 공개소스
작성자 avrtools™        
작성일 2008/08/15
ㆍ추천: 0  ㆍ조회: 7527   
  아듀이노 온도센서, XBee 송수신
온도센서의 읽기
참조 사이트 : http://www.libelium.com/squidbee/index.php?title=Adding_a_temperature_sensor

사용하는 온도센서의 종류는 NTC이다. 아듀이노의 아날로그 입력포트에서 읽을 수 있다.
NTC는 부온도 특성을 가진 써미스터로 온도가 변화하면 저항값이 변하는 간단한 부품이다.
 

준비 부품 (Parsts List)
 
송신부
M168-USB 기판 : http://www.avrtools.co.kr/technote7/board.php?board=tnshopmain&command=shop&view=2_view_body&no=28
NTC 온도센서 (25 ℃에서 10 KΩ/표준품)
1 KΩ 1/4W 저항
3 개의 전선
XBEE MODEM
빵판 혹은 만능기판

수신부
XBEE MODEM
USB-XBEE DONGLE http://www.avrtools.co.kr/technote7/board.php?board=tnshopmain&command=shop&view=2_view_body&no=16
PC 혹은 NOTEBOOK
XTU 소프트웨어

NTC 온도센서
좌측부터 일반형 Radial Type, 고급형 Epoxy Type, 산업용 Galss Type이 있다.
일반형 Radial type인 NTC-502F397 과 산업용 Glass type NTC-10KGJG는,
디바이스마트에서 소매가격 250원 정도로 구입이 가능하다. (산업용이 좋다)

 
배선 (Wiring)
표시기는 아듀이노 기판의 D13 에 연결된 LED를 그대로 사용한다.
회로도와 같이 NTC 센서를 아날로그 입력 핀에 연결한다.

만일 NTC의 25℃ 저항값이 5K 이면 직렬저항을 같은 저항값인 5K를 사용한다.
온도검출 오차를 줄이기 위해, 5K NTC 보다는 10K나 20K NTC를 사용하는 것이 좋다.

  
NTC의 접속은 A2와 VCC에 접속한다. 또한 10K 저항을 A2와 GND에 연결한다.
만일 NTC의 연결선을 길게 하려면, 아날로그 입력과 GND에 0.1uF의 정전용량을 추가한다.
25℃에서의 아날로그 입력전압 = Vcc * 10K / (10K + 10K) = 5 * 1/2 = 2.5V   
25℃에서의 아듀이노 아날로그 입력값 = 입력전압 * 1023 = 511 로 읽혀진다.   

작동
NTC의 온도가 바뀌면 NTC의 저항값이 바뀐다. 이것을 전압으로 전환하여,
아듀이노의 아날로그 입력포트에서 아날로그 값으로 읽는다. 
이 값은 0~ 1023 으로 측정된 전압으로는 0 ~ 5 V를 나타낸다.
측정한 0~1023의 값을 실제의 온도값으로 변환은 수신측에서 합니다. 

즉 25 ℃에서 511 이므로, 511 / 25℃ = 20.44 즉 온도가 1℃ 상승하면,
아날로그 입력값은 510 에서 +20.44가 올라가서 530으로 읽혀 집니다.
NTC는 온도 측정용은 -25 to ~ 75℃는 ±0.2%, 75 ~ 150℃는 ±0.5%의 오차가 있다.
 
소스
// 제목 : 온도센서 (Temperature sensor)
// D13에 연결된 LED를 깜빡인다.
// 온도를 따라가는 NTC 저항값을 analogRead()로 읽어낸다.

int NTC = 2;       // A2에 NTC를 연결한다.
int ledPin = 13;   // LED는 D13에 연결한다.
int val = 0;         // 센서에서 읽은 값을 변수 val에 저장한다.

void setup() {
  pinMode(NTC, INPUT);         // NTC 포트는 입력이다.
  pinMode(ledPIN, OUTPUT);   // ledPin은 출력이다.
}

void loop() {
  val = analogRead(NTC);      // 센서에서 값을 읽는다
  digitalWrite(ledPin, HIGH);    //  LED를 켠다
  delay(val);                         // 측정된 온도값 만큼 시간을 대기한다 (측정값이 크면 점등시간을 길게 한다)
  digitalWrite(ledPin, LOW);    //  LED를 끈다
  delay(val);                         // 측정된 온도값 만큼 시간을 대기한다 (측정값이 크면 소등시간을 길게 한다)
}

------------------------------------------------------------------------------------------------------------------
XBEE 무선모뎀의 연결
참조 사이트 : http://mrtof.danslchamp.org/AXIC

 

아듀이노 기판에, 실내에서 30m, 실외에서 100m를 도달하는 XBEE 무선모뎀을 연결한다.
XBee는 MaxStream사의 2.4GHz를 사용하는 Zigbee 모뎀이다. 출하시 통신속도는 9600 bps 이다.
UART 속도와 RF 통신속도는, 서로 다른 영역의 값이다, XBee의 UART 연결속도가 9600 bps 라고,
RF 통신속도도 9600 bps가 아니다. (Zigbee RF Modem의 무선 전송속도는 250 Kbps이다)
 



XBee 무선모뎀은 3.3V용이다, 그러나 실험해 보면 3V 이하에서 작동이 더 잘 된다.
위에서 설명한 NTC 온도센서와 Xbee 무선모뎀을 연결하여 온도센서를 무선으로 연결하는 예제입니다.
XBee Shield 기판을 구입해도 좋지만, 이 정도의 회로는 빵판이나 만능기판에 쉽게 만들 수 있습니다.
 
 
주의
응용코드의 업로드시에 Xbee 무선모뎀을 연결하면 안됩니다.
위의 회로와 같이, 외부전원으로 건전지를 사용하려면,
업로드 이후에 PWR 점퍼는 USB 쪽에서 뽑아 VCC 쪽에 연결해야 합니다.
Xbee 무선모뎀을 연결하고, 마지막으로 9V 전지를 연결합니다.

온도센서와 PC와 연결
무선 온도센서와 PC와의 연결은 아래 사진과 같은 XBee USB동글을 사용하여 PC의 USB 포트로 연결합니다.
출하시 설정된 통신포맷과 PAN-ID등을 변경하려면, X-CTU.EXE 소프트웨어와 USB 동글이 필요하다.
X-ctu 소프트웨어 내려받기 : http://ledshop.co.kr/download/setup_x-ctu_5[1].0.22.exe 

 
 
XBee 무선모뎀의 설정
1:1의 통신에는 필요 없으나, 주변에 초기값을 가진 많은 XBee 무선모뎀이 사용되고 있다면,
원할한 통신을 위해서, XBee 무선모뎀의 초기값을 서용자 설정으로 바꾸어 주어야 한다.
 
설정방법은 우선 USB동글에 XBee무선모뎀을 꼽고, USB A-B 케이블로 PC와 연결한다.
PC측의 소프트웨어는 X-CTU.EXE를 사용하면 편리하다.

  

다른 직렬통신 프로그램을 사용하여, USB-Sreial 포트번호와 9600,N,1로 포트를 연결한다.
만일 XBee 무선모뎀의 PAN ID를 3332로 바꾸고 상대모뎀의 주소를 01, 자기주소를 0으로 하려면,


1) +++ 문자를 빠르게 연속으로 송신하면, XBee 무선모뎀이 명령수신상태로 되고, OK 문자가 수신된다.
2) 터미널에서 XBee 무선모뎀이 연결되면, ATID3332,DH0,DL1,MY0,BD3,WR,CN 을 입력한다.
3) 이것과 통신할 XBee 무선모뎀을 연결하고, ATID3332,DH0,DL0,MY1,BD3,WR,CN 을 입력한다.
 
PAN ID는 같은 무선주파수를 사용하는 Zigbee 모뎀들이 같은 목적의 장치인가를 구분한다.
PAN ID가 같고, 목적지(DH0, DL1) 자신(MY0)인 모뎀은 목적지(DH0, DL0) 자신(MY1)인 모뎀과 자동으로 연결된다.
 
            ID3332,DH0,DL1,MY0 <----> ID3332,DH0,DL0,MY1

 
만일 무선모뎀의 설정을 19200 으로 바꾸려면, BD3BD4로 바꾸어 입력해야 한다.
이후에는 XBee 무선모뎀의 연결은 즉시 19200 bps로 바꾸어야 통신이 됩니다.

참고로 PAN ID로 소개된 3332는 사용자가 임의로 4자리 숫자를 정해서 쓸 수 잇는 것이며
오히려 이 번호를 의미없이 많이 사용하면, 언젠가는 다른 장치와의 충돌로 통신이 안됩니다.
 
소스

온도센서를 XBee 무선모뎀으로 연결하는소스이다.
int sens0 = 0;    // 모두 3개의 샌서를 A0, A1, A2에 연결한다
int sens1 = 1;
int sens2 = 2;
 
int val0 = 0;       // 측정한 센서값을 저장하는 변수 3개
int val1 = 0;
int val2 = 0;
 
int count = 0;
 
void setup(){     // 직렬포트의 통신속도를 xbee 모뎀의 초기값 9600 으로 설정
  Serial.begin(9600);
}
 
// 데이터를 송신하는 함수, 송신하는 변수는 data0, data1, data2 이다.  
void sendData (int data0, int data1, int data2)
{
  Serial.print("@");         // 헤더 @를 송신 <- 송신 시작을 나타낸다. 
  Serial.print("0 ");          // 송신기의 ID를 0 으로 송신한다  (송신기 마다 틀려야 한다)

  Serial.print("temp 0 = ");    // 문자열을 송신 (센서 0의 이름) 
  Serial.print(data0, DEC);   // 센서값 A0을 송신
  Serial.print("temp 1 = ");    // 문자열을 송신 (센서 1의 이름) 
  Serial.print(data1, DEC);   // 센서값 A1을 송신
  Serial.print("temp 2 = ");    // 문자열을 송신 (센서 2의 이름)
  Serial.print(data2, DEC);   // 센서값 A2를 송신
 
  Serial.println("# ");            // 줄바꾸기(CR)을 송신 <- 송신 끝을 나타낸다.
}
 
void loop()                               // 주함수는 5초마다 3개의 온도값을 한줄로 송신한다

    val0 = analogRead(sens0);    // A0 에서 센서값을 읽어 온다. val0 에 저장
    val1 = analogRead(sens1);    // A1 에서 센서값을 읽어 온다. val1 에 저장
    val2 = analogRead(sens2);    // A2 에서 센서값을 읽어 온다. val2 에 저장
    
    sendData(val0, val1, val2);     // 데이터 송신 함수를 실행한다
    delay(5000);                         // 전지를 절약하기 위해서 5초를 기다린다
}

만일 XBee 무선모뎀의 직렬통신속도를 19200 으로 설정하려면, seup()을 Serial.begin(19200);으로 바꾼다.
직렬통신 포트에서 문자를 수신하는 방법은 다음과 같다. 수신된 6개의 문자는 inString[i]에 저장된다.
 int len = 5;                          // 수신할 문자의 갯수를 6으로 설정
 char inString[len];              // 수신할 문자를 저장하는 배열변수를 설정 
 
 if ( Serial.available() > 0)         // 무엇인가 수신된 문자가 있다면
{
   char inByte = Serial.read();    // 1 바이트를 수신한다
   if (inByte == '@')                    // 수신한 1 바이트 문자가 @ 인지 확인한다 (@를 식별자로 사용)  
  {
     for (int i = 0; i < len; i++) inString[i] = Serial.read();  // 문자를 6개 수신하여 inString에 저장한다.
   }
   // 여기에 수신된 6개의 문자를 처리하는 구문을 추가한다.
 }

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA

 AVRTOOLS™
   
윗글 아듀이노 910-ISP 만들기
아래글 아듀이노 기본명령
    N         제목    글쓴이 작성일 조회 추천
61 비접점식 QTouch 방식 근접검출 스위치 leeky 2016/01/21 (목) 716 0
60 Arduino 고속 오실로스코프 #3 avrtools™ 2012/03/29 (목) 17791 0
59 아날로그 8ch 데이터 로거 avrtools™ 2012/03/29 (목) 2835 0
58 Arduino DMX512 송신기 제작 avrtools™ 2012/03/15 (목) 2958 0
57 nRF24L01 무선모듈의 사용방법 avrtools™ 2012/03/07 (수) 5945 0
56 초음파 거리 측정기의 제작 avrtools™ 2011/09/18 (일) 4878 0
55 3축 가속도 센서 ADXL335 avrtools™ 2011/09/09 (금) 3402 0
54 Arduino Uno USBserial 펌웨어의 변경 avrtools™ 2011/08/27 (토) 3001 0
53 Arduino MIDI의 소개 avrtools™ 2011/08/19 (금) 3404 0
52 Arduino 고속 Oscillo Scope #2 avrtools™ 2011/08/12 (금) 3023 0
51 Arduino Uno 및 USB2serial Uno의 소개 [2] avrtools™ 2011/07/30 (토) 3294 0
50 Arduino IDE에서 AVRISP-mkII 사용방법 avrtools™ 2010/10/22 (금) 7940 0
49 아듀이노 초음파 거리측정 및 응용 avrtools™ 2010/03/14 (일) 4149 0
48 M328-USB의 비밀 온도센서 avrtools™ 2010/01/02 (토) 3564 0
47 M168-mini로 만드는 USBasp avrtools™ 2009/10/10 (토) 5340 0
46 OBDuino ISO9141 소스의 설명 avrtools™ 2009/10/08 (목) 4168 0
45 아듀이노 0017 업그레이드 avrtools™ 2009/08/18 (화) 3697 0
44 Arduino 0015 업그레이드 avrtools™ 2009/06/01 (월) 3384 0
43 CC2500 Zigbee RF Modem #1 [4] avrtools™ 2008/11/20 (목) 6650 0
42 아듀이노 소프트웨어 Ver 0012 avrtools™ 2008/09/23 (화) 4014 0
41 Arduino 소프트웨어 설치방법 avrtools™ 2008/08/31 (일) 5589 0
40 아듀이노 PC 카메라 제작 avrtools™ 2008/10/28 (화) 7207 0
39 아듀이노 AVR-ISP V2의 제작 [6] avrtools™ 2008/10/22 (수) 8288 0
38 아듀이노 J1850-PWM 스캐너 avrtools™ 2008/10/15 (수) 4532 0
37 아듀이노 MPGduino의 제작 avrtools™ 2008/10/11 (토) 4904 0
36 아듀이노 OBD-II PID 처리함수 avrtools™ 2008/10/12 (일) 5486 0
35 아듀이노 OBD-II PID 송수신 함수 avrtools™ 2008/10/09 (목) 9654 0
34 아듀이노 ODB-II 스캐너 제작 [9] avrtools™ 2008/10/04 (토) 17257 0
33 아듀이노 AC전원 THD 측정 [2] avrtools™ 2008/09/30 (화) 6787 0
32 아듀이노 소프트방식 16Bit ADC avrtools™ 2008/09/23 (화) 5558 0
31 아듀이노 초음파 모듈의 제작. avrtools™ 2008/09/22 (월) 4841 0
30 아듀이노 Wii 프로세싱 avrtools™ 2008/09/20 (토) 4144 0
29 아듀이노 초음파 거리측정 avrtools™ 2008/09/20 (토) 6055 0
28 아듀이노 8x5 초소형 전광판 avrtools™ 2008/09/11 (목) 4664 0
27 아듀이노 4선식 터치패널 avrtools™ 2008/09/10 (수) 4658 0
26 아듀이노 2색 8x8 LED avrtools™ 2008/09/10 (수) 4897 0
25 아듀이노 24x6 LED 전광판 avrtools™ 2008/09/10 (수) 5440 0
24 아듀이노 8x8 LED 프로세싱 avrtools™ 2008/09/10 (수) 4105 0
23 아듀이노 32x16 RGB 전광판 avrtools™ 2008/09/06 (토) 13676 0
22 아듀이노 맥박검출기 avrtools™ 2008/09/03 (수) 9489 0
21 아듀이노 적외선 거리센서 avrtools™ 2008/09/01 (월) 5941 0
20 아듀이노 DMX 수신장치 [7] avrtools™ 2008/08/31 (일) 6782 0
19 아듀이노 AVR-ISP 만들기 avrtools™ 2008/08/30 (토) 4137 0
18 아듀이노 POV #3 avrtools™ 2008/08/30 (토) 3463 0
17 아듀이노 POV #2 avrtools™ 2008/08/30 (토) 3247 0
16 AVR 병렬포트 굽기장치 avrtools™ 2008/08/30 (토) 5212 0
15 아듀이노 DMX 송신기 avrtools™ 2008/08/28 (목) 5124 0
14 아듀이노 부트로더의 개조 [1] avrtools™ 2008/08/28 (목) 5771 0
13 아듀이노 병렬포트 굽기장치 avrtools™ 2008/08/26 (화) 4208 0
12 아듀이노 POV #1 avrtools™ 2008/08/26 (화) 3491 0
11 아듀이노 MIDI 드럼 leeky 2008/08/24 (일) 4774 0
10 아듀이노 SD/MMC 카드 avrtools™ 2008/08/24 (일) 9784 0
9 아듀이노 MIDI 플륫 avrtools™ 2008/08/24 (일) 3602 0
8 아듀이노 RGB LED avrtools™ 2008/08/23 (토) 5036 0
7 아듀이노 USB 오실로스코프 [2] leeky 2008/08/21 (목) 6430 0
6 가속도계 ADXL202 응용소스 avrtools™ 2008/08/20 (수) 4906 0
5 아듀이노 가속도센서 avrtools™ 2008/08/18 (월) 4893 0
4 아듀이노 RC서보 제어 avrtools™ 2008/08/17 (일) 5226 0
3 아듀이노 910-ISP 만들기 avrtools™ 2008/08/16 (토) 4719 0
2 아듀이노 온도센서, XBee 송수신 avrtools™ 2008/08/15 (금) 7527 0
1 아듀이노 기본명령 avrtools™ 2008/08/07 (목) 6620 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0