B3950 Thermistor NTC เป็นเทอร์มิสเตอร์ประเภท NTC ซึ่งมีคุณสมบัติสำคัญคือ เมื่ออุณหภูมิเพิ่มขึ้น ค่าความต้านทานของเทอร์มิสเตอร์จะลดลง โดยค่า B (หรือที่เรียกว่า B-value) จะระบุถึงคุณสมบัติการเปลี่ยนแปลงค่าความต้านทานตามอุณหภูมิ สำหรับ B3950 เทอร์มิสเตอร์จะมีค่า B = 3950 ซึ่งหมายถึงว่าความสัมพันธ์ระหว่างอุณหภูมิและความต้านทานจะถูกกำหนดด้วยค่าคงที่นี้
1.ต่ออุปกรณ์
.png?alt=media&token=50c4a522-0594-4e13-ba6f-f0d735ef2e83)
Arduino UNO > B3950
GND>10kΩ>A0GND>10kΩ>B39505V>B3950
2.ลงโปรแกรม
Copy โค้ดด้านล่าง
Arduino
1int ThermistorPin = A0; // ขาที่ใช้เชื่อมต่อกับเทอร์มิสเตอร์
2int Vo; // ค่าที่อ่านจากขาอนาล็อก
3float R1 = 10000; // ตัวต้านทาน 10K ที่ใช้ในวงจรแบ่งแรงดัน
4float logR2, R2, T;
5float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
6
7void setup() {
8 Serial.begin(9600); // เปิดการใช้งาน Serial Monitor
9}
10
11void loop() {
12 Vo = analogRead(ThermistorPin); // อ่านค่าจากขา A0
13 Serial.print("Analog Reading: ");
14 Serial.println(Vo); // แสดงค่าที่อ่านได้
15
16 // ตรวจสอบว่าค่า Vo ถูกต้องหรือไม่ (อยู่ในช่วง 0-1023)
17 if (Vo == 0 || Vo == 1023) {
18 Serial.println("Error: Invalid reading. Check connections.");
19 delay(1000);
20 return;
21 }
22
23 R2 = R1 * (1023.0 / (float)Vo - 1.0); // คำนวณความต้านทานของ NTC Thermistor
24 Serial.print("R2: ");
25 Serial.println(R2); // แสดงค่าความต้านทานที่คำนวณได้
26
27 // คำนวณอุณหภูมิด้วยสูตร Steinhart-Hart
28 logR2 = log(R2);
29 T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
30 T = T - 273.15; // แปลงจาก Kelvin เป็น Celsius
31
32 // แสดงค่าอุณหภูมิ
33 Serial.print("Temperature: ");
34 Serial.print(T);
35 Serial.println(" C");
36
37 delay(1000); // รอ 1 วินาทีเพื่ออ่านค่าใหม่
38}
391int ThermistorPin = A0; // ขาที่ใช้เชื่อมต่อกับเทอร์มิสเตอร์
2int Vo; // ค่าที่อ่านจากขาอนาล็อก
3float R1 = 10000; // ตัวต้านทาน 10K ที่ใช้ในวงจรแบ่งแรงดัน
4float logR2, R2, T;
5float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
6
7void setup() {
8 Serial.begin(9600); // เปิดการใช้งาน Serial Monitor
9}
10
11void loop() {
12 Vo = analogRead(ThermistorPin); // อ่านค่าจากขา A0
13 Serial.print("Analog Reading: ");
14 Serial.println(Vo); // แสดงค่าที่อ่านได้
15
16 // ตรวจสอบว่าค่า Vo ถูกต้องหรือไม่ (อยู่ในช่วง 0-1023)
17 if (Vo == 0 || Vo == 1023) {
18 Serial.println("Error: Invalid reading. Check connections.");
19 delay(1000);
20 return;
21 }
22
23 R2 = R1 * (1023.0 / (float)Vo - 1.0); // คำนวณความต้านทานของ NTC Thermistor
24 Serial.print("R2: ");
25 Serial.println(R2); // แสดงค่าความต้านทานที่คำนวณได้
26
27 // คำนวณอุณหภูมิด้วยสูตร Steinhart-Hart
28 logR2 = log(R2);
29 T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
30 T = T - 273.15; // แปลงจาก Kelvin เป็น Celsius
31
32 // แสดงค่าอุณหภูมิ
33 Serial.print("Temperature: ");
34 Serial.print(T);
35 Serial.println(" C");
36
37 delay(1000); // รอ 1 วินาทีเพื่ออ่านค่าใหม่
38}
39
3.ผลลัพธ์
โค้ดนี้ใช้สำหรับการอ่านค่าอุณหภูมิจากเซนเซอร์ NTC Thermistor (B3950) โดยทำงานผ่านการเชื่อมต่อกับขา A0 ของบอร์ด Arduino Uno ซึ่งเป็นขาอนาล็อก โค้ดเริ่มต้นด้วยการกำหนดค่าขาต่อเชื่อม (ThermistorPin) และตัวแปรต่างๆ ที่ใช้ในการคำนวณอุณหภูมิ โดยใช้ตัวต้านทาน 10K (R1) ในวงจรแบ่งแรงดัน

