Forum: FPGA, VHDL & Co. Geschwindigkeit ermitteln


von Tim (Gast)


Lesenswert?

Hallo zusammen hab da mal eine Frage..

ich will die Geschwindigkeit einer Maschine berechnen (rpm)..

hab einen 12 Bit wert der quasi meine strecke ist, jetzt benötige ich 
die Zeit um eine Geschwindigkeit zu ermitteln gibt es eine Möglichkeit 
einen Zeit mitlaufen zu lassen?

meine idee ist es einen counter mit laufen zu lassen der bei erreichen 
des nächsten Digits mit dem Takt multipliziert wird und mir so eine Zeit 
ausgibt..

gibt es vielleicht noch eine leichtere lösung?

von Joachim B. (jojo84)


Lesenswert?

Das hängt u.a. von der Frequenz ab. Bei Frequenzen <1 Hz könnte es 
einfacher sein sich mit einer Stoppuhr neben die Maschine zu stellen...

von Floh (Gast)


Lesenswert?

Tim schrieb:
> Hallo zusammen hab da mal eine Frage..

1. Streich mal alle Gedanken über das Projekt aus deinem Kopf.
2. Lies dir deine Fragestellung durch.
3. Kannst du damit was anfangen?

von Tim (Gast)


Lesenswert?

ne die Frequenz ist im MHz bereich

von Joachim B. (jojo84)


Lesenswert?

Tim schrieb:
> ne die Frequenz ist im MHz bereich

Poste mal bitte ein Bild von der Maschine!

von Tim (Gast)


Lesenswert?

Ja ich kann damit was anfangen.. ein Drehgeber (12 bit) gibt mir die 
lage und dadurch habe ich eine strecke jetzt brauche ich nur noch eine 
Zeit um die Geschwindigkeit zu ermitteln..

von Floh (Gast)


Lesenswert?

Tim schrieb:
> ein Drehgeber (12 bit) gibt mir die
> lage und dadurch habe ich eine strecke

Ein Drehgeber gibt dir einen Winkel an.
Dann einfach in einem definierten Zeitintervall die Winkeländerung 
aufnehmen, dann hast du deine Winkelgeschwindigkeit.

von Joachim B. (jojo84)


Lesenswert?

Wenn dich potientielle Helfer darauf hinweisen, daß deine Fragestellung 
nicht konkret genug ist, dann solltest du die Fragestellung überarbeiten 
und nicht verteidigen.
Dein oller Encoder gibt dir (mit großer Wahrscheinlichkeit) keine Lage, 
sondern höchstens eine Frequenz.
Aber mal ehrlich: angenommen die Maschine dreht mit 1 MHz (ähm...) und 
du hast 12 Bit, dann kommen die Signale vom Drehgeber mit 4,096 * 10^9 
Hz, also über 4 Gigahertz. Damit solltest du vielleicht lieber ins 
HF-Forum...

von Tim (Gast)


Lesenswert?

erstmal danke für die schnellen antworten..

du hast recht ein Drehgeber gibt mir einen Winkel aus und mit hilfe 
eines Zeitintervalles kann ich die Winkelgeschwindigkeit berechnen..

mein Problem ist einfach das in eine Zeit umzurechnen..

deswegen die idee mit dem counter der mir sobald der nächste Winkel (Bit 
Wert) erreicht ist mir eine Zeit ausgeben soll. Da mein FPGA mit 25MHz 
Taktet wollte ich den counter hochzählen lassen und den wert mit 40us 
(25MHz) multiplizieren und so hätte ich eine Zeit und könnte so 
berechnen wie schnell er sich dreht als rpm..

Die Maschine (Reluktanzmaschien) die ich habe, hat zunächst eine 
konstante Drehzahl wird jedoch eine Last angehangen würde sich die 
Maschine langsamer drehen also die Winkelgeschwindigkeit geringer werden 
dies wiederrum möchte (muss)ich Regeln...

von Floh (Gast)


Lesenswert?

Tim schrieb:
> Die Maschine (Reluktanzmaschien) die ich habe, hat zunächst eine
> konstante Drehzahl wird jedoch eine Last angehangen würde sich die
> Maschine langsamer drehen also die Winkelgeschwindigkeit geringer werden
> dies wiederrum möchte (muss)ich Regeln...

Deine Denke versteh ich nicht ganz. Bei einem Reluktanzmotor gibst du ja 
über die Schaltschritte der Wicklungen die Geschwindigkeit schon vor.
Jetzt hat der Rotor 2 Möglichkeiten:
1. er dreht mit in der eingestellten Geschwindigkeit
2. er "schlupft" und macht wirres Zeug.
:-)
Außerdem brauchst du ja wahrscheinlich sowieso schon eine Art 
Rotorpositionserkennung, um die Weiterschaltung der Spulen zu steuern. 
Warum nicht einfach die mitzählen, um auf die Geschwindigkeit zu kommen?

von Tim (Gast)


Lesenswert?

Auch jetzt hast du wieder recht :)

ich werde den Rotor Ausrichten müssen umd einen Start Punkt zu haben und 
von da an werde ich die Spulen abhängig von der Lage des Drehgebers bzw. 
Rotors bestromen damit ein sauberer umlauf ermöglicht wird.

