วันพฤหัสบดีที่ 25 กันยายน พ.ศ. 2557

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

การทดลองที่ 4.6
การวัดแรงดันอินพุต-แอนะล็อกและการแสดงค่าโดยใช้ 7-Segment

วัตถุประสงค์

  • ฝึกต่อวงจรและเขียนโปรแกรมสําหรับบอร์ด Arduino เพื่อวัดแรงดันอินพุต-แอนะล็อกและแสดงค่าที่ ได้ผ่านทาง 7-Segment Display


รายการอุปกรณ์

  • แผงต่อวงจร (เบรดบอร์ด)      1 อัน 
  • บอร์ด Arduino (ใช้แรงดัน +5V)     1 บอร์ด 
  • ตัวต้านทานปรับค่าได้แบบสามขา 10kΩ หรือ 20kΩ   1 ตัว 
  • 7-Segment Display แบบ 2 ตัวเลข (Common-Cathode)   1 ตัว 
  • ทรานซิสเตอร์ NPN (เช่น PN2222A)    2 ตัว 
  • ตัวต้านทาน 1kΩ       2 ตัว 
  • ตัวต้านทาน 330Ω หรือ 470Ω     8 ตัว 
  • สายไฟสําหรับต่อวงจร      1 ชุด 
  • มัลติมิเตอร์       1 เครื่อง 

