Прошу помощ насчет библиотек
- Войдите на сайт для отправки комментариев
Здравствуйте!
Я новичок в этом деле и не русский, поэтому прошу сильно не ругайте.
Хочу управлять скоростью вращения шагового двигателя (Nema 17, 200 шагов за оборот, 0,4А) помощью Ардуино Уно, драйвера А4988 (MS1=L; MS2=H; MS3=L. т.е. микрошаг на 1/4) и потенциометра.
Написал скеч, суть которого в следующем:
диапазон потенциометра разделен пополам. В лево от "нуля" (ноль - в середине диапазона потенциометра) шаговик должен вращаться в одну сторону, причем наворачивая потенциометр к концу его диапазона, скорость вращения шаговика должна увеличиваться. В право от "нуля" должно происходить тоже самое, только в противопложном направлении. Сделал код так, что бы в одну сторону мотор вращался пользуя библиотеку AccelStepper, а в другую сторону - простым управлением драйвера, что видно в самом коде.
Вот и сам код:
#include <AccelStepper.h> AccelStepper motorR(1,6,5); int sstep=6; int dir=5; int pot=A1; int enablePin=3; int motSpeed; void setup (){ pinMode(sstep,OUTPUT); pinMode(dir,OUTPUT); pinMode(pot,INPUT); pinMode(enablePin,OUTPUT); motorR.setMaxSpeed(1600);} void loop() { if (analogRead(pot)<=492) { //левая половина диапазона потенциометра motSpeed = map(analogRead(pot),0,492,1600,0); motorR.setSpeed(motSpeed); motorR.runSpeed(); } if (analogRead(pot)>=532) { //правая половина диапазона потенциометра motSpeed = map(analogRead(pot),532,1023,10000,0); digitalWrite(dir,LOW); digitalWrite(sstep,HIGH); delayMicroseconds(motSpeed); digitalWrite(sstep,LOW); delayMicroseconds(motSpeed);} if (analogRead(pot)>493 && analogRead(pot)<531 ) // если потенциометр около нуля {digitalWrite(enablePin,HIGH);} //вал ротора можно вращать вручную else {digitalWrite(enablePin,LOW);}}
Проблемма в том, что когда шаговик управляется простым кодом, все получается как надо: мотор плавно увеличивает и уменьшает свою скорость на весь диапазон. И на оборот - когда библиотека управляет мотором, нельзя так плавно менять его обороты. Они более менее плавно меняются при небольшой скорости вращения. С увеличением скорости вращения, обороты увеличиваются рывками, т.е. есть время, в котором скорость вращения остается одна и та же, не смотря на то, что я продолжаю крутить потенциометр. Потом скорость вращения увеличивается немного, и опять остаются постоянными, и так до конца хода потенциометра.
Надеюсь, успел объяснить проблемму.
Помогите пожалуйста разобраться в чем дело!
Заранее спасибо!
эта библиотека не позволяет потенциометром регулировать скорость шаговика плавно и в большом диапазоне
ну и шаговый мотор для позиционирования предназначен, а для высоких скоростей его нужно разгонять
кнопками менять скорость получится
играйтесь со скоростью вращения с dc моторами
Спасибо, vvadim, за ответ!
Это полезно знать, что этой библиотекой нельзя потенциометром плавно управлять шаговик.
К сожалению, в моем проекте нельзя обойтись без шаговых двигателей. Придется писать самому и подгонять скеч по моим нуждам.
Спасибо еще раз!
Добрый день. А что за проект?
Приспособление для сварки и наплавки. Более-менее автоматизированое.
И какие скорости в об/сек требуются при подаче сварочной проволоки? Вопрос связан с тем, что из вашего скетча это совершенно не понятно. Да и вообще, там "каша". Например в строчках с 21 по 24 в пытаетесь использовать Accelstepper при этом переменная motSpeed есть частота сигналов Step и если посчитать без деления шагов, то вы регулируете примерно от 1 до 8 об/сек. ??? А в строчках с 27 по 34 то motSpeed уже время в микросекундах записываемое в делеимкс и если считать, то вы пытаетесь крутить мотор от 0.25 до 2500 об/сек(опять же пока не учитываем деление шага)???
Здравствуйте, vladimir62 !
Спасибо за Ваш интерес к моей работе!
Скетч мой к подаче проволки отношения не имеет. Кроме этого, это "опытный" скеч, в котором обороты, достигаемые шаговым двигателем к моему проекту тоже никчему. Вопрос вообще был не про это. Цель этого скетча - сравнить регулирование скорости вращения помощью потенциометра С библиотекой и БЕЗ нее. Поэтому, как объяснял в первом моем посту, код написан таким образом. Так что,можно сказать, эта "каша" умышлено там стоит.
Спасибо!