Home > Arduino > เรื่องของ PWM และ PPM

เรื่องของ PWM และ PPM

อันที่จริงความรู้อะไรเกี่ยวกับทางนี้ผมก็ไม่ค่อยมีนะครับ หา หา เอาจาก internet พอดีว่ามีความสนใจเล่นเจ้า Arduino เป็นงานอดิเรก [ เกือบเป็นงานหลักแล้วตอนนี้ ] ในการทำโครงงานบางอย่างต้องใช้พื้นฐานความรู้ความเข้าใจในลักษณะสัญาญที่ต้องนำสัญาณนั้นมาใช้บ้างไว้เป็น concept พื้นฐานในการคิดในเรื่องการใช้งานต่อไป

ส่วนตัวผมนอกจากจะสนใจงานทางด้านนี้แล้วยังสนใจและเล่น เครื่องบินบังคับ หรือบ้านเราก็เรียกว่า R/C ครับ  ที่กล่าวมานี้ ก็จะบอกว่ามีเครื่องมือชนิดหนึ่งที่เราใช้ในการควบคุม เครื่องบินก็คือ Radio Control และสัญญาณอุปกรณ์นี้ต้องใช้ในการควบคุมระยะใกล้ก็คือคลื่นวิทยุโดยที่มีตัวรับเป็น Receiver เพื่อรับและ decode สัญญาณออกมาควบคุม Servo ทำให้เราต้องรู้จัก PWM และ PPM กันไงครับ

heli_radio_components-1-5

PWM และ PPM นั้นเป็นคำที่เห็นกันบ่อย ๆ ในวงการ R/C   เจ้า PWM นั้นย่อมาจาก Pulse Width Modulation และ PPM นั้นย่อมากจาก Pulse Position Modulation อุปกรณ์ที่ใช้ สัญญาณ PWM ในการควบคุม ก็คือ Electronic speed controls หรือ ESC และ servos. PWM เป็นการ encode ข้อมูลด้วยการใช้ความกว้างของ pulse (ด้วยระยะเวลาต่างๆ กัน)

ในระบบ digital electronic นั้นเราก็จะรู้จัก ค่าของ binary ซึ่งมีค่า 1 และ 0 เราจะแทนค่า 1 ด้วย  ‘on’ และทนค่า 0 ด้วย ‘off’ ซึ่งตัวอย่างของ การแสดงสัญาณนี้ก็คือ swtich ไฟ เปิดไฟ ก็คือ ‘1’ ปิดไฟก็คือ ‘0’ นั่นเอง  แต่ในกรณีของ สัญญาณ PWM/PPM นั้น ก็เช่นเดียวกัน ค่า voltage ใด ๆ แทนค่า 1 และ กลับกันคือ 0 แทนด้วย  0 voltage แต่ในทางการใช้งานควบคุมนั้น แค่ on/off ไม่เพียงพอ  ซึ่งนะจุดนี้จึ่งเป็นที่มาของ pulse width

ธีการในการ เข้ารหัสข้อมูล ก็คือการใช้เวลาที่ pulse อยู่ในสถานะ on ในกรณีของ R/C electronics นั้นช่วงเวลาจะอยู่ในรหะว่าง 1-2 milliseconds. (หรือ 0.5 – 2.5 ms )

อุปกรณ์ servo หรือ ESC นั้นจะค่อยดู pulse และจะนับเวลาเมื่อตรวจพบ pulse นี้ จะหยุดนับเวลาเมื่อ pulse หมด pulse ดังนั้นเวลาทั้งหมดที่ pulse มีสถานะเป็น on จะเป็นตัวบอกว่า servo จะหมุนไปแค่ไหน ตัวอย่างเช่น pulse on เป็นเวลา 1 ms จะทำให้ servo หมุนมาทางด้าน ซ้ายสุด แต่ถ้าเวลาเป็น 2ms จะทำให้ servo หมุนไป ซ้ายสุด
Screen shot 2014-04-24 at 14.13.15

รูปแสดง ความกว้างของ pulse ต่อการเคลื่อนที่ของ servo
( ในรูปใช้ ห้วงเวลาระหว่าง 0.5 – 2.5 ms แต่ในคำอธิบายใช้ 1-2 ms )

