Загрузка всех файлов
335
M5_TMC2130.ino
|
@ -1,80 +1,133 @@
|
|||
// #define EN_PIN 17 // D1
|
||||
// #define DIR_PIN 3 // D2
|
||||
// #define STEP_PIN 1 // D3
|
||||
// #define CS_PIN 16 // D8
|
||||
// #define MOSI_PIN 23 // D7
|
||||
// #define MISO_PIN 19 // D6
|
||||
// #define SCK_PIN 18 // D5
|
||||
/* Отрисовка графика значений в плоттере
|
||||
|
||||
/*
|
||||
* You can control the rotation speed with
|
||||
* 0 Stop
|
||||
* 1 Resume
|
||||
* + Speed up
|
||||
* - Slow down
|
||||
* Вы можете точно настроить показания, изменив STALL_VALUE.
|
||||
* Это позволит вам контролировать, при какой нагрузке значение будет равно 0
|
||||
* и сработает флаг остановки. Это также установит высокий уровень на выводе DIAG1.
|
||||
* Более высокое значение STALL_VALUE сделает чтение менее чувствительным и
|
||||
* меньшее значение STALL_VALUE сделает его более чувствительным.
|
||||
*
|
||||
* Если отправить 0 в консоль - остановка
|
||||
* 1 - движение
|
||||
* + увеличить скорость / При слишком большой скорости шаги будут проскакивать.
|
||||
* - Уменьшить скорость
|
||||
*/
|
||||
|
||||
#define MAX_SPEED 40 // In timer value
|
||||
#include <TMCStepper.h>
|
||||
|
||||
#define MAX_SPEED 40 // Значение таймера в Millis для скорости
|
||||
#define MIN_SPEED 1000
|
||||
|
||||
#define STALL_VALUE 0 // [-64..63]
|
||||
#define STALL_VALUE 15 // [-64..63]
|
||||
|
||||
// Note: You also have to connect GND, 5V and VM.
|
||||
// A connection diagram can be found in the schematics.
|
||||
#define EN_PIN 17 // D1
|
||||
#define DIR_PIN 3 // D2
|
||||
#define STEP_PIN 1 // D3
|
||||
#define CS_PIN 16 // D8
|
||||
/*
|
||||
Меньшее значение дает более высокую чувствительность. Нуль
|
||||
начальное значение, которое работает с большинством двигателей.
|
||||
От -64 до +63: чем выше значение, тем меньше stallGuard2.
|
||||
чувствителен и требует большего крутящего момента для
|
||||
определения остановки (залипания).
|
||||
*/
|
||||
|
||||
#include <TMC2130Stepper.h>
|
||||
#include <TMC2130Stepper_REGDEFS.h>
|
||||
TMC2130Stepper driver = TMC2130Stepper(CS_PIN);
|
||||
//Настройка пинов для Software SPI. На Arduino Mega все пины кроме Аналоговых
|
||||
|
||||
bool vsense;
|
||||
#define EN_PIN 46 // Enable
|
||||
#define DIR_PIN 24 // Direction
|
||||
#define STEP_PIN 26 // Step
|
||||
#define CS_PIN 30 // Chip select
|
||||
#define SW_MOSI 34 // Software Master Out Slave In (MOSI)
|
||||
#define SW_MISO 28 // Software Master In Slave Out (MISO)
|
||||
#define SW_SCK 32 // Software Slave Clock (SCK)
|
||||
|
||||
uint16_t rms_current(uint8_t CS, float Rsense = 0.11)
|
||||
#define R_SENSE 0.11f // Резистор с которого будет делаться замер на драйвере - уточнить. \
|
||||
// SilentStepStick series use 0.11 - выбрать данный параметр \
|
||||
// UltiMachine Einsy and Archim2 boards use 0.2 \
|
||||
// Panucatt BSD2660 uses 0.1 \
|
||||
// Watterott TMC5160 uses 0.075
|
||||
|
||||
//Silent-Step-Stick 0.11 - это плата драйвера шагового двигателя для двухфазных двигателей,
|
||||
//основанная на драйверах Trinamic: TMC 2100 / TMC 2130 / TMC 2208 / TMC 2209 / TMC 5160 / TMC 5161.
|
||||
|
||||
// Тип подключения
|
||||
//TMC2130Stepper driver(CS_PIN, R_SENSE); // Hardware SPI будут использоваться стандратные пины
|
||||
TMC2130Stepper driver(CS_PIN, R_SENSE, SW_MOSI, SW_MISO, SW_SCK); // Software SPI
|
||||
|
||||
using namespace TMC2130_n;
|
||||
|
||||
// Using direct register manipulation can reach faster stepping times
|
||||
#define STEP_PORT PORTF // Match with STEP_PIN
|
||||
#define STEP_BIT_POS 0 // Match with STEP_PIN
|
||||
|
||||
ISR(TIMER1_COMPA_vect)
|
||||
{
|
||||
return (float)(CS + 1) / 32.0 * (vsense ? 0.180 : 0.325) / (Rsense + 0.02) / 1.41421 * 1000;
|
||||
//STEP_PORT ^= 1 << STEP_BIT_POS;
|
||||
digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
//init serial port
|
||||
{
|
||||
Serial.begin(250000); //init serial port and set baudrate
|
||||
while (!Serial)
|
||||
; //wait for serial port to connect (needed for Leonardo only)
|
||||
Serial.println("\nStart...");
|
||||
pinMode(EN_PIN, OUTPUT);
|
||||
pinMode(DIR_PIN, OUTPUT);
|
||||
pinMode(STEP_PIN, OUTPUT);
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
digitalWrite(EN_PIN, HIGH); //deactivate driver (LOW active)
|
||||
digitalWrite(DIR_PIN, LOW); //LOW or HIGH
|
||||
digitalWrite(STEP_PIN, LOW);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
SPI.begin();
|
||||
pinMode(MISO, INPUT_PULLUP);
|
||||
}
|
||||
SPI.begin();
|
||||
Serial.begin(115200);
|
||||
|
||||
//set TMC2130 config
|
||||
{
|
||||
driver.push();
|
||||
driver.toff(3);
|
||||
driver.tbl(1);
|
||||
driver.hysteresis_start(4);
|
||||
driver.hysteresis_end(-2);
|
||||
driver.rms_current(600); // mA
|
||||
driver.microsteps(16);
|
||||
driver.diag1_stall(1);
|
||||
driver.diag1_active_high(1);
|
||||
driver.coolstep_min_speed(0xFFFFF); // 20bit max
|
||||
driver.THIGH(0);
|
||||
driver.semin(5);
|
||||
driver.semax(2);
|
||||
driver.sedn(0b01);
|
||||
driver.sg_stall_value(STALL_VALUE);
|
||||
}
|
||||
//Установка пинов как выходов и состояний
|
||||
pinMode(EN_PIN, OUTPUT);
|
||||
pinMode(STEP_PIN, OUTPUT);
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(DIR_PIN, OUTPUT);
|
||||
pinMode(MISO, INPUT_PULLUP);
|
||||
digitalWrite(EN_PIN, LOW);
|
||||
|
||||
driver.begin();
|
||||
driver.toff(4); //Общее разрешение для управления двигателем 0 Драйвер выключен / 1… 15 Драйвер включен. значение не влияет на stealthChop
|
||||
driver.blank_time(24); //16 tCLK 1 24 tCLK 2 36 tCLK 3 54 tCLK
|
||||
/* Время холостого хода компаратора.Нужно безопасно
|
||||
охватить событие переключения и продолжительность
|
||||
звон на сенсорном резисторе. Выберите настройку
|
||||
1 или 2 для типичных приложений. Для больших
|
||||
емкостных нагрузок, может потребоваться 3. Нижние
|
||||
настройки позволяют StealthChop регулировать до
|
||||
более низкие значения тока катушки
|
||||
*/
|
||||
|
||||
driver.rms_current(1000); // mA
|
||||
driver.microsteps(16); //Микрошагов за шаг 128, 64, 32, 16, 8, 4, 2, FULLSTEP
|
||||
driver.en_pwm_mode(true); //Разрешение работы со скоростями
|
||||
driver.pwm_autoscale(true);
|
||||
/*
|
||||
Автоматический режим с использованием обратной связи по току (pwm_autoscale = 1) и подачи
|
||||
режим управления скоростью поступательного движения (pwm_autoscale = 0). Режим управления скоростью прямой связи не
|
||||
реагирует на изменение напряжения питания или на такие события, как остановка двигателя, но обеспечивает очень стабильную работу
|
||||
амплитуда.
|
||||
*/
|
||||
driver.TCOOLTHRS(0xFFFFF); // 20bit max 0 … 1048575
|
||||
/*
|
||||
Определяет верхнюю скорость для работы в
|
||||
StealthChop по напряжению в режиме ШИМ.
|
||||
*/
|
||||
|
||||
driver.THIGH(0); //0…1048575
|
||||
/*
|
||||
Настройка для управления
|
||||
верхний порог для
|
||||
работы с coolStep
|
||||
и stallGuard - уточнить.
|
||||
*/
|
||||
driver.semin(5); //0- выкл / 1..15
|
||||
/*
|
||||
4-битовое целое число без знака, задающее нижний порог.
|
||||
Если SG опускается ниже этого порога, coolStep
|
||||
увеличивает ток на обе катушки. 4-битный
|
||||
Значение SEMIN масштабируется на 32, чтобы покрыть нижнюю
|
||||
половина диапазона 10-битового значения SG. StallGuard
|
||||
|
||||
*/
|
||||
driver.semax(2); //0...15
|
||||
driver.sedn(0b01); // 0,1,2,3
|
||||
/*
|
||||
Устанавливает количество показаний stallGuard2 над
|
||||
верхний порог, необходимый для каждого тока
|
||||
уменьшение тока двигателя. number of stallGuard2 measurements per decrement: 32, 8, 2, 1
|
||||
*/
|
||||
|
||||
driver.sgt(STALL_VALUE); //Установка StallGuard
|
||||
|
||||
// Set stepper interrupt
|
||||
{
|
||||
|
@ -91,17 +144,6 @@ void setup()
|
|||
TIMSK1 |= (1 << OCIE1A);
|
||||
sei(); //allow interrupts
|
||||
}
|
||||
|
||||
//TMC2130 outputs on (LOW active)
|
||||
digitalWrite(EN_PIN, LOW);
|
||||
|
||||
vsense = driver.vsense();
|
||||
}
|
||||
|
||||
ISR(TIMER1_COMPA_vect)
|
||||
{
|
||||
PORTF |= 1 << 0;
|
||||
PORTF &= ~(1 << 0);
|
||||
}
|
||||
|
||||
void loop()
|
||||
|
@ -109,9 +151,11 @@ void loop()
|
|||
static uint32_t last_time = 0;
|
||||
uint32_t ms = millis();
|
||||
|
||||
//При получении определенного символа из консоли происходит прерывание и установка параметров
|
||||
while (Serial.available() > 0)
|
||||
{
|
||||
int8_t read_byte = Serial.read();
|
||||
|
||||
if (read_byte == '0')
|
||||
{
|
||||
TIMSK1 &= ~(1 << OCIE1A);
|
||||
|
@ -122,135 +166,34 @@ void loop()
|
|||
TIMSK1 |= (1 << OCIE1A);
|
||||
digitalWrite(EN_PIN, LOW);
|
||||
}
|
||||
|
||||
else if (read_byte == '+')
|
||||
{
|
||||
if (OCR1A > MAX_SPEED)
|
||||
OCR1A -= 20;
|
||||
else if (read_byte == '-')
|
||||
if (OCR1A < MIN_SPEED)
|
||||
OCR1A += 20;
|
||||
}
|
||||
else if (read_byte == '-')
|
||||
{
|
||||
if (OCR1A < MIN_SPEED)
|
||||
OCR1A += 20;
|
||||
}
|
||||
}
|
||||
|
||||
if ((ms - last_time) > 100) //run every 0.1s
|
||||
//Каждые 101 милисекунду опрашиваем статус драйвера
|
||||
if ((ms - last_time) > 100)
|
||||
{
|
||||
last_time = ms;
|
||||
uint32_t drv_status = driver.DRV_STATUS();
|
||||
Serial.print("0 ");
|
||||
Serial.print((drv_status & SG_RESULT_bm) >> SG_RESULT_bp, DEC);
|
||||
|
||||
DRV_STATUS_t drv_status{0};
|
||||
|
||||
//Данная функция возвращает статус всего драйвера. Из данного результата возможно взять 1 или 0 для состояния StallGuard. Сработал или нет
|
||||
//Описание регистра с флагами в файле TMC2130_datasheet.pdf на 38й странице. DRV_STATUS – stallGuard2 Value and Driver Error Flags
|
||||
drv_status.sr = driver.DRV_STATUS();
|
||||
|
||||
// Serial.println(drv_status.sr);
|
||||
|
||||
Serial.print(drv_status.sg_result, DEC); //Результат 1 или 0. Смена состояния при превышении установленного значения StallGuard
|
||||
Serial.print(" ");
|
||||
Serial.println(rms_current((drv_status & CS_ACTUAL_bm) >> CS_ACTUAL_bp), DEC);
|
||||
Serial.println(driver.cs2rms(drv_status.cs_actual), DEC); //Текущее состояние StallGuard
|
||||
}
|
||||
}
|
||||
|
||||
// bool dir = true;
|
||||
|
||||
// #include <TMC2130Stepper.h>
|
||||
// TMC2130Stepper TMC2130 = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN);
|
||||
|
||||
// void setup() {
|
||||
// Serial.begin(9600);
|
||||
// TMC2130.begin(); // Initiate pins and registeries
|
||||
// TMC2130.SilentStepStick2130(600); // Set stepper current to 600mA
|
||||
// TMC2130.stealthChop(1); // Enable extremely quiet stepping
|
||||
|
||||
// digitalWrite(EN_PIN, LOW);
|
||||
// }
|
||||
|
||||
// void loop() {
|
||||
// digitalWrite(STEP_PIN, HIGH);
|
||||
// delayMicroseconds(10);
|
||||
// digitalWrite(STEP_PIN, LOW);
|
||||
// delayMicroseconds(10);
|
||||
// uint32_t ms = millis();
|
||||
// static uint32_t last_time = 0;
|
||||
// if ((ms - last_time) > 2000) {
|
||||
// if (dir) {
|
||||
// Serial.println("Dir -> 0");
|
||||
// TMC2130.shaft_dir(0);
|
||||
// } else {
|
||||
// Serial.println("Dir -> 1");
|
||||
// TMC2130.shaft_dir(1);
|
||||
// }
|
||||
// dir = !dir;
|
||||
// Serial.println(TMC2130.GCONF(), BIN);
|
||||
// last_time = ms;
|
||||
// }
|
||||
// }
|
||||
|
||||
// bool dir = true;
|
||||
// #define TMC2130DEBUG
|
||||
// #include <TMC2130Stepper.h>
|
||||
// // Soft SPI
|
||||
// TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN, MOSI_PIN, MISO_PIN, SCK_PIN);
|
||||
// // Hard SPI
|
||||
// //TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN);
|
||||
// void setup()
|
||||
// {
|
||||
// Serial.begin(9600);
|
||||
// while (!Serial)
|
||||
// ;
|
||||
// Serial.println("Start...");
|
||||
// driver.begin(); // Initiate pins and registeries
|
||||
// driver.rms_current(1200); // Set stepper current to 600mA. The command is the same as command TMC2130.setCurrent(600, 0.11, 0.5);
|
||||
// driver.microsteps(16);
|
||||
// driver.stealthChop(1); // Enable extremely quiet stepping
|
||||
|
||||
// digitalWrite(EN_PIN, LOW);
|
||||
|
||||
// Serial.print("DRV_STATUS=0b");
|
||||
// Serial.println(driver.DRV_STATUS(), BIN);
|
||||
// }
|
||||
// bool isKilled = false;
|
||||
|
||||
// void loop()
|
||||
// {
|
||||
// if (driver.checkOT())
|
||||
// {
|
||||
// if (!isKilled)
|
||||
// {
|
||||
// Serial.print("Overheat flag triggered: ");
|
||||
// Serial.println(driver.getOTPW(), DEC);
|
||||
// driver.TPOWERDOWN();
|
||||
// isKilled = true;
|
||||
// Serial.println("Program stopped");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// delay(1000);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// digitalWrite(STEP_PIN, HIGH);
|
||||
// delayMicroseconds(10);
|
||||
// digitalWrite(STEP_PIN, LOW);
|
||||
// delayMicroseconds(10);
|
||||
|
||||
// uint32_t ms = millis();
|
||||
// static uint32_t last_time = 0;
|
||||
// if ((ms - last_time) > 500)
|
||||
// {
|
||||
// if (dir)
|
||||
// {
|
||||
// Serial.println("Dir -> 0");
|
||||
// driver.shaft_dir(0);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Serial.println("Dir -> 1");
|
||||
// driver.shaft_dir(1);
|
||||
// }
|
||||
// Serial.print("OverTemperature: ");
|
||||
// Serial.print(driver.getOTPW(), DEC);
|
||||
// Serial.print(" MSTEP: ");
|
||||
// Serial.print(driver.microsteps(), DEC);
|
||||
// Serial.print(" DIR: ");
|
||||
// Serial.println(driver.dir(), DEC);
|
||||
// Serial.println("---");
|
||||
// //Serial.println(driver.checkStatus());
|
||||
// //driver.checkStatus();
|
||||
|
||||
// dir = !dir;
|
||||
// last_time = ms;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
57
README.md
|
@ -9,9 +9,16 @@
|
|||
Обдув решает все вопросы. Обдув обязателен<br/>
|
||||
Как и в предыдущих версиях драйверов не рекомендуется отключать двигатель при включенном питании драйвера (необзодимо предотвратить самостоятельное отключение)<br/>
|
||||
|
||||
<b>Лучше всего использовать совместно с BIGTREETECH protector ( https://www.gearbest.com/printer-parts/pp_3005227053225004.html )
|
||||
Файл:
|
||||
<br/>M5_TMC2130.ino - содержит пример кода с комментариями
|
||||
<br/>Папка pdf - документация к драйверу (Полный и понятный документ pdf/TMC2130_datasheet.pdf)
|
||||
<br/> Папка img - рисунку распиновка фото
|
||||
|
||||
|
||||
|
||||
<br>Лучше всего использовать совместно с BIGTREETECH protector ( https://www.gearbest.com/printer-parts/pp_3005227053225004.html )
|
||||
Это шилд между драйвером и любой платой управления для защиты драйвера от перегорания при обрыве части контаков двигателя, или ручной прокрутки двигателей. В общем это защита драйвера от токов которые может генерировать мотор, или от обрывов проводов.
|
||||
</b>
|
||||
<br>
|
||||
<b>Еще лучше использовать готовую плату SKR v1.3 которая приходит по умолчанию настроенная на использование данных драйверов</b>
|
||||
|
||||
<b>---------------------------------------</b>
|
||||
|
@ -29,18 +36,18 @@
|
|||
<br/>
|
||||
В прошивке опытным путем было определено: Лучше использовать программный SPI, так как он учитывает все входы которые в аппаратном SPI необходимо подключить вручную к питанию Vio, GND или выставить необходимый уровень (DIR, STEP, EN) которыми возможно управлять в коде. Индивидуально необходимо рассматривать данные пины при использовании шилда.
|
||||
|
||||
Пример соединения драйвера с Arduino Mega (Фото добавленно в папку IMG)
|
||||
Пример соединения драйвера с Arduino Mega (Фото добавленно в папку IMG) <br/>
|
||||
Стоит позаботится о качественном контакте пинов. Так как мотор может крутиться медленно из за плохого контакта STEP/DIR
|
||||
|
||||
#define EN_PIN 46 // Enable
|
||||
#define DIR_PIN 24 // Direction
|
||||
#define STEP_PIN 26 // Step
|
||||
#define CS_PIN 30 // Chip Select
|
||||
#define SW_MOSI 34 // Software Master Out Slave In (MOSI)
|
||||
#define SW_MISO 28 // Software Master In Slave Out (MISO)
|
||||
#define SW_SCK 32 // Software Slave Clock (SCK)
|
||||
#define EN_PIN 46 // Enable<br/>
|
||||
#define DIR_PIN 24 // Direction<br/>
|
||||
#define STEP_PIN 26 // Step<br/>
|
||||
#define CS_PIN 30 // Chip Select<br/>
|
||||
#define SW_MOSI 34 // Software Master Out Slave In (MOSI)<br/>
|
||||
#define SW_MISO 28 // Software Master In Slave Out (MISO)<br/>
|
||||
#define SW_SCK 32 // Software Slave Clock (SCK)<br/>
|
||||
|
||||
<br/>
|
||||
|
||||
<b>---------------------------------------</b>
|
||||
|
||||
<strong> - понимание по подстройке ограничителя тока на TMC2130 </strong>
|
||||
|
@ -48,7 +55,6 @@
|
|||
<strong> После перевода в режим SPI подстроечный резистор перестает влиять на работу драйвера, ток выставляется в прошивке. </strong>
|
||||
|
||||
<br/>
|
||||
|
||||
Установка тока происходит путем вызофа функции rms_current(); для обьекта класса TMC2130Stepper
|
||||
Пример: driver.rms_current(1000);
|
||||
1000 - ток устанавливаемый в милиамперах
|
||||
|
@ -58,34 +64,32 @@
|
|||
<br/>
|
||||
модель: JK42HS34-1334AC<br/>
|
||||
Распиновка: зеленый А+, черный А-, синий В+, красный В-.<br/>
|
||||
угол поворота за один шаг: 1.8 º<br/>
|
||||
<b>НОМИНАЛЬНЫЙ ток на обмотку: 1.33 А</b><br/>
|
||||
сопротивление обмотки: 2.1 Ом по факту 3 Ом<br/>
|
||||
индуктивность обмотки: 2.5 мГн<br/>
|
||||
крутящий момент удержания: 2.2 кг/см<br/>
|
||||
<br/><br/>
|
||||
<br/>
|
||||
Верная настройка токов позволяет: <br/>
|
||||
Избавится от пропуска шагов<br/>
|
||||
Снизить нагрев двигателей<br/>
|
||||
Снизить шум двигателей<br/>
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
<strong> - выбор библиотеки и экземплы по обработке детектов (stallGuard2)</strong>
|
||||
<br/>
|
||||
|
||||
Пример использования библиотеки с определением текущего состояния параметра StallGuard находится в файле M5_TMC2130.ino
|
||||
|
||||
Cуществует старая версия библиотки: https://github.com/teemuatlut/TMC2130Stepper ,но она 3х летней давности
|
||||
Необходимо скачать и установить библиотеку: https://github.com/teemuatlut/TMCStepper (обновляемая и поддерживаем большее количество драйверов)
|
||||
|
||||
<b>Про stallGuard2:</b> <br/>
|
||||
Когда подвижный механизм упирается в препятствие, нагрузка двигателя возрастает, что и обнаруживает stallGuard2<br/>
|
||||
Схема измерения определяет электрическую энергию, подаваемую в двигатель (EI) и энергию, которая возвращается в источник питания (EB). Разница между этими показателями определяет энергию, которая была передана механической системе (EM). stallGuard2 контролирует значение EB, и, если оно приближается к нулю, это значит, что вся энергия передается в систему и подвижный механизм, скорее всего, уперся в препятствие.
|
||||
|
||||
<br/>
|
||||
Видео с примером и принципом работы: https://youtu.be/UrRlFIkvNxc
|
||||
<br/>
|
||||
|
||||
<br/><br/>
|
||||
|
||||
ПРЕДУПРЕЖДЕНИЕ: библиотека TMC2130Stepper-master должна запускаться на архитектурах avr, sam и может быть несовместима с вашей платой на архитектуре esp32.
|
||||
|
||||
если кто-то собирается использовать библиотеку TMCStepper вместе с ESP32, как я, вам необходимо использовать HardwareSerial из-за проблем с совместимостью.
|
||||
|
||||
|
||||
Цитата с форума: <br/>
|
||||
Eсли кто-то собирается использовать библиотеку TMCStepper вместе с ESP32, как я, вам необходимо использовать HardwareSerial из-за проблем с совместимостью.
|
||||
<br/>
|
||||
|
||||
Ссылки:
|
||||
|
@ -94,5 +98,4 @@
|
|||
Библиотека: https://github.com/teemuatlut/TMC2130Stepper<br/>
|
||||
https://github.com/teemuatlut/TMC2130Stepper/tree/master/examples <br/>
|
||||
Про StallGuard2: https://3dtoday.ru/blogs/svs0724/tms2130-applied-technology-and-connection-to-ruramps4d-in-the-configur/<br/>
|
||||
|
||||
Решение от автора: https://gist.github.com/teemuatlut/2bc6d85732311087e3e5285e04c36cb5
|
||||
|
|
After Width: | Height: | Size: 603 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 777 KiB |
Before Width: | Height: | Size: 76 KiB |