mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ermitteln der Schlittengeschwindigkeit eines Druckers


Autor: Hans M. (fuxdancer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  alle zusammen!

Bin gerade an der Arbeit an einem Schulprojekt.
Habe hierfür von einem Drucker den Schlitten samt DC-Motor ausgebaut und 
an die Welle des Motors den Drehencoder STEC12E06 (sendet 14 Impulse pro 
Motorumdrehung) gehängt zur Bestimmung der Position des Motors durch das 
Zählen von Impulsen. Den Motor steuere ich mit einem 
L6203-H-Brücken-Baustein an.
Als nächsten Schritt in meinem Projekt muss ich die 
Momentangeschwindigkeit des Motors bestimmen mit Hilfe des PIC18F4550 in 
der Programmiersprache C.
Habe hierfür folgende Überlegung getätigt:
habe schon vorher bestimmt, dass ein Impuls des Drehencoders fast genau 
1mm Fahrtstrecke des Schlittens entspricht. Nun müsste ich nur noch die 
Zeit messen können, die z.B. nach 5 Impulsen des Encoders vergeht. So 
könnte ich dann einfach v=s/t rechnen und schon hätte ich die 
Durchschnittsgeschwindigkeit über eine kurze Strecke, welche eigentlich 
keine großen Abweichungen zur Momentangeschwindigkeit aufweisen sollte 
oder?
Optimaler wäre es für mich aber noch die Momentangeschwindigkeit zu 
bestimmen, doch diese kann man normalerweise nur durch Differenzieren 
ermitteln soweit mir bekannt ist.

könnt ihr mir vielleicht mit Hilfe eines C-Codes weiterhelfen, wie ihr 
die Momentangeschwindigkeit ermitteln würdet mit meinen vorhandenen 
Mitteln und wenn das nicht geht, einfach wie man die benötigte Zeit für 
die Durchschnittsgeschwindigkeit programmtechnisch ermitteln kann 
(vielleicht durch timer0?!?)

Mit Dank im Vorraus
lg

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Momentangeschwindigkeit dürfte recht genau mit der Frequenz der 
Encoderimpulse korrelieren.

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

Bewertung
0 lesenswert
nicht lesenswert
> STEC12E06
Aus dem DB:
Elektrische Lebensdauer: Encoder 30000 Zyklen x 2
Den wirst du mit deinem Motor ziemlich schnell am Ende haben  ;-)

Such mal nach optischen Drehimpulsgebern zur Abfrage einer Motorwelle...

Autor: Hans M. (fuxdancer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Lothar Miller
ist mir wohl bewusst, dass dieses Bauteil nicht ewig halten wird, aber 
mir geht es nur um die Erstellung eines Prototyps und ich habe zu wenig 
Zeit, um noch Alternativen für die momentanen Bauteile zu finden!

@ Rufus t. Firefly
kannst du mir vielleicht einen ungefähren Programmcode dafür zeigen?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du zählst eine gewisse Zeit lang die eingehenden Impulse und kannst so 
deren Frequenz berechnen.

Nehmen wir mal der Einfachheit halber eine Dauer von 1 Sekunde an -- 
dann entsprechen 10 Impulse einer Frequenz von 10 Hz, und bei Deinem 
Aufbau einer Geschwindigkeit von 10 mm/sec.

Autor: morph1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unfug

du hängst den encoder an das capture modul des pic, zählst die zeit 
zwischen 2 flanken mit interrupt und der rest is mathe.

vorteile: du brauchst nicht eine gewisse zeit lang zählen, sondern hast 
das ergebnis sofort nach einem schritt.

nachteil: eventuelle überläufe bei extrem langsamen vorschüben und 
probleme wenn der encoder prellt.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian K. schrieb:
> Habe hierfür von einem Drucker den Schlitten samt DC-Motor ausgebaut und
> an die Welle des Motors den Drehencoder STEC12E06

Ich schätze, diesem völlig ungeeigneten Encoder einigermaßen verläßliche 
Positionsangaben zu entlocken dürfte sogar für nen Softwareprofi recht 
sportlich sein.
In dem Drucker muß doch aber schon irgendein Sensor drin gewesen sein, 
der ist bestimmt viel besser geeignet.


> könnt ihr mir vielleicht mit Hilfe eines C-Codes weiterhelfen, wie ihr
> die Momentangeschwindigkeit ermitteln würdet mit meinen vorhandenen
> Mitteln und wenn das nicht geht, einfach wie man die benötigte Zeit für
> die Durchschnittsgeschwindigkeit programmtechnisch ermitteln kann
> (vielleicht durch timer0?!?)

Du kannst pro Puls die Zeit messen, dann hast Du die Geschwindigkeit.
Da dieser Encoder aber prellt wie Sau, wird das nicht einfach.

Wenn Du nur noch wenig Entwicklungszeit hast, nimm einen optischen 
Encoder.
Ein ungeeignetes Bauteil spart keine Zeit sondern kostet das 10-fache an 
Zeit.


Peter

Autor: PJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Drehencoder aus einer alten Maus wäre sicher besser geeignet und 
wahrscheinlich ähnlich schnell und billig verfügbar.

Autor: Hans M. (fuxdancer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ PJ

du meinst also den drehencoder aus dem mausrad?
ist dieser auch ähnlich anzusteuern wie mein bisheriger drehencoder?
kann man hier auch flanken zählen mit capture compare?

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]
  • [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.