Çok doğru zaman ölçümü


13

Çok kısa süreleri olabildiğince doğru bir şekilde ölçeceğim. Cihaz ilk olarak bir darbe alacak ve her biri kendi kablolarında 150 mikrosaniye içinde altı tane daha alacak. İlk sinyal ile diğer altı sinyalin her biri arasındaki süre mümkün olduğunca doğru ölçülmelidir. Hassasiyet en az 100 nanosaniye olmalıdır, ancak daha fazlası daha iyidir.

Bunun için hangi mikrodenetleyici en iyi olurdu? Bulduğum bu . 4 nanosaniyelik bir zamanlayıcıya sahip gibi görünüyorlar. Benim için yeterince doğru olurdu.

Başka bir mikrodenetleyici bunu yapmak için daha iyi olur mu? Bu AVR ile yapılabilir mi?


2
Sanırım doğruluktan değil doğruluktan bahsediyorsunuz. Nanosaniye hassasiyetiniz varsa, ancak alttaki saat% 10 kapalı ise? O zaman ölçümler doğru değildir.
Kaz

Altı atım ne kadar uzaktadır? Ortak bir girişe mi yoksa altı ayrı girişe mi geliyorlar?
starblue

Kendi girdileri var. Bakliyat bazen aynı anda gelebilir, ancak genellikle farklı zamanlarda gelir.
Kestis

Yanıtlar:


8

Mikrodenetleyicinin hızı her zaman sınırlayıcı faktör değildir. MSP430, sadece 25MHz'e kadar çalıştığı için değil, birkaç MSP430 cihazında 4ns'e kadar süre (256MHz) sağlayan Timer D çevre birimi bulunduğundan uygun bir çözüm olabilir. Bu neredeyse tüm mikrodenetleyicilerden daha hızlı. En son sürümlerindeki (F4) STM32 bile sadece 180MHz yapabilir.

Zamanlayıcı D, MSP430F51x1 ve MSP430F5131 gibi MSP43051x2 cihazlarında kullanılabilir.

Ancak bu sadece zamanı yakalamayı çözer. Büyük soru, onunla ne yaptığınızdır, çünkü işlemenin kendisi daha yavaş olacaktır. İki darbe arasındaki süreyi örnekleyebilirsiniz, ancak aralarında herhangi bir işlem yapamazsınız, eğer demek istediğiniz buysa.


Kötülerim, MSP430'un tam RTFM'sine sahip değildi, çünkü TI'nin web sitesi Pavlovian nefret konvülsiyonlarını tetikliyor.
John U

@JohnU: Bu tepkiyi hiç almadı. Gerçek şu ki, OP ne yaptığı hakkında fazla bilgi belirtmedi, bu yüzden uygun bir öneri vermek zor.
Gustavo Litovsky

İşlem yapmak sorun değil. Zamanları yakaladıktan ve algoritmalar karmaşık olmadığında hesaplamaları yapmak için birçok saniye vardır. Bir MSP430 altı darbenin tümünü idare edebilir mi yoksa daha fazlası mı olmalı?
Kestis

@Kestis: Zamanlayıcı D'de 6 yakalama karşılaştırma kaydı bulunur ve bazı MSP430'da birden fazla Zamanlayıcı D modülü bulunur, bu nedenle gereksiniminize uygun olmalıdır.
Gustavo Litovsky

4

100ns çözünürlük için zamanlama, 10MHz'de çalışan bir zamanlayıcı gerektirir. Birçok mikrodenetleyici bu kadar hızlı bir zamanlayıcı çalıştırabilmelidir.

Sorun, 6 sinyalin gelişini zamanlamaya çalıştığınızda ortaya çıkar. Bu sinyallerin hepsi aynı kabloda mı yoksa her biri farklı bir kabloda mı?

Hepsi aynı kablodaysa, bunu tek bir 10MHz zamanlayıcı ile herhangi bir MCU'da doğru bir şekilde yapmak mümkün olabilir. Safça, bunu yapmak için kod şöyle görünecektir:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

Sorun, zamanlayıcıyı sıfırlamanın sınırlı bir süre almasıdır. Bu iki soruna neden olur:

  1. Ölçülen süreler, uygulamanıza bağlı olarak birkaç 100ns yanlış olur. Bununla birlikte, sürekli olarak yanlış olmalıdırlar. IE her seferinde tam olarak aynı miktarda yanlış. Bu, her bir ölçüm için küçük bir miktar ekleyerek kolayca telafi edebileceğiniz anlamına gelir.

  2. Ölçebileceğin minimum bir zaman olurdu. Herhangi bir nabız bir öncekinden 100ns sonra gelirse, muhtemelen onu özleyeceksiniz. Yazılımda bu konuda yapabileceğiniz bir şey olup olmadığını bilmiyorum. Donanımda birden çok darbeyi işleyebilecek bir mikro denetleyici bulmanız gerekecek.


Hangi mikrodenetleyici donanımda birden fazla darbeyi işleyebilir? Cypress PSoC ! Bu, yapılandırılabilir dijital bloklar da içeren bir mikrodenetleyicidir, yani her biri 60MHz'de çalışan 6 ayrı zamanlayıcıya kolayca sahip olabilirsiniz, bu da size 20ns'den daha iyi bir çözünürlük sağlar.

6 Zamanlayıcılı PSoC Cypress

İşte size bununla yapabileceğiniz şeyleri göstermek için hızlı bir şekilde çaldığım bir örnek. 6 ayrı zamanlayıcım var, hepsi otobüs saatinden geçiyor ve 67MHz'e kadar çıkabiliyor. Çalışan tüm zamanlayıcıları başlatan bir tetikleme pimi ve her biri zamanlayıcıda bir yakalama olayına neden olan 6 pim daha vardır. Durum kaydı, kodunuzun hangi zamanlayıcıların nabız yakaladığını izlemesini sağlar. Kod, zamanlayıcıların dışındaki değerleri okuyabilir.


Bu PSoC çok ilginç görünüyor. Ancak AVR veya MSP430'u tercih ederim çünkü çok daha yaygındırlar.
Kestis

0

Gözden geçirilmiş cevap : Hızlı dijital depolama osiloskopu veya muhtemelen frekans sayıcı cihazı.

Eski cevap :

Basit bir ifadeyle, "bulabileceğiniz en hızlı mikrodenetleyici", saatinizin / örneklemenizin ne kadar hızlı olursa, o kadar doğru olabilirsiniz. MSP430'lar hızlı aygıtlar değildir.

STM32'ler 32 bit ve daha hızlı çalışacak, ayrıca benzer ucuz dev panoları ve araçlara sahip olacaklar, ancak bu daha güçlü bazı şeylere kıyasla oldukça yavaş (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Genellikle, ne kadar hızlı giderseniz işlemci o kadar karmaşık hale gelir, böylece öğrenme eğrisinde bir değiş tokuş olabilir.

Eklendi: Benji haklı, çok doğru ölçümler istiyorsanız mikro için doğru bir osilatöre ihtiyacınız olabilir (sorunuzda gerçekten hata sınırları belirlemezsiniz).


Temel olarak, bir döngüdeki sinyali örnekleyen mikrodenetleyici dışında başka zamanlayıcı tipleri de vardır.
Nick Alexeev

Mikrodenetleyici çok hassas bir harici osilatör / kristal takılmışsa yardımcı olacaktır.
BenjiWiebe

Siz ikiniz de haklısınız, ben düzenledim.
John U
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.