Управление скоростью шагового двигателя

Ответить
richialex
Рядовой
Сообщения: 31
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Управление скоростью шагового двигателя

#1

Сообщение richialex » 01.07.2020{, 22:21}

Здравствуйте! Без трех дней осваиваю flprog и в целом все интуитивно понятно. Но столкнулся неразрешимой (Для меня) проблемой.

Накидал схему для железа состоящего из arduino uno, cnc shield v3, фоторезистора, двух драйверов A4988 и двух Nema17. Суть простая, один двигатель крутится только в одну сторону, в то время как второй (работая с меньшей на скоростью) меняет свое направление от замыкания двух кнопок (каждый клик меняет направление движения - т.е двигатель бегает "туда-сюда") и все это дело останавливается и стартует в зависимости от фоторезистора (Есть свет - двигаемся, нет света - стоим).

Эту схему (Прилагаю файл во вложении) я осилил с помощью данного форума и youtube'а, все работает как надо и можно было бы запускать проект но, есть острая необходимость регулировки скорости работы данных двигателей, чтоб можно было во время работы подрегулировать обороты, и вот здесь я напоролся на стену, пробовал через scale подключать аналоговый потенциометр на параметр onval в генераторах управляющих двигателями, но они на него абсолютно не реагируют, пробовал подключать энкодер и по готовым библиотеками, и собирал по схемам из интернета, все им (двигателям) побоку (Кстати энкодер мне больше нравится, так как там есть кнопка которую можно повесить на вкл/выкл и не городить отдельную, да и в целом он как то уверенней крутится).

Так вот. Может кто подскажет как это реализовать? Заранее благодарен любой помощи.

P.S. И еще два момента, не таких критичных как регулировка оборотов, но все же если кто знает как сделать поделитесь пожалуйста.
1. Плавный старт и остановка двигателей при срабатывании фоторезистора.
2. Снижение оборотов двигателя (который бегает от кнопки к кнопке), при каждом клике на определенную величину (т.е. раз клик на единицу медленней, два клик еще на единицу медленней).
Вложения
cnc shield+uno+a4988.flp
(143 КБ) 53 скачивания

richialex
Рядовой
Сообщения: 31
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Управление скоростью шагового двигателя

#2

Сообщение richialex » 02.07.2020{, 23:47}

av писал(а):
02.07.2020{, 08:48}
richialex, вам нужно использовать спец.блоки для ШД. Обратите внимание вот на эту тему. В том блоке реализовано большинство функций (скорость, ускорение, остановка, направление вращения и т.д.). Переходите по ссылке изучайте.
Спасибо за ответ! Эту тему я нашел и проштудировал в первую очередь. Но часть блоков оттуда у меня просто не заработала (вернее при компилировании flprog вылетал с ошибкой). А с частью я не почему то не подружился, в частности с AlexCrane v 1.3 - возможно до конца не разобрался, но в целом собранная мною схема на стандартных блоках меня полностью устраивает и видимо поэтому я сильно не углублялся.

Уверен, что есть возможность опять таки на стандартных блоках собрать регулировку скорости, но так как я новичек, то пока не могу понять как это сделать, надеясь на помощь Форумчан в более быстром решении этого вопроса.

Суть проекта, это намотчик с укладчиком, на просторах интернета есть есть похожие проекты, но по тем или иным причинам они меня не устраивают, вот и решил попробовать....

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

Управление скоростью шагового двигателя

#3

Сообщение Davit07 » 03.07.2020{, 01:26}

richialex, Вы какой ШД используете ?
Если же управление через сигналы Step/ Dir, то луче блока AlexCrane Вы не найдете. Всё-таки послушайте совет av и обратите внимание на данный блок

richialex
Рядовой
Сообщения: 31
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Управление скоростью шагового двигателя

#4

Сообщение richialex » 04.07.2020{, 00:44}