ขั้นตอนการทดลอง 

   1.ออกแบบวงจร วาดผังวงจร และต่อวงจรบนเบรดบอร์ด ร่วมกับบอร์ด Arduino เพื่อวัดแรงดันที่ได้ จากวงจรแบ่งแรงดันที่ใช้ตัวต้านทานปรับค่าได้ (แรงดันอยู่ในช่วง 0V ถึง 5V) เช่น ป้อนเข้าที่ขา A0 ของบอร์ด Arduino แล้วนําคา่ไปแสดงผลโดยใช้ 7-Segment Display จํานวน 2 หลัก และ ให้มีทศนิยมเพยีงหนึ่งตําแหน่ง เช่น ถ้าวัดแรงดันได้ 2.365V จะแสดงผลเป็น “2.4” ถ้าวัดได้ 2.539V  ให้แสดงผลเป็น “2.5” เป็นต้น และให้ใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น [ทุกกลุ่มจะต้องวาดวงจรสําหรับการทดลองมาให้แลว้เสร็จ (ให้เตรียมตัวมาก่อนเข้าเรียน วิชาปฏิบัติ] 
   2. เขียนโค้ดสําหรับ Arduino เพื่ออ่านค่าจากแรงดันอินพุต-แอนะล็อก แลว้นําไปแสดงผลโดยใช้  7-Segment Display ตามที่กล่าวไป (และให้แสดงค่าทอี่่านได้ออกทาง Serial Monitor ด้วย)  และในการเขยีนโค้ด ห้ามใช้ตัวแปรหรือตัวเลขแบบ float 
   3. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจริงพร้อมคาํอธิบายโค้ด/การทํางานของโปรแกรม และตัวอย่างผลที่แสดงบน Serial Monitor (Screen Capture) 


วงจร

          ออกแบบวงจรโดยใช้ Freezing






วงจรที่ใช้ทดลอง




Code ที่ใช้ในการทดลอง


byte seven_seg_digits[10][7]={{1,1,1,1,1,1,0}, // 0

                              {0,1,1,0,0,0,0}, // 1

                              {1,1,0,1,1,0,1}, // 2

                              {1,1,1,1,0,0,1}, // 3
                              {0,1,1,0,0,1,1}, // 4
                              {1,0,1,1,0,1,1}, // 5
                              {1,0,1,1,1,1,1}, // 6
                              {1,1,1,0,0,0,0}, // 7
                              {1,1,1,1,1,1,1}, // 8
                              {1,1,1,0,0,1,1}  // 9
                            };
void setup() {
  pinMode(A0,INPUT); //ให้ขา A0 รับค่า
  pinMode(2,OUTPUT); //ให้ขา D2 แสดงผล
  pinMode(3,OUTPUT); //ให้ขา D3 แสดงผล
  pinMode(4,OUTPUT); //ให้ขา D4 แสดงผล
  pinMode(5,OUTPUT); //ให้ขา D5 แสดงผล
  pinMode(6,OUTPUT); //ให้ขา D6 แสดงผล
  pinMode(7,OUTPUT); //ให้ขา D7 แสดงผล
  pinMode(8,OUTPUT); //ให้ขา D8 แสดงผล
  pinMode(9,OUTPUT); //ให้ขา D9 แสดงผล
  pinMode(10,OUTPUT); //ให้ขา D10 แสดงผล
  pinMode(11,OUTPUT); //ให้ขา D11 แสดงผล
  digitalWrite(9,HIGH); // แสดงจุดทศนิยม
  Serial.begin(9600); //สร้างหน้าต่าง Serial
}
void sevenSegWrite_2(byte digit){ //ฟังก์ชัน สร้างเลข 0,1,2,3,4,5,6,7,8,9  ใน                                                               หลักหน่วย
 byte pin=8;
 for(byte segcount=0;segcount<7;segcount++){
  digitalWrite(11,HIGH); //หลักหน่วยติด
  digitalWrite(10,LOW); //หลักทศนิยมดับ
  digitalWrite(pin,seven_seg_digits[digit][segcount]);
  pin--;
 }
}

void sevenSegWrite_1(byte digit){////ฟังก์ชัน สร้างเลข 0,1,2,3,4,5,6,7,8,9 ใน                                                                ทศนิยม
 byte pin=8;
 for(byte segcount=0;segcount<7;segcount++){
    digitalWrite(10,HIGH);//หลักทศนิยมติด
    digitalWrite(11,LOW);//หลักหน่วยดับ
    digitalWrite(pin,seven_seg_digits[digit][segcount]);
    pin--;
 }
}
void loop() {
  long int value_Tim=analogRead(A0); // รับค่าจาก Timport
  long int value=((value_Tim*50)/1023); // คำนวณค่าแปลง เป็น Volt
  long int value_2=value/10; //แปลงค่าเป็นหลักหน่วย
  long int value_1=value%10; //แปลงค่าเป็นหลักทศนิยม
  Serial.println(value);
  sevenSegWrite_1(value_1); // แสดงผลหลักทศนิยม
  delay(10);
  sevenSegWrite_2(value_2); // แสดงผลหลักหน่วย
  delay(10);
}


ผลการทดลอง



สรุปผลการทดลอง

   จากการทดลอง จะใช้ตัว PN2222A เป็นตัวควบคุมการติดดับของ 7-Segment Display ในที่นี้ 7-Segment Display มีค่า 2 หลัก จะใช้ PN2222A 2 ตัวในการควบคุมแต่ละหลัก 
   ส่วนการแสดงผลจะใช้ ค่าที่อ่านได้จาก ตัวต้านทานปรับค่าได้แบบสามขา ใน Serial มาคำนวณแปลงเป็น Volt แล้วแสดงผลออกทาง  7-Segment Display ซึ่งใน Serial ที่อ่านค่าได้ มีค่ามากที่สุด คือ 1023 และ ได้ 5 V ดังนั้นเราจะแปลงค่าที่อ่านได้เป็นโวลต์ V= 5/1023 

วันพฤหัสบดีที่ 18 กันยายน พ.ศ. 2557

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

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


วัตถุประสงค์ 

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

รายการอุปกรณ์

  • แผงต่อวงจร (เบรดบอร์ด)    1 อัน  
  • บอร์ด Arduino (ใช้แรงดัน +5V)   1 บอร์ด 
  • ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ  1 ตัว 
  • ตัวต้านทานไวแสง LDR    1 ตัว 
  • ไดโอดเปล่งแสงขนาด 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 ของ ArduinoIDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino 
    3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมปีริมาณแสงนอ้ยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตามสภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”
    4. เขียนรายงานการทดลอง ซงึ่ประกอบด้วยคําอธบิายการทดลองตามขั้นตอน ผงัวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟา้ (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจรงิพร้อมคาํอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามทา้ยการทดลอง 




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


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 ); 
  // send message to serial port 
  Serial.print( "Read " ); 
  Serial.print( value1, DEC ); 
  Serial.print( ", " ); 
  Serial.println( value2, DEC ); 
  delay( 200 ); 
}

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


