3D Scan spin table
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
30cm table for scan. Used with Nema 17 (17HS4023) motor, DRV8825 driver and esp32-c3.
- Ocena
- 0 / 5
- Polubienia
- 1
- Pobrania
- 6
- Wydruki
- 0
- Wyświetlenia
- 39
- Oceny
- 0
Aktualizacja u źródła:
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Accessories
- Licencja
- 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();
// }
}