Forum: Mikrocontroller und Digitale Elektronik Wie messe ich Zeit? (Pulslänge via IC)


von Jens B. (fernostler)


Lesenswert?

Hallo,

ich möchte gerne 'Zeit' Messen. Das Signal kommt aus einem LM339, also 
LOW und HIGH.

Der Impuls ist ca. 0,1 bis 1000ms lang. Wie/womit mess ich es am besten? 
Ich denke da an ein IC, aber wie?

Hat jemand mal einen groben richtungsweisenden Tipp?

von M. K. (sylaina)


Lesenswert?

z.B. mit einem µC. Einen Zähler bei z.B. steigender Flanke starten und 
bei fallender Flanke stoppen, aus den bis dahin aufsummierten Counts 
kann man dann leicht die Zeit bestimmen ;)

von Peter R. (pnu)


Lesenswert?

mit einem Logikgatter: Ein Eingang nimmt 1MHz auf, also je Mikrosekunde 
einen Takt. Der andere Eingang nimmt den zu messenden Impuls auf: 
während seiner Dauer können die durchkommenden Takte gezählt werden. Das 
Zählergebnis ist dann die Dauer in mikrosekunden.

Wenns viele Impulse nacheinadner sind, muss dann eine Steuerung dazu:

...-Nullsetzen des Zählers - freigeben des Zählers fürs Zählen - Impuls 
messen - an Anzeige übergeben, - Wartezeit zum Ablesen - Nullsetzen des 
Zählers...

da brauchts halt mehrere FF's und Verknüpfungen zusätzlich.

Selbstverständelich lässt sich das auch mit einem Kontroller lösen, 
dessen Takt per Quarz genau gemacht ist.

von Jens B. (fernostler)


Lesenswert?

Danke für die Antworten. Es geht immer nur um einen Impuls aus einem 
Comparator, das Signal ist damit dann recht sauber und logisch.

Ist ein Arduino Uno geeignet? Ich hab gelesen das dessen Zeitmessung 
nicht sehr genau soll. 3% Genauigkeit hätte ich schon gerne.

Arduino würde sonst auch gut passen weil ich die Zeit auch gerne via LCD 
angezeigt haben will.

von Ulrich (Gast)


Lesenswert?

Der Arduino Uno ist gut geeignet. Die Anforderungen sind recht gering - 
da reicht fast jedes µC Board oder µC wo man ein Display anschließen 
kann. Für 3% Genauigkeit braucht man ggf. noch nicht mal einen Quarz.

Im Prinzip gibt es auch alte Spezielle ICs für so eine Aufgabe, so das 
es auch ohne µC und Programmierung gehen würde. Allerdings sind die ICs 
relativ teuer - da ist ggf. eine µC Platine günstiger.

Viele µC haben eine Spezielle HW Funktion um Zeiten zu messen (ICP beim 
AVR bzw.  Arduino Uno). Damit sollte man auch mit dem  Arduino Uno eine 
Auflösung von wenigstens 1 µs (mit Quarz auch unter 100ns) erreichen - 
die Genauigkeit wird je nach Taktquelle bei rund 1-2% mit dem internen 
RC Takt und rund 0,01% mit einem Quarz liegen, bzw. bei kurzen Zeiten 
durch die Auflösung begrenzt.

Auch ein analoger Komparator ähnlich 1/4 des LM339 ist oft schon im µC 
drin.

von Thomas (Gast)


Lesenswert?

jan bader schrieb:
> Ist ein Arduino Uno geeignet? Ich hab gelesen das dessen Zeitmessung
> nicht sehr genau soll. 3% Genauigkeit hätte ich schon gerne.
Der Arduino Uno hat normalerweise einen Quarzoszillator?
So ein Quarz hat ungünstigstenfalls immer noch eine Genauigkeit von 
0,01%. Wenn das Programm dazu ungeschickt geschrieben ist, kann man da 
natürlich beliebig viel versauen.

von Falk B. (falk)


Lesenswert?

@ jan bader (fernostler)

>Ist ein Arduino Uno geeignet?

Ja.

> Ich hab gelesen das dessen Zeitmessung
>nicht sehr genau soll. 3% Genauigkeit hätte ich schon gerne.

Zeitmessungen sind sehr genau, 3% ist schon grottenschlecht.

>Arduino würde sonst auch gut passen weil ich die Zeit auch gerne via LCD
>angezeigt haben will.

Tu das.

High-Speed capture mit ATmega Timer

von Jens B. (fernostler)


Lesenswert?

So, bin etwas weiter....

Der Camparator steht und liefert laut Oszi wunderbare Signale. Arduino 
Uno (Kopie) ist angeschlossen und läuft mit diesem Code:

https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-18/recipe-18-8

Verstehe noch nicht ganz warum ich da immer zwei Werte bekomme, wovon 
der 2. Wert dann der ist den ich brauch. Ich werde den Code mal 
studieren...

von Jens B. (fernostler)


Lesenswert?

Das ist viel zu schwer:

https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-18/recipe-18-8

Viel, viel einfacher ist:

http://arduino.cc/en/Reference/pulseIn

Das funktioniert wunderbar mit dem Arduino UNO.

Danke für die Weichenstellung!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.