Ich werde sehr kurze Zeiten so genau wie möglich messen. Das Gerät erhält zunächst einen Impuls und innerhalb von 150 Mikrosekunden sechs weitere Impulse, die jeweils auf eigenen Drähten liegen. Die Zeit zwischen dem ersten Signal und jedem der sechs anderen Signale muss so genau wie möglich gemessen werden. Die Genauigkeit sollte mindestens 100 Nanosekunden betragen, aber mehr ist besser.
Welcher Mikrocontroller wäre dafür am besten geeignet? Ich habe festgestellt , diese . Sie scheinen einen Timer mit einer Periode von 4 Nanosekunden zu haben. Es wäre genau genug für mich.
Wäre ein anderer Mikrocontroller besser dafür? Kann das mit AVR gemacht werden?
microcontroller
time
Kestis
quelle
quelle
Antworten:
Die Geschwindigkeit des Mikrocontrollers ist nicht immer der begrenzende Faktor. Der MSP430 kann eine geeignete Lösung sein, nicht weil er nur mit bis zu 25 MHz arbeitet, sondern weil mehrere MSP430-Geräte über die Timer-D-Peripherie verfügen, die eine Zeitspanne von bis zu 4 ns (256 MHz) ermöglicht. Dies ist schneller als bei fast allen anderen Mikrocontrollern. Sogar der STM32 in seiner neuesten Version (F4) kann nur 180MHz.
Timer D ist bei MSP430F51x1- und MSP43051x2-Geräten wie dem MSP430F5131 verfügbar.
Dies löst jedoch nur das Erfassen der Zeit. Die große Frage ist, was Sie damit machen, weil die Verarbeitung selbst langsamer sein wird. Sie könnten die Zeit zwischen zwei Impulsen abtasten, aber Sie werden keine Verarbeitung zwischen ihnen durchführen können, wenn Sie das meinen.
quelle
Für eine Auflösung von 100 ns ist ein Timer mit 10 MHz erforderlich. Viele Mikrocontroller sollten in der Lage sein, einen Timer so schnell auszuführen.
Das Problem tritt auf, wenn Sie versuchen, die Ankunft von 6 Signalen zeitlich festzulegen. Befinden sich diese Signale alle auf derselben Leitung oder auf einer anderen Leitung?
Wenn sich alle auf demselben Kabel befinden, kann dies möglicherweise auf jeder MCU mit einem einzelnen 10-MHz-Timer genau durchgeführt werden. Naiv würde der Code dazu ungefähr so aussehen:
Das Problem ist, dass das Zurücksetzen des Timers nur eine begrenzte Zeit dauert. Dies verursacht zwei Probleme:
Die gemessenen Zeiten wären abhängig von Ihrer Implementierung um einige 100 ns falsch. Sie sollten jedoch durchweg falsch sein. IE falsch um genau den gleichen Betrag jedes Mal. Dies bedeutet, dass Sie dies leicht kompensieren können, indem Sie jeder Messung eine kleine Menge hinzufügen.
Es würde eine Mindestzeit geben, die Sie messen könnten. Wenn ein Impuls 100 ns nach dem vorherigen eintritt, werden Sie ihn wahrscheinlich verpassen. Ich weiß nicht, ob Sie in der Software etwas dagegen tun können. Sie müssen einen Mikrocontroller finden, der mehrere Impulse in der Hardware verarbeiten kann.
Welcher Mikrocontroller kann mehrere Impulse in der Hardware verarbeiten? Die Cypress PSoC ! Dies ist ein Mikrocontroller, der auch konfigurierbare digitale Blöcke enthält. Dies bedeutet, dass Sie problemlos 6 separate Timer mit jeweils 60 MHz verwenden können, um eine Auflösung von mehr als 20 ns zu erzielen.
Hier ist ein Beispiel, das ich Ihnen schnell gezeigt habe, wie Sie damit umgehen können. Ich habe 6 separate Timer, die alle von der Bustaktung abhängig sind und bis zu 67MHz erreichen können. Es gibt einen Trigger-Pin, der alle Timer startet, und 6 weitere Pins, von denen jeder ein Capture-Ereignis im Timer auslöst. Über ein Statusregister kann Ihr Code überwachen, welche Timer einen Impuls erfasst haben. Der Code kann die Werte aus den Timern auslesen.
quelle
Überarbeitete Antwort : Ein schnelles digitales Speicheroszilloskop oder möglicherweise ein Frequenzzähler.
Alte Antwort :
Einfach ausgedrückt: "Der schnellste Mikrocontroller, den Sie finden können", da Sie umso genauer sind, je schneller Sie takten / abtasten. MSP430 sind keine schnellen Geräte.
STM32-Geräte sind 32-Bit-fähig und werden schneller ausgeführt. Außerdem sind ähnlich günstige Entwicklungsboards und -tools verfügbar, aber selbst das ist im Vergleich zu einigen der leistungsstärkeren Geräte (Raspberry Pi @ 800MHz - 1GHz (Übertaktet)) recht langsam. Im Allgemeinen ist der Prozessor jedoch umso komplizierter, je schneller Sie vorgehen, sodass die Lernkurve einen Kompromiss eingehen kann.
Hinzugefügt: Benji hat recht, Sie benötigen (möglicherweise) auch einen genauen Oszillator für das Mikro, wenn Sie sehr genaue Messungen wünschen (Sie geben in Ihrer Frage nicht wirklich Fehlergrenzen an).
quelle