TMC2130 + Radds + 1.04/1.05 Firmware

Hallo,

versuche die TMC2130 Stepper im SPI-Modus am Radds Board zum Laufen zu bekommen.

Anschluss wie folgt:
SPI-Bus abgegriffen von den SD-Karten Pins:
CFG0 - MISO
CFG1 - MOSI
CFG2-CLK

CS von x im 1. Test an Digital-Pin2 von Z-Achse (Z-Achen laufen bei mir kmpl. über Extension - daher ist das frei) im 2. Test nun an Servo/PWM1 Digital Pin 5

CS von y im 1. Test an Digital Pin 3 (DIR von Z-Achse) im 2. Test jetzt an Servo/PWM 2 Digital Pin 6.

Jetzt im 2. Durchgang folgendes Erscheinungsbild.
Repetier Server an und darüber neue Firmware aufgespielt, Drucker war über USB an (Display leuchtet immer obwohl 24V noch aus), Stepper gewechselt und verpinnt, 24V an.. X und Y-Achse laufen mit neuem Setting. Toll.

Nach reboot startet das Board aber nicht mehr. Ein ähnliches verhalten war auch im 1. Durchgang. läuft kurz, aber reboot scheint nicht zu funktionieren. Jeweils getestet mit 1.04 und 1.05Dev.

Liegts am radds?

Hatte hier im Forum glaube ich gelesen, dass Radds und Due da etwas zickig sind?

Ideen?

Hatt jemand das mit der Firmware V2 mit Radds und Due hin bekommen? - Traue mich an die V2 nicht so richtig ran..

Dankeschön für Tipps.


