นับจากบทที่ 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 คือคาอุณหภูมิหรือความชื้นสัมพัทธทีวั่ ดได