V51-SHT11

Page 1

 

 

     นับจากบทที่ 14 นีเป ้ นตนไป จะนําเสนอตัวอยางการทดลองและใชงานไมโครคอนโทรลเลอร P89V51RD2 กับโมดูลตรวจจับสัญญาณหรือปริมาณทางฟสิกสหรือเซนเซอร (sensor) ในแบบตางๆ โดยเริมจาก ่ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิในบทนี้ ตอดวย MXD2125 โมดูลวัดความ เร งและความลาดเอียงในบทที่ 15 การใชงานโมดูลรับแสงอินฟราเรดเพื่อใชในการสื่อสารขอมูล อนุกรมผานแสงอินฟราเรดในบทที่ 16 จากนั้นเปนการใชงานโมดูลเข็มทิศอิเล็กทรอนิกส CMPS03 ในบทที่ 17 และสุดทายบทที่ 18 เปนการใชงานโมดูลตรวจจับและวัดระยะทางดวยคลืนความถี ่ ่หรือ เสียงหรืออัลตราโซนิก SRF04

14.1 คุณสมบัติของโมดูล SHT11 เปนโมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิจาก Sensirion (www.sensirion.com) มีขนาดเล็ก และเพือความสะดวกในการใช ่ งานจึงไดติดตังลงบนแผ ้ นวงจรพิมพและตอคอนเน็กเตอร 8 ขา เพือให ่ สามารถติดตังลงบนแผงต ้ อวงจรหรือเบรดบอรดเพือทํ ่ าการทดลองไดงาย รวมไปถึงการนําไปประยุกต ใชงานจริงดวย ในรูปที่ 14-1 แสดงรูปรางของโมดูล SHT11 และการจัดขา สวนคุณสมบัติทางเทคนิค ทีสํ่ าคัญมีดังนี้ ่ นทั้งตัววัดความชืนและอุ ้ ณหภูมิภายใตตัวถังเดียวกัน  ทําหนาทีเป  สามารถกําหนดความละเอียดของยานการวัดได  มีขนาดเล็กและกินพลังงานตํ่า  ทํางานในยานแรงดันไฟเลี้ยง +2.4 ถึง +5.5V  เสถียรภาพในการทํางานสูง


  

330

4.7k

DATA 1 2

8 +5V SHT11

7

CLOCK 3

6

GND 4

5

รูปที่ 14-1 รูปรางของโมดูล SHT11 และการจัดขาเพือต ่ อใชงาน

14.2 ขาสัญญาณสําหรับสือสารข ่ อมูลของโมดูล SHT11 14.2.1 ขาสัญญาณนาฬิกา (SCK) ทําหนาทีรั่ บสัญญาณนาฬิกาเพือกํ ่ าหนดจังหวะในการสือสารข ่ อมูล

14.2.2 ขาสัญญาณรับ/สงขอมูล (DATA) เปนขาสัญญาณสําหรับรับ/สงขอมูล ในการใชงานควรตอตัวตานทาน 10k พูลอัปที่ขานี้

14.3 รูปแบบการสือสารข ่ อมูลของ SHT11 14.3.1 การสงคําสัง่ (Sending a Command) ในสภาวะเริมต ่ นกอนการสงขอมูลคําสังจากไมโครคอนโทรลเลอร ่ ไปยัง SHT11 จําเปนจะตอง สร างรู ปแบบสัญญาณกระตุนผานขาสัญญาณ SCK และ DATA เพื่อใหตรงกับเงื่อนไขที่เรียกวา Transmission start หรือภาวะเริ่มสงสัญญาณ นั่นคือขา DATA ตองถูกทําใหเปนลอจิก “0” นานอยาง นอย 1 ไซเกิลของสัญญาณนาฬิกา SCK หลังจากนี้ SHT11 จะทราบไดทันทีวา ขอมูลตอจากนีคื้ อ คําสัง่

DATA

