บทที่ 14: การเขียนโปรแกรมวัดค่าความเข้มแสงด้วยเซนเซอร์ LDR

UTEN BOONLIAM Avatar
บทที่ 14 / 26

บทที่ 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

  1. . เปิด Example sketch โดยทำการเปิดตัวอย่างโปรแกรมที่มีชื่อว่า AnalogReadSerial โดยคลิกที่ File -> Examples -> 01.Basics -> AnalogReadSerial

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

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

อธิบายโค้ดข้างบนดังนี้

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

    1. กลับมาในส่วนของการทดลองต่อนะครับ ให้ทำการแปลงค่าตัวเลขที่อ่านได้กลับไปเป็นแรงดันแล้วแสดงออกทาง Serial Monitor ให้เขียนโปรแกรมเพิ่มตามตัวอย่างด้านล่าง

จากโค้ดด้านบนที่บรรทัดที่ 23 เป็นการประกาศตัวแปรชนิดทศนิยม(float) ชื่อ ldr มารับค่าที่ได้จากการคำนวณ โดยนำค่าที่ได้จากการอ่าน ADC มาคุณด้วย 5 และหารด้วย 1024 จากนั้นบรรทัดที่ 26-28 จะแสดงค่าที่ได้หลังจากการคำนวณ โดยกำหนดให้แสดงทศนิยม 2 ตำแหน่ง ซึ่งคือค่าแรงดันตกคร่อมตัวเซนเซอร์ LDR นั่นเอง

แบบฝึกหัดสำหรับทบทวนความเข้าใจ

  1. เขียนโปรแกรมคำนวณค่าความต้านทานของ LDR จากสูตรด้านล่าง ทำการทดลองโดยการค่อยๆเพิ่มแสงสว่างตกกระทบเซนเซอร์ LDR แล้วดูการเปลี่ยนแรงของตัวต้านทาน แล้วให้อธิบายความสัมพันธ์ระหว่างแสงตกกระทบ แรงดันตกคร่อม LDR และความต้านทาน LDR

$$Vout = \frac{Vcc\ x\ R19(LDR)}{\ R19(LDR) + R13}$$

$$R19(LDR) = \frac{Vout\ x\ R13}{\ Vcc – Vout}$$

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *