โปรเจกต์ การอ่าน PPM Signal จาก RC Receiver โดยใช้ Arduino
โค้ดนี้ใช้สำหรับอ่าน PPM Signal จาก RC Receiver โดยการใช้งาน interrupt pin
โค้ดนี้ใช้สำหรับอ่าน PPM Signal จาก RC Receiver โดยการใช้งาน interrupt pin
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
RC Transmitter เหมาะอย่างยิ่งสำหรับโปรเจกต์ที่ต้องการการเชื่อมต่อแบบไร้สาย เนื่องจากมีลิงก์ที่เข้ารหัสและมีระยะการส่งสัญญาณที่ดี
RC Receiver ทั้งหมดถูกสร้างมาเพื่อขับ Servo Motors ดังนั้นจึงมี 3 Pins สำหรับแต่ละ Channel ได้แก่ GND, VCC และ Signal โดยในที่นี้จะใช้สัญญาณชนิดพิเศษที่ส่ง Pulse ออกมาเป็นช่วงเวลา เมื่อ Servo ได้รับ Pulse ขนาด 1.5ms มันจะตั้งค่าไปที่ 90 องศา และการเปลี่ยนค่านี้ในช่วง 1-2ms จะทำให้ Servo เคลื่อนที่ไปยังค่าต่ำสุดและสูงสุด (ในรูปภาพด้านบนแสดง Receiver แบบ 6 Channel พร้อม Pin แบบ PPM)
วิธีที่ง่ายที่สุดคือการวัดความกว้างของ Pulse ในแต่ละ Pin และทำการ Map ข้อมูลตามความต้องการ แต่ปัญหาก็คือ:
เพื่อแก้ปัญหานี้ Receiver หลายรุ่นจึงมาพร้อมกับ Pin พิเศษที่เรียกว่า PPM โดย Pin แบบ PPM นี้จะส่งข้อมูลของทุก Channel รวมกันใน Signal เดียว


สัญญาณนี้ประกอบด้วยแพ็กเกจข้อมูลที่แยกจากกันด้วยช่องว่าง โดยระยะห่างระหว่าง Peak จะแทนค่าของแต่ละ Channel ในกรณีนี้ ผมใช้ Receiver แบบ 6 Channel จึงมี 7 Pulses
ดังนั้นใน Code ของเรา อันดับแรกเราต้องตรวจหาช่องว่างที่ใช้แยกส่วนก่อน แล้วจึงเริ่มบันทึกข้อมูลจาก Pulse ของแต่ละ Channel
ดังที่เห็นในรูปที่สอง
ข้อมูลทั้งหมดจะถูกแยกออกจากกันด้วยเวลาประมาณ 11500 Microseconds จากนั้นจึงเป็นค่าทั้ง 6 สำหรับแต่ละ Channel

ในที่นี้ read_me() ถูกกำหนดให้เป็น Function:
a=micros(); c=a-b; b=a; x[i]=c; i=i+1;
if(i==15){for(int j=0;j<15;j++) {ch1[j]=x[j];} i=0; } }
ส่วนนี้จะทำงานบน Interrupt Pin โดยจะรับค่าเวลา 15 ค่าและเก็บไว้ใน Array
อีก Function หนึ่งคือ read_rc()
ส่วนนี้จะมองหาช่องว่างที่นานกว่า 10000 Microseconds ซึ่งในกรณีของเรา มันจะตรวจหาช่องว่างที่ใช้แยกส่วน และเมื่อตรวจพบช่องว่างนั้น Code จะเลื่อนไปยังส่วนถัดไป
หลังจากช่องว่างนี้ ค่า 6 ค่าถัดไปจะเป็นตำแหน่งของแต่ละ Channel ซึ่งจะถูกเก็บไว้ใน Array ที่ชื่อ ch[ channel no] ในที่นี้ ch[1], ch[2], ch[3], ch[4], ch[5], ch[6] จะแทนค่าของแต่ละ Channel
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้