94 lines
4.1 KiB
C++
94 lines
4.1 KiB
C++
/* Отрисовка графика значений в плоттере
|
||
|
||
* Вы можете точно настроить показания, изменив 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;
|
||
}
|
||
} |