Плавный старт и плавная остановка шагового двигателя
- Войдите на сайт для отправки комментариев
Втр, 31/07/2012 - 16:40
Написал простенький код управления ШД, хочу сделать что-бы ШД плавно стартовал и плавно останавливался, плавную остановку я реализовал в 27-й строке, а вот со стартом не могу разобраться.
int PIN_STEP = 2;
int PIN_DIR = 3;
int PIN_ENABLE = 4;
void setup()
{
pinMode(PIN_STEP, OUTPUT);
pinMode(PIN_DIR, OUTPUT);
pinMode(PIN_ENABLE, OUTPUT);
digitalWrite(PIN_ENABLE, HIGH);
}
void loop()
{
int DELAY_STEP = 100; // Время в микросекундах на задержку между шагами
int MOVE_STEP = 1000; // Кол-во шагов
int FADE_STEP = 20;
int FADE_START = 200;
for (int i=0; i <= MOVE_STEP; i++)
{
if (i >= MOVE_STEP - FADE_START) {DELAY_STEP = DELAY_STEP + FADE_STEP;} // Плавная остановка
digitalWrite(PIN_DIR, HIGH); // Поворот по часовой стрелке
digitalWrite(PIN_STEP, LOW);
digitalWrite(PIN_STEP, HIGH);
delayMicroseconds(DELAY_STEP); // Устанавливаем задержку между шагами
}
delay(5000);
}
int DELAY_STEP = 500; //какой должен быть коэффициент на старте, чтобы через 200 шагов получились нужные DELAY_STEP = 100 для среднено участка мне считать лень if (i <= FADE_START) {DELAY_STEP = DELAY_STEP - FADE_STEP;}Да, спасибо так и есть, DELAY_STEP = 4120 в моем случае. Не очень плавно вот только, буду думать.