3D Scan spin table
We calculate the final price from your selected file. You review and accept it before payment.
Saved on this device.
30cm table for scan. Used with Nema 17 (17HS4023) motor, DRV8825 driver and esp32-c3.
- Rating
- 0 / 5
- Likes
- 1
- Downloads
- 6
- Makes
- 0
- Views
- 39
- Reviews
- 0
Updated at source:
Model information
- Source
- Printables
- Category
- Accessories
- License
- Creative Commons — Attribution — Noncommercial
Table splitted to third parts.
Need to build parts:
M4 Nuts x6
M4 8mm x6 to connect table to motor
M3 12mm x6 to connect side table part
M3 16mm x7 to close case
Nema 17 (17HS4023)
DRV8825
ESP32-C3 (choice any, but case designed for this board sizes)
DC-DC 12v->v5 or 12v->3.3v
DC female connector
10K (type a) variable resistor
Firmware gen by ai. But u gen manually. Connect schema.
DRV8825 -> ESP32-C3
STP -> GPIO4
DIR -> GPIO 5
variable resistor C -> GPIO 0 (L to 3.3v, R to GND)
SLP/RST -> 3.3v
/*
Управление шаговым мотором NEMA17 через DRV8825
Скорость задаётся потенциометром (10 кОм).
Используется библиотека AccelStepper.
*/
#include <AccelStepper.h>
// -------------------- Настройка пинов --------------------
#define STEP_PIN 4 // Шаговый импульс (STEP)
#define DIR_PIN 5 // Направление (DIR)
#define ENABLE_PIN 6 // Включение драйвера (ENABLE) – опционально
#define POT_PIN 0 // Аналоговый вход для потенциометра (ADC)
// -------------------- Параметры скорости --------------------
#define MAX_SPEED 2000.0 // Максимальная скорость, шагов/сек
#define MIN_SPEED 0.0 // Минимальная скорость
// Создаём объект для управления драйвером
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
Serial.begin(115200);
// Настройка пина ENABLE (активный LOW – LOW включает драйвер)
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW); // Включаем драйвер по умолчанию
// Разрешение АЦП – 12 бит (0…4095)
analogReadResolution(12);
// Устанавливаем максимальную скорость (для runSpeed())
stepper.setMaxSpeed(MAX_SPEED);
stepper.setSpeed(0); // Начинаем с нулевой скорости
}
void loop() {
// Читаем значение с потенциометра
int potValue = analogRead(POT_PIN);
// Преобразуем 0…4095 в скорость 0…MAX_SPEED
float speed = map(potValue, 0, 4095, 0, (int)MAX_SPEED);
// Если скорость очень мала, отключаем драйвер (экономия энергии)
if (speed < 10.0) {
stepper.setSpeed(0);
digitalWrite(ENABLE_PIN, HIGH); // HIGH отключает драйвер
} else {
digitalWrite(ENABLE_PIN, LOW); // LOW включает драйвер
stepper.setSpeed(speed);
}
// Выполняем шаг, если пришло время
stepper.runSpeed();
// (Опционально) вывод текущей скорости в монитор порта
// static unsigned long lastPrint = 0;
// if (millis() - lastPrint > 500) {
// Serial.print("Скорость: ");
// Serial.println(speed);
// lastPrint = millis();
// }
}