SCK


 

คําสั่ง

ขอมูลคําสั่ง

สงวนไว

0000x

อานคาอุณหภูมิ (Measure Temperature)

00011

อานคาความชื้นสัมพัทธ (Measure Humidity)

00101

อานคารีจิสเตอรกําหนดสถานะ (Read Status Register)

00111

สงวนไว

0101x ถึง 1110x

รีเซตการทํางาน(Soft reset) ทําใหรีจิสเตอรกําหนดสถานะกลับไปสูคา default และตองใชเวลาในการทํางานอยางนอย 11 มิลลิวินาที จึงจะสามารถรับคําสั่งถัดไปได

11110

ตารางที่ 14-1 รายละเอียดคําสังและข ่ อมูลคําสังสํ ่ าหรับควบคุมการทํางานของโมดูล SHT11 หลังจากสรางเงื่อนไข Transmission start แลว สามารถสงคําสังไปยั ่ ง SHT11 เพื่อกําหนดการ ทํางานไดทันที โดยขอมูลคําสั่งตางๆ สําหรับการทํางานแสดงตามตารางที่ 14-1

14.3.2 รีเซตการเชื่อมตอ (Connection reset sequence) เมื่อตองการเริ่มตนการเชื่อมตอระหวางไมโครคอนโทรลเลอรกับโมดูล SHT11 ตองสราง สัญญาณรีเซตขึ้นกอน โดยทําใหขา DATA มีสถานะลอจิก “1” นานเทากับชวงเวลาที่ปอนสัญญาณ นาฬิกาทที่ขา SCK 9 ลูกติดตอกัน แลวตามดวยการสรางภาวะเริมต ่ นการสงสัญญาณ ภาวะเริ่มสงสัญญาณ DATA SCK

1

2

3

4

5

6

7

8

9

14.3.3 ขั้นตอนการอานอุณหภูมิและความชืนสั ้ มพัทธ การอานขอมูลดิบของอุณหภูมิหรือความชืนสั ้ มพัทธนัน้ ทําไดภายหลังจากสรางสภาวะเริมต ่ น ทีเรี ่ ยกวา Transmission start แลว ตามดวยการสงขอมูลคําสังอ ่ านอุณหภูมิหรือความชืนสั ้ มพัทธอยาง ใดอยางหนึ่งไปยัง SHT11 โมดูล SHT11 ตองใชเวลาในการประมวลผลเพื่อใหไดผลลัพธที่ตองการ ซึงจะใช ่ เวลามากหรือนอยขึนอยู ้ กั บความละเอียดของขอมูลทีต่ องการดังแสดงในตารางที่ 14-2


  

ความละเอียดของขอมูลที่ประมวลผล

เวลาที่โมดูล SHT11 ใชประมวลผล (15%)

14 บิต

210 มิลลิวินาที

12 บิต 8 บิต

55 มิลลิวินาที 11 มิลลิวินาที

ตารางที่ 14-2 แสดงคาเวลาทีโมดู ่ ล SHT11 ตองใชในการประมวลผลขอมูล

14.4 การคํานวณคาอุณหภูมิ ในการอานคาอุณหภูมิจากโมดูล SHT11 ผูพั ฒนาสามารถเลือกความละเอียดในการอานไดใน แบบ 14 บิตหรือ 12 บิต โดยทีความละเอี ่ ยด 14 บิตเปนคาตังต ้ น โดยทีผู่ พั ฒนาจําเปนจะตองอานขอมูล ดิบจากโมดูล SHT11 เขามากอน จากนันจึ ้ งใชกระบวนการทางคณิตศาสตรเพือให ่ ไดคาอุณหภูมิออก มา โดยสามารถคํานวณไดจากสมการที่กําหนดมาจาก Sensirion ผูผลิ  ตโมดูล SHT11 ดังนี้ Temperature = d1+(d2 x SOT)

......................(14.1)

