- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
งานที่5/63
จำลอง Arduino เป็น Oscilloscope สำหรับวัดสัญญาณ
ออสซิลโลสโคปคือ เครื่องมือวัดชนิดหนึ่งที่ใช้สำหรับวัดสัญญาณไฟฟ้า คลื่นไฟฟ้า วัดค่าแรงดัน วัดความถี่ วัดเฟสของสัญญาณ และใช้ในการวัดคาบเวลา เป็นต้น สามารถแสดงออกมาเป็นกราฟความถี่ต่างๆได้อีกด้วย
หลายๆท่านอาจจะรู้จัก ออสซิลโลสโคป มากันบ้างแล้ว วันนี้ทางร้านเลยแนะนำการให้ Arduino แปลงสัญญาณเพื่อนำไปใช้วัดสัญญาณต่างๆ อาจจะไม่ละเอียดแบบเครื่องจริงๆ แต่พอใช้ได้ครับ มาเริ่มกันเลย
หลักการทำงานของ โปรเจคนี้จะแบ่งออกเป็น 2 ส่วน คือ
- Arduino ใช้สำหรับวัดแรงดัน รูปสัญญาณ
- Computer PC ที่ได้ติดตั้ง Software PCScope
- 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); | |
} | |
} |
การต่อใช้งาน สัญญาณเพื่อใช้งาน
ส่วนของ Software PCScope ให้ทำการ Download
จากนั้นให้ทำการติดตั้งได้เลย (การติดตั้งก็แบบ Install ง่ายๆ คงไม่ต้องอธิบายน่ะครับ)
ให้ทำการเปิด โปรแกรม PCScope ขึ้นมา
เมื่อเปิดโปรแกรมขึ้นมาก็จะขึ้นหน้าจอ นี้
ส่วนที่ 1 กด Connect เพื่อเชื่อมต่อกับ Comport
ส่วนที่ 2 เป็นการตั้ง Auto Scale
ส่วนที่ 3 กดเพื่อหยุดวิเคราะห์กราฟ
ส่วนที่ 4 เป็นการกำหนดคาบเวลาในการอ่านกราฟ
มาทดลองกันดู เลยครับ เราจะทำการวัด สัญญาณ Pulse PWM ของ Arduino Uno กันครับ
ทดลองปล่อยสัญญาณ PWM 234 ก็จะได้กราฟ ดังภาพ
ทดลองปล่อยสัญญาณ PWM 128 ก็จะได้กราฟ ดังภาพ
ทดลองปล่อยสัญญาณ PWM 47 ก็จะได้กราฟ ดังภาพ
เป็นอย่างไรกันบ้างเพื่อนๆ Arduino ทำอะไรได้หลายอย่างมากมาย การใช้งานก็พอ Ok เลยครับถึงจะไม่ละเอียดแม่นยำเหมือนกับ Oscilloscope จริงๆ แต่ Arduino ก็สามารถทำได้
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