TMC 2209

Odpovědět
Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

TMC 2209

Příspěvek od Kabicek » 07 pro 2022, 18:19

Zdravím, snažím se zprovoznit funkci StallGuard na driverech tmc2209 a motor běží jak má, ale ta funkce nefunguje. Jedná se o driver Bigtreetech TMC2209 - V1.2 a mám to připojené k Arduino mega podle fotky v příloze. PDN mám napojené na RX2 a mezi RX2 a TX2 mám 1k rezistor. Diag mám připojený na pin 2 jak je vidět v přiloženém kódu a pak EN na pin 7, DIR na 5, STEP na 6 a pak už jen napájení. Našel jsem toto zapojení v manuálu, který je v příloze. Nevím jestli připojovat CLK a případně jak ho definovat v programu. Někde jsem se dočetl že při spuštění té funkce StallGuard by se na pinu Diag mělo objevit napětí, ale zkoušel jsem to měřit a žádné napětí tam není. Tak nevím jestli je chyba v kódu nebo v zapojení. Nevíte někdo co s tím ?
Přílohy
StallGuard.txt
(2.92 KiB) Staženo 53 x
TMC2209-V1.2-manual.pdf
(1.2 MiB) Staženo 51 x
Driver.png

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: TMC 2209

Příspěvek od kiRRow » 10 pro 2022, 09:22

Z toho manuálu nic moc nevyčteš ... https://www.trinamic.com/fileadmin/asse ... t_V103.pdf tohle je lepší.
A co to dělá? Na "nefunguje" mi kolega vždy odpovídá "vím co tomu je, máš to rozbitý".

Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

Re: TMC 2209

Příspěvek od Kabicek » 18 pro 2022, 23:04

Tak už jsem program nějak dal dohromady. Problém mám ale stále s tím, že program má dělat to, že při zadání "1" v sériovém monitoru se motor roztočí a běží do jedné polohy a při zadání "0" se roztočí opačným směrem a běží do polohy druhé. Když v průběhu na motor vytvořím tlak (aktivuji funkci stallguard) motor se zastaví a čeká na další zadání hodnoty. To sice funguje, ale občas když na motor vytvořím tlak a chci aktivovat funkci stallguard, tak motor namísto toho, aby se zastavil a čekal na další příkazy, tak se zastaví, ale na další příkazy už nereaguje. Co jsem zatím tak vykoumal je to, že se to nejspíš zacyklí někde ve funkci move_motor. Ale nemůžu přijít na to, jak tomu předejít.
Přílohy
StallGuard.txt
(3.95 KiB) Staženo 47 x

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: TMC 2209

Příspěvek od kiRRow » 19 pro 2022, 14:28

V move_motor() se ti to může zacyklit tady .... a pak o pár řádku níž v elseif ... zkus si tam dát pro debug výpis do serialu - celkově sleduj kam až ti ten program dojde než přestane reagovat

Kód: Vybrat vše

while(stepper.currentPosition() != stepper.targetPosition())
    {
      Serial.println("Zasek1");
      stepper.run();
    }
i vypsat co má zrovna v proměnných ten procesor

Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

Re: TMC 2209

Příspěvek od Kabicek » 21 pro 2022, 13:47

Tak už jsem to fixnul. Byl tam nejdřív problém v tom, že se při akceleraci spínal StallGuard, což jsem našel na netu a opravil tímto:
TCOOLS = (3089838.00*pow(float(MOVE_VELOCITY),-1.00161534))*1.5;
driver.TCOOLTHRS(TCOOLS);
Po téhle změně se to ale stejně občas zacyklilo, tak jsem ten Interrupt nahradil pouze podmínkou v tom cyklu while a už to jde.
Jen mám ještě otázku nevíte jakým příkazem z té knihovny AccelStepper dosáhnout toho abych ten motor roztočil bez toho aniž bych musel zadávat pozici moveTo() atd. Prostě že bych jen zadal ať se roztočí a směr. Protože když dám do cyklu příkaz stepper.run(), tak vždycky musím zadat tu pozici aby se roztočil.
Přílohy
StallGuard.txt
(5.21 KiB) Staženo 50 x

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů