วิธีการประสานไมโครคอนโทรลเลอร์สองตัวกับความแม่นยำระดับไมโครวินาที


37

ฉันต้องซิงโครไนซ์ไมโครคอนโทรลเลอร์สองตัวเพื่อให้สามารถวัดความเร็วในการแพร่กระจายคลื่น การวัดการหน่วงเวลาต้องมีความแม่นยำระดับไมโครวินาที (มีข้อผิดพลาดน้อยกว่า 1/2 ของไมโครวินาที)

ฉันมีไมโครคอนโทรลเลอร์สองตัว ( ATmega328 ) ซึ่งใช้คริสตัล 12MHz

ทั้งคู่ติดตั้งตัวรับส่งสัญญาณ Bluetooth ตัวรับส่งสัญญาณบลูทู ธ ส่งและรับแพ็คเก็ตที่มีกระวนกระวายใจประมาณ 15 มิลลิวินาที

ฉันหวังว่าจะซิงโครไนซ์คอนโทรลเลอร์ไมโครโดยใช้ตัวรับส่งสัญญาณ Bluetooth หรือวิธีการสร้างสรรค์อื่น ๆ

ฉันได้ลองซิงโครไนซ์พวกมันด้วยการแตะมันด้วยกัน แต่ฉันต้องการให้ซิงโครไนซ์อยู่ประมาณ 10 นาทีและนาฬิกาของพวกมันล่องลอยเร็วเกินไป บางทีถ้าเป็นไปได้ที่จะทำนายการหมุนของนาฬิกาได้แม่นยำวิธีนี้จะใช้ได้

ฉันจะทำอย่างไรเพื่อให้บรรลุการซิงโครไนซ์นี้


2
คุณบอกเราได้ไหมว่าคุณพยายามทำอะไรและเหตุใดจึงต้องซิงโครไนซ์หน่วย? อาจเป็นข้อมูลเฉพาะของแอปพลิเคชันของคุณที่สามารถชี้ทางแก้ปัญหาได้ ในฐานะที่เป็นปัญหาทั่วไปนี่ไม่ใช่เรื่องง่ายมากโดยเฉพาะอย่างยิ่งสำหรับอุปกรณ์ไร้สายขนาดเล็ก
Nick Alexeev

2
มันเป็นไปไม่ได้ที่จะบรรลุการประสานอาศัยกับบลูทู ธ กระวนกระวายใจ 15 ms เป็นวิธีที่มากเกินไปที่จะรับการซิงโครไนซ์ 0.5 us คุณต้องการบางสิ่งบางอย่างที่มีความกระวนกระวายใจและความหน่วงแฝงที่ต่ำมากซึ่งสามารถแก้ไขได้ มันจะง่ายขึ้นถ้าคุณสามารถรับทั้งนาฬิกาทั้งคู่และบัฟเฟอร์นาฬิกาเพื่อถ่วงดุลความล่าช้า
travisbartley

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

ถูก -o ไร้สาย: อินฟราเรด หนึ่งพัลส์ IR อาจจะเพียงพอที่จะซิงโครไนซ์นาฬิกาเมื่อพวกมันแยกออกจากกันเล็กน้อย
JimmyB

1
บทความนี้เสนอระบบ Bluetooth 4.0 พร้อมการซิงโครไนซ์ ~ 10uS พร้อมการทดสอบทดลอง
user2943160

คำตอบ:


23

ฉันไม่ได้ตั้งใจจะแห่ฝนในสวนสนามไร้สายของคุณ คุณพบความต้องการที่ยากลำบาก แต่ไม่คาดคิด บางสิ่งบางอย่างที่รับประกันการออกแบบระบบใหม่ทั้งหมด

สิ่งแรกที่อยู่ในใจคือนาฬิกาทั้งสองหน่วยออกหนึ่ง oscillator คุณมีการสื่อสารผ่านบลูทู ธ ซึ่งบอกเป็นนัย ๆ ว่าระยะนั้นอยู่ในช่วง 10 เมตร คุณสามารถเชื่อมต่อเครื่องด้วยสายโคแอกเซียล RG174 หรือใยแก้วนำแสงซึ่งจะส่งสัญญาณนาฬิกา

2มี oscillators แม่นยำ เพื่อเพิ่มความแม่นยำและค่าใช้จ่าย

  • TCXO (คริสตัลออสซิลเลเตอร์ชดเชยอุณหภูมิ) ดริฟท์ 1 ถึง 3 ppm โดยทั่วไป
  • OCXO (คริสตัลควบคุมออสซิลเลเตอร์) ล่องลอยตามลำดับ 0.02ppm OCXO บางอันมีค่าลดลงเหลือ 0.0001 ppm
  • นาฬิกาอะตอม ( ตัวอย่างเช่นมาตรฐานรูบิเดียม ) ฉันกำลังพูดถึงนาฬิกาอะตอมเป็นส่วนใหญ่เพื่อให้กรอบการอ้างอิง เพิ่มเติมเกี่ยวกับที่นี่

