Forum: Mikrocontroller und Digitale Elektronik Ermitteln der Schlittengeschwindigkeit eines Druckers


von Hans M. (fuxdancer)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Momentangeschwindigkeit dürfte recht genau mit der Frequenz der 
Encoderimpulse korrelieren.

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


Lesenswert?

> STEC12E06
Aus dem DB:
1
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...

von Hans M. (fuxdancer)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von morph1 (Gast)


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.

von Peter D. (peda)


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

von PJ (Gast)


Lesenswert?

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

von Hans M. (fuxdancer)


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?

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.