M5_TMC2130/tmcfabric/tmcfabric.ino

94 lines
4.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* Отрисовка графика значений в плоттере
* Вы можете точно настроить показания, изменив STALL_VALUE.
* Это позволит вам контролировать, при какой нагрузке значение будет равно 0
* и сработает флаг остановки. Это также установит высокий уровень на выводе DIAG1.
* Более высокое значение STALL_VALUE сделает чтение менее чувствительным и
* меньшее значение STALL_VALUE сделает его более чувствительным.
*
* Если отправить 0 в консоль - остановка
* 1 - движение
* + увеличить скорость / При слишком большой скорости шаги будут проскакивать.
* - Уменьшить скорость
*/
#include "Arduino.h"
#include <SPI.h>
#include <TMCStepper.h>
#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;
}
}