วงจรทดลอง


วงจรที่ใช้ทดลอง




Code สำหรับการทดลอง ความสว่างปกติติด และเมื่อความสว่างลดลงจะดับ


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<1023){
      digitalWrite(LED1,HIGH);
   }else{digitalWrite(LED1,LOW);
  // send message to serial port 
  Serial.print( "Read " ); 
  Serial.print( value1, DEC ); 
  Serial.print( ", " ); 
  Serial.println( value2, DEC ); 
  delay( 200 ); 
}

ผลการทดลอง


 ความสว่างปกติ หรือ ความสว่างห้อง หลอด LED จะดับ หรือไม่ติด






ถ้า ความสว่างเริ่มลดลง จะทำให้หลอด LED ติด





วัดค่า Vx  ซึ่งเท่ากับ 5.04 V


คําถามท้ายการทดลอง

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

     ค่าสูงสุด 1023 , ค่าต่ำสุด 970  จะอยู่ในช่วง 970-1203

    2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตามปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสวา่งน้อย จะทําให้ LED1 สว่างมาก แต่ถ้า LDR ได้แสงสว่างมาก จะทําให้ LED1สว่างน้อย หรือไม่ติดเลย

Code สว่างตามความมืด คือ ถ้าความสว่างมากหลอด LED จะสว่างน้อย แต่ถ้าความสว่างน้อย LED จะสว่างมาก

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 );
  int valueLight=(value1-970)*5;
  analogWrite(LED1,valueLight);
  // send message to serial port 
  Serial.print( "Read " ); 
  Serial.print( value1, DEC ); 
  Serial.print( ", " ); 
  Serial.println( value2, DEC ); 
  delay( 200 ); 
}

ผลลัพธ์



วันพฤหัสบดีที่ 11 กันยายน พ.ศ. 2557

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

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

การต่อวงจรสำหรับเปรียบเทียบช่วงแรงดัน


วัตถุประสงค์ 

  • ฝึกต่อวงจรโดยใช้ตัวต้านทานปรับค่าได้และไอซี LM393N 
  • ต่อวงจรโดยใช้ไอซี LM393N ที่มีตัวเปรียบเทียบแรงดันสองตัว เพื่อเปรียบเทียบแรงดันอินพุตกับ แรงดันอ้างอิงโดยแบ่งเป็นสองระดับ 

รายการอุปกรณ์

  •  แผงต่อวงจร (เบรดบอร์ด)     1 อัน 
  • ไอซีเปรียบเทียบแรงดัน เบอร์ LM393N   1 ตัว 
  • ตัวต้านทานปรับค่าได้แบบ 3 ขา ขนาด 10kΩ หรือ 20kΩ 1 ตัว
  • ตัวต้านทาน 10kΩ     4 ตัว 
  • ตัวต้านทาน 330Ω หรือ 470Ω    1 ตัว 
  • ไดโอดเปล่งแสง (LED) ขนาด 5 มม.   1 ตัว 
  • สายไฟสําหรับต่อวงจร     1 ชุด 
  • มัลติมิเตอร์      1 เครื่อง 
  • แหล่งจ่ายแรงดันควบคุม     1 เครื่อง 
  • เครื่องกําเนิดสัญญาณแบบดิจิทัล    1 เครื่อง 
  • ออสซิลโลสโคปแบบดิจิทัล    1 เครื่อง 