3 , ความแม่นยำ oscillator รับการฝึกอบรมที่มีจีพีเอส ดาวเทียม GPS ทุกเครื่องมีนาฬิกาอะตอมหลายดวงบนเครื่อง โดยปกติจะมีดาวเทียม GPS จำนวนมากในมุมมอง GPS ใช้สำหรับการจับเวลาที่แม่นยำเป็นอย่างมาก ตัวรับสัญญาณ GPS ส่วนใหญ่มีเอาต์พุต 1PPS (หนึ่งชีพจรต่อวินาที) ซึ่งให้เวลาที่แม่นยำถึง 50ns
หากต้องการมีความเร็ว 0.5 μsมากกว่า 600 วินาที (10 นาที) นาฬิกาของคุณ (นาฬิกา 12MHz ในการออกแบบปัจจุบันของคุณ) ควรมีความเร็วต่ำกว่า 0.0008ppm แต่ถ้าคุณสามารถแก้ไขข้อผิดพลาดเกี่ยวกับการกำหนดเวลาได้บ่อยครั้งจากแหล่งภายนอกที่มีความเบี่ยงเบนต่ำความต้องการในการดริฟท์ในนาฬิกาจะผ่อนคลายมากขึ้น หากคุณสามารถแก้ไขได้ทุกวินาทีนาฬิกาของคุณอาจมีดริฟท์ 0.5ppm


ฉันเคยทำงานในโครงการที่เราต้องได้รับความแม่นยำเช่นนี้บนเซิร์ฟเวอร์ที่ทำงานในศูนย์ข้อมูลทั่วโลก วิธีที่ง่ายที่สุดคือใช้ GPS มันกลับกลายเป็นว่าเครื่องจักร / ศูนย์ข้อมูลทั้งหมดไม่สามารถเข้าถึง GPS ดังนั้นทางออกของเราในท้ายที่สุดก็ค่อนข้างท้าทาย การทำเช่นนี้กับไมโครคอนโทรลเลอร์จะยิ่งรุนแรงขึ้น
NomadAlien

4
+1 สำหรับ "การประเมินผลใหม่ของการออกแบบระบบทั้งหมด"

1
ขึ้นอยู่กับงบประมาณของคุณคุณสามารถซื้อหน่วย GPS ที่ส่งสัญญาณความถี่ที่ตั้งโปรแกรมได้ (0-10 Mhz) ที่จัดแนวเฟสเป็นสัญญาณ GPS ได้ประมาณ ~ $ 150 ea ดู uBlox LEA-6T พวกเขาอ้างว่าเอาต์พุตข้อผิดพลาด timepulse 30 nS RMS 99% <60 nS
Connor Wolf

9

โมดูล GPS ที่มีเอาต์พุต 1pps พร้อมใช้งานและราคาไม่แพง

ไม่จำเป็นต้องมีวินัยในการใช้งานออสซิลเลเตอร์ของ CPU กับ GPS (เช่นด้วย PLL) ตราบใดที่คุณสามารถ "timestamp" เหตุการณ์ภายนอกที่สัมพันธ์กับนาฬิกา CPU มันค่อนข้างตรงไปตรงมาที่จะสอดแทรกเวลาที่คลื่นของคุณส่งและรับเหตุการณ์ระหว่างเหตุการณ์ PPS สองเหตุการณ์

คุณสามารถใช้ตัวจับเวลาฮาร์ดแวร์ร่วมกับไมโครคอนโทรลเลอร์พร้อมกับตัวนับซอฟต์แวร์สำหรับเหตุการณ์โอเวอร์โฟลว์เพื่อสร้างตัวนับรอบ CPU ของความกว้างโดยพลการ อาจเป็นการยากที่จะจัดการอย่างถูกต้องกับเหตุการณ์แบบโรลโอเวอร์ทั้งตัวนับฮาร์ดแวร์และตัวนับซอฟต์แวร์ แต่ในท้ายที่สุดคุณสามารถพูดตัวนับ 32 บิตที่นับในอัตราของนาฬิกา CPU (ให้ความละเอียดสูง ) และหมุนโดยมีระยะเวลานานกว่าช่วงเวลาที่คุณพยายามวัด (เช่น 429 วินาทีที่ 10 MHz)

คุณสามารถใช้ตัวนับนี้เพื่อประทับเวลาเหตุการณ์ภายนอกที่แตกต่างกัน หากหนึ่งในนั้นคือพัลส์ 1-pps จากตัวรับสัญญาณ GPS ความแม่นยำในระยะยาวขั้นพื้นฐานของนาฬิกาซีพียูจะกลายเป็นสิ่งที่ไม่สนใจ สิ่งเดียวที่สำคัญคือความมั่นคงในระยะสั้น คุณสามารถบันทึกการประทับเวลา GPS ในบัฟเฟอร์ FIFO และเปรียบเทียบการประทับเวลาของเหตุการณ์อื่น ๆ กับค่าในบัฟเฟอร์นั้น เนื่องจากคุณทราบว่าสัญญาณ GPS แตกต่างกันเพียงหนึ่งวินาทีคุณจึงสามารถค้นหาเวลาที่แน่นอนของเหตุการณ์อื่น ๆ ได้โดยการแก้ไข

