STM32: Timer-Modi

Ist es möglich, die Frequenz eines analogen Eingangssignals mit dem Eingangserfassungsmodus von Timern in STM32F4 zu messen? Wenn nicht, was ist dann die Alternative? Vielen Dank im Voraus.

Wie sieht Ihr analoges Signal im Vergleich zum digitalen Signal aus, das der Timer-Capture-Pin sehen möchte?

Antworten (1)

Einführung

Es sieht so aus, als ob Sie versuchen, einen Frequenzzähler zu bauen . Sie können ein solches Gerät mit dem Timer-Modul in einem Mikrocontroller realisieren. Beachten Sie, dass es einige Einschränkungen in Bezug darauf gibt, wie schnell ein Signal beobachtet werden kann.

Analoge Verarbeitung

Zunächst müssen Sie das Eingangssignal konditionieren. Um zu wissen, was erforderlich ist, müsste ich zuerst etwas mehr über Ihr Signal wissen, aber ich gehe davon aus, dass Sie versuchen, die Frequenz von etwas zu messen, das im Grunde eine Sinus- / Rechteckwelle ist, möglicherweise mit einem gewissen DC-Offset. Wir müssen von diesem allgemeinen analogen Signal zu einer digitalen Rechteckwelle gelangen, die dieselben Flanken darstellt. Wir können das mit der folgenden Komparatorschaltung tun:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Mikrocontroller-Konfiguration

Konfigurieren Sie Ihren Mikrocontroller so, dass er hochzählt, bis er eine steigende Flanke am Ausgang des Komparators sieht. Erhöhen Sie die Timer-Frequenz so hoch wie möglich, um die gewünschte Frequenzauflösung zu erreichen. Sie sollten auch einen Interrupt bei einem Erfassungsereignis auslösen, damit Sie etwas mit den neuen Daten tun können.

Algorithmus

Wenn der Interrupt ausgelöst wird, greifen Sie den Wert im Erfassungsregister und berechnen Sie die Frequenz des Signals wie folgt:

F ich N = F T ich M e R C Ö u N T

Sie können dann mehrere dieser Messwerte mitteln.