ขั้นตอนการทดลอง

   1. ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี LM393N ตามผังวงจรในรูปที่ 4.2.1 และป้อนแรงดันไฟเลี้ยง               VCC= +5V และ Gnd จากแหล่งจ่ายควบคุมแรงดัน 
   2. ใช้มัลติมิเตอร์วัดแรงดัน V1 และ V2 เทียบกับ Gnd ของวงจร ตามลําดับ แล้วจดบันทึกค่าที่ได้
   3. สร้างสัญญาณแบบสามเหลี่ยม (Triangular Wave) ให้อยู่ในช่วงแรงดนั 0V ถึง 5V โดยใช้เครื่อง                กําเนิดสัญญาณ (Function Generator) โดยกําหนดให้ Vpp = 5V (Peak-to-Peak Voltage) และ แรงดัน        Offset = 2.5V และความถี่ f = 1kHz เพื่อใช้เป็นสัญญาณอินพุต Vin สําหรับวงจร 
   4. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A สําหรับวัดสัญญาณที่มาจากเครื่องกําเนิดสัญญาณ           (Vin) และช่อง B สําหรับวัดสัญญาณเอาต์พุตที่ขาหมายเลข 1 (V3) ของตัวเปรียบเทียบแรงดัน                 (บันทึกภาพ ที่ได้จากออสซลิโลสโคป เพื่อใช้ประกอบการเขียนรายงานการทดลอง) 
   5. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A สําหรับวัดสัญญาณที่มาจากเครื่องกําเนิดสัญญาณ           (Vin) และช่อง B สําหรับวัดสัญญาณเอาต์พุตที่ขาหมายเลข 7 (V4) ของตัวเปรียบเทียบแรงดัน                 (บันทึกภาพ ที่ได้จากออสซลิโลสโคป เพื่อใช้ประกอบการเขียนรายงานการทดลอง) 
   6. ต่อวงจรบนเบรดบอร์ด ตามผังวงจรในรูปที่ 4.2.2 โดยตัวต้านทานปรับค่าได้ขนาด 10kΩ หรือ 20kΩ
    7. ใช้มัลติมิเตอร์วัดแรงดัน Vin ทดลองหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ แล้วสังเกตสถานะของ              การติด/ดับของ LED1 ให้จดบันทึกค่าแรงดัน Vin ที่ทําให้ LED1 เกิดการเปลี่ยนสถานะติด/ดับ  
   8. เขียนรายงานการทดลอง ซงึ่ประกอบด้วยคําอธบิายการทดลองตามขั้นตอน ผงัวงจรที่ถูกต้อง ครบ          ถ้วนตามหลักไฟฟา้ (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด รูป        คลื่นสัญญาณที่วัดได้จากออสซิลโลสโคปตามโจทย์การทดลอง และตอบคําถาม ท้ายการทดลอง 




รูปที่ 4.2.1: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบแรงดันสองชุด 


รูปที่ 4.2.2: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบช่วงแรงดัน

รูปการทดลอง



จากรูป 4.2.1: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบแรงดันสองชุด 





จากรูป 4.2.2: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบช่วงแรงดัน





ผลการทดลอง

จากรูป 4.2.1: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบแรงดันสองชุด 





                              จากรูป 4.2.2: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบช่วงแรงดัน



คำถามท้ายการทดลอง

   1. แรงดัน V1 และ V2 มีค่าประมาณ       โวลต์ และ      โวลต์ ตามลําดับ 
   2. แรงดัน Vin จะต้องมีค่าอยู่ในช่วง   3.4   ถึง  5  โวลต์ และ    0   ถึง      3.4   โวลต์ จึงจะทําให้แรง              ดัน  V3 ที่ขาหมายเลข 1 ของ LM393N (วงจรในรูปที่ 4.2.1) ได้ลอจิก LOW และ HIGH ตามลําดับ 
   3. แรงดัน Vin จะต้องมีค่าอยู่ในช่วง  0   ถึง  1.8   โวลต์ และ   1.8    ถึง    4.84    โวลต์ จึงจะทําให้แรง          ดัน V4 ที่ขาหมายเลข 7 ของ LM393N (วงจรในรูปที่ 4.2.1) ได้ลอจิก LOW และ HIGH ตามลําดับ 
   4. แรงดัน Vin ที่ได้จากการหมุนปรับค่าของตัวต้านทานปรับค่าได้ จะต้องมีค่าอยู่ในช่วงใด จึงจะทําให้        LED1 สว่าง (1.6-1.7 V , 3.3-3.4 V)

วันพฤหัสบดีที่ 4 กันยายน พ.ศ. 2557

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

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

การสร้างสัญญาณเอาต์พุตตามจังหวะสัญญาณอินพุตด้วย Arduino

 

วัตถุประสงค์

  • สร้างสัญญาณจากเครื่องกําเนดิสัญญาณดจิิทัลแบบมคีาบ เพื่อป้อนเป็นอินพุตให้บอร์ด Arduino 
  • เขียนโค้ดสําหรับ Arduino เพื่อประมวลผลสัญญาณดิจิทลัจากอินพุต และสร้างสัญญาณเอาต์พุต ตามเงื่อนไขที่กําหนดให้ 

รายการอุปกรณ์ 

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

 

ขั้นตอนการทดลอง

1. สร้างสัญญาณดิจิทัลแบบมีคาบ (แรงดันในช่วง 0V และ 5V เท่านั้น ห้ามใช้แรงดันสูงกว่า หรือแรงดัน เป็นลบ) มีรูปคลื่นสี่เหลี่ยม หรือแบบ Pulse (Duty Cycle=50%) มีความถี่ 10Hz จากเครื่องกําเนิด สัญญาณ โดยต่อผ่านตัวต้านทาน 100Ω หรือ 150Ω ไปยังขา D3 ของบอร์ด Arduino เพื่อใช้เป็น อินพุต
2. ต่อวงจร LED พร้อมตัวต้านทานจํากัดกระแส ที่ขา D5 ของบอร์ด Arduino เพื่อใช้แสดงสถานะ
3. เขียนโค้ด Arduino Sketch เพื่อทําให้หลอด LED บนแผงวงจร กระพริบตามความถี่ของสัญญาณ อินพุต (อัตราการกระพริบของ LED จะต้องสอดคล้องกับความถี่ของสัญญาณอินพุต)
4. ปรับความถี่ของสัญญาณอินพตุในช่วง 5Hz .. 20Hz (เพิ่มทีละ 5Hz) และใช้ออสซิลโลสโคป 2 ช่อง วัดสัญญาณอินพุตที่ขา D3 และสัญญาณเอาต์พุตที่ขา D5 พร้อมกัน และบันทึกรูปคลนื่สัญญาณที่ได้ สําหรับความถี่ต่างๆ ในการทดลอง
5. เขียนรายงานการทดลอง (เขียนโจทย์ แนวทางการทําโจทย์ ผังวงจรโดยรวมซึ่งใช้โปรแกรม Eagle  ในการวาด และโค้ด Arduino Sketch พร้อมคําอธิบายโค้ด รูปตัวอย่างที่ได้จาการวัดสัญญาณ และ ภาพถ่ายการต่อทดลองวงจรจริง) จัดทําเป็นไฟล์ .PDF ขนาด A4 ส่งในระบบ e-Learning ของ ภาควิชา

Code


const byte in_put=3;
const byte LED=5;

void setup(){
   pinMode(in_put,INPUT);
   pinMode(LED,OUTPUT);
}

void loop(){
   digitalWrite(LED,(digitalRead(in_put)==1)? HIGH : LOW);

}

ผลการทดลอง



Ch1 คือ ขาอินพุต ขาที่ D3
Ch2 คือ ขาเอาต์พุต ขาที่ D5

สัญญาณอินพุต 5 Hz









Ch1 คือ ขาอินพุต ขาที่ D3
Ch2 คือ ขาเอาต์พุต ขาที่ D5

สัญญาณอินพุต 10 Hz







Ch1 คือ ขาอินพุต ขาที่ D3
Ch2 คือ ขาเอาต์พุต ขาที่ D5

สัญญาณอินพุต 15 Hz









Ch1 คือ ขาอินพุต ขาที่ D3
Ch2 คือ ขาเอาต์พุต ขาที่ D5

สัญญาณอินพุต 20 Hz





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

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

 การจําลองการทํางานของลอจิกเกต

วัตถุประสงค์

  • ฝึกต่อวงจรโดยใช้ไอซี 74HC00N บนเบรดบอร์ด เพื่อสร้างเป็นวงจร RS Latch
  • เขียนโปรแกรมสําหรับ Arduino เพื่อเลียนแบบพฤติกรรมการทํางานของ RS Latch

 รายการอุปกรณ์ 

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


ขั้นตอนการทดลอง 

     1. ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี 74HCT00N เพื่อสร้างลอจิกเกต RS Latch ตามผังวงจรในรูปที่ 3.3.1 และป้อนแรงดันไฟเลี้ยง VCC=5V และ GND จากแหล่งจ่ายควบคุมแรงดัน ให้ไอซีและวงจร บนเบรดบอร์ด
     2. กําหนดสถานะของสัญญาณอนิพุต A และ B ทั้งหมด 4 กรณี โดยการกดปุ่มค้างไว้ (LOW) หรือ ไม่ กดปุ่ม (HIGH) ตามตารางที่ 3.3.1 ใช้มัลติมเิตอร์วัดแรงดันของสัญญาณ Q  และ /Q รวมถึงสังเกต สถานะติด/ดับของ LED ทั้งสอง สําหรับแต่ละกรณีของอินพุต แล้วบันทึกผลท่ีได้ลงในตาราง
     3. ต่อวงจรตามผังวงจรในรูปที่ 3.3.2 โดยใช้บอร์ด Arduino ปุ่มกดแบบสี่ขา ไดโอดเปล่งแสง และตัว ต้านทาน และให้เขียนโปรแกรมสําหรับ Arduino เพื่อเลียนแบบพฤติกรรมการทํางานของ RS Latch (ความสัมพันธร์ะหว่างอินพุตและเอาต์พุต) ตามที่ได้จากโจทย์การทดลองในขอ้ที่ 2






รูปที่ 3.3.1: ผังวงจรสําหรับสร้าง RS Latch โดยใช้เกต NAND2


รูปที่ 3.3.2: ผังวงจรสําหรับใช้บอร์ด Arduino เลียนแบบการทํางานของ RS Latch 



Code


const byte LED_1=4;
const byte LED_2=5;
const byte PB_1=2;
const byte PB_2=3;

void setup(){
  Serial.begin(9600);
  pinMode(PB_1,INPUT);
  pinMode(PB_2,INPUT);
  pinMode(LED_1,OUTPUT);
  pinMode(LED_2,OUTPUT);
  digitalWrite(LED_1,HIGH);
  digitalWrite(LED_2,LOW);
}

void loop(){
  if(digitalRead(PB_1)==LOW&&digitalRead(PB_2)==1){
    digitalWrite(LED_1,HIGH);
    digitalWrite(LED_2,LOW);
    Serial.print("1");
  }
  if(digitalRead(PB_2)==LOW&&digitalRead(PB_1)==1){
    digitalWrite(LED_1,LOW);
    Serial.print("2");
    digitalWrite(LED_2,HIGH);
  }
  if(digitalRead(PB_1)==LOW&&digitalRead(PB_2)==LOW){
    digitalWrite(LED_1,HIGH);
    Serial.print("3");
    digitalWrite(LED_2,HIGH);
    if(digitalRead(PB_1)==1&&digitalRead(PB_2)==1){
      digitalWrite(LED_1,HIGH);
      digitalWrite(LED_2,LOW);
      delay(100);
    }
  }
}

ผลการทดลอง



ต่อวงจรโดยใช้ไอซี 74HC00N บนเบรดบอร์ด เพื่อสร้างเป็นวงจร RS Latch










ใช้ Arduino เลียนแบบ วงจร RS Latch