www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Geschwindigkeit ermitteln


Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne die Frequenz ist im MHz bereich

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim schrieb:
> ne die Frequenz ist im MHz bereich

Poste mal bitte ein Bild von der Maschine!

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es eine asynchrone Reluktanzmaschine überhaupt :) na ja wie auch 
immer.

ist eine geschaltete Reluktanzmaschien also Schrittmotor

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Harald Wilhelms (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.