โดยที่ Temperature คือคาอุณหภูมิจริง d1 คือคาคงที่ ขึ้นอยูกับไฟเลี้ยงทีป่ อนใหกับขา VDD ของ SHT11 ดูรายละเอียดในตารางที่ 14-3 d2 คือคาคงที่ ขึ้นอยูกั บความละเอียดของอุณหภูมิทีต่ องการจาก SHT11 ดูในตารางที่ 14-3 SOT คือคาอุณหภูมิดิบที่อานไดจากโมดูล SHT11

ไฟเลี้ยง

คาคงที่ทางอุณหภูมิตัวที่ 1 (d1) ๐

ในหนวย C

ในหนวย F

+5V

-40.00

-40.00

+4V

-39.75

-39.50

+3.5V

-39.66

-39.35

+3V

-39.60

-39.28

+2.5V

-39.55

-39.23

ความละเอียด 14 บิต 12 บิต

คาคงที่ทางอุณหภูมิตัวที่ 2 (d2) ในหนวย ๐C

ในหนวย ๐F

0.01

0.018

0.04

0.072

ตารางที่ 14-3 การกําหนดคาคงที่ทางอุณหภูมิตัวที่ 1 และ 2 (d1 และ d2) เพื่อคํานวณคา อุณหภูมิจริงทีวั่ ดได


 

14.5 คํานวณคาความชืนสั ้ มพัทธ สําหรับการอานคาความชืนสั ้ มพัทธจากโมดูล SHT11 สามารถเลือกความละเอียดในการอาน ไดในแบบ 12 บิตหรือ 8 บิต โดยที่ความละเอียด 12 บิตเปนคาตังต ้ นหลักโดยที่ผูพั ฒนาจําเปนจะตอง อานขอมูลดิบจากโมดูล SHT11 เขามากอน จากนั้นจึงใชกระบวนการทางคณิตศาสตรเพื่อใหไดคา ความชืนสั ้ มพัทธออกมา โดยสามารถคํานวณไดจากสมการที่กําหนดมาจาก Sensirion ผูผลิ  ตโมดูล SHT11 ดังนี้ RHtrue = (T - 25) x [t1 + (t2 x SORH)] + RHlinear ..............................(14.2) RHlinear=c1 + (c2 x SORH ) + [c3 x (SORH)2] .................................(14.3) โดยที่ RHtrue คือคาความชืนสั ้ มพัทธจริง T คือ คาอุณหภูมิจริงที่คํานวณไดจากสมการที่ 14.1 t1และ t2 คือคาคงทีโดยขึ ่ นอยู ้ กั บความละเอียดของความชืนสั ้ มพัทธทีต่ องการจาก SHT11 ดูราย ละเอียดการกําหนดคาจากตารางที่ 14-4 c1 ,c2 และc3 คือคาคงที่ขึ้ นอยูกั บความละเอียดของความชืนสั ้ มพัทธที่ตองการจากโมดูล SHT11 ดูรายละเอียดการกําหนดคาจากตารางที่ 14-4 ้ มพัทธดิบที่อานไดจาก SHT11 SORH คือคาความชืนสั

คาคงที่

ความละเอียด 12 บิต 8 บิต

คาคงที่

ความละเอียด

t1

t1

0.01

0.00008

0.01

0.00128

c1

12 บิต 8 บิต

c2

c3

-4

0.0405 -2.8x10-6

-4

0.648

-7.2x10-4

