การทดลองที่ 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
เท่านั้น [ทุกกลุ่มจะต้องวาดวงจรสําหรับการทดลองมาให้แล้วเสร็จ (ให้เตรียมตัวมาก่อนเข้าเรียน วิชาปฏิบัติ]
รูปการต่อวงจรจริง |
โค้ด 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
อ้างอิง: เอกสารประกอบการสอน โดย ดร.เรวัต ศิริโภคาภิรมย์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น