Это щеточный моторчик, он громкий, плюс на фото есть редуктор. Хз, сейчас эра безщеточных многофазных синхронных моторов на постоянных магнитах с преобразователями постоянного тока в переменный, только все равно беззвучных нет. Может получится найти с большим количеством полюсов чтобы без редукции скорости.
У меня просто задача стоит управлять двумя моторами, при этом постоянно отслеживая датчик веса.
Очень хороший вариант использования шаговых моторов с бесшумным драйвером к сожалению не подходит для однозадачной ардуинки, потому что отправка импульсов STEP блокирует выполнение программы.
---------
Можно конечно попробовать выйти из положения, используя для пинов STEP функцию tone(), вроде бы неблокирующую.
Как это блокирует. Таймеры освойте. Ну или в цикле с очень мелким шагом генерировать можно. Но это по сути самописный зайчаток операционки, проще уж таймерами
Вы подразумеваете, что управлять шаговым мотором можно, посылая STEP импульсы через что-то типа Timer2.setFrequency () ? Использовать Tone можно только для одного пина?
Скажем, мне нужно управлять двумя шаговиками (бесшумная замена моторчиков с редукторами).
Именно. Не знаю как это конкретно реализованно по-ардуински но по нормальному задаётся длительность управляющего импульса регистром компаратора таймера и частота да, периодом этого таймера. В прерывании шаги считать, для ясности
Если честно, то я не знаю...
К тому же время цикла будет меняться в зависимости от того, вызвана ли конкретная функция (ведь пока функция не будет выполнена, следующий за ней код в loop не будет выполняться).
Началось всё с коллекторных моторов с редуктором. Значит количество шагов и оборотов вам не важно. Насколько должны быть точными тайминги управления моторами? Миллисекунды, микросекунды? Цикл loop укладывается в это время?
Постановку задачи надо максимально упростить, что-то мне подсказывает, что не нужно там двумя таймерами гоняться за микросекундами. Может, оставить внешние выводы, по которым вы включали моторы, добавить ШИМ вывод, а затем по схеме И посылать на включение шаговыми моторами?
Началось всё с шагового двигателя.
Дело в том что я сооружаю весовой дозатор.
Опытный образец работает, но использование одного шнека для точной дозировки не позволяет получить высокую скорость и точность засыпки одновременно.
На этапе досыпки приходится совершать возвратно-поступательные движения шнека, для того чтобы регулировать зазор и не допустить пересыпания.
У опытного образца имеются и другие недостатки - АЦП тензодатчика использовался без вывода RDRY (сообщение о готовности результата измерения), управление мотором блокирует опрос датчика веса, соответственно управлять приходится "отрезками", т.е. выполнять N шагов и только потом опрашивать весы. Опрос занимает ~100 мс.
Двухшнековый аппарат должен работать намного лучше.
Я заложил в новую концепцию моторы постоянного тока для неблокирующего код управления через аппаратный ШИМ и использование внешнего прерывания со стороны АЦП, чтобы не выполнять опрос каждое обновление цикла.
При сооружении макета оказалось, что под нагрузкой моторчики с редукторами неприятно громко жужжат. Но работают.
Т.е. я ищу способ минимизировать уровень шума.
Один из способов - шаговые моторы. Но это решение вызывает дополнительные технические сложности, даже не принимая в расчёт необходимость переразводки и заказа платы.
Комментарии: 16
Mihail
Это щеточный моторчик, он громкий, плюс на фото есть редуктор. Хз, сейчас эра безщеточных многофазных синхронных моторов на постоянных магнитах с преобразователями постоянного тока в переменный, только все равно беззвучных нет. Может получится найти с большим количеством полюсов чтобы без редукции скорости.
Aleksandr
У меня просто задача стоит управлять двумя моторами, при этом постоянно отслеживая датчик веса. Очень хороший вариант использования шаговых моторов с бесшумным драйвером к сожалению не подходит для однозадачной ардуинки, потому что отправка импульсов STEP блокирует выполнение программы. --------- Можно конечно попробовать выйти из положения, используя для пинов STEP функцию tone(), вроде бы неблокирующую.
Sanchez
Как это блокирует. Таймеры освойте. Ну или в цикле с очень мелким шагом генерировать можно. Но это по сути самописный зайчаток операционки, проще уж таймерами
Aleksandr
Вы подразумеваете, что управлять шаговым мотором можно, посылая STEP импульсы через что-то типа Timer2.setFrequency () ? Использовать Tone можно только для одного пина? Скажем, мне нужно управлять двумя шаговиками (бесшумная замена моторчиков с редукторами).
Sanchez
Именно. Не знаю как это конкретно реализованно по-ардуински но по нормальному задаётся длительность управляющего импульса регистром компаратора таймера и частота да, периодом этого таймера. В прерывании шаги считать, для ясности
Andrey
https://habr.com/ru/articles/453276/
Andrey
А какое время цикла loop в вашей программе?
Aleksandr
Если честно, то я не знаю... К тому же время цикла будет меняться в зависимости от того, вызвана ли конкретная функция (ведь пока функция не будет выполнена, следующий за ней код в loop не будет выполняться).
Andrey
Началось всё с коллекторных моторов с редуктором. Значит количество шагов и оборотов вам не важно. Насколько должны быть точными тайминги управления моторами? Миллисекунды, микросекунды? Цикл loop укладывается в это время? Постановку задачи надо максимально упростить, что-то мне подсказывает, что не нужно там двумя таймерами гоняться за микросекундами. Может, оставить внешние выводы, по которым вы включали моторы, добавить ШИМ вывод, а затем по схеме И посылать на включение шаговыми моторами?
Andrey
Типа такого
Aleksandr
Началось всё с шагового двигателя. Дело в том что я сооружаю весовой дозатор. Опытный образец работает, но использование одного шнека для точной дозировки не позволяет получить высокую скорость и точность засыпки одновременно. На этапе досыпки приходится совершать возвратно-поступательные движения шнека, для того чтобы регулировать зазор и не допустить пересыпания. У опытного образца имеются и другие недостатки - АЦП тензодатчика использовался без вывода RDRY (сообщение о готовности результата измерения), управление мотором блокирует опрос датчика веса, соответственно управлять приходится "отрезками", т.е. выполнять N шагов и только потом опрашивать весы. Опрос занимает ~100 мс. Двухшнековый аппарат должен работать намного лучше. Я заложил в новую концепцию моторы постоянного тока для неблокирующего код управления через аппаратный ШИМ и использование внешнего прерывания со стороны АЦП, чтобы не выполнять опрос каждое обновление цикла. При сооружении макета оказалось, что под нагрузкой моторчики с редукторами неприятно громко жужжат. Но работают. Т.е. я ищу способ минимизировать уровень шума. Один из способов - шаговые моторы. Но это решение вызывает дополнительные технические сложности, даже не принимая в расчёт необходимость переразводки и заказа платы.