Идея для постройки поворотного стола (платформы) на Arduino и шаговике. Дистанционное управление.
Vložit
- čas přidán 21. 08. 2024
- Стол делался как временное решение для калибровки 3D сканера (БЕЗ использования 3Д принтера), т.к. надоело после каждого скана бегать от ПК к детали для её поворота. Это приходилось делать минимум 6-8 раз, пока деталь не отсканируется по кругу (и таких "кругов" было огромное количество). Стол точностью поворота не блещет (она вообще никакая из за используемого типа шагового двигателя), присутствуют люфты, после поворота приходится выжидать некоторое время, пока поворотная платформа и деталь не успокоятся. Но все же, стол оказался хорошим помощником. В дальнейшем соберу конструкцию посерьезнее.
Используемые детали:
Шаговый двигатель 28byj-48 5v (на 5 вольт)
Модуль шагового двигателя (сборка дарлингтона ULN2003)
Пара кнопок, корпус, крепежные детали, разъемы.
Затраченное время- 1 час с хвостиком, сумма- копейки.
Дополнения по скетчу. В среде Arduino IDE (терпеть её не могу, но пришлось делать в ней, для масс, так сказать) есть библиотека stepper.h, странно, но многие жалуются, что она должным образом не работает с этим типом шагового мотора. Если разобраться с его фазами, то все встанет на свои места. Надо просто при описании ног, две средние поменять местами (in1, _IN3_, _IN2_, in4), а не как они прописаны в примере- по порядку.
Скетч можно копипастить в Arduino IDE (за основу взят один из примеров и модифицирован):
#include "Stepper.h" // Если не заработает, укажите угловые скобки вместо кавычек (больше-меньше)
const int stepsPerRevolution = 2048; // КОЛИЧЕСТВО ШАГОВ НА ОБОРОТ (С ЭТИМ ШАГОВЫМ МОТОРОМ- УКАЖЕМ ПРИМЕРНО)
Stepper myStepper(stepsPerRevolution, 4, 6, 5, 7); // ПИНЫ УКАЗЫВАЕМ ТОЛЬКО В ТАКОМ ПОРЯДКЕ, ИНАЧЕ РАБОТАТЬ ДОЛЖНЫМ ОБРАЗОМ НЕ БУДЕТ
int cw=3; //УКАЖЕМ ПИН ДЛЯ ОДНОГО ИЗ ВРАЩЕНИЙ (ОБРАЗНО- ПО ЧАСОВОЙ СТРЕЛКЕ
int ccw=2; // ПРОТИВ ЧАСОВОЙ
void setup() {
// set the speed at 3 rpm:
myStepper.setSpeed(3); //СКОРОСТЬ (3 ОБОРОТА В МИНУТУ)
pinMode(cw,INPUT_PULLUP); // ПИНЫ КАК ВХОДЫ С ПОДТЯГИВАЮЩИМ РЕЗИСТОРОМ
pinMode(ccw,INPUT_PULLUP);
}
void loop() {
if(digitalRead(cw)==0) myStepper.step(1); //ВРАЩАЕМ В ОДНУ СТОРОНУ
if(digitalRead(ccw)==0) myStepper.step(-1); // И В ДРУГУЮ, СМОТРЯ НА КАКОЙ ПИН "КИНУТ" НОЛЬ
}
Чёт баланс белого завален! :))
Да, заметил уже после съемки, автонастройка включена была ((( можно было вытянуть конечно, но времени в обрез. Подготовка к НГ :)