TMC2130

From RevSpace
Revision as of 16:33, 16 February 2020 by Sttc (talk | contribs) (→‎Wiring)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Project TMC2130
Tmc2130.jpg
Guide: Connecting TMC2130 and ESP8266
Status Completed
Contact Sttc
Last Update 2020-02-16

Status

Status as of 2020/1/15:

  • Completed


Introduction

TMC2130 is utilized for driving a bi-polar step motor in this example.
TMC2130 is a driver module with many functions. This guide explains how to connect TMC2130 directly with ESP8266 via SPI without a motherboard (e.g. MKS Gen L, RAMPS, Einsy Rambo etc.).

Used components:

  • TMC2130

Manufacturer: Big Tree Tech
https://www.aliexpress.com/item/32975341864.html?spm=a2g0s.9042311.0.0.5d3e4c4d6bMkco
https://www.trinamic.com/products/integrated-circuits/details/tmc2130/
https://www.dropbox.com/s/xwongsgvshapqaj/TMC2130-V2.0%20spi%20firmware.docx?spm=a2g0o.detail.1000023.19.4fc612156plDrp&dl=0
https://github.com/bigtreetech/BIGTREETECH-TMC2130-V3.0?spm=a2g0o.detail.1000023.18.4fc612156plDrp&file=BIGTREETECH-TMC2130-V3.0


  • ESP8266:

LoLin NodeMCU V3 4MB flash ESP8266 12E

More info on ESP8266: https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

Wiring

TMC2130 board must be modified for SPI communication mode according to manufacturer's instructions

A capacitor in between Vmotor and GND is recommended (here 220µF was used)

Tmc2130 1.png

Table: Connecting pins between TMC2130, ESP8266, motor and external power supply

TMC2130 ESP8266 Motor External power
GND GND
VIO 3V
OA2 MOTOR-A2
OA1 MOTOR-A1
OB1 MOTOR-B1
OB2 MOTOR-B2
GND GND GND
VM Vmotor (+8V)
DIR D2 (GPIO4)
STEP D3 (GPIO0)
NC(not connected) -
SD0 D6 (GPIO12)
CSN D8 (GPIO15)
SCK D5 (GPIO14)
SDI D7 (GPIO13)
EN D1 (GPIO5)

Code

Required libraries:

  • TMC2130Stepper


/**
 * Author Teemu Mäntykallio 
 * Modified by Sttc
 * Initializes the library and turns the motor in alternating directions.
*/
//                       ESP8266
#define EN_PIN    5  //  D1 
#define DIR_PIN   4  //  D2    
#define STEP_PIN  0  //  D3  
#define CS_PIN    15  // D8   
#define MOSI_PIN  13 //  D7
#define MISO_PIN 12 //   D6
#define SCK_PIN  14 //   D5 
 
bool dir = true; 
#include <TMC2130Stepper.h>
TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN, MOSI_PIN, MISO_PIN, SCK_PIN);

void setup() {
  Serial.begin(115200);
  while(!Serial);
  Serial.println("Start...");
  driver.begin();       // Initiate pins and registeries
  driver.rms_current(600);  // Set stepper current to 600mA. The command is the same as command TMC2130.setCurrent(600, 0.11, 0.5);
  driver.stealthChop(1);  // Enable extremely quiet stepping
  driver.microsteps(0);
  //Serial.println(driver.microsteps()); // shows microsteps setting 
  digitalWrite(EN_PIN, LOW);

  //Serial.print("DRV_STATUS=0b");
  //Serial.println(driver.DRV_STATUS(), BIN);
}

void loop() {
  digitalWrite(STEP_PIN, HIGH);
  //delayMicroseconds(10);
  delay(50);
  digitalWrite(STEP_PIN, LOW);
  //delayMicroseconds(10);
  delay(50);
  uint32_t ms = millis();
  static uint32_t last_time = 0;
  if ((ms - last_time) > 3000) {
    if (dir) {
      //Serial.println("Dir -> 0");
      driver.shaft_dir(0);
    } else {
      //Serial.println("Dir -> 1");
      driver.shaft_dir(1);
    }
    dir = !dir;
    last_time = ms;
  } 
}


Remarks


  • ESP8266 configuration on Arduino IDE:


esp8266