Sunday, September 28, 2014

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

การสร้างวงจรสร้างและควบคุมแรงไฟฟ้ากระแสตรงแบบปรับค่าได้

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

รายการอุปกรณ์
แผงต่อวงจร (เบรดบอร์ด)1 อัน
ไอซี LM317T1 ตัว
ตัวเก็บประจุ 0.1uF และ 10uF อย่างละ1 ตัว
ตัวต้านทานค่าคงที่ เลือกค่าในช่วง 220Ω ถึง 1kΩ1 ตัว
ตัวต้านทานปรับค่าได้แบบสามขา 4.7kΩ หรือ 10kΩ1 ตัว
ไดโอด 1N4001 อย่างน้อย1 ตัว
สายไฟสำหรับต่อวงจร1 ชุด
แหล่งจ่ายแรงดันควบคุม1 เครื่อง
มัลติมิเตอร์1 เครื่อง


ขั้นตอนการทดลอง
1. ออกแบบวงจร วาดผังวงจร และต่อวงจรบนเบรดบอร์ด เพื่อสร้างวงจรควบคุมแรงดันแบบปรับค่าได้โดยใช้ไอซี LM317T และอุปกรณ์ตามรายการที่ได้ระบุไว้ (ศึกษาตัวอย่างวงจรได้จากดาต้าชีท LM317T และจากอินเทอร์เน็ต)
2. ใช้แรงดันจากแหล่งจ่ายภายนอก โดยป้อนแรงดัน +9V เป็นแรงดันอินพุต และปรับค่าตัวต้านทาน ปรับค่าได้ในวงจร ให้ได้แรงดันเอาต์พุต +5V และ +3.3V ตามลําดับ ตรวจสอบและวัดระดับแรงดัน เอาต์พุตด้วยมัลติมิเตอร์

ผลการทดลอง


ภาพผังวงจรที่ออกแบบด้วย Cadsoft Eagle

ขณะทำการต่อวงจร (1)


ขณะทำการต่อวงจร (2)

วงจรจริงหลังจากได้ต่อเสร็จแล้วโดยมองจาก front view

วงจรจริงเมื่อมองจาก top view

แหล่งจ่ายแรงดันควบคุม

ภาพขณะปรับตัวต้านทานปรับค่าได้






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 ); 

Thursday, September 11, 2014

การทดลองที่ 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 ของวงจรตามลําดับ แล้วจดบันทึกค่าที่ได้สร้างสัญญาณแบบสามเหลี่ยม(Triangular Wave) ให้อยู่ในช่วงแรงดั น0V ถึง5V โดยใช้เครื่อง
  3. กําเนิดสัญญาณ (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: ผังวงจรสําหรับต่อวงจรไอซีเปรียบเทียบช่วงแรงดัน


ผลการทดลอง


ภาพขณะต่อวงจร


ภาพวงจรเมื่อต่อเสร็จแล้ว

ภาพขณะทำการวัดค่าแรงดัน

ภาพการวัดเอาต์พุตด้วยเครื่องออสซิโลสโคปที่ขา 1 ของไอซี lm393n

ภาพการวัดเอาต์พุตด้วยเครื่องออสซิโลสโคปที่ขา 7 ของไอซี lm393n


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






Thursday, September 4, 2014

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

การทดลองที่3.3 
การจําลองการทํางานของลอจิกเกต

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

รายการอุปกรณ์ที่ใช้

แผงต่อวงจร(เบรดบอร์ด)1 อัน
บอร์ด Arduino (ใช้แรงดัน +5V)1 บอร์ด
ไอซี74HCT00N1 ตัว
ไดโอดเปล่งแสงขนาด 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 PB_1=2; //define pin for push button 1 
const byte PB_2=3; //define pin for push button 2
const byte LEDS[2] = {4,5}; //define pin for led
int out_1=0;
int out_2=0;
int in_1=0;
int in_2=0;
int LED1_STATE=0;
int LED2_STATE=0;

void setup(){
  //define pin mode for each I/O
  pinMode( PB_1, INPUT); 
  pinMode( PB_2, INPUT);
  for (int i=0; i<3; i++){
    pinMode (LEDS[i], OUTPUT);
    digitalWrite (LEDS[i],LOW);
  }
}

void loop(){
  in_1 = digitalRead(PB_1);
  in_2 = digitalRead(PB_2);
  if(!(out_2&&in_1)){ 
   out_1 = 1; 
   LED1_STATE=1;
  }else{
   out_1 = 0;
   LED1_STATE=0;
  }
  
  if(!(out_1&&in_2)){ 
   out_2 = 1; 
   LED2_STATE=1;
  }else{
   out_2 = 0;
   LED2_STATE=0;
  }
   digitalWrite (LEDS[0],LED1_STATE);
   digitalWrite (LEDS[1],LED2_STATE);
}


ผลการทดลอง 
ภาพ schematic ของวงจร Arduino ที่จำลองการทำงานเป็น RS Latch


ภาพการต่อวงจรจริงตามรูป 3.3.1


ภาพการต่อ Arduino เข้ากับวงจรตามภาพ 3.3.1



S1 S2 LED1 (ติด/ดับ) LED2 (ติด/ดับ) Q (V) /Q (V)
ไม่กดปุ่ม ไม่กดปุ่ม ดับ ติด 0 4.6
ไม่กดปุ่ม กดปุ่มค้างไว้ ดับ ติด 0 4.63
กดปุ่มค้างไว้ ไม่กดปุ่ม ติด ดับ 4.6 0
กดปุ่มค้างไว้ กดปุ่มค้างไว้ ติด ติด 4.6 4.63

ตารางบันทึกผลการทดลอง



การทดลองที่ 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 int fc_gen = 3; // define port from Function Generator
const int ledPin = 5; // define port for led

int fc_gen_state = 0; 

void setup() {
  
  //define pin mode for each pin
  pinMode(fc_gen, INPUT);
  pinMode(ledPin, OUTPUT);
  
}

void loop() {

  fc_gen_state = digitalRead(fc_gen); //check state from function generator
  if(fc_gen_state == HIGH)
    digitalWrite(ledPin, HIGH);
  else
    digitalWrite(ledPin, LOW);
}

ผลการทดลอง


ภาพ schematic ของวงจร


ภาพการต่อวงจรจริง

เมื่อสร้างสัญญาณที่มีความถี่เท่ากับ 5 Hz

เมื่อสร้างสัญญาณที่มีความถี่เท่ากับ 10 Hz

เมื่อสร้างสัญญาณที่มีความถี่เท่ากับ 15 Hz

เมื่อสร้างสัญญาณที่มีความถี่เท่ากับ 20 Hz