Forum: Mikrocontroller und Digitale Elektronik Und nochmal Drehzahlmesser


von basti12345 (Gast)


Lesenswert?

Hallo ich würde gerne als nächstes Projekt ein Drehzahlmesser bauen.
Mir ist nur noch nicht so richtig der Programmablauf klar und hoffe ihr 
könnt mir ein wenig auf die Sprünge helfen.

Ich würde jetzt einen Timer nehmen und diesen in ein interrupt springen 
lassen z.b. alle 100ms.In der ISR möchte ich dann die Signale messen und 
dann die Hochrechnen.

Was ich jetzt nicht so richtig verstehe wie ich in Bascom progrmmiere 
mehrere Signale auszulesen.
Weil das Signal wird ja eventuell mehrmals in der Routine kommen

von G.N. (Gast)


Lesenswert?

Erstmal mußt du dir klar werden, ob du die Drehzahl des Mondes oder 
einer Ultrazentrifuge messen möchtest. Davon hängt u.U. die Art des 
Sensors und die Vorgehensweise ab.

von Karl H. (kbuchegg)


Lesenswert?

basti12345 schrieb:

> Ich würde jetzt einen Timer nehmen und diesen in ein interrupt springen
> lassen z.b. alle 100ms.In der ISR möchte ich dann die Signale messen und
> dann die Hochrechnen.

Ist eine Möglichkeit.

> Was ich jetzt nicht so richtig verstehe wie ich in Bascom progrmmiere
> mehrere Signale auszulesen.

Du willst sie ja gar nicht 'auslesen'. Du willst zählen, wie oft das 
'Signal' vorhanden war. Und nach deinen 100ms, im Timerinterrupt, 
wertest du diese Anzahl aus.

von basti12345 (Gast)


Lesenswert?

Oder könnte man das auch mit INT machen? Timerstand speichern neuen 
Timerstand nehmen und abziehen dann hatte ich ja das ergebniss in 
Timertakten und könnte es eventuell genauer ausrechen???

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Normalerweise brauchst du eine Kombination:
Ein EXTINT wird vom Drehzahlgeber ausgelöst, in dem zählst du nur eine 
Variable hoch. Der Timerinterrupt liest die Variable, übergibt sie als 
Ergebnis und setzt sie dann wieder auf Null.

von Karl H. (kbuchegg)


Lesenswert?

basti12345 schrieb:
> Oder könnte man das auch mit INT machen? Timerstand speichern neuen
> Timerstand nehmen und abziehen dann hatte ich ja das ergebniss in
> Timertakten und könnte es eventuell genauer ausrechen???

Ah.
Jetzt fängst an interessant zu werden. Jetzt beginnst du nachzudenken.

Welche Möglichkeiten hast du
* du kannst eine gewisse Zeit vorgeben und abzählen, wieviele
  Pulse du in dieser Zeit zählen kannst
* du kannst das alles aber auch umdrehen und die Zeit zwischen
  2 Pulsen messen und daraus die Frequenz errechnen.

Welche Vor/Nachteile hat jedes der beiden Verfahren? Wann wird man daher 
welches Verfahren nehmen? Tip: es hängt mit der zu messenden 
Frequenz/Drehzahl zusammen. Und noch ein Tip: Es hängt auch damit 
zusammen, dass du bei jedem der beiden Verfahren einen Messfehler machen 
wirst. Denn zb im ersten Verfahren, beginnt ja dein Zeitfenster nicht 
mit dem Beginn eines Pulses bzw. mit dem Ende eines Pulses. Wenn dein 
Zeitfenster 100ms groß ist, und von einem Puls zum nächsten 120ms 
vergehen, dann zählst du in einem Zeitfenster 1 Puls und im nächsten 
aber 0.

von Jobst M. (jobstens-de)


Lesenswert?

Hier, noch ein wenig Futter ...

Beitrag "AVR asm - Befehl nur jedes 2. mal ausführen"


Gruß

Jobst

von basti12345 (Gast)


Lesenswert?

Ja danke erstmal für eure Antworten.Jetzt bin ich schonmal etwas weiter. 
Ich habe jetzt noch was über die Sache nachgedacht.Also ich werde einen 
Timer mit INT die Pulse zählen lassen.Einen anderen Timer lasse ich dann 
einfach in einer bestimmten Zeit überlaufen um die Werte auszulesen.Dann 
werde ich noch 4-8 Ergebnisse vergleichen und einen Durchschnittswert zu 
ermitteln.Die Ausgabe ans LCD werde ich dann noch ein wenig begrenzen 
damit sie nicht so extrem hin und her springt.

Eine frage hätte ich noch sollte man das umrechnen besser im 
Hauptprogramm machen oder in der ISR???

von Karl H. (kbuchegg)


Lesenswert?

Hauptprogramm

Die goldene Regel lautet: In einer ISR wird nur das absolut Notwendige 
gemacht.

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.