Заработал код, на софт SPI
parent
8575201597
commit
6ba575dfdc
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Win32",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**",
|
||||
"C:/Users/smart/Documents/Arduino/libraries/TMC2130Stepper-master/src",
|
||||
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino"
|
||||
],
|
||||
"defines": [
|
||||
"_DEBUG",
|
||||
"UNICODE",
|
||||
"_UNICODE"
|
||||
],
|
||||
"compilerPath": "C:\\Program Files\\LLVM\\bin\\clang.exe",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++11",
|
||||
"intelliSenseMode": "clang-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
#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
|
||||
|
||||
// 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(1200); // 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;
|
||||
// }
|
||||
// }
|
||||
|
||||
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);
|
||||
dir = !dir;
|
||||
last_time = ms;
|
||||
}
|
||||
}
|
||||
}
|
13
README.md
13
README.md
|
@ -23,6 +23,10 @@
|
|||
Это шилд между драйвером и любой платой управления для защиты драйвера от перегорания при обрыве части контаков двигателя, или ручной прокрутки двигателей. В общем это защита драйвера от токов которые может генерировать мотор.
|
||||
</b>
|
||||
|
||||
<b>Еще лучше использовать готовую плату</b>
|
||||
|
||||
|
||||
|
||||
...............................................
|
||||
<strong> - понимание по подстройке ограничителя тока на TMC2130 </strong>
|
||||
|
||||
|
@ -53,3 +57,12 @@
|
|||
Возможно на основе этого статью сделаем или видео. т.к. В инете похоже мало элементарных how to по этому драйверу, все что попадалось ориентировано на использование в конкретных 3д принтерах.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Ссылки:
|
||||
|
||||
Интересынй пример: https://revspace.nl/TMC2130
|
||||
Библиотека: https://github.com/teemuatlut/TMC2130Stepper
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
Binary file not shown.
Loading…
Reference in New Issue