วิธีการวัดความกว้างพัลส์ของสัญญาณ IR โดยใช้ PIC 8 บิต


14

เพื่อนของฉันและฉันต้องการออกแบบรีโมทควบคุมการเรียนรู้สากลเช่นนี้เพื่อการเรียนรู้ สิ่งที่เราต้องการทำโดยทั่วไปคือการจัดเก็บและเล่นซ้ำพัลส์อินฟราเรด

เราต้องการตรวจจับสัญญาณ 36kHz, 38kHz และ 40kHz สัญญาณ 40kHz จะมีระยะเวลา 25 sμ

เราต้องการใช้ไมโครคอนโทรลเลอร์ PIC 8 บิตตอนนี้เราได้เลือก PIC16F616 ซึ่งจะทำงานที่ออสซิลเลเตอร์คริสตัลความเร็วสูง 20MHz เรามีสองตัวเลือกให้เลือก:

  1. ใช้Interrupt On Changeโมดูล
  2. ใช้โหมดถ่ายภาพของโมดูล CCP

ตัวเลือกแรกจะเป็นดังนี้:

unsigned char _10_us = 0;สมมติลงทะเบียนถูกตั้งค่าเป็น: การลงทะเบียนนี้จะถือเวลา โมดูล TMR2 พร้อมการลงทะเบียนช่วงเวลาถูกตั้งค่าเพื่อสร้างการขัดจังหวะทุกๆ 10วินาที เมื่อมีการขัดจังหวะจะเพิ่มการลงทะเบียนและออก สิ่งนี้จะให้เวลาสูงสุด 2.55msec หากต้องการการวัดเวลามากขึ้นการลงทะเบียนเพิ่มเติมเช่นสามารถกำหนดและเพิ่มขึ้นได้ตามต้องการμ_10_us_1_ms

ตอนนี้ทุกครั้งที่มีการขัดจังหวะจากการเปลี่ยนแปลงใด ๆ (สูงไปต่ำหรือต่ำไปสูง) โปรแกรมจะบันทึกเวลาปัจจุบันซึ่งเป็นค่าของการ_10_usลงทะเบียน หลังจากผ่านไปครู่หนึ่งเมื่อมีการสร้างอินเทอร์รัปต์ครั้งต่อไปโปรแกรมจะลบค่าที่บันทึกไว้จาก_10_usรีจิสเตอร์และตอนนี้จะเป็นเวลาที่ใช้ในระหว่างนี้ด้วยหน่วย 10วินาทีμ

ตัวเลือกนี้ทำให้ฉันเกาหัวของฉัน; TMR2 อินเตอร์รัปต์จะเกิดขึ้นประมาณ 50 คำสั่ง การจัดการขัดจังหวะจะใช้เวลาประมาณ 20 คำสั่ง ฉันเหลือ 30 คำแนะนำในการคำนวณและบันทึกระยะเวลาในอาร์เรย์ วิธีนี้จะใช้ได้ไหม

ตัวเลือกที่สองจะเป็นดังนี้:

ตั้งค่าโหมดถ่ายภาพของโมดูล CCP เพื่อให้เกิดการอินเตอร์รัปต์เมื่อเกิดเหตุการณ์ (สูงไปต่ำ) บน CCP1 ในชุดคำสั่งขัดจังหวะมันจะตั้งค่าสถานะเพื่อให้งานในโปรแกรมสามารถคำนวณ (ถ้าจำเป็น) และบันทึกค่าของ CCPR1H (อาจจะไม่จำเป็นต้องใช้) และ CCPR1L จากนั้นเราจะเปลี่ยนการกำหนดค่าของโหมดถ่ายภาพเพื่อให้เกิดการขัดจังหวะเมื่อเกิดขอบต่ำถึงสูง แล้วมันจะรอเหตุการณ์ถัดไป ฉันไม่สามารถประเมินประสิทธิภาพของวิธีนี้ได้เนื่องจากไม่เคยใช้

ตัวเลือกอื่น

