เมื่อไม่นานมานี้ ผมได้มีโอกาสศึกษาหนังสือเกี่ยวกับการพัฒนาไลบรารีบน Arduino ซึ่งเนื้อหาภายในเจาะลึกไปถึงโครงสร้างของไลบรารีมาตรฐาน (Default Libraries) ในสภาพแวดล้อมของ Arduino IDE และสอนวิธีการสร้างไลบรารีขึ้นมาใช้งานเองอย่างเป็นระบบ

แรงบันดาลใจของโปรเจกต์นี้เกิดขึ้นหลังจากที่ผมได้ลองศึกษาบทเรียนเรื่องการใช้งาน LiquidCrystal ร่วมกับเซนเซอร์วัดอุณหภูมิประเภท NTC Thermistor แม้ว่าตัวอย่างในหนังสือจะทำงานได้ดี แต่ผมพบว่าขั้นตอนการคำนวณและคำสั่งต่างๆ ค่อนข้างซับซ้อนและยาวเกินความจำเป็นสำหรับผู้ที่ต้องการใช้งานทั่วไป ผมจึงตัดสินใจนำความรู้ที่ได้มาพัฒนาเป็นไลบรารีชื่อว่า NTCReader เพื่อให้การอ่านค่าอุณหภูมิจาก NTC Thermistor เป็นเรื่องง่ายและมีประสิทธิภาพมากขึ้น
บทที่ 0: ความเข้าใจเรื่อง Dissipation Factor (ปัจจัยการแพร่กระจายความร้อน)
ก่อนที่เราจะเริ่มเขียนโค้ด สิ่งสำคัญเชิงวิศวกรรมที่มองข้ามไม่ได้คือค่า Dissipation Factor (df) ซึ่งระบุอยู่ใน Datasheet ของ Thermistor ค่านี้บอกถึงพลังงานความร้อนที่เกิดขึ้นภายในตัวเซนเซอร์เองเมื่อมีกระแสไฟฟ้าไหลผ่าน (หน่วยเป็น mW/°C)
หากเราปล่อยให้มีกระแสไหลผ่านตัว NTC มากเกินไป จะเกิดปรากฏการณ์ Self-heating ทำให้เซนเซอร์อ่านค่าอุณหภูมิสูงกว่าความเป็นจริง สำหรับเซนเซอร์ของ Elegoo ที่ผมใช้นั้นมีค่า df อยู่ที่ 2 แต่ถ้าหากคุณใช้ยี่ห้ออื่นแล้วหา Datasheet ไม่เจอ ค่ามาตรฐานที่นิยมใช้กันคือ 6 ซึ่งเป็นค่าที่เสถียรที่สุดสำหรับ NTC ขนาดเล็กทั่วไป
บทที่ 1: การติดตั้งไลบรารี (Setup)
เพื่อให้การเขียนโปรแกรมกระชับที่สุด ผมได้รวบรวมสมการการคำนวณค่า Logarithm และการแปลงค่าจาก Analog เป็นอุณหภูมิไว้ในไลบรารีเรียบร้อยแล้ว ท่านสามารถติดตั้งได้ตามขั้นตอนดังนี้:
- ไปที่ GitHub: https://github.com/jack07Code/NTCReader
- ดาวน์โหลดไฟล์ในรูปแบบ .ZIP
- เปิดโปรแกรม Arduino IDE แล้วไปที่เมนู Sketch -> Include Library -> Add .ZIP Library
- เลือกไฟล์ที่ดาวน์โหลดมาเพื่อติดตั้งเข้าสู่ระบบ
บทที่ 2: การวิเคราะห์ลอจิกและโค้ดโปรแกรม (The Logic)
หัวใจสำคัญของไลบรารีนี้คือการเปลี่ยนค่าแรงดันไฟฟ้าที่อ่านได้จากพอร์ต Analog (0-1023) ให้กลายเป็นค่าความต้านทาน และนำไปเข้าสมการอุณหภูมิ (มักใช้สมการ Beta Coefficient หรือ Steinhart-Hart) โดยที่ผู้ใช้ไม่ต้องคำนวณเอง
คุณสามารถดูตัวอย่างการใช้งานได้ที่เมนู File -> Examples -> NTCReader-main -> Example โดยในตัวอย่างจะมีการอธิบายคำสั่งไว้อย่างละเอียด ดังนี้:
#include <NTCReader.h>
// กำหนดขา Analog ที่เชื่อมต่อ และค่าความต้านทานของ Resistor (10K)
NTCReader ntc(A0, 10000);
void setup() {
Serial.begin(9600);
}
void loop() {
// อ่านค่าอุณหภูมิในหน่วยเซลเซียส
float tempC = ntc.getTempCelsius();
Serial.print("Temperature: ");
Serial.print(tempC);
Serial.println(" C");
delay(1000);
}
บทที่ 3: การต่อวงจรทางฮาร์ดแวร์ (Hardware Configuration)
การเชื่อมต่อ NTC Thermistor จำเป็นต้องใช้การต่อวงจรแบบ Voltage Divider เพื่อให้ Arduino สามารถตรวจจับการเปลี่ยนแปลงของความดันไฟฟ้าตามอุณหภูมิที่เปลี่ยนไปได้ อุปกรณ์ที่ต้องเตรียมมีดังนี้:
- บอร์ด Arduino (Uno, Nano หรือรุ่นอื่นๆ)
- Breadboard และสายจัมเปอร์
- NTC Thermistor (10K Ohm)
- Resistor 10K Ohm (เพื่อใช้เป็นตัวต้านทานอ้างอิง)
วิธีการเชื่อมต่อ:
- ต่อขาข้างหนึ่งของ NTC Thermistor เข้ากับแรงดันไฟ 5V
- ต่อขาอีกข้างของ NTC เข้ากับพอร์ต Analog A0 และเชื่อมต่อกับ Resistor 10K ในจุดเดียวกัน
- ปลายอีกด้านของ Resistor 10K ให้ต่อลง GND (ตามภาพประกอบด้านล่าง)

บทที่ 4: การทดสอบและผลลัพธ์ (Execution)
เมื่ออัปโหลดโค้ดลงบอร์ดเรียบร้อยแล้ว ให้เปิด Serial Monitor ขึ้นมาและปรับ Baud rate ไปที่ 9600 คุณจะเห็นค่าอุณหภูมิที่วัดได้จาก NTC Thermistor ปรากฏขึ้นทุกๆ 1 วินาที
ด้วยไลบรารี NTCReader นี้ จะช่วยลดความยุ่งยากในการจัดการสมการทางคณิตศาสตร์ที่ซับซ้อน เหมาะสำหรับโปรเจกต์ระบบควบคุมอุณหภูมิ, เครื่องวัดสภาพอากาศ หรือระบบแจ้งเตือนความร้อนที่ต้องการความแม่นยำและความรวดเร็วในการพัฒนาขยายผลต่อไปในอนาคต