stepmotor писал(а):http://www.airspayce.com/mikem/arduino/AccelStepper/
Библиотека рулит только одним шаговиком, но кто мешает использовать для Вашей цели три Arduino Nano
Если делать как Вы хотите то лучше не просто дергать ногами МК а использовать таймер для реализации задержек между шагами тем самым регулировать скорость, да и работать будет все мягче.
Хотелось бы на меге всё сделать, так сказать с перспективой на будущее - ну там, фул график контроллер, автокоррекция диаметра и все такое
. Типа всё в одном объединяется. Ну ведь прошивка Марлин ведь управляет с одной меги аж 5-ю движками, значит в принципе можно. Потом опять же надо в случае 3х НАНО всякий раз вынимать и вставлять USB шнур в конкретную нану. Я хочу чтобы и от компа можно было бы регулировать скорость. О таймере я думал, но решил обойтись 4-мя разными задержками, в зависимости от того, какие в рабочем цикле будут события, это Delay0...Delay3.
....
Посмотрел примеры, оказывается эта библиотека может работать с 2-мя шаговиками.
- Код: Выделить всё • Развернуть
// DualMotorShield.pde
// -*- mode: C++ -*-
//
// Shows how to run 2 simultaneous steppers
// using the Itead Studio Arduino Dual Stepper Motor Driver Shield
// model IM120417015
// This shield is capable of driving 2 steppers at
// currents of up to 750mA
// and voltages up to 30V
// Runs both steppers forwards and backwards, accelerating and decelerating
// at the limits.
//
// Copyright (C) 2014 Mike McCauley
// $Id: $
#include <AccelStepper.h>
// The X Stepper pins
#define STEPPER1_DIR_PIN 3
#define STEPPER1_STEP_PIN 2
// The Y stepper pins
#define STEPPER2_DIR_PIN 7
#define STEPPER2_STEP_PIN 6
// Define some steppers and the pins the will use
AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);
AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN);
void setup()
{
stepper1.setMaxSpeed(200.0);
stepper1.setAcceleration(200.0);
stepper1.moveTo(100);
stepper2.setMaxSpeed(100.0);
stepper2.setAcceleration(100.0);
stepper2.moveTo(100);
}
void loop()
{
// Change direction at the limits
if (stepper1.distanceToGo() == 0)
stepper1.moveTo(-stepper1.currentPosition());
if (stepper2.distanceToGo() == 0)
stepper2.moveTo(-stepper2.currentPosition());
stepper1.run();
stepper2.run();
}
Потом еще вот цитата из хелпа по библиотеке:
1.48 2015-08-25 Added new class MultiStepper that can manage multiple AccelSteppers, and cause them all to move to selected positions at such a (constant) speed that they all arrive at their target position at the same time. Suitable for X-Y flatbeds etc.