Hi zusammen,
ich studiere Informatik und arbeite an einem Projekt mit mehreren Schrittmotoren, die jeweils mit einem optischen Encoder ausgestattet sind. Ich verwende ein BigTreeTech Manta M8P V2 Board und TMC5160 Motortreiber mit Marlin-Firmware.
Aktueller Stand:
Ich habe mein Setup erfolgreich konfigurieren können (hab die
Configuration.h und die
Configuration_adv.h angepasst) und die Firmware geflasht. Die Schrittmotoren bewegen sich, und Homing mit Endstopps funktioniert einwandfrei, usw.
Ziel:
Ich muss mit den Encodern über SPI mit dem TMC5160-Treibern kommunizieren (um Informationen über die Abweichung meiner Motoren zu erhalten, um diese später zu korrigieren).
Die library
TMCStepper.h (Link: [
teemuatlut.github.io]) scheint Funktionen (
ENC_STATUS(),
ENC_DEVIATION(), usw.) zu bieten, die ich in Marlin aufrufen muss.
Im Moment möchte ich
M122 verwenden (es zeigt TMC-Debugging-Informationen an: [
marlinfw.org]), damit ich den Status/Abweichungswert meiner Encoder lesen kann (sobald ich das getan habe, sollte ich in der Lage sein, den Rest zu tun...).
Herausforderung:
Ich bin mit dem Marlin-Quellcode ziemlich überfordert (aufgrund mangelnder Programmierkenntnisse in diesem Bereich...
) und brauche Hilfe, um herauszufinden wie ich die Datei
M122.cpp erweitern kann.
Hier ist eine grobe Vorstellung von dem, was ich zu tun versuche:
void GcodeSuite::M122() {
[...]
uint8_t enc_status = driver_x.ENC_STATUS(); // das funktioniert natürlich nicht und ich muss herausfinden, wie man das macht...
if (enc_status & 0x01) {
SERIAL_ECHOLNPGM("Encoder not ready");
} else {
SERIAL_ECHOLNPGM("Encoder ready");
}
[...]
uint32_t enc_deviation = driver_x.ENC_DEV(); // sowas halt...
SERIAL_ECHOLNPGM("deviation enc. x: ")
SERIAL_ECHOLN(enc_deviation);
[...]
}
Mit den Encodern zu kommunizieren ist für mein Projekt echt wichtig.
Also: Wie kann ich korrekt auf die Encoder-Funktionen des TMC5160-Treibers in Marlin zugreifen und sie verwenden? Für Hinweise oder Beispiele wäre ich sehr dankbar (insbesondere für die Modifizierung des M122-Befehls für den Zugriff auf Encoder-Informationen).
Vielen Dank im Voraus!
4-mal bearbeitet. Zuletzt am 23.05.24 11:56.