/* Отрисовка графика значений в плоттере * Вы можете точно настроить показания, изменив STALL_VALUE. * Это позволит вам контролировать, при какой нагрузке значение будет равно 0 * и сработает флаг остановки. Это также установит высокий уровень на выводе DIAG1. * Более высокое значение STALL_VALUE сделает чтение менее чувствительным и * меньшее значение STALL_VALUE сделает его более чувствительным. * * Если отправить 0 в консоль - остановка * 1 - движение * + увеличить скорость / При слишком большой скорости шаги будут проскакивать. * - Уменьшить скорость */ #include "Arduino.h" #include #include #define MAX_SPEED 40 // Значение таймера в Millis для скорости #define MIN_SPEED 1000 #define STALL_VALUE 15 // [-64..63] /* Меньшее значение дает более высокую чувствительность. Нуль начальное значение, которое работает с большинством двигателей. От -64 до +63: чем выше значение, тем меньше stallGuard2. чувствителен и требует большего крутящего момента для определения остановки (залипания). */ //Настройка пинов для Software SPI. На Arduino Mega все пины кроме Аналоговых #define EN_PIN 32 // Enable #define DIR_PIN 25 // Direction #define STEP_PIN 21 // Step #define CS_PIN 23 // Chip select #define SW_MOSI 19 // Software Master Out Slave In (MOSI) #define SW_MISO 33 // Software Master In Slave Out (MISO) #define SW_SCK 22 // Software Slave Clock (SCK) #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 bool dir = true; void setup() { Serial.begin(9600); while(!Serial); Serial.println("Start..."); driver.begin(); // Initiate pins and registeries driver.rms_current(1000); // Set stepper current to 600mA. The command is the same as command TMC2130.setCurrent(600, 0.11, 0.5); driver.en_pwm_mode(1); // Enable extremely quiet stepping pinMode(EN_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); digitalWrite(EN_PIN, LOW); // Enable driver in hardware Serial.print("DRV_STATUS=0b"); Serial.println(driver.DRV_STATUS(), BIN); } 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"); driver.shaft(0); } else { Serial.println("Dir -> 1"); driver.shaft(1); } dir = !dir; last_time = ms; } }