Forum: Mikrocontroller und Digitale Elektronik Verständnissfrage zu gate time


von Jens F. (neiwirger)


Lesenswert?

Hallo zusammen,
ich habe die suche des Forums bereits bemüht,
ausserdem habe ich die Artikel über die Timer und Counter Durchgelesen 
und nichts gefunden.

Ich habe ein Programm vorliegen mit welchem man die Windgeschwindigkeit 
mittels Anemometer, Magnet an der Achse und Hallsensor am Gehäuse messen 
kann.
Dort wird der Timer gestartet und dann eine gate time von 2,5s 
abgewartet.
Anschließend wird der Timer gestoppt, der zählerstand wird ausgewertet 
und daraufhin in km/h an einem LC-Display ausgegeben.
Nun zu meiner Frage:
Was ist die Gatetime?
Meine Vermutung:
Die Gatetime diehnt dazu dem Zähler etwas Zeit zu verschaffen das er 
auch Tatsächlich ein Paar Impulse Zählen kann. Dadurch müsste sich dann 
die genauigkeit einer Messung ergeben. Anderst ausgedrückt: Durch diese 
Gate time wird festgelegt wie schnell das Messsystem auf änderungen der 
-in diesem Beispiel- Windgeschindigkeit reagieren kann.

Es würde mich freuen wenn ihr mich Korrigieren oder Bestätigen würdet 
bezüglich der Frage/Aussage.

Grüße

von STK500-Besitzer (Gast)


Lesenswert?

Jens Freiburger schrieb:
> Was ist die Gatetime?

Im Deutschen sagt man dazu "Torzeit".
Das Tor ist eine bestimmte Zeit lang offen.
Alle (Impule) die in dieser das Tor passieren, werden gezählt.

Jens Freiburger schrieb:
> Anderst ausgedrückt: Durch diese
> Gate time wird festgelegt wie schnell das Messsystem auf änderungen der
> -in diesem Beispiel- Windgeschindigkeit reagieren kann.

Jain.
Frequenzen kann man entweder dadurch bestimmen, dass die Anzahl der 
Impulse pro Zeiteinheit zählt, oder die Zeit zwischen zwei Impulsen 
misst (Periodendauer) und durch Kehrwertbildung die Frequenz daraus 
bestimmt.
Beide Methoden haben ihre Vorsteile.
Eine gewisse Zeit wird immer für die Messung benötigt.

von Jens F. (neiwirger)


Lesenswert?

Das heisst für mich das hier eine Messung im Sinne "Impulse pro 
Zeiteinheit" Vorliegt.
Wenn also der Wind zu langsam ist kann es unter umständen sein das ich 
0.0km/h angezeigt bekomme obwohl der Wind z.B. eine Geschwindigkeit von 
2km/h hätte. Das wäre für mich nicht weiter schlimm, nur 
interessehalber.

Wenn ich im gegensatz dazu eine Periodendauer Messen wollte, müsste ich 
als Beispiel den Timer so konfigurieren das er bei Steigender Flanke 
anfängt zu zählen und bei der nächsten Steigenden Flanke aufhört zu 
Zählen.
Und dann den Kehrwert f=1/T bilde.
Ich hoffe ich habe mich damit jetzt nicht ganz verlaufen.

Danke für die Antwort

von chick (Gast)


Lesenswert?

Es gibt zwei einfache Arten Frequenzen zu messen

1) Ein Zähler wird resettet, für gewisse Zeit (Gatetime) zählt er 
einkommende Impulse, danach wird er ausgelesen, berechnet wird 
Impulse/Zeit = Frequenz

2) es werden die Abstände der Impulse gemessen, ist im Prinzip ähnlich 
zu obiger Messung, ein Impuls gibt den Zähler frei, der nächste sperrt 
ihn wieder, am Zähler liegt meistens eine interen Frequenz des µP an

von Jens F. (neiwirger)


Lesenswert?

Für mich wäre die zweite Messung interessant.
Da ich bedingt durch die gate time mit erster Messung immer zwei Impulse 
Messen würde.
Ich muss sechs verschiedene Impulse Messen welche jeweis zwei mal die 
selbe ti haben und einmal tp.
So könnte ich mit der zweiten Messung die Tatsächliche Dauer der Impulse 
feststellen.

