Misurazione del tempo molto accurata


13

Misurerò i tempi molto brevi nel modo più preciso possibile. Il dispositivo riceverà per primo un impulso e entro 150 microsecondi altri sei, ciascuno sui propri fili. Il tempo tra il primo segnale e ciascuno degli altri sei segnali deve essere misurato nel modo più accurato possibile. La precisione dovrebbe essere di almeno 100 nanosecondi, ma di più è meglio.

Quale microcontrollore sarebbe meglio per questo? Ho trovato questo . Sembrano avere un timer con un periodo di 4 nanosecondi. Sarebbe abbastanza preciso per me.

Qualche altro microcontrollore sarebbe meglio farlo? Questo può essere fatto con AVR?


2
Penso che tu stia parlando di precisione, non di precisione. Cosa succede se si ha una precisione in nanosecondi, ma l'orologio sottostante è spento del 10%? Quindi le misurazioni non sono accurate.
Kaz,

Quanto distano i sei impulsi? Arrivano su un input comune o su sei separati?
Starblue,

Hanno tutti i loro input. Gli impulsi a volte possono venire tutti contemporaneamente, ma di solito arrivano in momenti diversi.
Kestis,

Risposte:


8

La velocità del microcontrollore non è sempre il fattore limitante. L'MSP430 può essere una soluzione appropriata, non per il fatto che funziona solo fino a 25 MHz, ma perché diversi dispositivi MSP430 hanno la periferica Timer D che consente un periodo di tempo fino a 4 ns (256 MHz). Questo è più veloce di quasi tutti i microcontrollori là fuori. Anche l'STM32 nelle sue ultime versioni (F4) può fare solo 180MHz.

Il timer D è disponibile sui dispositivi MSP430F51x1 e MSP43051x2 come MSP430F5131.

Tuttavia, ciò risolve solo la capacità di catturare il tempo. La grande domanda è che cosa ne fai perché l'elaborazione stessa sarà più lenta. Potresti campionare il tempo tra due impulsi, ma non sarai in grado di eseguire alcuna elaborazione tra di loro, se è questo che intendi.


Mio male, non avevo completamente RTFM dell'MSP430, principalmente perché il sito Web di TI innesca convulsioni pavloviane di odio.
John U,

@JohnU: non ho mai avuto quella reazione. La verità è che l'OP non ha specificato molte informazioni su ciò che sta facendo, quindi è difficile dare un suggerimento adeguato.
Gustavo Litovsky,

L'elaborazione non è un problema. Ci sono molti secondi per eseguire i calcoli una volta catturati i tempi e gli algoritmi non sono nemmeno complessi. Un MSP430 può gestire tutti e sei gli impulsi o ce ne dovrebbero essere più?
Kestis,

@Kestis: Il Timer D contiene 6 registri di confronto delle acquisizioni e alcuni MSP430 hanno più di un solo modulo Timer D, quindi dovrebbe adattarsi alle tue esigenze.
Gustavo Litovsky,

4

Il cronometraggio con una risoluzione di 100 ns richiede un timer che funziona a 10 MHz. Molti microcontrollori dovrebbero essere in grado di eseguire un timer così velocemente.

Il problema si presenta quando si sta tentando di cronometrare l'arrivo di 6 segnali. Questi segnali sono tutti sullo stesso filo o ognuno su un filo diverso?

Se si trovano tutti sullo stesso filo, potrebbe essere possibile farlo con precisione su qualsiasi MCU con un singolo timer da 10 MHz. Ingenuamente, il codice per farlo sarebbe simile a questo:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

Il problema è che per reimpostare il timer è necessario un tempo limitato. Ciò causa due problemi:

  1. I tempi misurati sarebbero errati di alcuni 100 ns, a seconda dell'implementazione. Tuttavia, dovrebbero essere costantemente sbagliati. IE ha sbagliato esattamente lo stesso importo ogni volta. Ciò significa che puoi facilmente compensarlo aggiungendo una piccola quantità a ciascuna misurazione.

  2. Ci sarebbe un tempo minimo che potresti misurare. Se qualsiasi impulso è arrivato 100 n dopo quello precedente, probabilmente ti mancherà. Non so se c'è qualcosa che puoi fare al riguardo nel software. Dovrai trovare un microcontrollore in grado di gestire più impulsi nell'hardware.


Quale microcontrollore può gestire più impulsi nell'hardware? Il Cypress PSoC ! Questo è un microcontrollore che contiene anche blocchi digitali configurabili, il che significa che puoi facilmente avere 6 timer separati in esecuzione, ciascuno a 60 MHz, offrendo una risoluzione migliore di 20 ns.

6 timer PSoC Cypress

Ecco un esempio che ho rovesciato rapidamente per mostrarti il ​​tipo di cose che potresti fare con esso. Ho 6 timer separati, tutti in esecuzione al di fuori dell'orologio del bus, che può arrivare a 67MHz. C'è un pin trigger che avvia tutti i timer in esecuzione e altri 6 pin, ognuno dei quali provoca un evento di acquisizione nel timer. Un registro di stato consente al codice di monitorare quali timer hanno acquisito un impulso. Il codice può leggere i valori fuori dai timer.


Quel PSoC sembra molto interessante. Tuttavia preferirei AVR o MSP430 perché sono molto più comuni.
Kestis,

0

Risposta rivista : un oscilloscopio a memorizzazione digitale veloce o eventualmente un dispositivo di conteggio delle frequenze.

Vecchia risposta :

In parole povere, "il microcontrollore più veloce che puoi trovare", poiché più veloce è il tuo clock / campionamento, più preciso puoi essere. Gli MSP430 non sono dispositivi veloci.

Gli STM32 sono a 32 bit e funzioneranno più velocemente, inoltre dispongono di schede e strumenti di sviluppo altrettanto economici, ma anche questo è abbastanza lento rispetto ad alcune delle cose più potenti disponibili (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). In generale, tuttavia, più veloce si va, più complicato è il processore, in modo che ci possa essere un compromesso nella curva di apprendimento.

Aggiunto: Benji ha ragione, potresti (anche) avere bisogno di un oscillatore preciso per il micro se vuoi misurazioni molto accurate (non specifichi davvero i limiti di errore nella tua domanda).


Fondamentalmente, ci sono altri tipi di timer, oltre al microcontrollore che campiona il segnale in un loop.
Nick Alexeev

E sarebbe d'aiuto se il microcontrollore avesse un oscillatore / cristallo esterno molto preciso collegato.
BenjiWiebe,

Hai ragione entrambi, ho modificato.
John U,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.