งาน 4

 

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

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

หลักการทำงานของ โปรเจคนี้จะแบ่งออกเป็น 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 ก็สามารถทำได้

ความคิดเห็น