von Wolfgang (Gast)


Lesenswert?

Jens Freiburger schrieb:
> Wenn also der Wind zu langsam ist kann es unter umständen sein das ich
> 0.0km/h angezeigt bekomme obwohl der Wind z.B. eine Geschwindigkeit von
> 2km/h hätte.

Wenn du ein Schalenanemometer hast, ist die Drehzahl proportional zur 
Windgeschwindigkeit und umgekehrt proportional zum Radius. Bei einer 
Gatezeit von 2,5s und einem Impuls/Umdrehung ist die Auflösung in km/h 
dann leicht auszurechnen, solange das Anemometer nicht auf Grund der 
Reibung stehen bleibt. Um die Auflösung zu erhöhen, könntest du einen 
weiteren Magneten einbauen und mußt dann natürlich die Umrechnung von 
Impulszahl in Windgeschwindigkeit entsprechend anpassen.

von STK500-Besitzer (Gast)


Lesenswert?

Jens Freiburger schrieb:
> Für mich wäre die zweite Messung interessant.
> Da ich bedingt durch die gate time mit erster Messung immer zwei Impulse
> Messen würde.
> Ich muss sechs verschiedene Impulse Messen welche jeweis zwei mal die
> selbe ti haben und einmal tp.
> So könnte ich mit der zweiten Messung die Tatsächliche Dauer der Impulse
> feststellen.

Und dabei geht es immer noch um ein Anemometer?

von Jens F. (neiwirger)


Lesenswert?

Bei letzterem nicht, tut mir leid, da hätte ich ein neues Thema 
aufmachen sollen

von STK500-Besitzer (Gast)


Lesenswert?

Jens Freiburger schrieb:
> Bei letzterem nicht, tut mir leid, da hätte ich ein neues Thema
> aufmachen sollen

Dann ist die Periodenmessung natürlich genau richtig.
Bei verschiedenen AVR-Controllern gibt es dafür die 
InputCapture-Einheit.

von Neiwirger (Gast)


Lesenswert?

Nur ist mir eines beim InputCapturing nicht ganz klar:
Wenn ich die Inputcapturing methode Anwende kann ich diese ja auf eine 
Steigende oder Fallende Flanke auslösen lassen.
Wenn aber der Impuls ankommt und der Timer noch nicht Läuft bekomm ich 
ja den wert 0.
Also müsste ich den Timer bei einer Steigenden Flanke aktivieren.
Und das Input Capturing auf eine Fallende Flanke einstellen.

So wird der Timer bei Steigender flanke anktiviert -er zählt-
kommt die Fallende Flanke wird er durch das Inputcapturing gestoppt und 
der Wert in das entsprechende register kopiert. Diesen wert kann ich 
dann auslesen und eben weiterverarbeiten.

Ist diese prinzipielle denkweise so richtig? Zumindest habe ich das so 
verstanden

von STK500-Besitzer (Gast)


Lesenswert?

Neiwirger schrieb:
> Wenn aber der Impuls ankommt und der Timer noch nicht Läuft bekomm ich
> ja den wert 0.
> Also müsste ich den Timer bei einer Steigenden Flanke aktivieren.
> Und das Input Capturing auf eine Fallende Flanke einstellen.

Jain.
Man startet zuerst den Timer, der konstant durchläuft.
Wenn dann die stegende Flanke kommt, wird der aktuelle Zählerstand im 
ICRegister gespeichert und ggf. die zugehörige ISR angesprungen.
In dieser speichert man den ICR-Wert in einer anderen Variable, weil er 
bei der nächsten Flanke überschrieben werden würde, stellt man dann die 
Flankenerkennung um.
Subtrahiert man nun den ersten Wert vom zweiten, bekommt man die 
Imuplslänge heraus. Das funktioniert immer, sofern es nicht mehr als 
einen Timerüberlauf zwischen den beiden Flanken gab. Den Fall müsste man 
dann noch explizit abfangen. Wenn allerdings die beiden Flanken 
innherhalb eines Timerdurchlaufs auftreten ist das kein Problem.
Warum man sich keinen Kopf über die Rechnung machen muss? Der Zahlenraum 
des Timers ist beschränkt...

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.