Астротрекер типа barndoor с прямой шпилькой (равнобедренный треугольник) для компенсации вращения Земли при астрофотографии.
- ✅ Компенсация тангенциальной ошибки прямой шпильки (cos²(θ/2))
- ✅ Аппаратный таймер для максимально плавного движения
- ✅ Автоматическое сохранение позиции в память
- ✅ Концевой датчик для точной парковки
- ✅ Управление через прерывания кнопки
- ✅ Три режима работы: Пауза, Рабочий ход, Парковка
- Контроллер: M5Stack Atom Lite (ESP32)
- Двигатель: 28BYJ-48 (биполярный) с редуктором 63.68395:1
- Драйвер: DRV8825 с микрошагом 1/32
- Шпилька: М6 стандартная (шаг 1мм)
- Плечо: 200мм (настраивается в коде)
- Концевой датчик: Оптический или механический (HIGH при достижении стартового положения)
- STEP: GPIO 33
- DIR: GPIO 23
- MICROSTEP_EN: GPIO 22 (все джамперы MS1, MS2, MS3 подключены к этому пину)
- ENDSTOP: GPIO 25 (HIGH когда достигнуто стартовое положение)
- Встроенная кнопка Atom Lite (GPIO 39)
- Встроенный RGB светодиод Atom Lite
-
Установите поддержку ESP32:
- File → Preferences → Additional Boards Manager URLs
- Добавьте:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Tools → Board → Boards Manager → найдите "ESP32" и установите
-
Установите библиотеку M5Atom:
- Sketch → Include Library → Manage Libraries
- Найдите "M5Atom" и установите
-
Настройте плату:
- Tools → Board → ESP32 Arduino → M5Stack-ATOM
- Tools → Port → выберите COM порт вашего устройства
- Tools → Upload Speed → 115200 (или выше, если поддерживается)
- Tools → CPU Frequency → 240MHz (WiFi/BT)
- Tools → Flash Frequency → 80MHz
- Tools → Flash Size → 4MB (32Mb)
- Tools → Partition Scheme → Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
- Индикация: Мигающий желтый LED
- Действие: Мотор остановлен
- Стартовое состояние: Система запускается в этом режиме
- Индикация: Зеленый LED
- Действие: Движение вперед с компенсацией вращения Земли
- Микрошаг: Включен (1/32)
- Скорость: Сидерическая скорость с компенсацией тангенциальной ошибки
- Автопауза: При достижении максимального угла (60°)
- Индикация: Мигающий красный LED
- Действие: Движение назад к стартовому положению
- Микрошаг: Выключен (максимальная скорость)
- Скорость: 10°/сек
- Остановка: При достижении концевого датчика (HIGH)
- PAUSE → WORKING: Запуск рабочего хода
- WORKING → PAUSE: Остановка и пауза
- PARKING → PAUSE: Прерывание парковки
- Любой режим → PARKING: Запуск парковки
Все основные параметры задаются через константы в начале файла StarTracker_barndoor.ino:
#define ARM_LENGTH_MM 200.0 // Длина плеча в мм
#define SCREW_PITCH_MM 1.0 // Шаг резьбы М6 в мм#define MOTOR_STEPS_PER_REV 32 // Шагов на оборот двигателя
#define GEAR_RATIO 63.68395 // Передаточное число редуктора
#define MICROSTEP_DIVISOR 32 // Делитель микрошага (1/32)#define START_ANGLE_DEG 5.0 // Стартовый угол в градусах
#define MAX_ANGLE_DEG 60.0 // Максимальный угол раскрытия#define PARKING_SPEED_DEG_PER_SEC 10.0 // Скорость парковки в градусах/сек#define INVERT_DIRECTION false // true = инвертировать направлениеСистема автоматически компенсирует тангенциальную ошибку прямой шпильки. Скорость движения корректируется по формуле:
v(θ) = v₀ / cos²(θ/2)
где:
v₀- базовая сидерическая скорость (0.004178°/сек)θ- текущий угол раскрытия
Это обеспечивает точное отслеживание звезд на всех углах.
Угол и позиция автоматически сохраняются в память:
- Каждые 2048 шагов в рабочем режиме
- Каждые 64 шага в режиме парковки
- При каждом обороте шпильки
- При любой смене режима
При перезапуске система восстанавливает позицию, если не была припаркована.
Концевой датчик должен быть подключен к GPIO 25 и выдавать HIGH когда достигнуто стартовое положение.
При переходе концевика из HIGH в LOW система:
- Сбрасывает позицию на 0
- Устанавливает угол на стартовый (5°)
- Помечает систему как припаркованную
StarTracker_barndoor/
├── StarTracker_barndoor.ino # Основной файл прошивки
├── README.md # Документация
├── arduino_setup.md # Инструкция по настройке Arduino IDE
└── .gitignore # Игнорируемые файлы Git
MIT License
WolftheGrey