Как погасить вибрации nema17
- Войдите на сайт для отправки комментариев
Втр, 08/09/2015 - 18:50
Привет!
Стоит задача избавиться от вибраций шагового мотора nema17. Когда держишь в руках, его почти не слышно, кладёшь на стол - трындец :) Пробовал ставить количество микрошагов на 800, помогает немного, но всё равно гремит. Мотор будет крепиться на каркасе из фанеры, вибрация передаётся как в камертоне.
Попробовал конструкцию из рамки, внутри которой на мягком материале висит мотор, фото ниже. Попытка провалилась, возможно полиэтилен не лучший вариант. Пробовал силиконовые листы, тоже не вариант.
Может кто поможет советом? :)
я где-то видел видео с демонстрацией оптимизированной библиотеки - была демонстрация гудящего двигателя на столе и практически бесшумного.
щаз не помню, по каким словам это искать.
Пока не нахожу такого видео :(
Вот случайно наткнулся на резиновые прокладки http://www.ebay.com/itm/1x-NEMA-16-17-Stepper-motor-damper-vibration-mount-gasket-noise-resonance-/171907076110?hash=item280675d00e
тупиковый путь с этими прокладками - там токи оптимизировать нужно программным образом.
Согласен, такие прокладки врядли помогут, хотя на ютубе нашел пару роликов, покупатели довольны.
Через программу решить проблему похоже не судьба, использую драйвер a4988, а у него либо HIGH, либо LOW. ШИМ не поддерживает.Да и знаний у меня на программу не хватит, самоучка-любитель :)
Сейчас переделал свою конструкцию. Вместо полиэтилена поставил резинки, эффект поразил! Вибрации исчезли, работает также тихо, как в руках на весу. Из минусов: резинки обычно быстро приходят в негодность и мотор висит в воздухе на резинках, поэтому при нагрузке на вал будет смещение, придётся как-то оптимизировать конструкцию и учитывать этот момент при натяжении зубчатого ремня.
Дурью маетесь. На полном серьезе. Выйдите из резонансного режима и будет работать относительно тихо. Если вы делаете какой-либо станок/плоттер/принтер, то шума не избежать - точность важнее тишины.
При конструкции с резинками двигатель будет вращаться вокруг оси и вы не сможете получить позицию. Увеличение жесткости (добавление резинок) неизбежно вернет вибрацию.
Лучше подбирать скорость вращения для меньшей вибрации. Вибрация характерна всем шаговикам, не только nema17. Хотите тихо - берите сервы, насколько я слышал они лишены недостатка резонанса.
Согласен, такие прокладки врядли помогут, хотя на ютубе нашел пару роликов, покупатели довольны.
Настройте ток, который выдает драйвер. Нестабильная работа может быть, как от избытка, так и от недостатка тока. Мотор греется?
В вашем драйвере на сигнальном пине вроде напряжение от 0 до 1 изменяется с вращением потенциометра. на Изидрайвере - 0-5 вольт. Почитайте даташит.
Недостаток напряжения тоже звуков добавляет.
С токами всё ок.
Вообще погрешность из-за резинок будет конечно, но для моей конструкции это не критично, супер нагрузок там не будет и миллиметр погрешности допустим.
Зачем я вообще этим занялся? Когда один мотор гудит ещё ничего, радио погромче и гуд. Но их будет минимум 10 штук и тут уже от гула сойти с ума не долго. Пока наверное остановлюсь на резинках и буду подбирать механику под самую тихую скорость мотора, когда вибраций минимум. Тут ещё такая штука, резинки вибрацию глушат, а вот зубчатый ремень эту вибрацию передаёт на колесо и на всю станину.... брррр.
А через такие втулочки крепить не пробовали?
Хочу попробовать, есть в гараже целая банка таких, ноги ещё не дошли :)
Ваш драйвер поддерживает микрошаг, выводами М1,М2 и М3 ставите микрошаг 1/32 и вибрации исчезнут.
maksim, но ведь скорость падает, в 16 раз.
Естественно, только не в 16, а в 32 раза. А что мешает увеличить частоту импульсов?
Я не силён в программной части :)
Запускаю мотор так:
Т.е. каждые две милисекунды происходит шаг, если уменьшить до одной милисекунды, то мотор просто свистит, вал не вращается. Если поставлю 1/32, то скорость будет ни какая. Или как-то это можно ускорить?
Можно попробовать так:
С циферками только поиграйтесь.
maksim, спасибо! Работает :)
Буду теперь разбираться как это грамотно использовать.
А как это с tone() считать количество совершенных мотором шагов?
Если 1000 герц в секунду, то если даю мотору работать 3 сек, то он совершил 3000 шагов?
Попробуйте библиотеку AccelStepper, если устроит по скорости.
Я правильно понимаю, что AccelStepper во время работы остановить нельзя? Т.е. если мотор поехал, то тормоза для него нет?
Пробовал stepper.stop(); - не срабатывает.
если в программе пропишите остановку по нажатию кнопки - мотор и остановится при нажатии кнопки
stepper.stop(); работает.
только не забываем прописать stepper.run();
Работает без stepper.run(); а stepper.stop(); не срабатывает.
дык и не должно работать.
поиграйтесь с примерами и разберитесь с работой библиотеки.
а кнопки с дребезгом - нужно его побороть.
делей использовать нельзя.
Нереально. Хоть убейте, не могу я понять как с этим работать, мне проще написать свои пошаговые движения, чем разобраться в библиотеке. Как ни крутил, не работает у меня stepper.stop();
Если это просто, покажите, пожалуйста, какие-нибудь примеры с кнопкой пуск и стоп.
Нереально. Хоть убейте, не могу я понять как с этим работать, мне проще написать свои пошаговые движения, чем разобраться в библиотеке. Как ни крутил, не работает у меня stepper.stop();
Если это просто, покажите, пожалуйста, какие-нибудь примеры с кнопкой пуск и стоп.
А что Вы Вашими движками делаете? Какая задача для них стоит? Я крутил движки GRBL контроллером. Подчиняются изумительно, выполняют любую команду. Но там только 3 движка.
GRBL требует компьютер, мне важно чтобы работало без компа.
У моего прибора будет два движка + proMini + пару кнопок.
Одна кнопка должна запускать вращение моторов, другая должна их тормозить.
-------
Про stepper.stop(); в мануале всего одна строка описания и один пример из которого я нифига не понимаю :) В сети ничё не нашел.
Sets a new target position that causes the stepper to stop as quickly as possible, using the current speed and acceleration parameters.
Про stepper.stop(); в мануале всего одна строка описания и один пример из которого я нифига не понимаю
ну, попробуй этот пример, затем прикрути к этому примеру кнопку, что бы по условию логического состояния кнопки стоп срабатывал.
GRBL требует компьютер, мне важно чтобы работало без компа.
У моего прибора будет два движка + proMini + пару кнопок.
Одна кнопка должна запускать вращение моторов, другая должна их тормозить.
-------
Свое знакомство с шаговыми движками начал здесь http://ecnc.ru/
Там есть скетчи (управление с компьютера) и для униполярных, и для биполярных движков. Скетчи очень понятные. Можно самостоятельно переделать на управление и кнопками и пр. Почитай этот сайт...может поможет
Вам ведь сказали убрать delay() и заменить на анализ времени. У вас стоп срабатывает, но после того как двигатель уже остановился.
https://www.youtube.com/watch?v=gyZBxImQxf8
С AccelStepper так и не разобрался, пока мотор работает невозможно не только его остановить, но и даже не работают другие элементы как кнопки, светодиоды и д.р. Как буд-то сама библиотека работает на delay(). Сейчас склоняюсь к тому, чтобы написать свой код для управления мотором.
https://www.youtube.com/watch?v=gyZBxImQxf8
С AccelStepper так и не разобрался, пока мотор работает невозможно не только его остановить, но и даже не работают другие элементы как кнопки, светодиоды и д.р. Как буд-то сама библиотека работает на delay(). Сейчас склоняюсь к тому, чтобы написать свой код для управления мотором.
Интересное видео. Чем фанеру обрабатывали? Что за станочек. Самоделка или заводской? Понравилось как он пластик кроит.
Станок-самоделка, как говорят "из говна и палок" :) Фанеру тоже на нём кроил, очень удобно. Жалею что в детстве у меня не было такого станка, только ломаные ножовочные полотка и старые обрезки фанеры. В детстве руки чесались что-то творить, но нифига не было, сейчас есть всё и руки чешутся, а времени нет.
Дык покажите его нам в теме http://arduino.ru/forum/proekty/trudnyi-put-k-chpu
Я думаю, будет интересно его посмотреть тем кто свои станочки мастерит.
С AccelStepper так и не разобрался, пока мотор работает невозможно не только его остановить, но и даже не работают другие элементы как кнопки, светодиоды и д.р. Как буд-то сама библиотека работает на delay(). Сейчас склоняюсь к тому, чтобы написать свой код для управления мотором.
Все от того, что вы либо вообще не увидили примеры билиотеки, либо взяли за основу пример Blocking (что означает слово blocking думаю догадались). Есть пример MultiStepper, вот на основе него и пишите свой код.
Что бы остановить мотор достаточно присвоить текущее положение заданому
Я брал код из примера Quickstop.ino, как он работает не понял, пробовал там что-то менять, принципа работы вообще не понял :)
maksim, спасибо за пример, попробую его позже, сейчас пишу код с tone(), вполне что-то получается. Сейчас мне нужно написать хотябы простую программу, позже буду оптимизировать, если сам не разберусь с AccelStepper, то буду кого-нибудь просить помощь за вознаграждение :)
Joiner, фото и видео своего станка опубликую попозже.
Joiner, фото и видео своего станка опубликую попозже.
ОК.