EMDEDDEDKNOWLEDGE

IR Remote ตอนที่ 2: NEC Protocol เจาะลึกภาษาลับของรีโมต IR ที่ไมโครคอนโทรลเลอร์เข้าใจ

รีโมตคอนโทรลแบบอินฟราเรด

IR Remotes Revisited

IR Remote ตอนที่ 1: เปิดโลก Remote Control จากรีโมตทีวีสู่การควบคุมอุปกรณ์ด้วยไมโครคอนโทรลเลอร์

NEC IR

IR Remote ตอนที่ 2: NEC Protocol เจาะลึกภาษาลับของรีโมต IR ที่ไมโครคอนโทรลเลอร์เข้าใจ


NEC Protocol เป็นหนึ่งในโปรโตคอลที่ได้รับความนิยมอย่างแพร่หลายในระบบรีโมตคอนโทรลแบบอินฟราเรด (IR Remote Control) โดยมีข้อมูลระบุว่าโปรโตคอลนี้ได้รับการพัฒนาโดยบริษัท NEC (ปัจจุบันคือ Renesas)

อย่างไรก็ตาม รายละเอียดของโปรโตคอลนี้มีการเผยแพร่ในหลายแหล่ง และบางแหล่งเรียกโปรโตคอลลักษณะเดียวกันนี้ว่า Japanese Format เนื่องจากมีการใช้งานอย่างแพร่หลายในอุปกรณ์อิเล็กทรอนิกส์จากประเทศญี่ปุ่น

บทความนี้จะอธิบายหลักการทำงานของ NEC Protocol ตั้งแต่รูปแบบการส่งข้อมูล การเข้ารหัสบิต Address และ Command รวมถึงวิธีการทำงานของสัญญาณอินฟราเรดที่ใช้ในการสื่อสารระหว่างรีโมตและตัวรับสัญญาณ

คุณสมบัติของโปรโตคอล NEC

  • ใช้ข้อมูล Address ขนาด 8 บิต และ Command ขนาด 8 บิต
  • มีโหมด Extended ซึ่งสามารถเพิ่มขนาดของ Address เป็น 2 เท่า
  • ส่งข้อมูล Address และ Command ซ้ำอีกครั้ง เพื่อเพิ่มความน่าเชื่อถือในการรับส่งข้อมูล
  • ใช้รูปแบบการมอดูเลตแบบ Pulse Distance Modulation
  • ใช้ความถี่พาหะ (Carrier Frequency) ที่ 38 kHz
  • ระยะเวลาของบิต (Bit Time) มีค่า 1.125 ms หรือ 2.25 ms

การมอดูเลตข้อมูลของโปรโตคอล NEC

nec modulation

โปรโตคอล NEC ใช้วิธีการเข้ารหัสข้อมูลแบบ Pulse Distance Encoding สำหรับการส่งค่าบิต โดยแต่ละพัลส์จะประกอบด้วยสัญญาณพาหะ (Carrier Burst) ที่มีความถี่ 38 kHz และมีความยาว 560 µs (ประมาณ 21 รอบคลื่น)*¹

ในการส่งข้อมูล:

  • ลอจิก “1” ใช้เวลาในการส่งทั้งหมด 2.25 ms
  • ลอจิก “0” ใช้เวลาเพียงครึ่งหนึ่งของลอจิก “1” คือ 1.125 ms

สำหรับการทำงานของสัญญาณพาหะ ค่า Duty Cycle ที่แนะนำคือ 1/4 หรือ 1/3

รูปแบบการส่งข้อมูลของโปรโตคอล NEC

NEC protocol

ภาพด้านบนแสดงตัวอย่างรูปแบบการส่งพัลส์ (Pulse Train) ของโปรโตคอล NEC โดยโปรโตคอลนี้จะส่งข้อมูลแบบ LSB First ซึ่งหมายถึงการส่งบิตที่มีค่าน้อยที่สุด (Least Significant Bit) ก่อน

ในตัวอย่างนี้ ข้อมูลที่ถูกส่งคือ:

  • Address = $59 (00010110₂)
  • Command = $16 (00010110₂)

การส่งข้อมูลหนึ่งชุดจะเริ่มต้นด้วยสัญญาณ AGC Burst ขนาด 9 ms ซึ่งในตัวรับสัญญาณอินฟราเรดรุ่นเก่า ใช้สำหรับปรับระดับการขยายสัญญาณ (Gain) ให้เหมาะสม

