[ บทความ : Robot ] ตอนที่ 5 เรื่อง ... การควบคุม ET-ROBOT RD2 (การตรวจสอบ Input ด้วยบอร์ด R-LIGHT) |
การตรวจสอบแสงสว่างด้วยบอร์ด R-LIGHT |
สำหรับในหัวข้อนี้เราจะมาทดลองการวัดค่าแสงสว่าง ด้วยชุด ET ROBOT-RD2 กันดู โดยจะใช้บอร์ด R-LIGHT ซึ่งเป็นบอร์ดสำหรับใช้ตรวจจับระดับแสงสว่างอย่างง่ายๆ โดยใช้หลักการ RC ในการวัดค่าความต้านทาน โดยลักษณะของวงจร RC ของบอร์ด R-LIGHT เป็นดังรูป
|
รูปแสดง
ลักษณะของวงจร R-LIGHT
ที่ใช้สำหรับตรวจจับแสงสว่าง |
โดยการทำงานของวงจรจะเป็นการอาศัยหลักการนับเวลาที่ ใช้ในการประจุ ของตัวเก็บประจุ ซึ่งจากวงจรจะเห็นได้ว่าตัวเก็บประจุนั้นจะกำหนดเป็นค่าคงที่ไว้ ส่วนค่าตัวต้านทานนั้นจะเป็นตัวต้านทานแบบเปลี่ยนค่าได้ตามระดับของแสงสว่าง ดังนั้นการทำงานของวงจร RC หรือเวลาที่ใช้ในการประจุ จึงขึ้นอยู่กับค่าการเปลี่ยนแปลงของความต้านทานเพียงอย่างเดียวซึ่งค่าความต้านทานก็จะเปลี่ยนแปลงตามระดับของแสงสว่าง ดังนั้นเราจึงสามารถอาศัยหลักการนี้ในการวัดค่าแสงสว่างได้ โดยโปรแกรม BASCOM-8051 เองได้สร้างคำสั่ง GETRC ไว้ให้เราใช้งานอยู่ด้วยแล้วดังนั้นเราจึงสามารถนำคำสั่งนี้มาใช้วัดระดับแสงสว่าง โดยใช้วงจร RC ของบอร์ด R-LIGHT ได้ทันที โดยลักษณะของบอร์ด R-LIGHT นั้นจะออกแบบให้สามารถเชื่อมต่อกับบอร์ด ET-ROBOT RD2 ได้ทันที ซึ่งจะต่อเข้ากับสัญญาณของ Pin Port ใดๆก็ได้ โดยตามปรกติแล้วบอร์ด ET-ROBOT RD2 จะมี Pin Port เหลือว่างไว้ให้ใช้งานจำนวน 4 ชุด คือ P1.0,P1.1,P1.2 และ P1.3 โดย Pin Port ทั้ง 4 ชุดนี้จะต่อออกมารอไว้ยังขั้วต่อขนาด 3 Pin ไว้ให้เรียบร้อยแล้ว จึงสามารถนำไปต่อกับบอร์ด R-LIGHT ได้ทันที โดยไม่ต้องดัดแปลงแก้ไขใดๆอีก แต่ต้องไม่ลืมทำการ OFF Dip-Switch ในตำแหน่งที่เชื่อมต่อกับ Pin Port ที่จะนำมาใช้งานด้วยเนื่องจาก Pin Port ของ P1.0-P1.4 จะต่อร่วมกับวงจรของ Dip-Switch ขนาด 4 จุดอยู่ด้วย |
$regfile = "89c51rd.dat" | 'กําหนดใช้งานกับ P89C51RD2(Philips) | ||
$ramstart = 0 | |||
$ramsize = 256 | |||
$crystal = 36864000 | 'กําหนด XTAL = 18.432MHz แบบ X2 Mode | ||
Config Lcdpin = Pin , Db4 = P2.0 , Db5 = P2.1 , Db6 = P2.2 , Db7 = P2.3 , E = P2.4 , Rs = P2. กําหนดการเชื่อมต่อกับ LCD | |||
Config Lcd = 16 * 2 | กําหนดใช้งานกับ LCD ขนาด 16 ตัวอักษร 2 บรรทัด | ||
Cursor Off | 'ไม่ต้องแสดง Cursor LCD | ||
Config Timer0=Timer,Gate=Internal,Mode=1 | 'กําหนดการทํางานของ Timer0 | ||
Config Getrc = 20 | 'กําหนดเวลาสําหรับการประจุ = 20mS | ||
Dim Light As Word | 'กําหนดตัวแปรสําหรับอ่านค่า RC | ||
Cls | 'สั่ง Clear Display | ||
Lcd "**DEMO R-LIGHT**" | แสดงข้อความในบรรทัดที่ 1 | ||
Locate 2 , 1 | กําหนด Cursor ไว้ที่ตัวอักษรแรกของบรรทัดที่ 2 | ||
Lcd "Light Value = " | แสดงข้อความในบรรทัดที่ 2 | ||
Do | 'เริ่มต้นการวนรอบอ่านค่า RC | ||
Light = Getrc(p1.1) | 'อ่านค่า RC จาก P1.1 ให้กับตัวแปร Light | ||
Locate 2 , 14 | กําหนดตําแหน่ง Cursor ในการแสดงผล | ||
Lcd Light | แสดงผลค่าเวลาที่ใช้ในการประจุที่อ่านได้ | ||
Wait 1 | 'หน่วงเวลาไว้ชั่วขณะหนึ่ง | ||
Loop | |||
แสดง โปรแกรมอ่านค่าแสงสว่างโดยใช้บอร์ด R-LIGHT |
สำหรับการทำงานของโปรแกรมจะเป็นการอ่านค่าเวลาที่ใช้ในการประจุ ให้กับตัวเก็บประจุ ค่า 0.01uF โดยค่าเวลาของการประจุจะเปลี่ยนแปลงตามค่าความต้านทาน ซึ่งค่าของความต้านทานของ LDR ก็จะแปรผันตามค่าแสงสว่าง โดยจากตัวอย่างจะใช้ P1.1 สำหรับทำหน้าที่อ่านค่าการประจุของวงจร RC ของบอร์ด R-LIGHT โดยการทำงานของโปรแกรมจะแสดงให้เห็นที่หน้าจอ LCD โดยการทดสอบการทำงานของโปรแกรมให้ทดลองปรับระดับแสงสว่างที่สองไปยังชองรับแสงของ LDR ในบอร์ด R-LIGHT แล้วสังเกตค่าผลลัพธที่อ่านได้จากการทำงานของคำสั่งที่หน้าจอแสดงผล LCD |