Jedoch hab ich da noch lange keine genaue angabe der Drehgeschwindigkeit 
im moment würde sie sich einfach nur drehen abhängig davon wie stark ich 
die Spulen bestrome..

wenn jetzt aber die Maschine belastet wird, würde sich die 
Drehgeschwindigkeit ändern das will ich erfassen!!! um dann den Strom so 
zu regeln das sie sich wieder so schnell dreht wie vorher.

deshalb muss ich die Drehgeschwindigkeit bzw. Winkelgeschwindikeit 
ermitteln damit ich das darüber regeln kann..

von Floh (Gast)


Lesenswert?

Tim schrieb:
> wenn jetzt aber die Maschine belastet wird, würde sich die
> Drehgeschwindigkeit ändern das will ich erfassen!!!

Was für einen Reluktanzmotor hast du denn?
SR, Asynchron oder Schrittmotor?

von Tim (Gast)


Lesenswert?

gibt es eine asynchrone Reluktanzmaschine überhaupt :) na ja wie auch 
immer.

ist eine geschaltete Reluktanzmaschien also Schrittmotor

von Floh (Gast)


Lesenswert?

Tim schrieb:
> ist eine geschaltete Reluktanzmaschien also Schrittmotor

Ok.
> wenn jetzt aber die Maschine belastet wird, würde sich die
> Drehgeschwindigkeit ändern das will ich erfassen!!!

Du hast ja dann Positionsgeber, um den Zeitpunkt fürs 
Wicklungenumschalten herauszufinden. Un du willst eine konstante 
Geschwindigkeit haben.

Also musst du den Strom so regeln, dass die Positionsgeber im im selben 
Takt anschlagen. Dafür musst du nichtmal wirklich die Geschwindigkeit 
wissen, sondern nur die Zeit, die du für einen Schaltwechsel brauchst.
So wäre das Schaltverhalten direkt mit der Stromregelung 
zusammengeführt.

von Tim (Gast)


Lesenswert?

Also das mit der Konstanten Geschwindigkeit ist nur halb richtig.. es 
wird schon verschiedene Geschwindigkeitsstufen geben aber bei änderung 
der Last soll sich die Drehgeschwindigkeit der aktuellen stufe nicht 
ändern.. und ja mit Hilfe des Drehgebers hab ich die genauen Punkte wann 
die Wicklungen geschaltet werden.
ich finde deine Idee ist ein zu großer Reglungtechnischer Aufwand da 
gefällt mir meine lösung mit der Messung der Geschwindigkeit besser :D

Gibt es denn keine einfach Möglichkeit einen Timer zu starten der mir 
die Zeit misst bis der bei der nächsten Position ist? das reicht mir ja 
schon?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tim schrieb:
> Hallo zusammen hab da mal eine Frage...
Was ist denn das hier für eine Salamitaktik?
Das dauert erst mal 1 1/2 Stunden und 13 Beiträge, bis so etwa mal 
herausgekommen ist, was da gemacht werden soll, und dann ist immer noch 
eine Frage ungeklärt:  In welcher Beschreibungssprache?

Tim schrieb:
> Gibt es denn keine einfach Möglichkeit einen Timer zu starten der mir
> die Zeit misst bis der bei der nächsten Position ist? das reicht mir ja
> schon?
Doch. Das ist sehr einfach.
Nur ist eine anschliessende Umrechung in U/min mit Verlaub unnötig und 
unsinnig, weil kein Teil der Prozesskette damit etwas anfangen kann 
(ausser einem Menschen, der aber normalerweise nicht teilnimmt).

von Harald Wilhelms (Gast)


Lesenswert?

Tim schrieb:
> ne die Frequenz ist im MHz bereich

Ein Motor mit einer drehgeschwindigkeit im MHz-Bereich würde ich
wirklich gern mal sehen. M.W. hört das irgendwo bei 5kHz auf.
Gruss
Harald

von Tim (Gast)


Lesenswert?

oh sorry in VHDL..

also es wird später schon ein mensch die U/min sehen.. für das Programm 
ist es natürlich unwichtig..

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tim schrieb:
> ein Drehgeber (12 bit) gibt mir die lage und dadurch habe ich eine
> strecke jetzt brauche ich nur noch eine Zeit um die Geschwindigkeit
> zu ermitteln..
Ja, nun: eine Zeit ist im FPGA einfach ein Zähler, der mit dem 
Systemtakt getaktet wird. Und dann mußt du nur beim Zurücksetzen des 
Zählers die Ausgangsposition speichern, anschliessend den Zähler bis zu 
seinem Endwert hochlaufen lassen, dann die gespeicherte Position von der 
aktuellen abziehen, und damit hast du die Geschwindigkeit (=Strecke pro 
Zeit). Der Trick: wenn du die Zeit günstig wählst, mußt du ausser dieser 
Subtraktion nichts mehr rechnen, denn alle Umrechungen (von Inkrementen 
nach Winkel nach Weg) lassen sich in der Messzeit unterbringen...

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.