ตารางที่ 14-4 การกําหนดคาคงทีซึ่ งต ่ องใชในการคํานวณคาความชืนสั ้ มพัทธจริงทีวั่ ดได


  

      ในการทดลองนี้เปนการเขียนโปรแกรมภาษา C เพื่อติดตอกับ SHT11 โมดูลวัดความชื้นสัมพัทธและ อุณหภูมิ เพื่ออานคาปริมารทางฟสิกสทีวั่ ดไดมาแสดงผลทีโมดู ่ ล LCD สามารถใชทดลองกับ P89C51RD2BN ไดดวย เพียงเปลี่ยนไฟลไลบรารีของไมโครคอนโทรลเลอรเปน reg51rx.h หรือกระทังใช ่ กับไมโครคอนโทรลเลอร MCS-51 มาตรฐาน เพียงเปลี่ยนคาหนวงเวลาตางๆ ใหสัมพันธกับความเร็วทีกลั ่ บไปใชคา 12 สัญญาณนาฬิกา ตอแมชีนไซเกิล และเปลี่ยนไฟลไลบรารีของไมโครคอนโทรลเลอรเปน reg51.h 22.1 ตอวงจรตามรูปที่ L22-1 +5V 31 C2 1/50V

2

40

5

RESET 9 R1 10k

RST

+5V

C1 0.1/50

P3.6 P3.7

IC1 P89V51RD2 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2

6

16 17

4

C5 0.1/ 50V

R2 10k x8

32

+5V

R/W E

3 DSP1 LCD 16x2

RS D7 D6 D5 D4 D3 D2 D1 D0 14 13 12 11 10 9 8 7

VR1 10k

1

33 34 35 36 37

38 P0.1 39 P0.0

+5V

R3 4k7 P1.0 P1.1

R4 4k7

8

1

1

2

3

20

DATA CLK MOD1 SHT11 4

18 C3 33pF

19 C4 33pF

XTAL1 11.0592MHz

รูปที่ L22-1 วงจรทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืน้ สัมพัทธและอุณหภูมิ


  /*—————————————————————————————————————————————————————————————————————————*/ // Program : Humidity & Temperature Sensor demo by SHT11 // Description : Read Humidity & Temperature from SHT11 display value on LCD // Filename : l2201.c // C compiler : RIDE 51 V6.4.35 /*—————————————————————————————————————————————————————————————————————————*/ #include <REGLV51RD2.h> // Header file register for P89V51RD2BN #include <intrins.h> // Library for _nop_ function #include <lcdV51.h> // Library for LCD display #define MEASURE_TEMP 0x03 #define MEASURE_HUMI 0x05 #define TEMP 0 #define HUMI 1

// Macro of reading Temperature command // Macro of reading Humidity command // Macro to select Temperature reading // Macro to select Humidity reading

#define C1 -4.0 // Constant C1 for Humidity calculation (12-bit resolution) #define C2 0.0405 // Constant C2 for Humidity calculation (12-bit resolution) #define C3 -0.0000028 // Constant C3 for Humidity calculation (12-bit resolution) #define T1 -0.01 #define T2 0.00008 sbit DATA = P1^0; sbit SCK = P1^1;

// Constant T1 for Temperature calculation (14-bit resolution) // Constant T2 for Temperature calculation (14-bit resolution) // Configuration DATA pin // Configuration SCK pin

