[ZX-SERVO16i] with POP-XT,IPST-SE and ATX2

ZX-SERVO16i-with-IPST-SE

  อยากจะทำแขนกล อยากจะทำหุ่นยนต์คล้ายมนุษย์ ต้องมีการขับเคลื่อนเซอร์โวจำนวนมาก ZX-SERVO16i คือคำตอบ ลองนำไปใช้กันดูนะครับ

็Header Image บอร์ด ZX-SERVO16i ติดต่อกับบอร์ดไมโครคอนโทรลเลอร์หรือคอมพิวเตอร์ผ่านพอร์ตอนุกรม ด้วยขา RxD สำหรับรับข้อมูลและ TxD สำหรับส่งข้อมูล ZX-SERVO16i

การเชื่อมต่อเข้ากับบอร์ด IPST-SE

ZX-SERVO16i-with-IPST-SE

บอร์ด IPST-SE POPXT และ ATX2 ต่างก็มีพอร์ตอนุกรม 2 ชุด ซึ่งสามารถใช้ Serial1 (ขาTxD1 และ RxD1 ) มาเชื่อมต่อกับบอร์ด ZX-SERVO16i ได้ ** บอดเรตที่ใช้สื่อสารกับบอร์ด ZX-SERVO16i มี 2 ค่าคือเมื่อเริ่มต้นจะมีบอดเรตเท่ากับ 2400 ซึ่งค่อนข้างช้า สามารถเปลี่ยนค่าเป็น 38400 ให้การสื่อสารเร็วขึ้นได้ โดยใช้คำสั่ง !SCSBR

คำสั่งสำหรับติดต่อกับบอร์ด ZX-SERVO16i

คำสั่ง !SCVER?

  คำสั่ง !SCVER? สำหรับตรวจสอบเวอร์ชั่นของ Firmware บนบอร์ด ZX-SERVO16i

รูปแบบการใช้งาน
Serial1.println("!SCVER?");
การคืนค่า

โปรแกรมจะคืนค่าเวอร์ชั่นตอบกลับมา ปัจจุบันเป็นเวอร์ชั่น 1.4

คำสั่ง !SCSBR

สำหรับเปลี่ยนค่าบอดเรตในการสื่อสารข้อมูล โดยค่าปกติเมื่อจ่ายไฟครั้งแรกคือ 0 เท่ากับ 2400 bps แต่ถ้ากำหนดให้เป็น 1 ค่าบอดเรตจะเป็น 38,400 สำหรับการควบคุมมอเตอร์หลาย ๆ ตัวแนะนำให้ใช้ค่า 38,400

รูปแบบการใช้งาน
 Serial1.print("!SCSBR");
 Serial1.write(1);
 Serial1.write(0x0D);

เมื่อทำคำสั่ง 3 บรรทัดนี้แล้ว บอดเรตที่ใช้ในการสื่อสารจะเป็น 38,400 ดังนั้นคำสั่งในการสื่อสารอนุกรมจะต้องปรับเปลี่ยนเป็น 38,400 ด้วย

ตัวอย่างการใช้งาน

ตัวอย่างทำตามขั้นตอนดังนี้

1. ส่งสัญญาณ RESET ไปยังบอร์ด ZX-SERVO16i 2. กำหนดบอดเรตในการสื่อสารไว้ที่ 2400 3. ทดสอบอ่านค่าเวอร์ชั่น 4. ส่งคำสั่งเปลี่ยนค่าบอดเรตเป็น 9600 5. กำหนดบอดเรตในการสื่อสารใหม่เป็น 9600 6. ทดสอบอ่านค่าเวอร์ชั่นอีกครั้ง GLCD Show ZX-SERVO16i VERSION   ข้อความที่ปรากฎที่หน้าจอจะมี ตัวอักษรขยะปนมา 2 ตัว ซึ่งก็คือ 0x0D และ 0x0A  หรือคำสั่งขึ้นบรรทัดใหม่นั่นเอง

คำสั่งสั่งงานเซอร์โวมอเตอร์

"!SC" ,CH,RAMP, PW.LOWBYTE,PW.HIGHBYTE,0x0D

คำสั่งควบคุมการเคลื่อนที่ของเซอร์โวมอเตอร์ โดยระบุช่อง (CH)  ค่าการไต่ระดับความเร็ว (RAMP) ค่าตำแหน่งของเซอร์โวมอเตอร์ PW  มีรายละเอียดดังนี้

CH คือช่องของเซอร์โวมอเตอร์ที่ต้องการติดต่อ มีค่าตั้งแต่ 0 ถึง 31 โดยช่อง 0 ถึง 15 ใช้ในกรณ๊ไม่ได้จัมพ์ขา AUX ไว้ ส่วน 16 ถึง 31 เป็นช่องเมื่อจั๊ม AUX ไว้ ซึ่งผู้ใช้งานสามารถพ่วงกัน 2 บอร์ดเพื่อขับมอเตอร์ได้สูงสุด 32 ตัว

RAMP คือค่าความชันของการปรับเลื่อนความเร็วของการเปลี่ยนตำแหน่งเซอร์โวจากจุดนึงไปยังอีกจุดนึง มีค่าระหว่าง 0 ถึง 63 ถ้ากำหนดค่าเป็น 0 จะเป็นการเคลื่อนที่ไปยังตำแหน่งที่ต้องการแบบเร็วที่สุด

PW เป็นค่าข้อมูล 16 บิต สำหรับระบุตำแหน่งของเซอร์โวมอเตอร์ มีค่าระหว่าง 250 ถึง 1250 สำหรับกำหนดองศาของเซอร์โวมอเตอร์ประมาณ 0-180 องศา  เพื่อใช้กับคำสั่ง Serial1.write() ซึ่งจะส่งข้อมูลเป็นแบบไบต์ จำเป็นต้องแปลงค่าให้อยู่ในรูปของไบต์ก่อน

จากรูปแบบนำมาเขียนเป็นฟังก์ชั่น

โปรแกรมทดสอบ

ทดสอบเขียนโปรแกรมเพื่อควบคุมเซอร์โวมอเตอร์ทั้ง 16 ตัวเคลื่อนที่ไปและกลับ

 

Facebook Comments