ทั่วไปแล้ว อุปกรณ์ R/C ทั้งหลาย สัญญาณหนึ่งวงรอบจะใช้ 20 ms ซึ่งเราจะเรียกห้วงเวลานี้ว่า frame ในหนึ่ง fame จะประกอบด้วย ช่วงที่ pulse มีสถานะเป็น high (1-2 ms) และช่วงที่ pulse มีสถานะเป็น low ดังรูปด้านล่าง
Screen shot 2014-04-24 at 14.16.03

ถึงแม้ว่า fame มีความกว้าง 20 ms ก็ตาม ส่วนที่สำคัญของ pulse ก็คือห้วงเวลาที่ pulse มีสถานะเป็น on ซึ่งก็ประมาณ 1-2ms (0.5 – 2.5 ms) แม้ว่าช่วงที่ pulse มีสถานะเป็น off หรือ low นั้นจะไม่ได้ใช้งานอะไร ก็ยังคงเก็บไว้ และ frame ขนาด 20 ms นี้ถือว่าเป็นเวลาที่ดีที่สุดแล้ว หากเพิ่มเวลาให้มากกว่านี้ออกไป อาจทำให้เสียการควบคุม servo ได้ เช่น เสีย holding power อาจทำให้ servo เกิดอาการ กระตุกเป็นระยะได้

ต่อไปนะครับ ว่าทำไมถึงจะต้องรอจนถึง 20 ms ส่วนนี้เป็นข้อกำหนดของ อุปกรณ์ R/C และคำอธิบายจะทำให้เราเข้าใจ PPM ต่อไป
PPM ย่อมาจาก Pulse Position Modulation พูดง่ายๆ ก็คือ PPM นั้นเกิดจากการนำ PWM มาเรียงต่อกัน ดังภาพ

Screen shot 2014-04-24 at 14.16.11

นอกจากเหตุผลในเรื่อง ของการรักษา holding power แล้ว เหตุผลของการใช้ 20ms คือการที่จะทำให้เราสามารถนำเอา PWM มาจัดวางต่อกันใน frame เดียวกันได้ อย่างที่ได้กล่าวไว้ข้างต้นว่า ห้วงเวลาที่ pulse อยู่สถานะ on นั้นเป็นส่วนที่เราใช้ประโยชน์ เราก็นำห้องเวลาของ pulse on มาจัดเลียงในหนึ่ง frame เราสามารถใช้วิธีการในการส่งข้อมูลหลายๆ channels ในห้วงเวลา 20ms ได้พร้อม ๆ กันจิงไหมครับ
Screen shot 2014-04-24 at 14.16.19

เช่น คิดง่าย ๆ ว่า หาก เครื่องส่งวิทยุเป็นแบบช่องสัญญาณเดียวจะส่ง 1 PWM ในหนึ่ง frame (20ms) แต่ถ้า วิทยุเป็นแบบ 8 channels เราก็สามารถซอยห้วงเวลา 1 frame เพื่อที่จะจัดวาง pulse ของ 8 PWM ได้ ซึ่งอาจจะให้ channels ละ 1-2 ms ก็แล้วแต่การใช้งาน

ถึงเวลานี่้คงได้ concept ในเรื่องนี้เพื่อการใช้งานต่อไปครับ รายการด้านล้างจะแบ่งให้ เห็นว่าอถปรณ์ใดใช้ PWM และอุปกรณ์ใดใช้ PPM ครับ

R/C Devices ที่ใช้ PWM
  -servo
  -electronic speed controller
  -R/C switches
  -R/C lights
  -R/C receivers
  -Data loggers
  -Failsafe's
  -Autopilot/Stabilization systems
  -Servo Controller

R/C Devices ที่ใช้ PPM 
  -R/C transmitters
  -R/C receivers
  -Autopilot/Stabilization systems
  -PCTx

สำหรับเรื่องนี้ผมเอาไว้เป็นพื้นฐานในการใช้งานในเรื่องของการ อ่านข้อมูลจาก receiver ของ R/C ครับ
จบดีกว่า นะ

Categories: Arduino
  1. tsgcb
    December 26, 2014 at 2:18 pm

    สุดยอดจริงๆ ครับ

    -ภานุ

  2. tsgcb
    December 26, 2014 at 2:25 pm

    ขอบคุณสำหรับความรู้ครับ

    -ภานุ

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: