Maedler kannt ich nicht ... Besten Dank für alles!
Maedler kannt ich nicht ... Besten Dank für alles!
Am Freitag kamen die Schrittmotoren, der Motortreiber und das USB/I2C-Interface an. Der Schrittmotortreiber (iSMT von ELV) benützt einen TMC223. Ich habe mir das Datenblatt zu dem Chip besorgt und durchgelesen.
Leider gibt's ein paar Verständnisprobleme meinerseits damit. Um hier niemandem Löcher in den Bauch zu fragen ... kann mir jemand eine Quelle für das Ansprechen von Schrittmotoren über I2C angeben, für Anfänger? - Die hauptsächliche Schwierigkeit besteht darin, den Motor eine bestimmte Anzahl Umdrehungen lang laufen zu lassen, um ihn dann zu stoppen. Ich nehme an, dies sollte über den Parameter "Target Position" möglich sein. Der Motor verhält sich aber äusserst seltsam diesbezüglich ... Besten Dank im Voraus!
Hast du dir die Sequenzliste, die man Downloaden kann, angeschaut? Vielleicht kannst du da die Sequenzen herauslesen. Die Datei kannst du mit dem normalen Editor öffnen falls du HTerm nicht hast und nicht downloaden willst.
Bei diesem DB steht auf S37 wie man eine bestimmte Position anfährt. Ich bin mir aber nicht sicher ob man Byte 2 und 3 auch senden muss oder nicht. Das könntest du eventuell aus der Sequenzliste herauslesen.
Wie steuerst du den Treiber an? vom PC oder µC?
MfG Hannes
Hallo Hannes,
HTerm hab' ich bereits installiert, und alles läuft soweit. Ich verwende das iSMT und das USB/I2C von ELV via PC, zusammen mit einem kleinen Schrittmotor (bipolar, 0,8A). Gestern habe ich mir die Datenblätter vom TMC223 und dem Baugleichen AMIS30624 zu Gemüte geführt. Wenn ich mir viel Mühe gebe, verstehe ich genug davon, um damit zu arbeiten
Im von Dir ebenfalls angegebenen DB steht zwar auf Seite 44, dass der TMC223 keinen velocity mode unterstütze, allerdings ist es möglich mit dem Befehl "97" (vollständige Sequenz: s [adresse] 97 p) den Motor kontinuierlich anzutreiben. Das Problem besteht darin, dass dabei der Befehl "GetFullStatus2" die aktuelle Position nicht ausgibt. Dies ist nur der Fall, wenn ich die target position auf's Maximum (32767) setze und den Motor antreibe.
Eigentlich benötigte ich ein Skript, welches kontinuierlich die aktuelle Position des Motors ausliest und diese zurücksetzt, bis die gewünschte Anzahl Umdrehungen erreicht ist.
Kannst Du mir sagen, ob dies mit HTerm möglich ist? Bisher habe ich es nur geschafft "starre" Befehlsequenzen abzuspeichern und aufzurufen, nicht aber Rückgabewerte des Chips auszulesen und zu verarbeiten ...
Besten Dank im Voraus!
Patrick
Ich kenne HTerm jetzt nicht aber du könntest z.B. mit Python oder Processing (eigentlich Java, aber programmiert sich wie C++) versuchen die Daten von über den seriellen Port zu schreiben/lesen. Das geht ganz gut, außerdem kannst du dir deine Anwendung zurechtschneidern wie du sie gerne hättest --> kannst also auch die Daten verarbeiten und nicht "nur auslesen"Kannst Du mir sagen, ob dies mit HTerm möglich ist? Bisher habe ich es nur geschafft "starre" Befehlsequenzen abzuspeichern und aufzurufen, nicht aber Rückgabewerte des Chips auszulesen und zu verarbeiten ...
Ist eben nur eine Lösung wenn du Lust hast dir ein eigenes Script / Programm zu schreiben.
MfG Torrentula
Nach einer Info-Odysee bin ich gerade dabei, mir die Processing-IDE herunterzuladen. Ich werde später 'mal etwas damit 'rumspielen ... Danke für den Tipp!
Ok, nach tagelangem Rumprobieren muss ich mich wohl damit abfinden, dass das iSMT schlicht nicht mit Processing angesprochen werden kann. Ich würde deshalb das Controllerboard gerne auswechseln. Ich würde mir ein Arduino UNO R3 und ein Adafruit als Schrittmotortreiber zulegen. Der Grund für die Wahl von Arduino ist v.a. die Nähe zu Java, was die IDE betrifft, damit ich nicht extra noch eine weitere Programmiersprache lernen muss.
Gibt's hier zufälligerweise Arduino-Erfahrene, die mir allenfalls weiterhelfen könnten, wenn's 'mal brennt ...?![]()
Lesezeichen