/*********************** Function for delay a few time ***********************/ void wait() { char x; // Variable for counter for(x=0;x<8;x++) // Loop for delay a few time _nop_(); // Delay 1 machine cycle } /*********************** SHT11 writing command function *****************/ void sht11_write(unsigned char value) { unsigned char i; // Variable for counter for(i=0x80;i>0;i/=2) // Loop to shift bit for compare data to sending { if(i & value) // Data bit AND operation logic “1”? DATA = 1; // Send logic “1” to DATA pin else DATA = 0; // Send logic “0” to DATA pin SCK = 1; // Generate clock to SCK pin wait(); // Wait a few time SCK = 0; } DATA = 1; // Release DATA pin SCK = 1; // Generate clock to SCK pin wait(); // Wait a few time SCK = 0; } /*********************** SHT11 reading command function *******************/ char sht11_read() { unsigned char i,value; DATA = 1; // Release DATA pin for(i=0x80;i>0;i/=2) // Loop to shift bit for compare data to sending

โปรแกรมที่ P22-1 โปรแกรมภาษา C สําหรับทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิ (มีตอ)


   { SCK = 1; if(DATA) value = value | i; SCK = 0; } SCK = 1; wait(); SCK = 0; DATA = 1; return(value);

// Generate clock to SCK pin // Store data bit // Generate clock to SCK pin // Wait a few time // Release DATA pin // Return data reading from SHT11

} /*********************** SHT11 initial transmittion start function ***********/ void transmission_start(void) { DATA = 1; // Set DATA pin SCK = 0; // Clear SCK pin wait(); // Wait a few time SCK = 1; // Set SCK pin wait(); // Wait a few time DATA = 0; // Clear DATA pin wait(); // Wait a few time SCK = 0; // Clear SCK pin wait(); // Wait a few time SCK = 1; // Set SCK pin wait(); // Wait a few time DATA = 1; // Set DATA pin wait(); // Wait a few time SCK = 0; // Clear SCK pin } /*********************** SHT11 connection reset sequence function **************/ void connection_reset() { unsigned char i; // Variable for counter DATA = 1; // First time for DATA pin SCK = 0; // First time for SCK pin for(i=0;i<9;i++) // Loop for toggle SCK 9 times { SCK = 1; // Generate clock to SCK pin wait(); // Wait a few time SCK = 0; } transmission_start(); // Transmission start } /************* SHT11 readout data function (2 byte) **************/ int sht11_read_measure(unsigned char measure_sel) { int value; // Variable for storing readout data transmission_start(); // Start connection if(measure_sel==TEMP) // Read Temperature? { sht11_write(MEASURE_TEMP); // Send Read Temperature command to SHT11 delay(270); // Delay for Temperature reading (14-bit resolution) } else if(measure_sel==HUMI) // Read Humidity? { // Send command to SHT11 sht11_write(MEASURE_HUMI); delay(80); // Delay for Humidity reading (12-bit resolution) }

โปรแกรมที่ P22-1 โปรแกรมภาษา C สําหรับทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิ (มีตอ)


  value = sht11_read(); value<<=8;

// Read MSB byte // Shift bit 8 times before store next byte

value = value + sht11_read(); // Read LSB byte return(value); // Return readout value from SHT11 } /************* Function for convert data from sht11 to float value ***********/ float read_HT_float(unsigned char measure_sel) { float so_rh, // Variable for storing Humidity readout value so_t, // Variable for storing Temperature readout value rh_linear, // Variable for RH linear(Calculate by equation of SHT11 datasheet) rh_true, // Variable for Humidity(Calculate by equation of SHT11 datasheet) temp; // Variable for Temperature(Calculate by equation of SHT11 datasheet) so_rh = sht11_read_measure(HUMI); // Store Humidity readout value to so_rh so_t = sht11_read_measure(TEMP); // Store Temperature readout value to so_t temp = so_t*0.01 - 40; // Calculate temperature rh_linear = C1 + C2*so_rh + C3*so_rh*so_rh ; // Calculate RH linear rh_true = (temp-25)*(T1+T2*so_rh)+rh_linear; // Calculate humidity if(measure_sel==TEMP) return(temp); else if(measure_sel==HUMI) return(rh_true);

// // // //

Read temperature? Return temperature (float type) Read humidity? Return humidity (float type)

} /********************************* Main Program ******************************/ void main() { int h, // Variable for storing Humidity (integer tyep) t, // Variable for storing Temperature (integer type) old_h, // Variable for storing previous Humidity old_t; // Variable for storing previous Temperature lcd_init(); // Initial module LCD lcd_puts(0x80,”Temp: C”); // Show temperature value lcd_puts(0xC0,”Humi: %”); // Show humidity value while(1) // Infinite loop { connection_reset(); // Start connection t = (int)read_HT_float(TEMP); // Read temperature (integer format) h = (int)read_HT_float(HUMI); // Read humidity (integer format) if(old_t != t) { lcd_puts(0x86,” inttolcd(0x86,t); } if(old_h != h) { lcd_puts(0xC6,” inttolcd(0xC6,h); } old_t = t; old_h = h;

// Compare previous and new Temperature data equal? “);

// Clear previous temperature display // Display new temperature value

// Compare previous and new humidity data equal? “);

// Clear previous humidity display // Display new humidity value // Keep temperature value for next comparison // Keep humidity value for next comparison

} }