av писал(а):
03.07.2020{, 13:30}
richialex, где то здесь на форуме была тема форумчанина из Германии как раз по укладчику/намотчику. Я ему помогал разобраться как его сделать на блоках от уважаемого AlexCrane. Как называется тема увы не помню. Создавалась программа с меню управления зависящая от толщины и длины намотки. Ищите эту тему, я тоже поищу может найду.

Отправлено спустя 1 час 29 минут 21 секунду:
Тему еле нашел :smile427: название и расположение вообще непонятно по каким критериям создавалось. Вот эта тема и проект к ней в версии 6.3.1
Для Gennadij2_v3.rar
Ух ты. Спасибо большое! Искал по "укладчик" и "намотчик", но не встречал эту тему.

Попробую разобраться, блока кнопок как у немца у меня нет, а в Вашем проекте единственный вход это A0 с данного блока. Да и экран мне особо не нужен, диаметр проволоки как и ширина катушек у меня всегда постоянна. Еще момент, который мне не понравился в блоке уважаемого AlexCrane, с его блока не идет сигнал (И его нельзя указать в блоке) на пин Enable драйвера и его нужно добавлять отдельно, хотя может это связано c cnc shield который я использую, так как в большинстве проектов предполагают подключение питания напрямую к драйверу.

В еще, в своем проекте я использую фоторезистор для остановки-пуска всей системы во время намотки (По сути при натяжении проволока загораживает свет от диода и ставит на паузу двигатели, а при провисании свет вновь попадает на фоторезистор и движение продолжается), но я столкнулся с проблемой, что при подключении фоторезистора на аналоговый вход, максимальная скорость двигателя сильно падает (Причем при испытании на спец блоке от AlexCrane этот момент тоже присутствует). Не подскажете что может служить причиной (Подключаю через 10k резистор) и возможно ли это как-то обойти?

В любом случае, спасибо за Вашу помощь! Из проекта по укладчику, как новичок, почерпнул для себя много нового.

P.S Кстати с регулировкой скорости я вроде разобрался с помощью энкодера и стандартных блоков (во вложении). Да и с ускорением вроде тоже начало получатся через генератор + таймер, но пока не корректно (Видимо с логикой у меня на старости лет не совсем лады)
Вложения
cnc shield+uno+a4988.flp
(306.42 КБ) 44 скачивания

richialex
Рядовой
Сообщения: 31
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Управление скоростью шагового двигателя

#5

Сообщение richialex » 04.07.2020{, 22:08}

av писал(а):
04.07.2020{, 09:04}
Все дело в том что обработка аналогового сигнала занимает время поэтому программа в этот момент тормозит (программу, таймеры, генераторы). Где то здесь на форуме это обсуждалось, делались замеры времени задержки при обработке аналоговой состовляющей. Обойти это можно только если использовать вместо фотодатчика(на аналоговом пине) рычажок закрепленный на намоточной проволоке и свободно двигающийся относительно точки крепления. Который в свою очередь при натяжении проволоки замыкает цифровые контакты кнопки. Что то типа такого:
Просто оставлю это здесь. Вдруг кому поможет. Нашел решение для обхода данного ограничения. Перед прошивкой платы, в блоке void setup() Необходимо прописать следующие строки:

Код: Выделить всё

  ADCSRA |= (1 << ADPS2);                     //Биту ADPS2 присваиваем единицу - коэффициент деления 16
  ADCSRA &= ~ ((1 << ADPS1) | (1 << ADPS0));  //Битам ADPS1 и ADPS0 присваиваем нули
Это ускоряет работу АЦП с аналоговым сигналами. Правда при этом снижается точность выполнения преобразований, но для таких как я, где аналоговый датчик играет роль выключателя это не критично.

В связи с этим вопрос... Можно ли данный код прописать в каком либо блоке flprog? А то при частых перепрошивках иногда забываешь прописывать код отдельно.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Управление скоростью шагового двигателя

#6

Сообщение AlexCrane » 06.07.2020{, 06:41}

richialex, Пару лет назад писал такой блок для А3
Быстрый_АЦП_3_(CODE).ubi
(12.24 КБ) 41 скачивание
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ответить

Вернуться в «Помогите, а то я "нимагу"»