วันจันทร์ที่ 29 กันยายน พ.ศ. 2557

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

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

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


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

1. ฝึกต่อวงจรและเขียนโปรแกรมสําหรับบอร์ด 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

ผลการทดลอง


ออกแบบผังวงจร Schematic โปรแกรม fritzing


ออกแบบผังวงจร breadboard โปรแกรม fritzing


รูปการต่อวงจรจริง

โค้ด Arduino 


const byte Trim = A0; const byte npn1 = 10; const byte npn2 = 11; const byte SEVEN_SEG[8] = {2,3,4,5,6,7,8,9}; byte Digit[10] = { B0111111,//0 B0000110,//1 B1011011,//2 B1001111,//3 B1100110,//4 B1101101,//5 B1111101,//6 B0000111,//7 B1111111,//8 B1101111,//9 };
void setup(){ for (int i=0;i<8;i++) { pinMode(SEVEN_SEG[i] ,OUTPUT); digitalWrite(SEVEN_SEG[i],HIGH); } pinMode(npn1,OUTPUT); digitalWrite(npn1,HIGH); pinMode(npn2,OUTPUT); digitalWrite(npn2,HIGH); analogReference(DEFAULT); Serial.begin(9600); }
void loop(){ long int value = analogRead ( Trim ); long int vScale = value*50 / 1023; Serial.print(" READ "); Serial.print( vScale/10 ); Serial.print("."); Serial.println(vScale%10); digitalWrite(npn1,HIGH); digitalWrite(npn2,LOW); long int num = vScale/10; byte N = Digit[num]; for(int i=0;i<7;i++){ digitalWrite(SEVEN_SEG[i],1&N); N>>=1; } delay(10); digitalWrite(npn1,LOW); digitalWrite(npn2,HIGH); long int num2 = vScale%10; byte N2 = Digit[num2]; for(int j=0;j<7;j++){ digitalWrite(SEVEN_SEG[j],1&N2); N2>>=1; } delay(10); }


เมื่อวัดแรงดันได้ 5 V 7-Segment Display แสดงผลเป็น 5.0





เมื่อวัดแรงดันได้ 0 V 7-Segment Display แสดงผลเป็น 0.0





เมื่อวัดแรงดันได้ 2.823 V 7-Segment Display แสดงผลเป็น 2.8

เมื่อวัดแรงดันได้ 4.589 V 7-Segment Display แสดงผลเป็น 4.6
การแสดงผลบน Serial Monitor







อ้างอิง: เอกสารประกอบการสอน โดย ดร.เรวัต ศิริโภคาภิรมย์

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

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