GPSnGPSn+1TimenTimen+1ExtGPSnGPSn+1

Timen+ExtGPSnGPSn+1GPSn

ในที่สุดหากคุณตั้งค่านี้ให้ทำงานในสองระบบแยกกันโดยแต่ละเครื่องมีตัวรับสัญญาณ GPS ของตัวเองคุณสามารถเปรียบเทียบเวลาที่คำนวณได้สำหรับเหตุการณ์ต่าง ๆ ในระบบทั้งสองที่มีความแม่นยำสูง นาฬิกา CPU ของทั้งสองระบบไม่ได้รับการซิงโครไนซ์


คุณช่วยให้ชัดเจนมากขึ้นเกี่ยวกับวิธีการทำงานนี้ได้อย่างไร ฉันมีปัญหาในการทำความเข้าใจจากคำอธิบายปัจจุบัน
NickHalden

@NickHalden: ตกลงเสร็จแล้ว
Dave Tweed

อืมโอเคสิ่งนี้ไม่ได้ขึ้นอยู่กับความถี่ของนาฬิกา cpu ที่คงที่ระหว่างสอง 1 วินาที ตัวอย่างเช่นใช้วงจรออสซิลเลเตอร์คริสตัลที่น่ากลัวโดยเฉพาะอย่างยิ่งที่ 99% ของพัลส์เกิดขึ้นระหว่าง 0.00 และ 0.05 วินาทีจากนั้น 1% สุดท้ายจะเกิดขึ้นระหว่าง 0.05 ถึง 1.00s ตัวอย่างนั้นจะไม่ก่อให้เกิดโรคขึ้นหรือไม่ฉันยังขาดอะไรอยู่ใช่ไหม?
NickHalden

ใช่นั่นคือความหมายของ "ความมั่นคงระยะสั้น"
Dave Tweed

โอ้ฉันอยู่ที่นั่นเมื่อฉันแสดงความคิดเห็น? ฮ่าฮ่ามันน่าอาย อย่างไรก็ตามขอขอบคุณสำหรับคำอธิบาย +1 จากฉัน
NickHalden

8

ฉันได้ใช้การซิงโครไนซ์นาฬิกาแบบไร้สายสำหรับไมโครคอนโทรลเลอร์มาก่อน แต่มีความแม่นยำเพียงมิลลิวินาทีเท่านั้นซึ่งดีพอสำหรับแอปพลิเคชัน จากการอ่านของฉันบทความนี้อธิบายการซิงโครไนซ์ไมโครวินาทีค่อนข้างดี: http://www.math.u-szeged.hu/tagok/mmaroti/okt/2010t/ftsp.pdf

โดยพื้นฐานแล้วหากคุณมีความรู้เกี่ยวกับเหตุการณ์การส่งสัญญาณและเหตุการณ์การมาถึงของแพ็กเก็ตวิทยุบนเครื่องส่งและรับสัญญาณตามลำดับคุณจะมีเหตุการณ์ที่สังเกตเห็นได้ทั่วไป (สมมติว่าคุณเพิกเฉยต่อเวลาเผยแพร่คลื่นวิทยุ) ระหว่าง 2 ระบบ ใช้เป็นข้อมูลอ้างอิง คุณสมบัติที่เป็นระเบียบอื่น ๆ ที่กล่าวถึงในกระดาษคือการประมาณนาฬิกาโดยใช้การถดถอยเชิงเส้น


ความแม่นยำของ 1.5 ins ในสถานการณ์ hop เดียวและความแม่นยำเฉลี่ย 0.5µs ต่อ hop ในกรณี multi-hop ถูกแสดงโดยให้ผลการทดลอง ดี
Li-aung Yip


3

ตรวจสอบโปรโตคอลการซิงโครไนซ์นาฬิกาบลูทู ธ (CSP) ซึ่งเป็นส่วนเสริมของโปรไฟล์อุปกรณ์สุขภาพ (HDP) ส่วนในเอกสารนั้นที่เกี่ยวข้องกับ CSP คือ 2.1 & 8

ฉันยังไม่มีโอกาสลองด้วยตัวเอง แต่เท่าที่ฉันจะบอกได้ BlueZ (สแต็คโปรโตคอล Linux Bluetooth อย่างเป็นทางการ) เพิ่งเพิ่มการรองรับ HDPรวมถึงการสนับสนุน CSP ดังนั้นแม้ว่าจะไม่ดูเหมือนว่าคุณกำลังใช้งานบนแพลตฟอร์มที่รองรับสแต็ก BlueZ แต่อย่างน้อยโค้ดอาจให้การอ้างอิงที่ดี

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