เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

ในบทความนี้ ฉันจะอธิบายการทำงานของเทอร์มิสเตอร์

เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

เทอร์มิสเตอร์เป็นส่วนประกอบที่เรียบง่าย ราคาไม่แพง และแม่นยำ ซึ่งทำให้การรับข้อมูลอุณหภูมิสำหรับโครงการของคุณเป็นเรื่องง่าย สถานีตรวจอากาศระยะไกล ระบบอัตโนมัติในบ้าน และวงจรควบคุมและป้องกันอุปกรณ์เป็นแอปพลิเคชันบางส่วนที่เทอร์มิสเตอร์จะเหมาะสมที่สุด เทอร์มิสเตอร์เป็นเซนเซอร์แบบแอนะล็อก ดังนั้นโค้ดจึงค่อนข้างเรียบง่ายเมื่อเทียบกับเซนเซอร์วัดอุณหภูมิแบบดิจิทัลที่ต้องใช้ไลบรารีพิเศษและโค้ดจำนวนมาก

ในบทความนี้ ฉันจะอธิบายวิธีการทำงานของเทอร์มิสเตอร์ จากนั้นฉันจะแสดงวิธีการตั้งค่าวงจรเทอร์มิสเตอร์พื้นฐานด้วย Arduino ที่จะส่งสัญญาณอุณหภูมิไปยังจอภาพแบบอนุกรมหรือไปยัง LCD

เทอร์มิสเตอร์ทำงานอย่างไร

เทอร์มิสเตอร์คือตัวต้านทานแบบปรับค่าได้ซึ่งจะเปลี่ยนค่าความต้านทานตามอุณหภูมิ โดยแบ่งประเภทตามลักษณะการตอบสนองต่อการเปลี่ยนแปลงของอุณหภูมิ ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงลบ (NTC) ค่าความต้านทานจะลดลงเมื่ออุณหภูมิเพิ่มขึ้น ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงบวก (PTC) ค่าความต้านทานจะเพิ่มขึ้นเมื่ออุณหภูมิเพิ่มขึ้น

เทอร์มิสเตอร์ NTC เป็นเทอร์มิสเตอร์ที่พบได้ทั่วไปที่สุด และเราจะใช้เทอร์มิสเตอร์ประเภทนี้ในบทช่วยสอนนี้ เทอร์มิสเตอร์ NTC ผลิตจากวัสดุเซมิคอนดักเตอร์ (เช่น ออกไซด์ของโลหะหรือเซรามิก) ที่ได้รับความร้อนและบีบอัดเพื่อสร้างวัสดุตัวนำที่ไวต่ออุณหภูมิ

วัสดุตัวนำมีตัวพาประจุที่ให้กระแสไฟฟ้าไหลผ่านได้ อุณหภูมิสูงทำให้วัสดุเซมิคอนดักเตอร์ปล่อยตัวพาประจุออกมามากขึ้น ในเทอร์มิสเตอร์ NTC ที่ทำจากเฟอร์ริกออกไซด์ อิเล็กตรอนจะเป็นตัวพาประจุ ในเทอร์มิสเตอร์ NTC นิกเกิลออกไซด์ ตัวพาประจุจะเป็นรูอิเล็กตรอน

วงจรเทอร์มิสเตอร์พื้นฐาน

มาสร้างวงจรเทอร์มิสเตอร์ขั้นพื้นฐานเพื่อดูว่ามันทำงานอย่างไร เพื่อที่คุณจะได้นำไปประยุกต์ใช้กับโปรเจ็กต์อื่นๆ ในภายหลังได้

เนื่องจากเทอร์มิสเตอร์เป็นตัวต้านทานแบบปรับค่าได้ เราจึงต้องวัดค่าความต้านทานก่อนจึงจะคำนวณอุณหภูมิได้ อย่างไรก็ตาม Arduino ไม่สามารถวัดค่าความต้านทานได้โดยตรง แต่สามารถวัดแรงดันไฟฟ้าได้เท่านั้น

Arduino จะวัดแรงดันไฟฟ้าที่จุดระหว่างเทอร์มิสเตอร์และตัวต้านทานที่ทราบค่า ซึ่งเรียกว่าตัวแบ่งแรงดันไฟฟ้า สมการของตัวแบ่งแรงดันไฟฟ้าคือ:

ในแง่ของตัวแบ่งแรงดันไฟฟ้าในวงจรเทอร์มิสเตอร์ ตัวแปรในสมการด้านบนคือ:

สมการนี้สามารถจัดเรียงใหม่และลดรูปลงเพื่อแก้หา R2 ซึ่งเป็นความต้านทานของเทอร์มิสเตอร์:

