İki mikrodenetleyiciyi mikro saniye hassasiyetine nasıl eşitlerim?


37

İki mikro denetleyiciyi senkronize etmem gerekiyor, böylece yayılan dalgaların hızını ölçebilirler. Zaman gecikmesi ölçümlerinin mikrosaniye doğruluğu gerekir (hata mikrosaniyenin 1 / 2'sinden daha düşük).

12MHz kristal kullanan iki mikro denetleyiciye ( ATmega328 ) sahibim.

Her ikisi de Bluetooth alıcı-vericileri ile donatılmıştır. Bluetooth alıcı vericileri, ~ 15 milisaniyelik bir jitter paketlerini gönderip alır.

Bluetooth alıcı vericilerini veya başka bir yaratıcı yöntemi kullanarak mikro denetleyicileri senkronize etmeyi umuyorum.

Onları bir araya dokunarak senkronize etmeyi denedim, ancak yaklaşık 10 dakika boyunca senkronize olmalarını istiyorum ve saatleri çok hızlı sürüklendi. Belki saatin kaymasını doğru tahmin etmek mümkün olsaydı, bu yöntem işe yarayabilirdi.

Bu senkronizasyonu başarmaya nasıl devam etmeliyim?


2
Bize ne yapmaya çalıştığınızı ve birimlerin neden senkronize edilmesi gerektiğini söyler misiniz? Belki uygulamanızın özellikleri bir çözüme işaret edebilir. Genel bir sorun olarak, özellikle küçük kablosuz cihazlar için bu çok kolay değildir.
Nick Alexeev

2
Bluetooth güvenerek senkronizasyon elde etmek imkansız. 15 ms jitter, 0,5 bize eşitleme elde etmek için çok fazla. Düzeltilmesi gereken çok düşük titreşim ve sabit gecikme süresi olan bir şeye ihtiyacınız var. Her ikisine de tek bir saat alabilirseniz ve gecikmeleri dengelemek için saati tamponlamanız daha kolay olacaktır.
travisbartley

Gecikme için özür dilerim. Projenin amacı, el tipi dijital ölçüm araçlarının tasarımından telleri çıkarmak. Kullanıcı mevcut tellere zarar verdikleri için kablosuz bir tasarım istedi. Üniteler, her iki sensör arasında 0.5us senkronizasyonuna ihtiyaç duyacak kadar hızlı olan ayakta ağaçlardaki dalgaların yayılımını ölçmektedir.
Kevin,

Ucuz-kablosuz: Kızılötesi. Bir IR darbesi, biraz ayrıldıklarında saatleri yeniden senkronize etmek için yeterli olabilir.
JimmyB,

1
Bu makale deneysel testle birlikte ~ 10uS senkronizasyonlu bir Bluetooth 4.0 sistemi önermektedir.
user2943160

Yanıtlar:


23

Kablosuz geçit töreninde yağmur yağmak istemiyorum. Zor ama beklenmedik bir gereksinimle karşılaştın. Bunun gibi bir şey tüm sistem tasarımının yeniden değerlendirilmesini gerektirir.

Akla gelen ilk şey, iki üniteyi bir osilatörden ayırmak. Poligonun 10 m civarında olduğunu gösteren Bluetooth iletişimine sahipsiniz. Ünitelerinizi RG174 koaksiyel kablo veya saati taşıyan bir optik fiber ile bağlayabilirsiniz.

İkincisi , hassas osilatörler var. Artan hassasiyet ve maliyet sırasına göre.

  • TCXO (sıcaklık dengelenmiş kristal osilatör). Tipik olarak 1 ila 3 ppm kayması.
  • OCXO (fırın kontrollü kristal osilatör). 0.02ppm sırasına sürüklenme. Bazı OCXO, 0.0001 ppm'ye kaymıştır.
  • Atomik saat ( örneğin Rubidyum standardı ). Çoğunlukla referans çerçevesini vermek için atomik saatten söz ediyorum. Burada daha fazlası .

3. , hassas osilatör GPS ile eğitildi. Her GPS uydusunun üzerinde birkaç atom saati vardır. Genellikle, görünümde birçok GPS uydusu vardır. GPS, hassas zamanlama için çok kullanılır (sat nav'a kıyasla daha az bilinen kullanım). Çoğu GPS alıcısı, 50ns'a doğru zamanlama sağlayan 1PPS çıkışa (saniyede bir darbe) sahiptir.
600'lerin (10dk) üzerinde 0.5μs'lik bir kayma olması için saatinizin (mevcut tasarımınızdaki 12MHz saat) 0.0008ppm'den daha az kayması olması gerekir. Ancak, zamanlama hatasını sık sık düşük sapma harici bir kaynaktan düzeltebilirsiniz, saatteki sapma gereksinimi daha rahat olabilir. Her saniyeyi düzeltebilirseniz saatiniz 0,5 ppm kayma gösterebilir.


Bir zamanlar, dünya genelinde veri merkezlerinde çalışan sunucularda bu tür bir doğruluğu elde etmek zorunda olduğumuz bir proje üzerinde çalıştım. En kolay yolu GPS kullanmaktı. Sonuçta, tüm makineler / veri merkezleri GPS’e erişemedi, bu yüzden çözümümüz oldukça zordu. Bunu mikrodenetleyicilerle yapmak daha da zor olacak.
NomadAlien

4
"Tüm sistem tasarımının yeniden değerlendirilmesini garanti ediyor" için +1.

1
Bütçenize bağlı olarak, GPS sinyaline faz hizalı olan programlanabilir bir frekansı (0-10 Mhz) çıkaran GPS birimlerini ~ 150 $ ea karşılığında satın alabilirsiniz. UBlox LEA-6T'ye bakın. 30 nS RMS hata timepulse çıkışı,% 99 <60 nS olduğunu iddia ediyorlar.
Connor Wolf

9

1pps çıkışlı GPS modülleri hazır ve ucuzdur.

İşlemcinin osilatörünü GPS ile disipline etmek gerçekten gerekli değildir (örneğin, PLL ile). CPU saatine göre harici olayları "zaman damgası" yapabildiğiniz sürece, herhangi bir iki PPS olayı arasında dalga iletme zamanını enterpolasyon yapmak ve olayları almak oldukça kolaydır.

Mikroişlemcideki bir donanım zamanlayıcısının kombinasyonunu, taşma olayları için bir yazılım sayacıyla birlikte, keyfi genişlikte bir CPU döngüsü sayacı oluşturmak için kullanabilirsiniz. Hem donanım sayacı hem de yazılım sayacı olarak rollover olaylarıyla doğru bir şekilde ilgilenmek zor olabilir, ancak sonunda, CPU saatinin hızında sayılan 32 bitlik bir sayaca sahip olabilirsiniz (yüksek çözünürlükte ) ve ölçmeye çalıştığınız aralıklardan daha uzun bir süre boyunca yuvarlanır (örneğin, 429 saniye @ 10 MHz).

Bu sayacı, farklı harici olaylara zaman damgası uygulamak için kullanabilirsiniz. Bu olaylardan biri bir GPS alıcısından 1-pps darbeleri ise, CPU saatinin temel uzun vadeli doğruluğu umursamaz hale gelir. Önemli olan tek şey kısa vadeli istikrarı. GPS zaman damgalarını bir FIFO arabelleğine kaydedebilir ve diğer olayların zaman damgalarını bu arabelleğindeki değerlerle karşılaştırabilirsiniz. GPS darbelerinin tam olarak bir saniye olduğunu bildiğinizden, enterpolasyon yaparak başka bir olayın tam zamanını bulabilirsiniz.

GPSnGPSn+1TimenTimen+1ExtGPSnGPSn+1

Timen+ExtGPSnGPSn+1GPSn

Son olarak, bu kurulumun her biri kendi GPS alıcısına sahip iki ayrı sistemde çalışıyorsa, iki sistemdeki çeşitli olaylar için hesaplanan süreleri yüksek hassasiyetle (tipik olarak ± 100 ns sırasına göre) karşılaştırabilirsiniz. İki sistemin CPU saatleri senkronize edilmedi.


Bunun nasıl işe yarayacağı konusunda biraz daha açık konuşur musunuz? Mevcut açıklamadan anlamakta güçlük çekiyorum.
NickHalden

@NickHalden: Tamam, tamam.
Dave Tweed

Hmmm, bu cpu saatinin iki 1 saniye darbesi arasında sabit olma sıklığına bağlı değil mi? Örneğin, darbelerin% 99'unun 0,00 ile 0,05 saniye arasında gerçekleştiği ve% 1'inin 0,05 ile 1,00 saniye arasında gerçekleştiği çok korkunç bir kristal osilatör devresi alın. Patolojik olarak inşa edilmiş bir örnek bunu mahvetmez mi, yoksa hala bir şeyleri mi kaçırıyorum?
NickHalden

Evet, "kısa vadeli istikrar" demek bu.
Dave Tweed

Oh, yorum yaptığım sırada oradaki yikes miydi? Utanç verici bir haha. Neyse, benden +1 açıklaması için teşekkürler.
NickHalden,

8

Daha önce mikrodenetleyiciler için kablosuz bir saat senkronizasyonu yaptım, ancak uygulama için yeterince iyi olan yalnızca milisaniye hassasiyetinde. Okumamdan itibaren, bu makale mikrosaniye senkronizasyonu oldukça iyi açıklıyor: http://www.math.u-szeged.hu/tagok/mmaroti/okt/2010t/ftsp.pdf

Esasen, sırasıyla verici ve alıcıdaki bir radyo paketinin iletim olayı ve varış olayı hakkında bilginiz varsa, olabilecek 2 sistem arasında ortak bir gözlemlenebilir olaya (radyo dalgasının yayılma zamanını göz ardı ettiğiniz varsayılırsa) sahip olursunuz. referans olarak kullanılır. Makalede belirtilen diğer temiz özellik, doğrusal regresyon kullanarak saat çarpıklığı tahminidir.


Tek sıçrama senaryosunda 1.5µs kesinliği ve çok sıçrayan durumda atlama başına ortalama 0.5 µs kesinliği deneysel sonuçlar verilerek gösterilmiştir. Güzel.
Li-aung Yip

1
Bu aynı zamanda ilginizi çekebilir: Sensör Ağları için Zamanlama Eşitleme Protokolü
Nick Alexeev

3

Sağlık Cihazı Profilinin (HDP) isteğe bağlı bir parçası olan Bluetooth Saat Senkronizasyon Protokolüne (CSP) göz atın . Bu belgedeki CSP ile ilgili bölümler 2.1 ve 8'dir.

Henüz kendim deneme şansım olmadı ama söyleyebildiğim kadarıyla, BlueZ (resmi Linux Bluetooth protokol yığını) CSP desteği de dahil olmak üzere HDP'ye destek verdi. Dolayısıyla, BlueZ yığınını destekleyen bir platformda çalışıyormuşsunuz gibi görünmese de, kod belki de en azından iyi bir referans uygulaması sağlayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.