Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions BURT_TMC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ double StepperMotor::targetPosition() {
return targetSteps() * config.stepsPerUnit;
}

int StepperMotor::getSpeed() {
return driver.VACTUAL();
}

void StepperMotor::presetup() {
pinMode(pins.chipSelect, OUTPUT);
digitalWrite(pins.chipSelect, HIGH);
Expand Down Expand Up @@ -97,6 +101,10 @@ void StepperMotor::setup() {
Serial.println("Done!");
}

void StepperMotor::changeSpeed(int newSpeed) {
driver.VMAX(newSpeed);
}

void StepperMotor::calibrate() {
if (!limitSwitch.isAttached()) return;
while (!limitSwitch.isPressed()) {
Expand All @@ -117,6 +125,12 @@ void StepperMotor::update() {

void StepperMotor::stop() {
driver.XTARGET(driver.XACTUAL());
driver.VMAX(0);
driver.RAMPMODE(1);
driver.vstart(0);
driver.vstop(0);
driver.v1(0);
// driver.RAMPMODE(3);
}

void StepperMotor::block() {
Expand All @@ -142,3 +156,18 @@ void StepperMotor::moveBySteps(int steps) {
int target = driver.XACTUAL() + steps;
driver.XTARGET(target);
}

void StepperMotor::velControl(int startVel, int stopVel, int stepDiff) {
if (startVel > stopVel || stepDiff < 0.1) {
// startVel must be less than stopVel and stepDiff must be >= 0.1
return;
}
driver.RAMPMODE(1);
driver.VMAX(stopVel);
driver.vstart(startVel);
driver.vstop(stopVel);
driver.v1(stepDiff);

delay(3000);
driver.RAMPMODE(3);
}
6 changes: 5 additions & 1 deletion BURT_TMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ class StepperMotor {
private:
StepperMotorPins pins;
StepperMotorConfig config;
LimitSwitch limitSwitch;

TMC5160Stepper driver;

void reset_driver();
void check_driver();
void write_settings();

public:
LimitSwitch limitSwitch;
StepperMotor(StepperMotorPins pins, StepperMotorConfig config);
StepperMotor(StepperMotorPins pins, StepperMotorConfig config, LimitSwitch limitSwitch);

Expand All @@ -46,9 +47,11 @@ class StepperMotor {
int targetSteps();
double currentPosition();
double targetPosition();
int getSpeed();

void presetup();
void setup();
void changeSpeed(int newSpeed);
void calibrate();
void update();
void stop();
Expand All @@ -58,4 +61,5 @@ class StepperMotor {
void moveBy(double offset);
void moveToSteps(int steps);
void moveBySteps(int steps);
void velControl(int startVel, int stopVel, int stepDiff);
};