ในที่สุด สมการ Steinhart-Hart จะถูกใช้เพื่อแปลงค่าความต้านทานของเทอร์มิสเตอร์เป็นค่าอุณหภูมิ

การเชื่อมต่อวงจร

เชื่อมต่อเทอร์มิสเตอร์และตัวต้านทานกับ Arduino ของคุณดังนี้:

ค่าของตัวต้านทานควรเท่ากับค่าความต้านทานของเทอร์มิสเตอร์ของคุณ ในกรณีนี้ ค่าความต้านทานของเทอร์มิสเตอร์ของฉันคือ 100K โอห์ม ดังนั้นตัวต้านทานของฉันจึงเท่ากับ 100K โอห์มเช่นกัน

ผู้ผลิตเทอร์มิสเตอร์อาจบอกคุณถึงค่าความต้านทาน แต่ถ้าไม่เป็นเช่นนั้น คุณสามารถใช้มัลติมิเตอร์เพื่อหาค่าความต้านทานได้ หากคุณไม่มีมัลติมิเตอร์ คุณสามารถสร้างโอห์มมิเตอร์ด้วย Arduino ได้โดยทำตามบทช่วยสอนเกี่ยวกับโอห์มมิเตอร์ Arduino ของเรา คุณเพียงแค่ต้องทราบขนาดของเทอร์มิสเตอร์ของคุณ ตัวอย่างเช่น หากความต้านทานของเทอร์มิสเตอร์ของคุณคือ 34,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 10K หากเป็น 340,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 100K

รหัสสำหรับการแสดงผลการอ่านอุณหภูมิแบบอนุกรม

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(T);
  Serial.println(" F"); 

  delay(500);
}

เพื่อแสดงอุณหภูมิเป็นองศาเซลเซียส เพียงแค่ใส่เครื่องหมายคอมเมนต์บรรทัดที่ 18 โดยแทรกเครื่องหมายทับ ("//") สองตัวที่จุดเริ่มต้นของบรรทัด

โปรแกรมนี้จะแสดงหน่วยเซลเซียสและฟาเรนไฮต์ในเวลาเดียวกัน:

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(Tf);
  Serial.print(" F; ");
  Serial.print(Tc);
  Serial.println(" C");   

  delay(500);
}

รหัสสำหรับการแสดงผลอุณหภูมิผ่านจอ LCD

หากต้องการส่งออกค่าอุณหภูมิไปยังจอ LCD 16X2 ให้ตั้งค่าจอ LCD บน Arduino จากนั้นอัปโหลดโค้ดนี้ไปยังบอร์ด:

#include <LiquidCrystal.h>

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  lcd.print("Temp = ");
  lcd.print(T);   
  lcd.print(" F");
  
  delay(500);            
  lcd.clear();
}

เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

ในบทความนี้ ฉันจะอธิบายการทำงานของเทอร์มิสเตอร์

นักเขียนบทความ
by 
นักเขียนบทความ
เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

ในบทความนี้ ฉันจะอธิบายการทำงานของเทอร์มิสเตอร์

เทอร์มิสเตอร์เป็นส่วนประกอบที่เรียบง่าย ราคาไม่แพง และแม่นยำ ซึ่งทำให้การรับข้อมูลอุณหภูมิสำหรับโครงการของคุณเป็นเรื่องง่าย สถานีตรวจอากาศระยะไกล ระบบอัตโนมัติในบ้าน และวงจรควบคุมและป้องกันอุปกรณ์เป็นแอปพลิเคชันบางส่วนที่เทอร์มิสเตอร์จะเหมาะสมที่สุด เทอร์มิสเตอร์เป็นเซนเซอร์แบบแอนะล็อก ดังนั้นโค้ดจึงค่อนข้างเรียบง่ายเมื่อเทียบกับเซนเซอร์วัดอุณหภูมิแบบดิจิทัลที่ต้องใช้ไลบรารีพิเศษและโค้ดจำนวนมาก

ในบทความนี้ ฉันจะอธิบายวิธีการทำงานของเทอร์มิสเตอร์ จากนั้นฉันจะแสดงวิธีการตั้งค่าวงจรเทอร์มิสเตอร์พื้นฐานด้วย Arduino ที่จะส่งสัญญาณอุณหภูมิไปยังจอภาพแบบอนุกรมหรือไปยัง LCD

เทอร์มิสเตอร์ทำงานอย่างไร

