Thursday, September 18, 2014

การทดลองที่ 4.4

สัญญาณอินพุต-แอนะล็อกและการใช้งานร่วมกับบอร์ดArduino 


วัตถุประสงค์
  • ฝึกต่อวงจรเพื่อสร้างสัญญาณแอนะล็อก และป้อนให้บอร์ด Arduino เพื่อใช้เป็นสัญญาณอินพุต
  • เขียนโปรแกรมสําหรับ Arduino เพื่อเปิด/ปิด LED ตามสภาวะแสง

รายการอุปกรณ์
แผงต่อวงจร (เบรดบอร์ด)1 อัน
บอร์ด Arduino (ใช้แรงดัน+5V)1 บอร์ด
ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ1 ตัว
ตัวต้านทานไวแสง LDR1 ตัว
ไดโอดเปล่งแสงขนาด 5 มม.1 ตัว
ตัวต้านทาน 330Ω หรือ 470Ω1 ตัว
ตัวต้านทาน 10kΩ1 ตัว
สายไฟสําหรับต่อวงจร1 ชุด
มัลติมิเตอร์1 เครื่อง

ขั้นตอนการทดลอง
1.  ต่อวงจรตามผังวงจรในรูปที่ 4.4.1 บนเบรดบอร์ดร่วมกับบอร์ด Arduino โดยใช้แรงดันไฟเลี้ยง VCC = +5V และ Gnd จากบอร์ด Arduino เท่านั้น (ต่อวงจรบนเบรดบอร์ดก่อนจากนั้นจึงเชื่อมต่อ สัญญาณอินพุตและเอาต์พุตของบอร์ด Arduino เมื่อตรวจสอบความถูกต้องแล้วจึงป้อนแรงดันไฟ เลี้ยง และ Gnd ตามลําดับ)
2.  เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้ และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่ ตัวต้านทานปรับค่าได้ หรือปิดบริเวณส่วนรับแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino
3.  ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมี ปริมาณแสงน้อยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตาม สภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”
4.  เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจริงพร้อมคําอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามท้ายการทดลอง


รูปที่ 4.4.1: ผังวงจรสําหรับต่อวงจรบนเบรดบอร์ดร่วมกับบอร์ด Arduino


โค้ดที่4.4.1: โค้ดตัวอย่างสําหรับ Arduino


ผลการทดลอง

ผังวงจรจากการต่อตามรูป 4.4.1



วงจรจริงที่ต่อตามรูป 4.4.1

วีดิโอแสดงค่าของ  LDR ณ ช่วงเวลาของแสงที่ต่างกัน



คำถามท้ายการทดลอง
1.  ค่าที่ได้ (เลขจํานวนเต็ม) จากบอร์ด Arduino สําหรับสัญญาณอินพุตที่ขา A1 มีค่าอยู่ในช่วงใด (ต่ําสุด-สูงสุด)
ans   ตั้งแต่ 0 ถึงประมาณ 880

2.  จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตาม ปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสว่างน้อย จะทําให้ LED1 สว่างมาก แต่ถ้าLDR ได้แสง สว่างมาก จะทําให้ LED1 สว่างน้อยหรือไม่ติดเลย
ans   
const byte LDR_PIN = A1; // from LDR 
const byte VREF_PIN = A2; // from Trimpot 
const byte LED1_PIN = 5;  // to LED1 

void setup() { 
pinMode( LED1_PIN, OUTPUT ); 
digitalWrite( LED1_PIN, LOW ); 
analogReference( DEFAULT ); 
Serial.begin( 9600 ); // open serial port 

void loop() { 
// read analog values 
int value1 = analogRead( LDR_PIN ); 
int value2 = analogRead( VREF_PIN ); 

if(value1 < value2)
digitalWrite( LED1_PIN, HIGH );
else
digitalWrite( LED1_PIN, LOW );
// send message to serial port 
Serial.print( "Read " ); 
Serial.print( value1, DEC ); 
Serial.print( ", " ); 
Serial.println( value2, DEC ); 
delay( 200 ); 

No comments:

Post a Comment