งานที่5/63

 

จำลอง Arduino เป็น Oscilloscope สำหรับวัดสัญญาณ

3 เดือน
 
โดย เจ้าของร้าน

สวัสดีครับวันนี้ทางร้าน 9Arduino ก็จะมาแนะนำการใช้ Arduino เป็น Oscilloscope เพื่อใช้สำหรับวัดสัญญาณ ดูรูปสัญญาณแบบพื้นฐานง่ายๆครับ 

ออสซิลโลสโคปคือ เครื่องมือวัดชนิดหนึ่งที่ใช้สำหรับวัดสัญญาณไฟฟ้า คลื่นไฟฟ้า วัดค่าแรงดัน วัดความถี่ วัดเฟสของสัญญาณ และใช้ในการวัดคาบเวลา เป็นต้น สามารถแสดงออกมาเป็นกราฟความถี่ต่างๆได้อีกด้วย

หลายๆท่านอาจจะรู้จัก ออสซิลโลสโคป มากันบ้างแล้ว วันนี้ทางร้านเลยแนะนำการให้ Arduino แปลงสัญญาณเพื่อนำไปใช้วัดสัญญาณต่างๆ อาจจะไม่ละเอียดแบบเครื่องจริงๆ แต่พอใช้ได้ครับ มาเริ่มกันเลย

หลักการทำงานของ โปรเจคนี้จะแบ่งออกเป็น 2 ส่วน คือ 

  1. Arduino ใช้สำหรับวัดแรงดัน รูปสัญญาณ
  2. Computer PC ที่ได้ติดตั้ง Software PCScope
  3. https://www.ab.in.th/article/17/%E0%B8%88%E0%B8%B3%E0%B8%A5%E0%B8%AD%E0%B8%87-arduino-%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99-oscilloscope-%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A%E0%B8%A7%E0%B8%B1%E0%B8%94%E0%B8%AA%E0%B8%B1%E0%B8%8D%E0%B8%8D%E0%B8%B2%E0%B8%93

Code ส่วนของ Arduino IDE ครับ Copy แล้วอัพลงบอร์ดได้เลย

/*
จำลอง Arduino เป็น Oscilloscope สำหรับวัดสัญญาณ
บทความจาก https://www.ab.in.th/b/17
*/
const int analogInPin1 = A0;
static int ctr,flag_tog;
static unsigned char adcval;
void setup()
{
Serial.begin(115200);
pinMode(13, OUTPUT);
ADCSRA = 0; // clear ADCSRA register
ADCSRB = 0; // clear ADCSRB register
ADMUX |= (0 & 0x07); // set A0 analog input pin
ADMUX |= (1 << REFS0); // set reference voltage
ADMUX |= (1 << ADLAR); // left align ADC value to 8 bits from ADCH register
//ADCSRA |= (1 << ADPS2) | (1 << ADPS0); // 32 prescaler for 38.5 KHz
ADCSRA |= (1 << ADPS2); // 16 prescaler for 76.9 KHz
//ADCSRA |= (1 << ADPS1) | (1 << ADPS0); // 8 prescaler for 153.8 KHz
ADCSRA |= (1 << ADATE); // enable auto trigger
ADCSRA |= (1 << ADIE); // enable interrupts when measurement complete
ADCSRA |= (1 << ADEN); // enable ADC
ADCSRA |= (1 << ADSC); // start ADC measurements
}
ISR(ADC_vect)
{
adcval = ADCH; // read 8 bit value from ADC
}
void loop()
{
Serial.write(adcval);
// Following code to generate ref signal at pin 13 @ 50HZ. You can connect A0 to see the waveform in PCScope.exe
ctr++;
if(ctr>117) //117=10.03ms
{
ctr=0;
flag_tog = !flag_tog;
digitalWrite(13, flag_tog);
}
}
view rawOscilloscope.ino hosted with ❤ by GitHub

การต่อใช้งาน สัญญาณเพื่อใช้งาน

ส่วนของ Software PCScope ให้ทำการ Download 

http://download.ab.in.th/download.php?file=PCScope.rar

จากนั้นให้ทำการติดตั้งได้เลย (การติดตั้งก็แบบ Install ง่ายๆ คงไม่ต้องอธิบายน่ะครับ)

ให้ทำการเปิด โปรแกรม PCScope ขึ้นมา 

เมื่อเปิดโปรแกรมขึ้นมาก็จะขึ้นหน้าจอ นี้

ส่วนที่ 1 กด Connect เพื่อเชื่อมต่อกับ Comport
ส่วนที่ 2 เป็นการตั้ง Auto Scale
ส่วนที่ 3 กดเพื่อหยุดวิเคราะห์กราฟ
ส่วนที่ 4 เป็นการกำหนดคาบเวลาในการอ่านกราฟ

มาทดลองกันดู เลยครับ เราจะทำการวัด สัญญาณ Pulse PWM ของ Arduino Uno กันครับ 

ทดลองปล่อยสัญญาณ PWM 234  ก็จะได้กราฟ ดังภาพ

ทดลองปล่อยสัญญาณ PWM 128 ก็จะได้กราฟ ดังภาพ

ทดลองปล่อยสัญญาณ PWM 47 ก็จะได้กราฟ ดังภาพ

เป็นอย่างไรกันบ้างเพื่อนๆ Arduino ทำอะไรได้หลายอย่างมากมาย การใช้งานก็พอ Ok เลยครับถึงจะไม่ละเอียดแม่นยำเหมือนกับ Oscilloscope จริงๆ แต่ Arduino ก็สามารถทำได้


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้