หลังจาก AGC Burst จะตามด้วยช่วงหยุดสัญญาณ (Space) เป็นเวลา 4.5 ms จากนั้นจึงเริ่มส่งข้อมูลส่วนของ Address และ Command

ข้อมูล Address และ Command จะถูกส่งออกมา 2 ครั้ง

  • ครั้งแรก ส่งข้อมูลจริง
  • ครั้งที่สอง ส่งข้อมูลเดิมแต่กลับค่าทุกบิต (0 เป็น 1 และ 1 เป็น 0)

ตัวอย่างเช่น
ข้อมูล Address = 00010110₂
ข้อมูลที่ส่งซ้ำ = 11101001₂

ตัวรับสามารถนำข้อมูลทั้งสองชุดมาเปรียบเทียบกันได้ หากข้อมูลชุดที่สองเป็นค่าตรงข้ามกับข้อมูลชุดแรก แสดงว่าข้อมูลที่รับมาไม่มีข้อผิดพลาด

หากไม่ต้องการใช้การตรวจสอบแบบนี้ สามารถไม่สนใจข้อมูลชุดที่สองได้ และใช้เฉพาะข้อมูลชุดแรกในการทำงาน

หรืออีกทางหนึ่ง สามารถนำพื้นที่ของข้อมูลส่วนนี้มาใช้เพิ่มขนาดของ Address และ Command จากเดิม 8 บิต เป็น 16 บิตได้

อย่างไรก็ตาม ต้องคำนึงว่าในช่วงท้ายของข้อความ จะต้องมีการส่ง Burst ขนาด 560 µs เพิ่มอีกหนึ่งครั้ง เพื่อให้ตัวรับสามารถระบุค่าของบิตสุดท้ายได้อย่างถูกต้อง

สำหรับผู้อ่านที่ดูรูป Timing Diagram ของ NEC แล้วเกิดความสับสนว่า ข้อมูลชุด Inverted ถูกสร้างขึ้นมาได้อย่างไร ให้สังเกตที่ ระยะเวลาของสัญญาณ (Pulse Distance) ไม่ใช่ดูจากตัวเลขที่แสดงบนรูปเพียงอย่างเดียว

ในโปรโตคอล NEC ค่าของบิต 0 และ 1 ไม่ได้แตกต่างกันที่ตัวพัลส์ แต่แตกต่างกันที่ช่วงเวลาห่างระหว่างพัลส์

บิต 1 จะมีช่วงเวลาของสัญญาณยาวกว่า
บิต 0 จะมีช่วงเวลาของสัญญาณสั้นกว่า

ดังนั้น เมื่อข้อมูลถูกส่งซ้ำในรูปแบบ Inverted Value ค่าในแต่ละบิตจะถูกกลับด้าน เช่น

ข้อมูลเดิมเป็น 1 → ข้อมูล Inverted จะเป็น 0
ข้อมูลเดิมเป็น 0 → ข้อมูล Inverted จะเป็น 1

จึงทำให้ในส่วน Inverted แม้ว่ารูปอาจแสดงตำแหน่งเดิมของข้อมูล แต่ความยาวของสัญญาณจะเปลี่ยนไปตามค่าบิตที่ถูกกลับด้าน

สรุปคือ การอ่าน NEC Timing Diagram ให้ดูจาก ความยาวของช่วงเวลาในแต่ละบิต ไม่ใช่ดูจากตำแหน่งของตัวเลข เพราะข้อมูล Inverted คือการส่งข้อมูลเดิมที่กลับค่า 0 เป็น 1 และ 1 เป็น 0 นั่นเอง

การส่งคำสั่งซ้ำของโปรโตคอล NEC

คำสั่ง (Command) จะถูกส่งเพียง 1 ครั้ง แม้ว่าผู้ใช้จะกดปุ่มบนรีโมตคอนโทรลค้างไว้ก็ตาม

หลังจากนั้น ทุก ๆ 110 ms รีโมตจะส่ง Repeat Code ซ้ำออกมา ตราบใดที่ปุ่มบนรีโมตยังคงถูกกดอยู่

