FYSETC S6 + TMC2209 + UART
Napsal: 06.07.2020 13:44
Ahoj,
Po pěti letech úspěšného provozu tiskárny Rebel II (Díky Dane za skvělou konstrukci) jsem si řekl, že bych jí mohl dát novější elektroniku a nahradit tak ArduinoMega + Ramps. Chtěl jsem vyzkoušet 32-bit desku a podle ohlasů zde na fóru jsem vybral Fysetc S6 a drivery Bigtreetech TMC2209 v1.2.
Rád bych se s vámi podělil o několik poznatků, na které jsem přišel, při "oživování" komunikace driverů přes UART:
Snad to někomu pomůže, případně doplňte vaše zkušenosti. Tiskem jsem to zatím neprověřil, zkoušel jsem jen desku s displejem, drivery a motory na laboratorním zdroji.
Po pěti letech úspěšného provozu tiskárny Rebel II (Díky Dane za skvělou konstrukci) jsem si řekl, že bych jí mohl dát novější elektroniku a nahradit tak ArduinoMega + Ramps. Chtěl jsem vyzkoušet 32-bit desku a podle ohlasů zde na fóru jsem vybral Fysetc S6 a drivery Bigtreetech TMC2209 v1.2.
Rád bych se s vámi podělil o několik poznatků, na které jsem přišel, při "oživování" komunikace driverů přes UART:
- Co výrobce driverů / desek, to originál ve smyslu zapojení pinů pro UART komunikaci (PDN). Proto vše dále uvedené platí jen pro kombinaci Fysetc S6, Bigtreetech TMC2209 v1.2 a Marlin 2.0.5.3.
- Pro UART deska Fysetc S6 počítá s pinem PDN na 5. pozici na modré pinové liště (počítáno od pinu EN, viz obrázek "Fysetc S6 driver"), ale Bigtreetech TMC2209 v1.2 mají z výroby PDN vyvedený na 4. pinu, viz obrázek "Bigtreetech TMC2209 v1.2". Lze to opravit buď přepájením odporu na driveru (moc malé pro mě) nebo propojit jumperem na pinové liště JP6 desky piny 4 a 3, viz žlutě na obrázku "Fysetc S6 PDN". Tím "přesměrujeme" PDN signál z driveru na pinovou lištu JP1, na kterou umístíme jumper již podle návodu na wiki.fysetc.com.
- Mám jen dva funkční drivery TMC2209 a osadil jsem je na X a Y. Po nahrátí Marlina do desky mě uvítala hláška "TMC chyba spojení". Provedl jsem test, který dan napsal do vlákna zde. Spočívá v pohnutí motorem, pak jít do menu TMC a vypnout tichý režim. Motor by měl syčet. U osy X se nestalo nic, osa Y fungovala. Ověřil jsem gcodem M122 komunikaci přes Repetier-host a u osy X byla odpověď ALL NULL, u osy Y byla odpověď OK.
- Nakonfiguroval jsem Marlina tak, že všech šest slotů jsem nastavil pro driver TMC2209. Postupným přehazováním a kontrolou gcodem M122 jsem zjistil, že Y, E0, E1, E2 je funkční a X a Z jsou nefunkční. Pátral jsem na internetu proč to tak je a někde jsem se dočetl, že knihovna SoftwareSerial neumí pracovat se všemi piny procesorů. Zároveň je nutné, aby pin umožňoval přerušení. Což u STM by neměl být problém. Ať to někdo potvrdí / vyvrátí, bohužel jsem si zdroj této informace nezaložil.
- Zjištění, že čtyři sloty jsou pro UART komunikaci použitelné, mi stačí. Upravil jsem tedy soubor pins_Fysetc_S6.h v adresáři Marlin\src\pins\stm324f tak, že jsem prohodil v sekci "#if HAS_TMC_UART" X s E2 a Z s E1. Pro X a Z pak na JP1 nebude použitý jumper, ale drátová propojka, viz červeně a fialově na obrázku "Fysetc S6 PDN". Tímto jsem docílil toho, že můžu z displeje drivery upravovat a chybová hláška "TMC chyba spojení" se mi již nezobrazuje.
- Kód: Vybrat vše
#if HAS_TMC_UART
//
// TMC2208/TMC2209 stepper drivers
//
//
// Software serial
//
#define E2_SERIAL_TX_PIN PE9 //puvodne X
#define E2_SERIAL_RX_PIN PE8
#define Y_SERIAL_TX_PIN PE14
#define Y_SERIAL_RX_PIN PE13
#define E1_SERIAL_TX_PIN PD11 //puvodne Z
#define E1_SERIAL_RX_PIN PD12
#define E0_SERIAL_TX_PIN PD3
#define E0_SERIAL_RX_PIN PA15
#define Z_SERIAL_TX_PIN PC4 //puvodne E1
#define Z_SERIAL_RX_PIN PC5
#define X_SERIAL_TX_PIN PE1 //puvodne E2
#define X_SERIAL_RX_PIN PE0
// Reduce baud rate to improve software serial reliability
#define TMC_BAUD_RATE 19200
#endif
Snad to někomu pomůže, případně doplňte vaše zkušenosti. Tiskem jsem to zatím neprověřil, zkoušel jsem jen desku s displejem, drivery a motory na laboratorním zdroji.