เทอร์มิสเตอร์คือตัวต้านทานแบบปรับค่าได้ซึ่งจะเปลี่ยนค่าความต้านทานตามอุณหภูมิ โดยแบ่งประเภทตามลักษณะการตอบสนองต่อการเปลี่ยนแปลงของอุณหภูมิ ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงลบ (NTC) ค่าความต้านทานจะลดลงเมื่ออุณหภูมิเพิ่มขึ้น ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงบวก (PTC) ค่าความต้านทานจะเพิ่มขึ้นเมื่ออุณหภูมิเพิ่มขึ้น

เทอร์มิสเตอร์ NTC เป็นเทอร์มิสเตอร์ที่พบได้ทั่วไปที่สุด และเราจะใช้เทอร์มิสเตอร์ประเภทนี้ในบทช่วยสอนนี้ เทอร์มิสเตอร์ NTC ผลิตจากวัสดุเซมิคอนดักเตอร์ (เช่น ออกไซด์ของโลหะหรือเซรามิก) ที่ได้รับความร้อนและบีบอัดเพื่อสร้างวัสดุตัวนำที่ไวต่ออุณหภูมิ

วัสดุตัวนำมีตัวพาประจุที่ให้กระแสไฟฟ้าไหลผ่านได้ อุณหภูมิสูงทำให้วัสดุเซมิคอนดักเตอร์ปล่อยตัวพาประจุออกมามากขึ้น ในเทอร์มิสเตอร์ NTC ที่ทำจากเฟอร์ริกออกไซด์ อิเล็กตรอนจะเป็นตัวพาประจุ ในเทอร์มิสเตอร์ NTC นิกเกิลออกไซด์ ตัวพาประจุจะเป็นรูอิเล็กตรอน

วงจรเทอร์มิสเตอร์พื้นฐาน

มาสร้างวงจรเทอร์มิสเตอร์ขั้นพื้นฐานเพื่อดูว่ามันทำงานอย่างไร เพื่อที่คุณจะได้นำไปประยุกต์ใช้กับโปรเจ็กต์อื่นๆ ในภายหลังได้

เนื่องจากเทอร์มิสเตอร์เป็นตัวต้านทานแบบปรับค่าได้ เราจึงต้องวัดค่าความต้านทานก่อนจึงจะคำนวณอุณหภูมิได้ อย่างไรก็ตาม Arduino ไม่สามารถวัดค่าความต้านทานได้โดยตรง แต่สามารถวัดแรงดันไฟฟ้าได้เท่านั้น

Arduino จะวัดแรงดันไฟฟ้าที่จุดระหว่างเทอร์มิสเตอร์และตัวต้านทานที่ทราบค่า ซึ่งเรียกว่าตัวแบ่งแรงดันไฟฟ้า สมการของตัวแบ่งแรงดันไฟฟ้าคือ:

ในแง่ของตัวแบ่งแรงดันไฟฟ้าในวงจรเทอร์มิสเตอร์ ตัวแปรในสมการด้านบนคือ:

สมการนี้สามารถจัดเรียงใหม่และลดรูปลงเพื่อแก้หา R2 ซึ่งเป็นความต้านทานของเทอร์มิสเตอร์:

ในที่สุด สมการ Steinhart-Hart จะถูกใช้เพื่อแปลงค่าความต้านทานของเทอร์มิสเตอร์เป็นค่าอุณหภูมิ

การเชื่อมต่อวงจร

เชื่อมต่อเทอร์มิสเตอร์และตัวต้านทานกับ Arduino ของคุณดังนี้:

ค่าของตัวต้านทานควรเท่ากับค่าความต้านทานของเทอร์มิสเตอร์ของคุณ ในกรณีนี้ ค่าความต้านทานของเทอร์มิสเตอร์ของฉันคือ 100K โอห์ม ดังนั้นตัวต้านทานของฉันจึงเท่ากับ 100K โอห์มเช่นกัน

ผู้ผลิตเทอร์มิสเตอร์อาจบอกคุณถึงค่าความต้านทาน แต่ถ้าไม่เป็นเช่นนั้น คุณสามารถใช้มัลติมิเตอร์เพื่อหาค่าความต้านทานได้ หากคุณไม่มีมัลติมิเตอร์ คุณสามารถสร้างโอห์มมิเตอร์ด้วย Arduino ได้โดยทำตามบทช่วยสอนเกี่ยวกับโอห์มมิเตอร์ Arduino ของเรา คุณเพียงแค่ต้องทราบขนาดของเทอร์มิสเตอร์ของคุณ ตัวอย่างเช่น หากความต้านทานของเทอร์มิสเตอร์ของคุณคือ 34,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 10K หากเป็น 340,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 100K

