Forum: Mikrocontroller und Digitale Elektronik langsame Drehzahlen messen


von Heinz Tinkl (Gast)


Lesenswert?

Hallo erstmal,


ich habe an meinem C164 einen Motor hängen, den ich per Tastendruck in 
10 verschiedenen Stufen bis auf 230 U/min fahren kann. Auf der Welle 
befindet sich eine Zahnscheibe mit 30 Zähnen, welche eine 
Gabellichtschranke unterbricht um so die Drehzahl messen zu können.

Ich habe mir das jetzt so gedacht...

1. Wenn ich größer als Stufe 0 bin (Motor dreht sich also schonmal) 
sollen die Signale der Lichtschranke einfach gezählt werden, und ab 
einem bestimmten Timerinterrupt, welcher eine bestimmte Zeit vorgibt 
soll dann die Drehzal berechnet werden.

Das Problem das ich sehe, ist die Tatsache daß in Stufe 1 z.b. die 
Drehzahl sehr langsam ist. Wie würdet ihr bei so einem Problem vorgehen.

Theoretisch muß die Umdrehungsausgabe auf dem Display ja etwas 
Zeitverzögert ablaufen, um nicht totalen Schwachsinn bei niedrigen 
Drehzahlen auszugeben.

Danke für ihre Aufmerksamkeit :)

von Uwe .. (uwegw)


Lesenswert?

Bei niedrigen Drehzahlen ist es besser, die Zeit zwischen zwei Impulsen 
der Lichtschranke zu messen. Entweder durch schnelle Abtastung in einem 
normalen Timer-Interrupt, oder über die Capture-Funktion.

von Karl H. (kbuchegg)


Lesenswert?

Heinz Tinkl schrieb:

> Das Problem das ich sehe, ist die Tatsache daß in Stufe 1 z.b. die
> Drehzahl sehr langsam ist. Wie würdet ihr bei so einem Problem vorgehen.

Das Messprinzip umdrehen.

Nicht der Timer fungiert als Tor, wieviele Pulse gezählt werden, sondern 
umgekehrt: Die Anzahl der Timerpulse zwischen 2 Pulsen von deiner 
Lichtschranke zählen.

von Tom E. (tkon)


Lesenswert?

Was spricht dagegen einfach die Zeit zwischen
Lichtschranke offen - Lichtschranke geschlossen
zu messen und anschließend hochzurechnen wieviel Zeit für alle notwendig 
wären?

von Olof G. (ole)


Lesenswert?

Moin,

also ich zähle generell lieber, weil man dann in einem festen Zeitraster 
arbeiten kann.
Und bei z.B. 20u/min und 30 Zähnen kommst du ja schon auf 10Hz.

Wenn du also im Raster von 0,1s den Counter ausliest, haste 1 Count 
drauf. Musst halt schauen, dass man bei der Höchstdrehzahl nicht in den 
Overflow vom Timer läuft, ODER dies gezielt nutzen um eine weitere 
Variable hochzuzählen. (So kann man auch nen 8-bit Timer dafür nehmen)

Die erreichbare Auflösung muss man sich mal überlegen (falls es denn 
wichtig ist) und dann evtl. das Zeitraster (auch je nach Anforderung) 
verlängern.

Ich habe mit diesem Prinzip eine Regelung für einen DC-Mot programmiert, 
die von so 150 U/min bis 18000 U/min wunderbar arbeitet und sehr sauber 
Drehzahlschwankungen durch äußere Lasten ausregelt, aber das ist OT...

Wollte nur sagen, auch das Zählen geht bei niedrigen Drehzahlen...


Gruß,

Olof

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.