[POP-XT] รีโมตรถบังคับกับ POPBOT-XT

550795_431756586881951_604726462_nหุ่นยนต์ POP-BOT-XT ควบคุมด้วยรีโมตคอนโทรล RC สำหรับเครื่องบินบังคับวิทยุ หรือรถบังคับวิทยุจะใช้รีโมตแบบคลื่นวิทยุในการควบคุม เอาต์พุตที่ได้จากตัวมันก็จะมีภาครับหรือรีซีฟเวอร์เป็นตัวจัดการ ปัจจุบันราคาของอุปกรณ์เหล่านี้มีราคาถูกลงมาก (แต่บางตัวฟังก์ชั่นเยอะๆ ก็แอบแพงเหมือนกัน)  

RC-Remote

 

รีโมตคอนโทรล

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

Remote-Control-and-Receiver-Code-2.4GHz

 

Receiver-RC

รีซีฟเวอร์

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

156627_431758296881780_416008230_n

รูปแบบพัลส์ที่รีซีฟเวอร์ได้รับ

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

  สำหรับ Arduino มีคำสั่งชื่อ PulseIn สำหรับอ่านค่าความกว้างพัลล์ โดยให้ผลลัพธ์หน่วยเป็นไมโครวินาที

รูปแบบการใช้งานคำสั่ง

pulseIn(pin, value ,timeout)

โดย pin คือขาดิจิตอลอินพุตที่ต้องการอ่านค่า
      value คือลอจิกที่จะอ่านค่าความกว้างพัลส์ออกมา  ในที่นี้จะอ่านที่ลอจิก “1”
      timeout คือช่วงเวลาที่เรากำหนดว่าถ้าไม่เกิดพัลส์ขึ้นมาในช่วงเวลากี่ไมโครวินาทีให้ไปทำงานคำสั่งถัดไป

การเชื่อมต่อ

     ขั้วต่อของเซอร์โวมอเตอร์ที่ใช้กับชุดรีซีฟเวอร์จะแตกต่างกับสายสัญญาณ JST ที่ใช้งานกับหุ่นยนต์ POP-BOT XT จึงต้องใช้สาย JST3AC ดังรูปในการเชื่อมต่อ

JST3AC

สายสีแดง เป็น ไฟบวก (+)
สายสีดำ  เป็น ไฟลบ (-)
สายสีขาว เป็น สัญญาณ (S)

Receiver-PIN

ตำแหน่งเสียบสายที่รีซีฟเวอร์

POPXT with Receiver

เสียบสายเซอร์โวเข้ากับรีซีฟเวอร์

 เสียบสายด้านเซอร์โวมอเตอร์เข้าที่ช่องที่ CH1 CH2 และ CH3 ครับ เชื่อมต่อสายอีกด้านเข้ากับบอร์ด POP-BOT XT ในที่นี้เลือกต่อตามนี้ครับ

CH1 ==== 21 
CH2 ==== 22 
CH3 ==== 23

 

การเขียนโปรแกรมทดสอบออกจอ GLCD

35525_431760456881564_447844111_n

 ทดสอบปรับค่าคันโยกที่รีโมตคอนโทรล แล้วสังเกตค่าตัวเลขที่เปลี่ยนแปลงที่หน้าจอของ GLCD ครับ จะเห็นว่าค่าของทั้ง 3 ช่องจะอยู่ในช่วง 1000 ถึง 2000 โดยค่าประมาณตรงกลางจะอยู่ที่ 1500 ทีนี้ก็เอาค่าเหล่านี้ไปควบคุมหุ่นยนต์ได้แล้ว

 

#include <popxt.h>
int ch1;
int ch2;
int ch3;
void servo_open(){   
  servo(2,80);
  sleep(400);   
  servo(1,140);
  sleep(400);   
  servo(1,-1);
  servo(2,-1);
}
void servo_close(){ 
  servo(1,0);
  sleep(1000); 
  servo(2,0);
  sleep(1000); 
  servo(1,-1);
  servo(2,-1);
}
void setup() { 
  pinMode(21, INPUT);
  pinMode(22, INPUT); 
  pinMode(23, INPUT); 
  glcdMode(1);                        
  setTextSize(2);                     
  glcd(1,1,"Press OK");               
  sw_ok_press();          
  glcdClear();
}
void loop() { 
  ch1 = pulseIn(21, HIGH, 25000);  
  if (ch1>1200&&ch1<1500){
    ao();
  } 
  else if (ch1<1200){
    fd(70);
  } 
  else if (ch1>1500)  {
    bk(70);
  } 
  ch2 = pulseIn(22, HIGH, 25000);
  if (ch2>1200&&ch2<1500){
    ao();
  } 
  else if (ch2<1200){
    sl(60);
  }  
  else if (ch2>1500){
    sr(60);
  } 
  ch3 = pulseIn(23, HIGH, 25000); 
  if (ch3>1500) {
    servo_close();
  } 
  else if (ch3<1200){
    servo_open();
  }  
}
Facebook Comments