วิธีที่ง่ายที่สุดในการนับพัลส์ความเร็วสูงคืออะไร


3

ฉันต้องการนับพัลส์ดิจิตอลที่มีความกว้าง 30 ns และแสดงจำนวนที่อัปเดตให้กับผู้ใช้ทุกวินาที พัลส์นั้นผ่านตัวเปรียบเทียบและพัลส์ shaper แล้ว การแก้ปัญหาไม่ใช่เรื่องที่น่ากังวล แต่ข้อกังวลเดียวของฉันคือการนับจำนวนพัลส์ 30 ns ในขณะที่รับเสียงรบกวนน้อยที่สุด

มีวิธีง่าย ๆ ในการใช้ไมโครคอนโทรลเลอร์ PIC หรือวงจรพิเศษเพื่อดำเนินการนับหรือไม่? ฉันสามารถใช้ PIC หรือวงจรเพื่อประมวลผลการนับและถ่ายทอดการนับไปยังราสเบอร์รี่ pi สำหรับการประมวลผล / การแสดงผลเพิ่มเติมได้หรือไม่

คำตอบ:


1

30ns เร็วเกินไปสำหรับไมโครคอนโทรลเลอร์ PIC ที่ฉันรู้จัก ตัวอย่างเช่น PIC16F77 ต้องใช้ระยะเวลาหนึ่งรอบการเรียนการสอนบวก 40ns ดังนั้นที่ความถี่สัญญาณนาฬิกาสูงสุดระยะเวลาจะต้องมีอย่างน้อย 200 + 40ns

ฉันจะใช้ตัวนับ IC 4 บิต (เช่น 74169, ซิงโครนัส 4 บิตตัวนับขึ้น / ลง) ซึ่งจะหารด้วย 16 เอาท์พุทมันจะถูกป้อนเข้าพินอินพุตพินของ PIC (T0CKI สำหรับ 16F77) แต่สิ่งนี้จะนับจำนวนทวีคูณของ 16 เท่านั้นหากคุณต้องการการนับที่แม่นยำในขณะที่กำลังรับพัลส์มันจะยุ่งยากเพราะไม่เพียงแค่ 4 บิตเหล่านั้นเท่านั้นที่จะต้องถูกสลัก แต่พวกมันจะต้องซิงโครไนซ์กับ .


0

วิธีหนึ่งในการนับ pules คือการใช้ทริกเกอร์ขัดจังหวะบนขอบบวกหรือลบ คุณสามารถใช้ PIC หรือแม้กระทั่งอาจจะดีกว่าการใช้ราสเบอร์รี่ปี่มันเอง ในเรื่องของการลดเสียงรบกวนฉันขอแนะนำให้วางวงจรตัวกรองที่เหมาะสมเพื่อกรองสัญญาณรบกวน

อีกสิ่งที่ควรพิจารณาคือโหมดจับภาพและเปรียบเทียบ ฉันไม่ได้ใช้สิ่งนี้ แต่ฉันอ่านเกี่ยวกับเรื่องนี้สั้น ๆ ฉันคิดว่าไมโครคอนโทรลเลอร์ PIC รองรับการจับภาพและเปรียบเทียบ

สุดท้ายเกี่ยวกับเสียงรบกวนคุณควรทำความเข้าใจกับแหล่งกำเนิดของเสียงรบกวน จากนั้นกรองสัญญาณรบกวนใด ๆ ที่มีผลต่อการออกแบบของคุณ


อ้างอิง:


0

ฉันไม่รู้จัก PICs แต่พวกมันก็เหมือนกับไมโครคอนโทรลเลอร์ส่วนใหญ่ที่มีตัวจับเวลา / ตัวนับที่สามารถตั้งค่าเป็นอินพุตจาก GPIO เพื่อนับพัลส์ดิจิตอลเหล่านั้นบนขอบที่เพิ่มขึ้น คุณต้องแน่ใจว่าความถี่โปรเซสเซอร์ของคุณสูงกว่าความถี่อินพุตของคุณมิฉะนั้นคุณอาจพลาดบางส่วน นอกจากนี้ยังขึ้นอยู่กับขนาดของเคาน์เตอร์ลงทะเบียน 8, 16, 32 บิต ฯลฯ คุณสามารถเรียกใช้ในสภาพที่ล้น ในกรณีนั้น. คุณต้องทริกเกอร์การขัดจังหวะ (ISR) เมื่อตัวนับ overflow เพื่อรักษาจำนวนนับ ตัวอย่างเช่นในการลงทะเบียนตัวนับ 8 บิตมันจะล้นและรีเซ็ตเป็น 0 หลังจากนับ 255 พัลส์ ตัวนับสามารถทริกเกอร์การขัดจังหวะบนเงื่อนไขโอเวอร์โฟลและรูทีนการขัดจังหวะสามารถทำอะไรบางอย่างเช่น overflowCount + = 1

เมื่อคุณอ่านจำนวนพัลส์ทั้งหมดของคุณต่อผู้ใช้คุณจะต้องทำดังนี้: TotalPulses = มูลค่าการลงทะเบียนที่เคาน์เตอร์ + (255 * overflowCount)

ฉันไม่รู้ว่าจะนับนานแค่ไหน แต่คุณสามารถล้นตัวแปรตัวนับของคุณได้หากคุณไม่ใช้ชนิดตัวแปรขนาดใหญ่พอ อาจใช้ชนิด Long 64 บิต

อ่านแผ่นข้อมูลของ PIC ของคุณและคุณควรหาตัวอย่างของตัวนับ

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