Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
การทดลองที่ 3
จากการทดลองก่อนหน้านี้ได้เรียนรู้เกี่ยว
กับการใช้งาน Arduino เบื้องต้นเพื่อควบคุมการก
ระพริบของหลอดไฟ แต่การจะใช้งาน Arduino ให้มี
ประโยชน์มากขึ้น Arduino ต้องประกอบด้วยทั้ง
อุปกรณ์อินพุตและเอาต์พุตสำหรับการใช้งาน เช่น
การทำให้เกิดเสียงสัญญานเมื่อมีการเปิดประตู
หรือการทำให้หลอดไฟทำงานเมื่อมีการเคลื่อนไหว
เป็นต้น
สำหรับการทดลองนี้นักศึกษาจะได้เรียนรู้
เกี่ยวกับเรื่องดังกล่าว การใช้งาน Digital Input-
Output ของ Arduino และเนื้อหาต่าง ๆ ที่
เกี่ยวข้อง
วัตถุประสงค์
1. อธิบายเกี่ยวกับการอ่านค่า Analog Sensors
ได้ถูกต้อง
2. ต่อวงจรใช้งานการอ่านค่า Analog Sensors
ได้ถูกต้อง
3. เขียนโปรแกรมใช้งานการอ่านค่า Analog
Sensors ได้ถูกต้อง
เครื่องมือและอุปกรณ์
การเริ่มต้นเรียนรู้ Arduino ควรจะมีอุปกรณ์
เบื้องต้นดังนี้ [1]
1. คอมพิวเตอร์พร้อมติดตั้ง Arduino Software
(IDE)
[Link] Uno
[Link] breadboard
[Link] wires
5.10kΩ potentiometer
6.10kΩ resistor (n2)
7.220Ω resistor (n3)
[Link] cable
69
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
[Link] resistor
[Link] sensor (or any other 5V analog
sensor)
11. 5mm common-cathode RGB LED
ข้อพึงตระหนักในการปฏิบัติการทดลอง [2]
1. ทำการตรวจสอบและบันทึกค่าหรือคุณสมบัติ
ของอุปกรณ์ทุกตัวอย่างระมัดระวังก่อนการ
สร้างหรือต่อวงจร (Carefully measure and
record all component values prior to circuit
construction.)
2. เขียน Schematic Diagram ของวงจรเพื่อใช้ใน
การตรวจสอบและวิเคราะห์ )Draw the
schematic diagram for the circuit to be
analyzed.)
3. สร้างวงจรใน Breadboard หรืออุปกรณ์อื่น ๆ
อย่างระมัดระวัง (Carefully build this circuit
on a breadboard or other convenient medium.)
4. ทำการตรวจสอบความถูกต้องของวงจรที่สร้าง
ขึ้น โดยการเปรียบเทียบกับ Schematic
Diagram ที่เขียนไว้ในข้อ 2 (Check the
accuracy of the circuit’s construction, following
each wire to each connection point, and
verifying these elements one-by-one on the
diagram.)
5. ทำการวิเคราะห์วงจรทางคณิตศาสตร์ (หากมี
ความจำเป็น) หาค่าแรงดัน กระแส ของวงจร
หรือค่าอื่น ๆ (Mathematically analyze the
circuit, solving for all values of voltage,
current, etc.)
6. ทำการวัดค่าต่าง ๆ โดยใช้เครื่องมือวัด
อย่างระมัดระวังแล้วเปรียบเทียบกับค่าที่
ได้จากการคำนวณ (Carefully measure those
70
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
quantities, to verify the accuracy of your
analysis.)
7. ในกรณีที่มีความผิดพลาดมากกว่า 2-3
เปอร์เซ็นต์ ให้ทำการตรวจสอบวงจรอย่าง
ละเอียดรวมทำตรวจสอบการคำนวณใหม่อีก
ครั้ง (If there are any substantial errors
(greater than a few percent), carefully check
your circuit’s construction against the
diagram, then carefully re-calculate the values
and re-measure.)
Issue 3-1 Potentiometer Reading [1]
Reading a Potentiometer
การเรียนรู้การอ่านค่าจาก Analog sensor ที่
ง่ายที่สุดคือการอ่านค่าจาก Potentiometer ซึ่งก็
คือตัวต้านทานปรับค่าได้ที่พบได้โดยทั่วไปใน
อุปกรณ์เครื่องใช้ไฟฟ้าภายในบ้าน ทั้งวิทยุ
เครื่องปรับอากาศ ในรถยนต์ เป็นต้น Potentiometer
โดยทั่วไปจะมี 3 ขา สามารถทำงานเป็นตัวแบ่งแรง
ดันแบบปรับค่าได้ โดยการต่อขาด้านใดด้านหนึ่ง
กับกราวด์ส่วนด้านนอกอีกข้างต่อกับแรงดัน 5
โวลท์ โดยสามารถต่อสลับกันได้เนื่องจาก
Potentiometer มีคุณสมบัติ symmetrical แล้วนำขาก
ลางต่อเข้ากับขาอินพุตของ Arduino
จากนั้นเมื่อมีการหมุน ก็จะเกิดการแบ่งแรง
ดันระหว่าง 0-5 โวลท์ สามารถในมัลติมิเตอร์วัด
เพื่อตรวจสอบได้ สำหรับการเขียนโปแกรมบทนี้จะ
ใช้ Serial Communication Function สำหรับพิมพ์
71
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
ค่าที่อ่านได้จากขาอินพุต โดยให้นักศึกษาทำการ
เขียนโปรแกรมดังตารางที่ 3-1 ทำการ Compile
แก้ไขหากมีข้อผิดพลาดแล้ว Upload ลงบอร์ดเมื่อ
โปรแกรมสมบูรณ์ และต่อวงจร LED ดังวงจรในภาพที่
3-1 ตรวจเช็คความถูกต้องของวงจรจริงกับ
Schematic Diagram ก่อนการทดลอง
Listing 3-1 Potentiometer Reading Sketch
Sketch Explanation
const int POT = 0;
int val = 0;
void setup()
{
[Link](9600);
}
void loop()
{
val = analogRead(POT);
[Link](val);
delay(500);
}
72
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
ภาพที่ 3-1 วงจร Schemitc Diagram
ภาพที่ 3-2 หน้าต่าง Serial Data
Converting an Analog Signal to a Digital
One
ในการใช้เซอร์เซอร์ตรวจวัดปริมาณใด ๆ
73
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
เพื่อให้ไมโครคอนโทรลเลอร์สามารถประมวลผล
สัญญานเหล่านั้นได้ จำเป็นต้องใช้หลักการ
Analog-to-Digital Converter (ADC) เพื่อที่จะ
แปลงสัญญานอะนาลอกเป็นสัญญานที่สามารถใช้
ประมวลผลได้ ตัวอย่างเช่นการใช้เซ็นเซอร์ตัว
วัดปริมาณแสงสว่างภายในห้อง โดยอุดมคติ
เซนเซอร์จะสามารถให้เอาต์พุตที่เปลี่ยนแปลงไป
ตามความเข็มแสงภายในห้อง เช่น เมื่อไม่มีแสงจะ
ได้เอาต์พุตเท่ากับ 0 โวลต์ และเมื่อเซนเซอร์
ได้รับแสงเต็มที่จะให้เอาต์เท่ากับ 5 โวลต์
ซึ่งจะให้เอาต์พุตเป็นสัญญานอะนาลอก
หลักการของ ADC ความละเอียดของการแป
ลงสัญญานจะขึ้นอยู่กับจำนวนบิตที่ใช้ สำหรับ
ADC ของ Arduino Uno จะมีขนาด 10 บิต ซึ่ง
หมายความว่า 210 = 1024 (0-1023) นั่นแสดงว่า
Arduino จะกำหนดค่า 0-5 โวลต์ ให้มี 1024
ระดับ นั้นคือ ให้ 0V เท่ากับ 0 ให้ 2.5V
เท่ากับ 512 (ครึ่งหนึ่งของ 1023) และ 5V
เท่ากับ 1023 นั่นเอง จากภาพที่ 3-3 แสดง 3-bit
ADC
ภาพที่ 3-3 3-bit ADC
74
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
สรุปผลการทดลอง
บันทึกความรู้ Issue 3-1 Potentiometer Reading
What have you What did you How to check for
tried? know? understanding?
75
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
Issue 3-2 Working with Thermister to Sense
Temperature [3]
เทอร์มิสเตอร์เป็นอุปกรณ์ที่เปลี่ยนแปลงค่าความ
ต้านทานตามการเปลี่ยนแปลงของอุณหภูมิ โดยทำงาน
ในลักษณะแปรผกผันกับอุณหภูมิ (Negative
Temperature Coefficient, NTC) คือเมื่ออุณหภูมิสูง
ขึ้น ค่าความต้านทานจะมีค่าลดลง การใช้งานเทอร์
มิสเตอร์กับ Arduino จะใช้การอ่านค่าสัญญานอะนา
ลอก จากขาที่ต่อกับ output ของเทอร์มิสเตอร์โดย
นำเข้าสัญญานที่เป็นแรงดัน ไม่สามารถวัดสัญญา
นที่เป็นความต้านทานได้โดยตรง แล้วใช้หลักการ
แบ่งแรงดัน (Voltage Divider) ในการหาค่าความ
ต้านทาน และคำนวณหาค่าอุณหภูมิต่อไป
The Voltage Divider
เทอร์มิสเตอร์ที่ใช้ในการทดลองนี้เป็น
Temperature sensor module KY-013
เป็น temperature
sensor
แบบ NTC thermistor
มีย่านการใช้งานอยู่
ใน ช่วง
-55°C / +125°C
มีความแม่นยำ
Accuracy + / - 0.5°C
ต่อขา Analog Input--
> module S (Signal)
ต่อ 5V + --> module -
ต่อ GND --> middel pin
จากภาพเป็นวงจรสมมูลของเทอร์มิสเตอร์ มี
ความต้านทานภายในต่ออนุกรมกัน การใช้งานจะใช้
หลักการ Voltage divider ในการคำนวณหาค่า Vo
และ Rt เพื่อใช้ในการคำนวณหาค่าอุณภูมิต่อไป
76
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
ในส่วนนี้จะกล่าว
ถึงความสัมพันธ์ของ V0,
Vs, R และ Rt ตัวต้านทาน
2 ตัวที่ต่ออนุกรมกัน
ทำให้แรงดันตกคร่อม
เท่ากับ
(1)
แรงดันตกคร่อมตัว
ตัวทาน R เท่ากับ
(2)
จากสมการที่ 1 และ 2 สามารถหาค่ากระได้เป็น
จะพบว่ากระแสทั้งสองสมการมีค่าเท่ากับ
สามารถเขียนได้เป็น
(3)
จากสมการที่ 3 สามารถจัดรูปใหม่เพื่อหาค่า
Rt ได้เป็น
(4)
Listing 3-2 First Step: Measuring Vo and Computing
Rt
Sketch Explanation
void setup() {
[Link](9600); // open
serial port and
//set data
rate to 9600 bps
[Link]("Thermistor voltage
and resistance:");
77
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
[Link]("\n Vo Rt");
}
// -- loop() is
repeated indefinitely
void loop() {
int ThermistorPin = 5; // Analog
input pin for thermistor
//voltage
int Vo; // Integer
value of voltage reading
float R = 9870.0; // Fixed
resistance in the voltage
// divider
float Rt; // Computed
resistance of the
//thermistor
Vo = analogRead(ThermistorPin);
Rt = R*( 1023.0 / float(Vo) - 1.0 );
[Link](" "); [Link](Vo);
[Link](" "); [Link](Rt);
delay(200);
}
สรุปผลการทดลอง
บันทึกความรู้ Issue 3-2 Working with Thermister
to Sense Temperature
What have you What did you How to check for
tried? know? understanding?
78
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
Computing T from Rt
การหาค่าอุณภูมิจากการความต้านทานของเทอร์
มิสเตอร์สามารถหาได้โดยใช้สมการ Steinhart-Hart
equation
โดยที่
T is the temperature (in Kelvins)
R is the resistance at T (in ohms)
และ
79
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
Issue 3-3 Measuring Vo and Computing Rt
Listing 3-3 Second Step: Measuring Vo and
Computing Rt
Sketch Explanation
void setup() {
[Link](9600);
[Link]("Thermistor
temperature measurement:");
[Link]("\n Vo Rt T (C)");
}
void loop() {
int ThermistorPin = 1; // Analog input
pin for thermistor voltage
int Vo; // Integer value of voltage
reading
float R = 9870.0; // Fixed resistance
in the voltage divider
float logRt,Rt,T;
float c1 = 1.009249522e-03, c2 =
2.378405444e-04, c3 =
2.019202697e-07;
Vo = analogRead(ThermistorPin);
80
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
Rt = R*( 1023.0 / (float)Vo - 1.0 );
logRt = log(Rt);
T = ( 1.0 / (c1 + c2*logRt +
c3*logRt*logRt*logRt ) ) - 273.15;
[Link](" "); [Link](Vo);
[Link](" "); [Link](Rt);
[Link](" "); [Link](T);
delay(200);
}
สรุปผลการทดลอง
บั น ทึ ก ค ว า ม รู้ Issue 3-3 Measuring Vo and
Computing Rt
What have you What did you How to check for
tried? know? understanding?
81
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
STEM Problem ประเด็น ออกแบบวงจรวัดแรงดันตก
คร่อมต้านทานจากวงจรไฟฟ้าที่มีพิกัด 0-5VDC และ
คำนวณค่ากระแสของวงจร จงออกแบบและทดลอง
ขั้นที่ 1 ระบุปัญหา (Problem Identification)
ขั้นที่ 2 รวบรวมข้อมูลและแนวคิดที่เกี่ยวข้อง
กับปัญหา (Related Information Search)
82
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
ขั้นที่ 3 ออกแบบวิธีการแก้ปัญหา (Solution
Design)
ขั้นที่ 4 วางแผนและดำเนินการแก้ปัญหา
(Planning and Development)
83
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
ขั้นที่ 5 ทดสอบ ประเมินผล และปรับปรุงแก้ไข
วิธีการแก้ปัญหาหรือชิ้นงาน (Testing,
Evaluation and Design Improvement)
ขั้นที่ 6 นำเสนอวิธีการแก้ปัญหา ผลการแก้
ปัญหาหรือชิ้นงาน (Presentation)
84
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
แบบประเมินผลงานด้วยตนเอง
คำอธิบายคุณภาพ
รายการประเมิน คะแน
10 7.5 5 2.5 0
น
1. การสรุปผลการทดลอง มี ไม่มี ไม่ ไม่มี ไม่
ก.นำเข้าสู้เนื้อหาอย่างน่า ครบ หรือ มี หรือ มี
สนใจ สม มีแต่ หรือ มีแต่ หรือ
ข.นำเสนอเป็นลำดับขั้นตอน บูร ไม่ มี ไม่ มี
ค.ชัดเจน เข้าใจง่าย ณ์ สมบูร แต่ สมบูร แต่
ง. ชี้ให้เห็นความสอดคล้องกับ ทุก ณ์ ไม่ ณ์ ไม่
ทฤษฎี ข้อ 1 ข้อ สมบู 3 ข้อ สมบู
จ. ถูกต้อง รณ์ 2 รณ์ 4
ข้อ ข้อ
2. ใบบันทึกความรู้ มี ไม่มี ไม่ ไม่มี ไม่
ก.ประเด็นการทดลองน่าสนใจ ครบ หรือ มี หรือ มี
ข.ปริมาณประเด็นการทดลองเหมาะ สม มีแต่ หรือ มีแต่ หรือ
สม บูร ไม่ มี ไม่ มี
ค.วิธีการถูกต้อง ณ์ สมบูร แต่ สมบูร แต่
ง. ชี้ให้เห็นความสอดคล้องกับ ทุก ณ์ ไม่ ณ์ ไม่
ทฤษฎี ข้อ 1 ข้อ สมบู 3 ข้อ สมบู
จ. มีการตรวจสอบถูกต้อง รณ์ 2 รณ์ 4
ข้อ ข้อ
3. เอกสารที่เกี่ยวข้องกับการ มี ไม่มี ไม่ ไม่มี ไม่
ทดลอง ครบ หรือ มี หรือ มี
ก. เอกสารประกอบการทดลองครบ สม มีแต่ หรือ มีแต่ หรือ
ถ้วน บูร ไม่ มี ไม่ มี
ข. มีการจัดรูปแบบเรียบร้อย ณ์ สมบูร แต่ สมบูร แต่
ง่ายต่อการตรวจ ทุก ณ์ ไม่ ณ์ ไม่
ค. มีการอธิบาย เข้าใจง่าย ข้อ 1 ข้อ สมบู 3 ข้อ สมบู
ง. แสดงให้เห็นถึงความพยายามใน รณ์ 2 รณ์ 4
การเรียนรู้ ข้อ ข้อ
จ. ถูกต้อง สมบูรณ์
4. สมรรถนะของการปฏิบัติการ มี ไม่มี ไม่ ไม่มี ไม่
ก. การรับรู้ (Imitation) สังเกต ครบ หรือ มี หรือ มี
และทำตาม สม มีแต่ หรือ มีแต่ หรือ
ข. การลงมือปฏิบัติทำตาม บูร ไม่ มี ไม่ มี
(Manipulation) ทำตามได้ ณ์ สมบูร แต่ สมบูร แต่
ค. ความถูกต้อง (Precision) ทุก ณ์ ไม่ ณ์ ไม่
ทำได้ถูกต้อง ควบคุมและลด ข้อ 1 ข้อ สมบู 3 ข้อ สมบู
ความผิดพลาด รณ์ 2 รณ์
ง. ความชัดเจน ต่อเนื่องในการ ข้อ 4-5
ปฏิบัติ (Articulation) เรียน ข้อ
รู้วิธีการถูกต้องตามขั้น
ตอน
จ. ความเป็นธรรมชาติ
85
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
(Naturalization) แสดงพฤติกรรม
เป็นประจำเป็นอัตโนมัติ จน
กลายเป็นธรรมชาติ
บรรณานุกรมและเอกสารอ้างอิง
[1] J. Blum, Exploring Arduino®: Tools and
Techniques for Engineering Wizardry.
Indianapolis, IN USA: John Wiley & Sons, Inc.,
2013.
[2] Allaboutcircuits. (2003). DC Mesh Current
Analysis Network Analysis Techniques. Available:
[Link]
mesh-current-analysis/
[3] G. Recktenwald, "Temperature Measurement
with a Thermistor and an Arduino," 2013.
86
Experiment Worksheet
LAB03 Reading Analog Sensors
09-212-202 Microcontrollers
87