วันพฤหัสบดีที่ 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 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น