Hallo zusammen,
ich habe ein Problem mit meinem NEMA11 5V 0.46A Schrittmotor und dem TMC2208 v2 Treiber. Ursprünglich habe ich den Motor mit einem MX1508 DC Motor Treiber Modul LN298N 1.5A betrieben, aber der Motor lief zu ruckelig und laut. Deshalb wollte ich auf den TMC2208 v2 wechseln, um bessere Laufruhe zu erreichen. Leider bekomme ich den Motor jetzt nicht mehr zum Laufen.
Hier sind die Details:
- Motor: NEMA11 Schrittmotor
- Treiber: TMC2208 v2
- Pins:
Rechte Seite (von oben nach unten):
Pin Nummer | Pin Name | Beschreibung |
---|---|---|
1 | GND | Masse (Ground) |
2 | VDD | Logikspannung (3.3V oder 5V) |
3 | 1B | Motorphase 1B |
4 | 1A | Motorphase 1A |
5 | 2A | Motorphase 2A |
6 | 2B | Motorphase 2B |
7 | GND | Masse (Ground) |
8 | Vcc | Motorversorgungsspannung (5V) |
Linke Seite (von oben nach unten):
Pin Nummer | Pin Name | Beschreibung |
---|---|---|
9 | DIR | Richtung (Direction) |
10 | STEP | Schritt (Step) |
11 | NC | Nicht verbunden (Not Connected) |
12 | UART | UART-Kommunikation |
13 | Widerstand 8 mit Pfeil auf UART | Widerstand für UART-Kommunikation |
14 | MS1 | Microstepping-Selektor 1 |
15 | MS2 | Microstepping-Selektor 2 |
16 | EN | Enable (Aktivierung des Treibers) |
- Kaufort: eBay
- Anschlussplan: Harald Kreuzer
- Arduino: Arduino Uno
- Motorspannung: 5V (später extern)
Ich gehe davon aus, dass der Treiber im UART-Modus läuft, aber ich habe beide Modi ausprobiert. Leider funktioniert keiner.
Hier ist der Code für den nicht-UART-Modus:
#include <AccelStepper.h>
// Define stepper motor connections
#define STEP_PIN 2
#define DIR_PIN 5
// Set the number of steps per revolution and microstepping mode
const long STEPS_PER_REV = 3200; // Full steps per revolution
// Create an instance of AccelStepper
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
Serial.begin(115200);
// Set the maximum speed and acceleration of the stepper motor
stepper.setMaxSpeed(0.25 * STEPS_PER_REV); // 0.2 rotations per second
stepper.setAcceleration(2.0 * STEPS_PER_REV); // 2 rotations per second squared
// Set the initial position and enable the stepper motor
stepper.setCurrentPosition(0);
stepper.enableOutputs();
stepper.move(-20 * STEPS_PER_REV);
stepper.setSpeed(0.25 * STEPS_PER_REV);
stepper.runSpeedToPosition();
}
Und hier ist der Code für den UART-Modus:
// Defining
#define StepPin 2
#define RX_PIN 0
#define TX_PIN 1
#define Current 460
#define MicroStep 0
// Including library
#include <TMC2208Stepper.h> // Include library
TMC2208Stepper driver = TMC2208Stepper(RX_PIN, TX_PIN); // Create driver and use
// Setup
void setup() {
Serial.begin(9600);
delay(2000);
driver.beginSerial(115200);
Serial.println("Driver set");
driver.push();
// Prepare pins
pinMode(StepPin, OUTPUT);
Serial.println(driver.DRV_STATUS());
driver.pdn_disable(1); // Use PDN/UART pin for communication
driver.I_scale_analog(0); // Adjust current from the registers
driver.rms_current(Current); // Set driver current
driver.toff(5); // Enable driver
driver.shaft(1);
driver.en_spreadCycle(0); // 1: spreadCycle
// 0: stealthChop
driver.pwm_autoscale(1); // 1: if stealthChop is chosen. Otherwise 0
driver.mstep_reg_select(1);
driver.mres(MicroStep);
}
// Looping
void loop() {
digitalWrite(StepPin, !digitalRead(StepPin)); // Step
delayMicroseconds(100);
}
Ich bin mir nicht sicher, was ich falsch mache. Es gibt leider nicht viele Arduino-Tutorials für diesen Treiber. Ich hoffe, jemand hier kann mir weiterhelfen.
Vielen Dank im Voraus!