Repeat Code นี้เป็นรูปแบบสัญญาณสั้น ๆ ประกอบด้วย:

  • สัญญาณ AGC Pulse ขนาด 9 ms
  • ตามด้วยช่วงเว้นว่าง (Space) ขนาด 2.25 ms
  • และสัญญาณพาหะ (Burst) ขนาด 560 µs

ดังนั้น เมื่อกดปุ่มค้างไว้ รีโมตจะไม่ส่งข้อมูล Address และ Command ใหม่ซ้ำ แต่จะส่งเพียง Repeat Code เพื่อแจ้งให้ตัวรับทราบว่า “ปุ่มเดิมยังคงถูกกดอยู่”

Nec repeat  2

Extended NEC Protocol

โปรโตคอล NEC ได้รับความนิยมและถูกนำไปใช้งานอย่างแพร่หลาย จนในเวลาต่อมา จำนวน Address ที่มีอยู่เริ่มไม่เพียงพอต่อการใช้งาน

เพื่อเพิ่มจำนวน Address ที่สามารถรองรับได้ จึงมีการปรับเปลี่ยนโดย ยกเลิกการส่ง Address แบบซ้ำเพื่อใช้ตรวจสอบความถูกต้อง ทำให้สามารถขยายช่วงของ Address จากเดิมที่รองรับได้ 256 ค่า เพิ่มขึ้นเป็นประมาณ 65,000 ค่า

ด้วยวิธีนี้ ทำให้สามารถเพิ่มขนาดของ Address จาก 8 บิต เป็น 16 บิต ได้ โดยไม่ต้องเปลี่ยนแปลงคุณสมบัติอื่นของโปรโตคอล NEC

เมื่อขยาย Address เป็น 16 บิต การส่งข้อมูลจะไม่มีระยะเวลาคงที่เหมือน NEC แบบเดิม เนื่องจากไม่ได้มีการส่งข้อมูล Address ซ้ำด้วยค่ากลับด้านอีกต่อไป

หากต้องการให้เวลาการส่งข้อมูลรวมยังคงที่เหมือนเดิม จะต้องกำหนดให้จำนวนบิต 1 ในส่วน Address มีค่าเท่ากับ 8 บิต ซึ่งหมายความโดยอัตโนมัติว่าจำนวนบิต 0 จะมีค่าเท่ากับ 8 บิตเช่นกัน

เงื่อนไขนี้จะทำให้จำนวน Address ที่สามารถใช้งานได้ลดลง เหลือประมาณ 13,000 ค่า

ส่วนการส่งข้อมูล Command แบบซ้ำเพื่อใช้ตรวจสอบความถูกต้อง ยังคงถูกเก็บไว้เหมือนเดิม ดังนั้นแต่ละ Address ยังคงสามารถรองรับ Command ได้ 256 คำสั่ง


ท้ายบท

*¹ : 560 µs ประมาณ 21 รอบคลื่น หมายถึงอะไร?

ในโปรโตคอล NEC รีโมตไม่ได้เปิดไม่ให้สัญญาณที่ขาส่งอินฟราเรดค้างไว้ตลอดเวลา แต่จะส่งสัญญาณอินฟราเรดเป็นจังหวะด้วยความถี่ 38 kHz ในหนึ่งจังหวะของการส่งสัญญาณ รีโมตจะสร้างความถี่ 38 kHz เป็นเวลา 560 µs ช่วงเวลานี้เอง ความถี่ 38 kHz จะเกิดขึ้นซ้ำประมาณ 21 รอบ

ดังนั้นในเวลา 560 µs จะมีคลื่นเกิดขึ้นประมาณ:

T=13800026.3μsT=\frac{1}{38000}\approx 26.3\,\mu s

เมื่อส่งสัญญาณนาน 560 µs

560μs26.3μs21cycle  \frac{560\,\mu s}{26.3\,\mu s}\approx 21 \, cycle

Source : SB-Projects – IR – NEC Protocol
Link : AN-1184 Remote Control IR Receiver Decoder

รีโมตคอนโทรลแบบอินฟราเรด

IR Remote ตอนที่ 1: เปิดโลก Remote Control จากรีโมตทีวีสู่การควบคุมอุปกรณ์ด้วยไมโครคอนโทรลเลอร์
my avatar

Pawinphat

Founder of Bunpajarn.com • Electronics & Embedded Systems

Leave a Reply

Your email address will not be published. Required fields are marked *