รหัสสำหรับการแสดงผลการอ่านอุณหภูมิแบบอนุกรม

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(T);
  Serial.println(" F"); 

  delay(500);
}

เพื่อแสดงอุณหภูมิเป็นองศาเซลเซียส เพียงแค่ใส่เครื่องหมายคอมเมนต์บรรทัดที่ 18 โดยแทรกเครื่องหมายทับ ("//") สองตัวที่จุดเริ่มต้นของบรรทัด

โปรแกรมนี้จะแสดงหน่วยเซลเซียสและฟาเรนไฮต์ในเวลาเดียวกัน:

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(Tf);
  Serial.print(" F; ");
  Serial.print(Tc);
  Serial.println(" C");   

  delay(500);
}

รหัสสำหรับการแสดงผลอุณหภูมิผ่านจอ LCD

หากต้องการส่งออกค่าอุณหภูมิไปยังจอ LCD 16X2 ให้ตั้งค่าจอ LCD บน Arduino จากนั้นอัปโหลดโค้ดนี้ไปยังบอร์ด:

#include <LiquidCrystal.h>

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  lcd.print("Temp = ");
  lcd.print(T);   
  lcd.print(" F");
  
  delay(500);            
  lcd.clear();
}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

เซ็นเซอร์วัดอุณหภูมิ Arduino แบบทำเอง (บทช่วยสอนเกี่ยวกับเทอร์มิสเตอร์)

ในบทความนี้ ฉันจะอธิบายการทำงานของเทอร์มิสเตอร์

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

เทอร์มิสเตอร์เป็นส่วนประกอบที่เรียบง่าย ราคาไม่แพง และแม่นยำ ซึ่งทำให้การรับข้อมูลอุณหภูมิสำหรับโครงการของคุณเป็นเรื่องง่าย สถานีตรวจอากาศระยะไกล ระบบอัตโนมัติในบ้าน และวงจรควบคุมและป้องกันอุปกรณ์เป็นแอปพลิเคชันบางส่วนที่เทอร์มิสเตอร์จะเหมาะสมที่สุด เทอร์มิสเตอร์เป็นเซนเซอร์แบบแอนะล็อก ดังนั้นโค้ดจึงค่อนข้างเรียบง่ายเมื่อเทียบกับเซนเซอร์วัดอุณหภูมิแบบดิจิทัลที่ต้องใช้ไลบรารีพิเศษและโค้ดจำนวนมาก

ในบทความนี้ ฉันจะอธิบายวิธีการทำงานของเทอร์มิสเตอร์ จากนั้นฉันจะแสดงวิธีการตั้งค่าวงจรเทอร์มิสเตอร์พื้นฐานด้วย Arduino ที่จะส่งสัญญาณอุณหภูมิไปยังจอภาพแบบอนุกรมหรือไปยัง LCD

เทอร์มิสเตอร์ทำงานอย่างไร

เทอร์มิสเตอร์คือตัวต้านทานแบบปรับค่าได้ซึ่งจะเปลี่ยนค่าความต้านทานตามอุณหภูมิ โดยแบ่งประเภทตามลักษณะการตอบสนองต่อการเปลี่ยนแปลงของอุณหภูมิ ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงลบ (NTC) ค่าความต้านทานจะลดลงเมื่ออุณหภูมิเพิ่มขึ้น ใน เทอร์มิสเตอร์ แบบค่าสัมประสิทธิ์อุณหภูมิเชิงบวก (PTC) ค่าความต้านทานจะเพิ่มขึ้นเมื่ออุณหภูมิเพิ่มขึ้น

เทอร์มิสเตอร์ NTC เป็นเทอร์มิสเตอร์ที่พบได้ทั่วไปที่สุด และเราจะใช้เทอร์มิสเตอร์ประเภทนี้ในบทช่วยสอนนี้ เทอร์มิสเตอร์ NTC ผลิตจากวัสดุเซมิคอนดักเตอร์ (เช่น ออกไซด์ของโลหะหรือเซรามิก) ที่ได้รับความร้อนและบีบอัดเพื่อสร้างวัสดุตัวนำที่ไวต่ออุณหภูมิ

วัสดุตัวนำมีตัวพาประจุที่ให้กระแสไฟฟ้าไหลผ่านได้ อุณหภูมิสูงทำให้วัสดุเซมิคอนดักเตอร์ปล่อยตัวพาประจุออกมามากขึ้น ในเทอร์มิสเตอร์ NTC ที่ทำจากเฟอร์ริกออกไซด์ อิเล็กตรอนจะเป็นตัวพาประจุ ในเทอร์มิสเตอร์ NTC นิกเกิลออกไซด์ ตัวพาประจุจะเป็นรูอิเล็กตรอน

