Sterownik tmc2130 na Arduino Nano

Czyli co i jak podłączyć żeby działało
tig33r
Konto z ograniczeniami
Postów w temacie: 1
Posty: 629
Rejestracja: 15 lip 2017, 16:07
Drukarka: Hypercube Evolution
x 100

Sterownik tmc2130 na Arduino Nano

Post autor: tig33r »

W związku z tematem dotyczącym forumowego sterownika do tmc2130 wrzucam tutaj kod którego używam wraz z arduino nano i biblioteką teemuatlut do sterowania tmc2130. Skrypt bardzo prosty, pewnie ma ze sto błędów, pewnie obsługę można zrobić przy uzyciu pętli i tablicy dla większej ilości stepsticków, nie wiem, nie znam c++, ale działa w moim hypercubie w połączeniu z mks sbase. Program spełnia dwie funkcje: inicjalizuje tmc2130 i kontroluje prędkość wentylatora chłodzącego je (zwiększa prędkość przy pojawieniu się informacji o przegrzewaniu). Jak ktoś chce niech poprawi błędy i wrzuci tutaj kod. Piny i wszystko co potrzeba w komentarzach.

Kod: Zaznacz cały

/**
 * Author tig33r
 * Inicjalizacja dwóch tmc2130 + kontrola wentylatora (zwiększenie prędkości przy informacji o przegrzewaniu się.
*/

#define EN_PIN    16  // Nano v3:	16 Mega:	38	//enable (CFG6)
#define DIR_PIN   18  //			19			55	//direction
#define STEP_PIN  17  //			18			54	//step
#define X_CS_PIN  10
#define Y_CS_PIN  9

#define FAN_PIN   6

#define TMC2130DEBUG

#define maxFanSpeed 255 // maksymalna prędkość wentylatora
#define minFanSpeed 175 // minimalna prędkość wentylatora
#define delta 5
byte fanSpeed = maxFanSpeed;

#include <TMC2130Stepper.h>
TMC2130Stepper TMC2130X = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, X_CS_PIN);
TMC2130Stepper TMC2130Y = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, Y_CS_PIN);

void setup() {
  Serial.begin(9600);
  
  TMC2130X.begin();       // Initiate pins and registeries
  TMC2130X.rms_current(1100); // wartość prądu stepsticka
  TMC2130X.stealthChop(1); // bezgłośny tryb pracy
  TMC2130X.stealth_freq(1);
  TMC2130X.stealth_autoscale(1);
  TMC2130X.microsteps(256); // mikrokrok
  
  TMC2130Y.begin();       // Initiate pins and registeries
  TMC2130Y.rms_current(1100); // wartość prądu stepsticka
  TMC2130Y.stealthChop(1); // bezgłośny tryb pracy
  TMC2130Y.stealth_freq(1);
  TMC2130Y.stealth_autoscale(1);
  TMC2130Y.microsteps(256); // mikrokrok

  analogWrite(FAN_PIN, maxFanSpeed);

  Serial.println("Setup done");

}

void loop() {
    if (TMC2130X.checkOT() == true || TMC2130Y.checkOT() == true) {
      if (fanSpeed < maxFanSpeed) {
        fanSpeed = fanSpeed + delta;
        }
      else {
        fanSpeed = maxFanSpeed;
        }
    } 
    else {
      if (fanSpeed > minFanSpeed) {
        fanSpeed = fanSpeed - delta;
        }
      else {
        fanSpeed = minFanSpeed;
      }
    }

    analogWrite(FAN_PIN, fanSpeed);    

    Serial.println(TMC2130X.checkOT());
    Serial.println(TMC2130Y.checkOT());
    Serial.println(fanSpeed);
    delay(100); 
}

Wróć do „Elektronika sterująca, wyświetlacze”