โปรแกรมที่ P22-1 โปรแกรมภาษา C สําหรับทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิ (มีตอ)


  

คําอธิบายโปรแกรม การทํางานของโปรแกรมคือ อานคาอุณหภูมิและความชื้นสัมพัทธจากโมดูล SHT11 มาแสดงที่โมดูล LCD อยางตอเนื่อง โดยเลือกอานคาอุณหภูมิและความชื้นสัมพัทธทีความละเอี ่ ยด 14 และ 12 บิตตามลําดับ ซึงเป ่ นคาตังต ้ นหลักนันเอง ่ เนืองจากการคํ ่ านวณผลลัพธของขอมูลทังสองนั ้ นจะให ้ ผลลัพธเปนเลขทศนิยมแบบ float ดังนันก ้ อนการแสดงผลที่ LCD เพือลดขนาดของเนื ่ อที ้ หน ่ วยความจําโปรแกรมทีต่ องใชสําหรับการแสดง ผลเลขทศนิยม จึงแปลงชนิดขอมูลอุณหภูมิและความชืนสั ้ มพัทธใหเปนชนิดจํานวนเต็ม int เสียกอน หลังจาก นันจะเปรี ้ ยบเทียบระหวางขอมูลเกาและใหมทีอ่ านได ถามีการเปลียนแปลง ่ จึงจะนําคาใหมไปแสดงผลตอไป  ฟงกชัน ่ sht11_write ใชเขียนคําสังควบคุ ่ มทีถู่ กกําหนดจากพารามิเตอร value สงไปยังโมดูล

SHT11 ผานทางบัสขอมูลทีเชื ่ ่อมตอระหวาง SHT11 และไมโครคอนโทรลเลอร เพื่อควบคุมคุณสมบัติการทํางานของ SHT11 ซึงภายในโปรแกรมการทดลองนี ่ ้จะใชอยู 2 คําสั่งคือ 1. เขียนขอมูลคําสั่งควบคุม 0x03 ไปยัง SHT11 เมื่อตองการอานคาอุณหภูมิ 2. เขียนขอมูลคําสั่งควบคุม 0x05 ไปยัง SHT11 เมื่อตองการอานคาความชืนสั ้ มพัทธ โดยทีข่ อมูลคําสั่งควบคุมทั้งสองถูกนิยามไวในตอนตนของโปรแกรมในรูปแบบมาโครดังนี้

#define MEASURE_TEMP 0x03 #define MEASURE_HUMI 0x05

 ฟงกชัน ่ sht11_read ใชอานขอมูล 1 ไบตทีส่ งมาจาก SHT11 ซึงจะเป ่ นขอมูลอะไรนันขึ ้ นอยู ้ กั บวา ผูพั ฒนา

เขียนขอมูลคําสังควบคุ ่ มอะไรสงไปยัง SHT11 เชน กอนหนานีเขี ้ ยนขอมูลคําสัง่ 0x03 สงไป ดังนันโมดู ้ ล SHT11 จะสงขอมูลอุณหภูมิกลับมายังไมโครคอนโทรลเลอร 2 ไบต หรือ ถากอนหนานีเขี ้ ยนขอมูลคําสั่ง 0x05 ไปยัง โมดูล SHT11 ตัว SHT11 จะสงขอมูลความชืนสั ้ มพัทธกลับมา 2 ไบตเชนกัน ดังนั้นในการอานจึงตองทําการ อานตอเนื่องกัน 2 ครั้งเพื่อนําขอมูลเหลานันไปผ ้ านกระบวนการตีความในขันต ้ อไป  ฟงกชั่น transmission_start ใชสรางสภาวะเริ่มตนกอนเขียนขอมูลคําสั่งควบคุมสงไปยัง SHT11  ฟงกชั่น connection_reset ใชสรางสภาวะรีเซตบัสกอนการติดตอกับ SHT11  ฟงกชั่น sht11_read_measure ใชอานขอมูลดิบ 2 ไบตจากโมดูล