Comments

  • V2 geht auf jeden fall viel besser mit den Treibern, da die Struktur darauf angepasst ist. Da sind ja auch einige Beispiele. Delta mit rumba32 nutzt beispielsweise die TMC2130 da sieht du also wie die zu integrieren sind. Einfach auf deinen Druckertyp in configuration.h anpassen.

    Wenn radds nicht startet liegt das gerne am eeprom. Ist eigentlich das einizige was einen stillstand verursachen kann (i2c kommunikation). Im Zweifelsfall EEPROM_MODE 0 setzen dann wird es nicht genutzt.

    Bei V1 ist hardware spi schwierig wenn es noch vom display genutzt wird. Nutz am Display besser softwrae SPI wie beim RRD Graphic Display.
  • edited January 2021
    Hi,
    vielen Dank für die schnelle Antwort. Top!
    Hab nochmal mit EEPROM_MODE 0 kompiliert. Auch hier wieder über den Rep.-Server. Alles Chico bis zum Reboot. Druckerverbindung zwischen Server und Repetier/Due kaputt. Flashen geht aber noch.

    Nutz am Display besser softwrae SPI wie beim RRD Graphic Display.--> steht irgendwo wie das geht? Habe leider keinen Plan von "Software SPI".

    #################

    kämpfe mich jetzt in die Dev. V2 ein von hier.

    und folge der Doku hier.

    1. Frage: in der platformio.ini stand per default ja schon: in Zeile 27 "default_envs = due".
    Dann passt das ja schon für den Arduino Due. - Korrekt?

    2. Gibt es auch hier die Möglichkeit in eine "Repetier.ino.arduino_due_x.bin" Datei zu kompilieren und diese über den Repetier Server auf den Due zu laden? Mein Drucker steht weit wech..

    3. Muss ich zwingend in beiden Dateien : configuration.h und configuration_io.h arbeiten - also werte anpassen?
     --> ist zumindest für mich jetzt alles nicht so leicht zu verstehen und grenzt gerade knapp an Überforderung..puh..








  • 1. Ja das ist für Programming Port. Der andere dueUSB ist dann für den native port als upload Port. Wenn du remote hochlädst ist das aber egal.
    2. Ja das geht, mach ich auch so. Die Datei steht in einem versteckten Unterordner in .pio/boards/due/... müsste das bei dir sein.
    3. Ja ist leider Technisch nicht anders möglich. Configration.h sind eher allgemeine infos, _io.h definiert die Module. Reihenfolge hängt von den Abhängigkeiten ab, aber wenn du die Vorlagen nutzt passt es. Also erst pins definieren und dann mit den pins höhere Funktionen wie Motortreiber definieren. Dann diese in noch höhere wie Extruder einsetzten. Jedes Modul entspricht eigentlich einem Hardware teil das dann immer weiter zu komplexer.

    Hinter dem include der configuration_io.h werden teilweise noch Listen mit den Modulen belegt wie Heizelemente und Motoren damit die zugreifbar sind. Bis zum Konfig-Tool wird es noch eine weile dauern und dann ist es auch ähnlich.
  • So,
    Umstellung auf Dev 2 fertig.

    Problem:
    die x und y Achse hat keine kraft. mit TMC2130 Settings mit HW_SPI.
    Bewegungen sind quasi ohne Drehmoment.
    in config.h

    #define STEPPER_FREQUENCY 100000     // Maximum stepper frequency.
    #define PREPARE_FREQUENCY 1000       // Update frequency for new blocks. Must be higher then PREPARE_FREQUENCY.
    #define BLOCK_FREQUENCY 500          // Number of blocks with constant stepper rate per second.


    /
    #define TMC_CHOPPER_TIMING CHOPPER_TIMING_DEFAULT_24V

    // true = interpolate to 256 microsteps for smoother motion
    #define TMC_INTERPOLATE true

    ---> stepps/mm hat sich mit der umstellung aber gar nicht verändert. Denke, dass die Treiber nicht vollends im SPI-Modus arbeiten? kann das sein?

    // Current used when motor stands still
    #define TMC_HOLD_MULTIPLIER 0.5
    // Reduce current on over temperature warnings by x milli ampere, 0 = disable
    #define TMC_CURRENT_STEP_DOWN 50
    // Define which data should be stored to eeprom
    #define STORE_MOTOR_MICROSTEPPING 1
    #define STORE_MOTOR_CURRENT 1
    #define STORE_MOTOR_HYBRID_TRESHOLD 1
    #define STORE_MOTOR_STEALTH 1
    #define STORE_MOTOR_STALL_SENSITIVITY 1


    config_io:

    //X-Motor
    //STEPPER_SIMPLE(XMotor, IOX1Step, IOX1Dir, IOX1Enable, endstopNone, endstopNone)
    STEPPER_TMC2130_HW_SPI(XMotor, IOX1Step, IOX1Dir, IOX1Enable, 5, 0.11, 1, 64, 900, false, 100, 8, 12500000, endstopNone, endstopNone)
    //Y-Motor
    //STEPPER_SIMPLE(YMotor, IOY1Step, IOY1Dir, IOY1Enable, endstopNone, endstopNone)
    STEPPER_TMC2130_HW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, 6, 0.11, 1, 64, 900, false, 100, 8, 12500000, endstopNone, endstopNone)

    Frage zusätzlich:
    Was ist der Unterschied zwischen _HW bzw. SW_SPI

    hatte gesehen, das bei SW-SPI die MISO MOSI CLK Pins definiert werden können --> kann ich also eigene einfach festlegen? Warum wäre das sinnvoll wenn das Boardlayout schon welche mitbringt? (Radds-Board + Arduino Due)



  • edited January 2021
    was hast du denn im eeprom stehen?

    " Warum wäre das sinnvoll wenn das Boardlayout schon welche mitbringt? (Radds-Board + Arduino Due)"

    gibt ja andere Spi baugruppen (z.b. sd-karte , display) und verschiedene spi-modi die sich zum teil in die wolle kommen und sich nicht an einem gemeinsamen spi port vertragen deshalb kann man dann die sw-spi nutzen.

  • edited January 2021
    Ich hab mich an die Pins vom SD-Anschluss angepinnt.
    Nach meinem Verständnis liefert der DUE nur einen SPI-Bus? und beim Raddsbreak out Board ist der mit den SD-Karten Anschluss verbunden.

    eproom-Auszug am Beispiel X-Achse.
    x axis print und tracel acceleration : 1000mm/s²
    X acis max. yank: 10.000mm/s
    X Microstepps: 64
    X Hybrid Treshold: 100.0
    X RMS Current 850mA
    X Stealth: 0

    x stall sensitivity wird mir im eeprom gar nicht angezeigt, nur für y, Wert ist 8. Wobei ich die Funktion ja gar nicht aktiv habe (Homing ohne endstop)

    Konsole schmeißt noch warnungen raus:

    Recv:21:26:42.637: Motor 1: Y driver overtemperature warning! Current: 1000
    Recv:21:26:43.178: Motor 1: Y driver overtemperature! Current: 1000
    Recv:21:26:45.373: Motor 0: X driver overtemperature! Current: 1000
    Recv:21:26:45.377: Motor 0: X driver overtemperature warning! Current: 1000
    Recv:21:26:46.467: Motor 1: Y driver overtemperature! Current: 1000

    hab RMS current mal von 850 auf 1000mA hochgesezt. bringt aber nix.
    Mit der Warnung wird auch das Display krissellig. in der Tat wohl störungen..

    Bin gerade noch am überlegen, ob ich im spi-modus an den Treibern noch am Poti was einstellen muss. Meine, vref war nur im stanalone modus mess.-und einstellbar..

    was wäre noch interessant?

  • edited January 2021
    da ich die tmc2130 nicht habe kann ich nur über die dokumentation gehen.

    STEPPER_TMC2130_HW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, 6, 0.11, 1, 64, 900, false, 100, 8, 12500000, endstopNone, endstopNone)

    Versuch doch mal

    STEPPER_TMC2130_HW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, 6, 0.11, 1, 64, 900, true, 0, -128, 12500000, endstopNone, endstopNone)

    Ob du für den spi-mode an den treibern jumper setzen musst kann ich nicht sagen , ich glaub da war was.
    einfach mal nachlesen (denke bei watterott ist ne info)

    EDIT:

    die overtemperature warning kann vom spi kommen , da hatte ich mit meinen tmc5160 auch mal was.
    bin dann aber auf swspi gegangen dann war soweit ich weiss ruhe.

    Ums vorweg zu nehmen , ich bin wieder bei den drv8825 gelandet ;-)

    EDIT2:

    hier fidest Du auch noch infos :





  • Siehe auch
    https://docfirmwarev2.repetier.com/GCodes/motion_gcodes#m122

    Wenn er die Daten ausliest die du gesetzt hast sollte spi stimmen. Bei der Entwicklung hab ich auch den due mit den pins an der sd karte genutzt nur anderen cs pin natürlich. Da braucht man pro Treiber einen.
  • so,

    hab das mal ausprobiert:
    STEPPER_TMC2130_HW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, 6, 0.11, 1, 64, 900, true, 0, -128, 12500000, endstopNone, endstopNone)

    und

    #ifndef SDSUPPORT // Some boards have sd support on board. These define the values already in pins.h
    #define SDSUPPORT 0 (dachte mann könne den SPI Bus für SD ausschalten oder entlasten..SD brauche ich nicht)

    leider alles ohne Erfolg.


    Send:19:12:53.104: N30 M122 D1

    Recv:19:12:53.112: Motor 0: X
    Recv:19:12:53.112: Status: No connection
    Recv:19:12:53.116: Motor 1: Y
    Recv:19:12:53.116: Status: No power
    Recv:19:12:53.116: Enabled: Yes
    Recv:19:12:53.120: RMS Current [mA]:1602 set: 900
    Recv:19:12:53.120: Max. current [mA]: 1254
    Recv:19:12:53.124: Microsteps: 0 mres: 15
    Recv:19:12:53.124: StealthChop: On
    Recv:19:12:53.128: Hybrid treshold [mm/s]: 100.00
    Recv:19:12:53.129: Stallguard sensitivity: 0
    Recv:19:12:53.132: TSTEP: -1
    Recv:19:12:53.132: TPWMTHRS: 1045
    Recv:19:12:53.133: TPOWERDOWN: 128
    Recv:19:12:53.136: IRUN: 28/31
    Recv:19:12:53.136: IHOLD: 14/31
    Recv:19:12:53.137: CS Actual: 31/31
    Recv:19:12:53.140: vsense: False
    Recv:19:12:53.140: toff: 0
    Recv:19:12:53.141: hstart: 8
    Recv:19:12:53.141: hend: 12
    Recv:19:12:53.144: Blank time: 54 tbl: 3
    Recv:19:12:53.144: IOIN: 16777215
    Recv:19:12:53.145: GSTAT: 255

    da kommen werten, SPI haut also hin - korrekte schlussfolgerung?

    dennoch immer:

    Send:19:16:49.029: N31 G28 X Y
    Recv:19:16:49.035: ok 31
    Recv:19:16:49.039: X:299.00 Y:245.00 Z:294.700 E:0.0000
    Recv:19:16:53.139: busy:processing (2)
    Recv:19:16:54.643: Motor 1: Y driver overtemperature! Current: 900
    Recv:19:16:54.647: Motor 1: Y driver overtemperature warning! Current: 900

    lese hier und da, das mit Software SPI einige weniger Probleme haben.
    Könnte ich auf die normalen SPI-Pins referenzieren - Testweise oder muss ich andere nehmen?
    hätte noch die vom Z-Stepper auf dem Radds board frei. (EN, DIR, Step) also:

    STEPPER_TMC2130_SW_SPI(XMotor, IOX1Step, IOX1Dir, IOX1Enable, ORIG_Z_STEP_PIN, ORIG_Z_DIR_PIN, ORIG_Z_ENABLE_PIN, 5, 0.11, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)

    STEPPER_TMC2130_SW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, ORIG_Z_STEP_PIN, ORIG_Z_DIR_PIN, ORIG_Z_ENABLE_PIN, 6, 0.11, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)





  • Die overtemperature warnung hab ich auch schon bei ausgeschalteten Treibern bekommen. Daher testet er jetzt nur noch wenn sie an sind, da war es bei mir dann immer korrekt. Wie sieht es denn mit der Temperatur aus? Könnte er recht haben und sie sind zu heiß oder ist das eine Fehlmeldung?

    Für software spi must du neue Pins für sck/miso/mosi nutzen. Oder nirgends hardware spi nutzen, wobei ich nicht sicher bin ob es nicht dennoch initialisiert wird. Und dann kann man die pins nicht einfach ändern. spi hat hier Vorrang.
  • hast du denn den jumper für spi auf den treibern gesetzt ?

    das macht mich stutzig :


    Recv:19:12:53.112: Motor 0: X
    Recv:19:12:53.112: Status: No connection
    Recv:19:12:53.116: Motor 1: Y
    Recv:19:12:53.116: Status: No power

  • Mit was kompilierst du den code? platformio oder arduino ide? Ich hab ein Problem mit SD Karte wenn mit Platformio kompiliere.
  • Recv:19:12:53.112: Motor 0: X
    Recv:19:12:53.112: Status: No connection
    Recv:19:12:53.116: Motor 1: Y
    Recv:19:12:53.116: Status: No power

    --> denke das liegt daran, dass im Moment des M122 der Motor steht..weil sie fahren ja, nur ohne Power.

    habe die bigtreech V3.0. habe da die SPI-Lötbrücke offen. Die Pins CFG0, CFG1, CFG2, CFG3 nur "nach oben stehen gelassen - gehen damit nicht durch das Board und die dipswitches haben keine Auswirkung.


    @Rossini: mit visual Studio und platformio

    hab hier nochmal geprüft:

    hab hier 2 verschieden Chargen Treiber liegen.
    Mit Mikroskopekamera CFG4 und 5 geprüft. Sollen ja geschlossen sein.
    Bei einem sind widerstände eingebaut, bei dem anderen nicht. Denke also, das die im Drucker aus der Charge sind, wo die Lötbrücken offen sind. Muss dass jetzt irgendwie, mit so einem gaaaannnz klitzeklitzekleinen Lötkölbchen zulöten.. meld mich wieder wenn ert. :/




  • CFG 4 und CFG5 Brücken geschlossen.
    Und V-Ref maximiert. Im SPI-Modus konnte ich auf Max. 0,23V hochdrehen. (Standard-Mod geht ja bis ~1,5V)

    Achsen haben jetzt bisschen mehr Power, aber dolle ist das nicht. Versuche jetzt mal ein Druck ohne viel Hoffnung. Evt. reicht das ja..

    Konsole:

    Recv:21:42:53.983: Motor 1: Y driver overtemperature! Current: 700 (3)
    Recv:21:42:56.764: Unknown command:N3582 M73 P5 R89.00
    Recv:21:42:57.833: Motor 0: X driver overtemperature! Current: 800
    Recv:21:42:57.837: Motor 0: X driver overtemperature warning! Current: 800
    Recv:21:43:08.274: Motor 0: X driver overtemperature! Current: 800 (3)
    Recv:21:43:08.278: Motor 0: X driver overtemperature warning! Current: 800
    Recv:21:43:09.921: Motor 0: X driver overtemperature! Current: 800
    Recv:21:43:11.572: Motor 1: Y driver overtemperature! Current: 700
    Recv:21:43:11.576: Motor 1: Y driver overtemperature warning! Current: 700
    Recv:21:42:53.983: Motor 1: Y driver overtemperature! Current: 700 (3)
    Recv:21:42:56.764: Unknown command:N3582 M73 P5 R89.00
    Recv:21:42:57.833: Motor 0: X driver overtemperature! Current: 800
    Recv:21:42:57.837: Motor 0: X driver overtemperature warning! Current: 800
    Recv:21:43:08.274: Motor 0: X driver overtemperature! Current: 800 (3)
    Recv:21:43:08.278: Motor 0: X driver overtemperature warning! Current: 800
    Recv:21:43:09.921: Motor 0: X driver overtemperature! Current: 800
    Recv:21:43:11.572: Motor 1: Y driver overtemperature! Current: 700
    Recv:21:43:11.576: Motor 1: Y driver overtemperature warning! Current: 700
    Recv:21:43:12.182: Unknown command:N3800 M73 P5 R88.00
    Recv:21:43:14.329: Motor 0: X driver overtemperature! Current: 800
    Recv:21:43:14.329: Motor 0: X driver overtemperature! Current: 800

    M73 hab ich so auch noch nicht gesehen!?




  • update:

    hab jetzt Testweise auf Software SPI umgestellt.
    Einzige Änderung: Motoren sind lauter ohne mehr Power zu haben. Rüste ich wieder um.

    //X-Motor
    //STEPPER_SIMPLE(XMotor, IOX1Step, IOX1Dir, IOX1Enable, endstopNone, endstopNone)
    //STEPPER_TMC2130_HW_SPI(XMotor, IOX1Step, IOX1Dir, IOX1Enable, 5, 0.11, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)
    STEPPER_TMC2130_SW_SPI(XMotor, IOX1Step, IOX1Dir, IOX1Enable, ORIG_Z_STEP_PIN, ORIG_Z_DIR_PIN, ORIG_Z_ENABLE_PIN, 5, 0.2, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)

    //Y-Motor
    //STEPPER_SIMPLE(YMotor, IOY1Step, IOY1Dir, IOY1Enable, endstopNone, endstopNone)
    //STEPPER_TMC2130_HW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, 6, 0.11, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)
    STEPPER_TMC2130_SW_SPI(YMotor, IOY1Step, IOY1Dir, IOY1Enable, ORIG_Z_STEP_PIN, ORIG_Z_DIR_PIN, ORIG_Z_ENABLE_PIN, 6, 0.2, 1, 64, 900, false, 100, 0, -128, endstopNone, endstopNone)

    Ansonsten ist komisch, dass wenn ich im Eeprom die x und y Microstepps ändere, scheint das nicht durchzuschlagen. Schritte/mm muss ich nicht ändern. Das kann ja so nicht stimmen!

    Temperatur an den Treibern hab ich gefühlt - da ist nix heiß. Werden auch beblasen..

    Was definitiv einfluss hat, ist die VRef-Poti sache. gegn GND gemessen kann ich auf max. 0.24V hochdrehen. Mehr geht nicht.
    Werd wohl wieder auf Standard-Mode zurück rüsten.. :'(



  • Hast du mal den eeprom mode geändert also 1 auf 2 oder 2 auf 1?

    nicht dass noch irgendwo was  altes drinsteht , grad wenn das radds schon unter v1 im einsatz war.
    Ich hatte da mal probleme.
  • klaro.
    da musst du dir schon bessere Tipps ausdenken.. :#
  • Wenn du die microsteps änderst sollte das auch in M122 sichtbar sein. Sonst übernimmt er doch nicht alles und man muss sich fragen ob die Kommunikation klappt. Wobei ja current offenbar korrekt übertragen wird, kann also gar nicht so falsch sein. Parallel mal versucht mit dem M befehl microsteps zu ändern?
    Das softwa SPI lauter ist kann eigentlich nicht sein. Lautstärke hängt nur von microsteps ab. Beide nutzen ja step/dir pin für moves. Über das interface werden ja nur parameter gesetzt.
Sign In or Register to comment.