เราสามารถใช้ IC demodulator อินฟราเรดเช่นซีรีย์TSOP17xx นั่นจะช่วยแก้ปัญหาของเราได้อย่างสมบูรณ์ อย่างไรก็ตามคำถามบางอย่างอยู่ในใจ

ความต้องการระยะทางในการอ่านของเรานั้นไม่มาก 1 เมตร (~ 3 ฟุต) ถ้าเราเลือก TSOP1738 ที่มีความหมายที่จะได้ทำงาน 38kHz, วิธีเดียวจะทำงานนี้กับ 36kHz 40kHz และสัญญาณ?

หน้า 4 ของแผ่นข้อมูลของชุด TSOP17xx แสดงกราฟ "การพึ่งพาความถี่ของการตอบสนอง" เท่าที่เราเข้าใจ

  • 40kHz ซึ่งเป็น ~ 1.053 จาก 38kHz จะให้การตอบสนองสัมพัทธ์ ~ 0.6
  • 36kHz ซึ่งเป็น ~ 0.95 จาก 38kHz จะให้การตอบสนองสัมพัทธ์ของ ~ 0.65

ค่าเหล่านี้หมายความว่าอย่างไร เราสามารถใช้ TSOP1738 และใช้ได้หรือไม่


ทำไมไม่เพียงเขียนลูปของซอฟต์แวร์ซึ่งนับจำนวนลูประหว่างพัลส์
Rocketmagnet

@Rocketmagnet ฉันไม่เข้าใจ คุณช่วยเขียนคำตอบได้ไหมถ้ามีเวลา นอกจากนี้โปรดทราบว่าเราจะทำสิ่งอื่น ๆ อีกมากมายเช่น RS232 และ SPI นอกเหนือจากปัญหาดังกล่าว
abdullah kahraman

คำตอบ:


11

0.65

ไม่ต้องกังวลกับประสิทธิภาพของ PIC TSOP1738 จะไม่ส่งสัญญาณออกที่ 38 kHz นั่นคือความถี่พาหะซึ่งถูกลบโดย TSOP1738 เพื่อกลับสัญญาณเบสแบนด์ซึ่งมีความถี่ต่ำกว่ามากพร้อมระยะเวลาพัลส์ตามลำดับ 1 มิลลิวินาทีดังนั้นจึงมีเวลามากมายในการวัดเวลาระหว่างขอบอย่างแม่นยำ

ภาพขอบเขตต่อไปนี้แสดงให้เห็นถึงสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือหนึ่งรหัส RC5 สัญญาณด้านบนเป็นสัญญาณมอดูเลต 36 kHz ด้านล่างของสัญญาณเบสแบนด์ที่มีรหัสจริง

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือการขยายในหนึ่งพัลส์ของสัญญาณเบสแบนด์ คุณสามารถดูพัลส์ส่วนตัวของผู้ให้บริการ 36 kHz

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

40 kHz: 25 38s
38 kHz: 26.3 36s
36 kHz: 27.8 µs

PIC16F616 20 MHz มีวงจรการเรียนการสอน 200 ns (มันแบ่งนาฬิกาเป็น 4!) ดังนั้นการอ่านความถี่ทั้งสามควรประมาณ 125, 131 และ 139 นั่นน่าจะเพียงพอที่จะแยกพวกเขาออกจากกัน แต่ถ้าคุณต้องการคุณสามารถปล่อยให้ขอบจำนวนหนึ่งผ่านและอ่านตัวจับเวลาหลังจากการขัดจังหวะครั้งที่ 10 เช่น: 1250, 1316, 1389 ไม่นานเกินไปเพราะคุณต้องทำให้เวลาสั้นลงกว่าสัญญาณเบสแบนด์หนึ่งสัญญาณ .

ที่ประสบความสำเร็จ!


นั่นคือตอนนี้ผ่อนคลายขอบคุณ ฉันได้สร้าง "ผู้เรียนรู้ IR" จาก TSOP1738 เมื่อนานมาแล้ว แต่มันก็เป็นระเบียบ
abdullah kahraman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.