SHT11 ซึงอาจเป ่ นขอมูลอุณหภูมิ หรือความชืนสั ้ มพัทธ ขึนอยู ้ กับการกําหนดคาใหกับพารามิเตอร measure_sel ในตอนเรียกใชงานฟงกชัน่ โดยกําหนดรูปแนนเปนมาโครดังนี้ เมื่อตองการอานอุณหภูมิกําหนดเปน TEMP เมื่อตองการอานความชืนสั ้ มพัทธกําหนดเปน HUMI

โปรแกรมที่ P22-1 โปรแกรมภาษา C สําหรับทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิ (มีตอ)


   ฟงกชั่น read_HT_float ใชอานขอมูลดิบจากฟงกชัน ่ sht11_read_measure เพือนํ ่ ามาคํานวณ

คาอุณหภูมิหรือความชืนสั ้ มพัทธจริงทีต่ องการในรูปแบบเลขทศนิยม float โดยคํานวณจากสมการทีผู่ ผลิ  ตกํากับ มา สวนการเลือกอานคาอุณหภูมิหรือความชืนสั ้ มพัทธทําไดจากกําหนดคาใหกับพารามิเตอร measure_sel ในตอนเรียกใชงานฟงกชัน่ โดยกําหนดรูปแนนเปนมาโครดังนี้ เมื่อตองการอานอุณหภูมิกําหนดเปน TEMP เมื่อตองการอานความชืนสั ้ มพัทธกําหนดเปน HUMI สําหรับการทํางานภายในของฟงกชันนี ่ คื้ อ อานคาขอมูลดิบทังอุ ้ ณหภูมิและความชืนสั ้ มพัทธเพือคํ ่ านวณ ผลลัพธจากสมการของผูผลิ  ต โดยในการคํานวณคาความชืนสั ้ มพัทธนันจะขึ ้ นอยู ้ กั บคาของอุณหภูมิเขามารวม ในการคํานวณดวย

โปรแกรมที่ P22-1 โปรแกรมภาษา C สําหรับทดลองติดตอไมโครคอนโทรลเลอร P89V51RD2 กับ SHT11 โมดูลวัดความชืนสั ้ มพัทธและอุณหภูมิ (จบ) 22.2. เขียนโปรแกรมที่ P22-1 แลวทําการแปลงใหเปนไฟล .hex ดวย RC51 ผานกระบวนการสรางไฟลโปรเจ็กต ของ Rkit-51 โดยใช RIDE ไดไฟล l2201.hex ดาวนโหลดลงในไมโครคอนโทรลเลอร P89V51RD2 โดยตองลบ ขอมูลกอนโปรแกรมลงไปใหม 22.3 จายไฟใหแกวงจร ทดสอบจายความรอนใหกับโมดูล SHT11 เชน ใชไดรเปาผม หรือนําหัวแรงรอนๆ ไปอัง ใกลๆ ตัวโมดูล SHT11 สังเกตการเปลี่ยนแปลงของคาอุณหภูมิและความชื้นสัมพัทธทีโมดู ่ ล LCD ผลการแสดงผลทีโมดู ่ ล LCD เปนดังนี้

Temp: xxx C Humi: xxx % โดยที่ xxx คือคาอุณหภูมิหรือความชื้นสัมพัทธทีวั่ ดได



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.