บทที่ 14: การเขียนโปรแกรมวัดค่าความเข้มแสงด้วยเซนเซอร์ LDR
LDR (Light Dependent Resistor) คือตัวต้านทานปรับค่าตามแสง ตัวต้านทานชนิดนี้สามารถเปลี่ยนความนําไฟฟ้าได้เมื่อมีแสงมาตกกระทบ โฟโตรีซีสเตอร์ ( Photo Resistor) หรือ โฟโตคอนดัคเตอร์ (Photo Conductor) เป็นตัวต้านทานที่ทำมาจากสารกึ่งตัวนำ (Semiconductor) ประเภทแคดเมี่ยมซัลไฟด์ ( Cds : Cadmium Sulfide) หรือแคดเมี่ยมซิลินายส์ ( CdSe : Cadmium Selenide) ซึ่งทั้งสองตัวนี้ก็เป็นสารประเภทกึ่งตัวนำ เอามาฉาบลงบนแผ่นเซรามิกที่ใช้เป็นฐานรองแล้วต่อขาจากสารที่ฉาบ ไว้ออกมา


คุณสมบัติทางแสง
การทำงานของ LDR เพราะว่าเป็นสารกึ่งตัวนำ เวลามีแสงตกกระทบลงไปก็จะถ่ายทอดพลังงาน ให้กับสาร ที่ฉาบอยู่ ทำให้เกิดโฮลกับอิเล็กตรอนวิ่งกันพล่าน. การที่มีโฮล กับอิเล็กตรอนอิสระนี้มากก็เท่ากับ ความต้านทานลดลงนั่นเอง ยิ่ง ความเข้มของแสงที่ตกกระทบมากเท่าไร ความต้านทานก็ยิ่งลดลงมากเท่านั้น


บอร์ด Arduino Learning Kit ได้ติดตั้ง LDR ไว้บนบอร์ดเรียบร้อยแล้ว ซึ่งต่ออนุกรมกับตัวต้านทาน 10k𝛺
และขาสัญญาณของไมโครคอนโทรลเลอร์ที่ใช้ต่อกับเซนเซอร์ LDR ดูได้จากตารางด้านล่าง
| ขาสัญญาณที่ต่อกับเซนเซอร์ LDR | |
|---|---|
| Arduino Uno | A3 |
| Arduino Nano | A3 |
| ESP32(ESP-WROM-32) | 14 |
ตารางที่ 14. 1 ขาที่ต่อใช้งานกับตัว LDR
เราจะใช้หลักการวัดค่าแรงดันที่ตกคร่อมตัว LDR โดยใช้การแบ่งแรงดัน (Voltage Divider)
$$Vout = \frac{Vcc\ x\ R19(LDR)}{\ R19(LDR) + R13}$$
ค่าแรงดัน Vout ที่ได้จะเปลี่ยนแปลงค่าตามความเข้มแสงที่ตกกระทบตัวเซนเซอร์ LDR
การเขียนโปรแกรมสำหรับอ่านค่าความเข็มแสงของตัวเซนเซอร์ LDR
-
. เปิด Example sketch โดยทำการเปิดตัวอย่างโปรแกรมที่มีชื่อว่า AnalogReadSerial โดยคลิกที่ File -> Examples -> 01.Basics -> AnalogReadSerial

-
ที่บรรทัดที่ 22 เปลี่ยนค่าที่ต่อกับเซนเซอร์ LDR จากนั้นทำการ upload โปรแกรมให้กับ Arduino Uno เมื่อเสร็จแล้วให้เปิด Serial Monitor

-
ทดลองปิดไม่ให้เซนเซอร์ LDR รับแสง ดูค่าการเปลี่ยนแปลงที่หน้าจอ Serial Monitor

อธิบายโค้ดข้างบนดังนี้
-
ในส่วนคำสั่งหลัก ๆของโค้ดด้านบนอยู่ที่บรรทัดที่ 22 คือการประกาศตัวแปรชนิด integer ชื่อว่า sensorValue แล้วนำมารับค่าที่อ่านได้จากคำสั่ง analogRead โดยอ่านค่าแรงดันที่ขา A3 ของ Arduino Uno จากนั้นนำค่าที่ได้แสดงออกทาง Serial Monitor
-
กลับมาในส่วนของการทดลองต่อนะครับ ให้ทำการแปลงค่าตัวเลขที่อ่านได้กลับไปเป็นแรงดันแล้วแสดงออกทาง Serial Monitor ให้เขียนโปรแกรมเพิ่มตามตัวอย่างด้านล่าง
-

จากโค้ดด้านบนที่บรรทัดที่ 23 เป็นการประกาศตัวแปรชนิดทศนิยม(float) ชื่อ ldr มารับค่าที่ได้จากการคำนวณ โดยนำค่าที่ได้จากการอ่าน ADC มาคุณด้วย 5 และหารด้วย 1024 จากนั้นบรรทัดที่ 26-28 จะแสดงค่าที่ได้หลังจากการคำนวณ โดยกำหนดให้แสดงทศนิยม 2 ตำแหน่ง ซึ่งคือค่าแรงดันตกคร่อมตัวเซนเซอร์ LDR นั่นเอง
แบบฝึกหัดสำหรับทบทวนความเข้าใจ
-
เขียนโปรแกรมคำนวณค่าความต้านทานของ LDR จากสูตรด้านล่าง ทำการทดลองโดยการค่อยๆเพิ่มแสงสว่างตกกระทบเซนเซอร์ LDR แล้วดูการเปลี่ยนแรงของตัวต้านทาน แล้วให้อธิบายความสัมพันธ์ระหว่างแสงตกกระทบ แรงดันตกคร่อม LDR และความต้านทาน LDR
$$Vout = \frac{Vcc\ x\ R19(LDR)}{\ R19(LDR) + R13}$$
$$R19(LDR) = \frac{Vout\ x\ R13}{\ Vcc – Vout}$$





Leave a Reply