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
Die Momentangeschwindigkeit dürfte recht genau mit der Frequenz der Encoderimpulse korrelieren.
> 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...
@ 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?
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.
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.
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
Ein Drehencoder aus einer alten Maus wäre sicher besser geeignet und wahrscheinlich ähnlich schnell und billig verfügbar.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.