วงจรเทอร์มิสเตอร์พื้นฐาน

มาสร้างวงจรเทอร์มิสเตอร์ขั้นพื้นฐานเพื่อดูว่ามันทำงานอย่างไร เพื่อที่คุณจะได้นำไปประยุกต์ใช้กับโปรเจ็กต์อื่นๆ ในภายหลังได้

เนื่องจากเทอร์มิสเตอร์เป็นตัวต้านทานแบบปรับค่าได้ เราจึงต้องวัดค่าความต้านทานก่อนจึงจะคำนวณอุณหภูมิได้ อย่างไรก็ตาม Arduino ไม่สามารถวัดค่าความต้านทานได้โดยตรง แต่สามารถวัดแรงดันไฟฟ้าได้เท่านั้น

Arduino จะวัดแรงดันไฟฟ้าที่จุดระหว่างเทอร์มิสเตอร์และตัวต้านทานที่ทราบค่า ซึ่งเรียกว่าตัวแบ่งแรงดันไฟฟ้า สมการของตัวแบ่งแรงดันไฟฟ้าคือ:

ในแง่ของตัวแบ่งแรงดันไฟฟ้าในวงจรเทอร์มิสเตอร์ ตัวแปรในสมการด้านบนคือ:

สมการนี้สามารถจัดเรียงใหม่และลดรูปลงเพื่อแก้หา R2 ซึ่งเป็นความต้านทานของเทอร์มิสเตอร์:

ในที่สุด สมการ Steinhart-Hart จะถูกใช้เพื่อแปลงค่าความต้านทานของเทอร์มิสเตอร์เป็นค่าอุณหภูมิ

การเชื่อมต่อวงจร

เชื่อมต่อเทอร์มิสเตอร์และตัวต้านทานกับ Arduino ของคุณดังนี้:

ค่าของตัวต้านทานควรเท่ากับค่าความต้านทานของเทอร์มิสเตอร์ของคุณ ในกรณีนี้ ค่าความต้านทานของเทอร์มิสเตอร์ของฉันคือ 100K โอห์ม ดังนั้นตัวต้านทานของฉันจึงเท่ากับ 100K โอห์มเช่นกัน

ผู้ผลิตเทอร์มิสเตอร์อาจบอกคุณถึงค่าความต้านทาน แต่ถ้าไม่เป็นเช่นนั้น คุณสามารถใช้มัลติมิเตอร์เพื่อหาค่าความต้านทานได้ หากคุณไม่มีมัลติมิเตอร์ คุณสามารถสร้างโอห์มมิเตอร์ด้วย Arduino ได้โดยทำตามบทช่วยสอนเกี่ยวกับโอห์มมิเตอร์ Arduino ของเรา คุณเพียงแค่ต้องทราบขนาดของเทอร์มิสเตอร์ของคุณ ตัวอย่างเช่น หากความต้านทานของเทอร์มิสเตอร์ของคุณคือ 34,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 10K หากเป็น 340,000 โอห์ม แสดงว่าเป็นเทอร์มิสเตอร์ 100K

รหัสสำหรับการแสดงผลการอ่านอุณหภูมิแบบอนุกรม

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(T);
  Serial.println(" F"); 

  delay(500);
}

เพื่อแสดงอุณหภูมิเป็นองศาเซลเซียส เพียงแค่ใส่เครื่องหมายคอมเมนต์บรรทัดที่ 18 โดยแทรกเครื่องหมายทับ ("//") สองตัวที่จุดเริ่มต้นของบรรทัด

โปรแกรมนี้จะแสดงหน่วยเซลเซียสและฟาเรนไฮต์ในเวลาเดียวกัน:

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0)/ 5.0 + 32.0; 

  Serial.print("Temperature: "); 
  Serial.print(Tf);
  Serial.print(" F; ");
  Serial.print(Tc);
  Serial.println(" C");   

  delay(500);
}

รหัสสำหรับการแสดงผลอุณหภูมิผ่านจอ LCD

หากต้องการส่งออกค่าอุณหภูมิไปยังจอ LCD 16X2 ให้ตั้งค่าจอ LCD บน Arduino จากนั้นอัปโหลดโค้ดนี้ไปยังบอร์ด:

#include <LiquidCrystal.h>

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
Serial.begin(9600);
}

void loop() {

  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 

  lcd.print("Temp = ");
  lcd.print(T);   
  lcd.print(" F");
  
  delay(500);            
  lcd.clear();
}