Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Управление коллекторным двигателем с обратной связью энкодером

Управление коллекторным двигателем с обратной связью энкодером 14 янв 2019 20:10 #1

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Здравствуйте! Уже давно ищу решение этому вопросу, но нахожу или для шаговых двигателей или для сервоприводов (а их мощности не достаточно)

Теперь о подробностях:
Есть привод от стекоподъемника, пока буду работать с ним и в случае успеха то соберу сам свой редуктор понадежнее из металла и в масляной ванне.
Параметры данного привода таковы:
Питание: 12V
Ток в холостого хода: 1,10А
Ток в нагрузке (если пытаться удержать руками, до остановки вала не доходит): 1,6А
(в будущем будет более мощный двигатель с током нагрузки более 20А)

Алгоритм управления нужен такой:
Крутим энкодер (не важно с какой скоростью) и выходной вал редуктора должен повернуться на такой же угол и самое важное с такой же скоростью! Без видимых задержек. Это важно. Так же при обесточивании блока управления нужно что бы запоминалось последнее положение вала.
И учитывая будущие модернизации было бы замечательно иметь своего рода множитель, смысл его в том что бы можно было джампером увеличивать соотношение команд энкодера к двигателю.
Тоисть так: по умолчанию все 1:1 один оборот энкодера к одному обороту выходного вала редуктора. Если требуется то перестановка второго джампера он удваивает количество оборотов вала редуктора до двух при одном повороте энкодера. И так до пяти раз.
Я встречал такой алгоритм у тестеров сервопривода и даже собрал такой на Attiny2313. Но он не работал совсем. Дергался привод произвольно и не слушался переключению оборотов. Еле связался с автором но он не стал проверять проект и просто сказал что все было ОК. Менял МК, все элементы схемы 1:1 по номиналам, печатка его использовалась. Перетыкал 4 сервопривода с рабочей модели и ничего. Так и закинул его в ящик на распайку. Потому пишу здесь, может все не так сложно как я думаю.
Предугадывая вопросы по обратной связи скажу: если кто знает не очень дорогие энкодеры и с хорошим ресурсом-буду благодарен за рекомендации. А пока же буду рассматривать обычный: RS1260ED1
Документацию прилагаю: voron.ua/files/pdf/Encoder/RS1260ED1-V01-0000.pdf
Фото привода тоже:

P.S. Не уточнил что было бы идеально повесить три независимых таких функций на один МК. Тосить три энкодера и три двигателя. Если возможно
Последнее редактирование: 14 янв 2019 20:52 от MitsuokaOroshi.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 14 янв 2019 21:03 #2

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
MitsuokaOroshi пишет:
Крутим энкодер (не важно с какой скоростью) и выходной вал редуктора должен повернуться на такой же угол и самое важное с такой же скоростью!
Каким образом управлять скоростью? Насколько я понимаю, то двигатель питается от +12V, управление дискретное: напряжение или подается, или нет. Когда напряжение подается, то скорость вращения постоянная. Если вращение энкодера быстрее, чем способность двигателя, то он будет запаздывать. Если вращать энкодер медленнее, то будут рывки. Как здесь управлять скоростью без "видимых задержек"? Или я неправильно понял вводную?

MitsuokaOroshi пишет:
Предугадывая вопросы по обратной связи...
Автоматизировал дома раздвижные шторы, обратной связью служит оптопара, на валу двигателя диск с отверстиями. Ресурс - вечный. Не она, название не знаю, но внешне похожа:


MitsuokaOroshi пишет:
при обесточивании блока управления нужно что бы запоминалось последнее положение вала
Тут вопрос неоднозначный. Контроллер не может заранее знать, что он будет обесточен. А когда обесточен, то уже ничего записать не может. Таким образом, он должен или по ходу все записывать, или должна быть предусмотрена схема задержки отключения питания на время записи.

Не знаю, что Вы конструируете, может подход другой и Вам не подойдет, но в тех же шторах у меня принцип такой:
Если движение закончено штатно, то положение записывается в память.
Если произошло внезапное обесточивание при движении привода, тогда в памяти положения нет и при следующей подаче питания запускается процесс калибровки. Шторы проходят от одного крайнего положения до другого (механизм оборудован концевиками), определяется весь ход и привод устанавливается в расчетное положение. В моем случае это день/ночь по восходу/заходу солнца.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 14 янв 2019 21:45 #3

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Как здесь управлять скоростью без "видимых задержек"? Или я неправильно понял вводную?
Я себе это представлял как большой сервопривод, там ведь тоже стоит обычный двигатель но с "обвесом" в виде переменного резистора и микросхемы. Может управлять двигателем транзистором (мощным) открывая его от минимума нужного напряжения (3В, это напряжение с которого начинает стабильно крутить редуктор) до максимальных 12В. Про оптопару Вы верно подметили. На вал редуктора только ее. Но я говорил именно о управляющем энкодере, так как его будем постоянно крутить в разные стороны и с разной скоростью.
Контроллер не может заранее знать, что он будет обесточен. А когда обесточен, то уже ничего записать не может. Таким образом, он должен или по ходу все записывать, или должна быть предусмотрена схема задержки отключения питания на время записи.
А если использовать внешнюю EEprom и в процессе работы постоянно писать туда положения?
Не знаю, что Вы конструируете, может подход другой и Вам не подойдет, но в тех же шторах у меня принцип такой:

К сожалению мне этот способ не подходит( Уже думал об этом.
Последнее редактирование: 14 янв 2019 21:54 от MitsuokaOroshi.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 14 янв 2019 22:46 #4

  • Wewelsburg
  • Wewelsburg аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 96
  • Спасибо получено: 5
Была искомая вами версия управления двгателя с щелевым энкодером на валу. Я обращался к ув. Soir, он писал по под мегу 8 которая управляла таким двигателем. Я сверлилку на ней делал. До сих пор работает.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 14 янв 2019 23:07 #5

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Спасибо за отзыв. Может помните название темы? Почитаю для ознакомления. Хоть у меня и сложнее условия но будет полезно ознакомится
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 00:18 #6

  • Wewelsburg
  • Wewelsburg аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 96
  • Спасибо получено: 5
ч\тото не могу найти эту тему. давно это было. Хотя документация на нее должна остаться.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 00:20 #7

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
По возможности гляньте, это не к спеху.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 07:30 #8

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
MitsuokaOroshi пишет:
Может управлять двигателем транзистором (мощным) открывая его от минимума нужного напряжения (3В, это напряжение с которого начинает стабильно крутить редуктор) до максимальных 12В.
ATTINY2313 и ему похожие AVR не имеют на своем борту ЦАП. Поэтому нужен или внешний ЦАП (можно на резисторах) или выходной сигнал ШИМ с преобразованием в постоянное напряжение. Или какой-то специализированный контроллер.
Но задачу получить одинаковую (с вращением энкодера) скорость, решить будет трудно. Если вообще возможно. Здесь видится только выдача напряжения, пропорционального скорости вращения энкодера, но реальная скорость вращения двигателя может быть (да и будет) несколько другой. Как сделать обратную связь по скорости, чтобы МК подстраивал выходное напряжение в пределах одного шага, пока себе не представляю. Наверно это возможно только при долгосрочной работе двигателя. Такие разработки тут есть - сверлильный станок и еще что-то там...
Кроме того, вращение самого энкодера вряд ли будет равномерным с постоянной скоростью, если это делается вручную. Шаг от шага теоретически скорость будет разная. МК еще сможет менять выходное напряжение, но отследить и скорректировать скорость двигателя пошагово - вряд ли.

MitsuokaOroshi пишет:
Но я говорил именно о управляющем энкодере, так как его будем постоянно крутить в разные стороны и с разной скоростью.
Энкодеры бывают оптические.

MitsuokaOroshi пишет:
А если использовать внешнюю EEprom и в процессе работы постоянно писать туда положения?
Внешняя память ничего не решает, писать постоянно можно и во внутреннюю. Вопрос только в ресурсах перезаписи.
Кроме того, запись требует времени (а во внешнюю память даже больше), но этот вопрос нужно рассматривать, понимая характеристики устройства. Скорость вращения, время реакции и т.п.
Последнее редактирование: 15 янв 2019 07:31 от Soir.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 09:44 #9

  • Фаза
  • Фаза аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 47
  • Спасибо получено: 1
Можно отслеживать наличие питающего напряжения, а на выводы питания МК повесить конденсатор большой (в разумных пределах) емкости, возможно через разделительный диод. При пропадании питания происходит остановка двигателя и делается запись в EEPROM.
Последнее редактирование: 15 янв 2019 09:45 от Фаза.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 09:53 #10

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
Да, примерно это я и имел ввиду, когда писал:
должна быть предусмотрена схема задержки отключения питания на время записи
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 09:57 #11

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
По преобразованию ШИМ в аналоговое напряжение я нашел эту статейку: old.grakovne.org/supply_1/
А по синхронизации оборотов с участием ШИМ пока ищу.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 15 янв 2019 10:14 #12

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
MitsuokaOroshi пишет:
По преобразованию ШИМ в аналоговое напряжение я нашел эту статейку
Да, из этого и выбирайте.

MitsuokaOroshi пишет:
А по синхронизации оборотов с участием ШИМ пока ищу.
При простом вращении двигателя это не проблема. (Например, здесь) А вот по шагам как - не представляю.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 02:45 #13

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Да, из этого и выбирайте.
Я верно понимаю что последняя схема в той статье самая подходящая?
При простом вращении двигателя это не проблема. А вот по шагам как - не представляю.
Может сморожу глупость но все же хочу сказать. Возможно ли опрашивать оба энкодера на предмет изменения скорости и если есть разница (минимально возможная) то изменять ширину импульса управляющего скажем той последней схемой из статьи? Как это реализовать программно я тоже не представляю но вдруг это приведет Вас к мысли о варианте решения.
P.S. Готов к лавине тапков :lol:
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 07:53 #14

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
Теоретически, двигатель вседа будет опаздывать минимум на один шаг. Сначала МК должен определить скорость, с которой сделан шаг на управляющем энкодере. (Тут тоже не все гладко, но пока пропустим.) То есть, шаг уже сделан. Затем он должен получить данные с датчика и определить, с какой скоростью отработал двигатель. То есть, дождаться, когда двигатель отработает шаг. И получается, что уже поздно этот шаг корректировать. А к тому времени управляющий энкодер уже может сделал следующий шаг, а может и несколько..., скорость которых может быть другой.

В этом примере регулирование скорости возможно, если датчик устроен таким образом, что на один шаг энкодера приходит с десяток импульсов датчика. Тогда МК анализирует каждый импульс датчика и в пределах одного шага энкодера может что-то корректировать.

Другое дело, если энкодер вращается с постоянной (или меделенно меняющейся) скоростью, на МК поступают импульсы с датчика, он их анализирует и корректирует напряжение. Запаздывание будет, но при постоянном вращении скорость будет сглажена и усреднена.

Кроме того, еще и угол поворота выдержать... То есть, речь идет о коротких движениях? Тут еще и инерцию нужно учитывать...

Но всё это какие-то гипотетические рассуждения оторванные от реалий. А реалии известны только Вам - никаких параметров Вы не даете. Пока что вообще малопонятно о каком устройстве мы говорим, возможно и рассуждения и решения должны быть совершенно другие...
Последнее редактирование: 16 янв 2019 08:12 от Soir.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 16:04 #15

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
В этом примере регулирование скорости возможно, если датчик устроен таким образом, что на один шаг энкодера приходит с десяток импульсов датчика. Тогда МК анализирует каждый импульс датчика и в пределах одного шага энкодера может что-то корректировать.
Можно посадить птопару и на вал самого двигателя-тогда это станет как Вы говорите но думаю что синхронизировать вращения энкодера и вала редуктора станет еще сложнее из за другого передаточного соотношения.

Кроме того, еще и угол поворота выдержать... То есть, речь идет о коротких движениях? Тут еще и инерцию нужно учитывать...
Инерцию думаю будет гасить сам редуктор, а та ее оставшаяся часть - весом рычага исполнительного органа. Если что и останется то пока это приемлемый результат.
Но всё это какие-то гипотетические рассуждения оторванные от реалий. А реалии известны только Вам - никаких параметров Вы не даете. Пока что вообще малопонятно о каком устройстве мы говорим, возможно и рассуждения и решения должны быть совершенно другие...
Я скажу но это ничего не изменит сильно, смысл в том что бы добиться именно такого управления. А так как я не Рокфеллер то не могу себе позволить значительные расходы на ультра точные системы и специализированные ИМС каких еще поискать. Прямая аналогия такому управлению это манипулятор повторяющий руку человека. Полагаю теперь тема заглохнет так как никому не интересно это. Станут усложнять до невозможности. А смысл в том что бы упростить и пусть даже ценой незначительных проявлений энерции.
Последнее редактирование: 16 янв 2019 16:05 от MitsuokaOroshi.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 16:42 #16

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
MitsuokaOroshi пишет:
Я скажу но это ничего не изменит сильно, смысл в том что бы добиться именно такого управления.
Я не про назначение этого устройства, а про его технические характеристики. Самая важная - о каком диапазоне скоростей идет речь? Если это относительно медленные процессы, то можно что-то пытаться выдумать на серийных МК. Если быстрые, тогда уже по-любому нужен специализированный.

Из реального решения пока вижу только выдать со стороны МК напряжение (сигнал ШИМ) пропорциональное скорости вращения управляющего энкодера. Точного повтора скорости не будет, но калибровкой можно что-то близкое подогнать. Конечно, будет зависимость от нагрузки, от температуры и т.п., но по крайней мере, это реально.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 16:53 #17

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Я не про назначение этого устройства, а про его технические характеристики. Самая важная - о каком диапазоне скоростей идет речь? Если это относительно медленные процессы, то можно что-то пытаться выдумать на серийных МК. Если быстрые, тогда уже по-любому нужен специализированный.
Думаю больше чем 3 оборота в сек. нет нужды. А в реале и менее 2-х.
Из реального решения пока вижу только выдать со стороны МК напряжение (сигнал ШИМ) пропорциональное скорости вращения управляющего энкодера. Точного повтора скорости не будет, но калибровкой можно что-то близкое подогнать. Конечно, будет зависимость от нагрузки, от температуры и т.п., но по крайней мере, это реально.
О именно такой калибровке я писал ранее, будь то подстрочник или джампер удваивающий значения управляющего сигнала-не принципиально. Температура в диапазоне 0 до 40 градусов больше не будет. Думаю если получится поддерживать положение вала редуктора как в сервоприводе то это будет идеально. Но опять же, если.
Последнее редактирование: 16 янв 2019 16:54 от MitsuokaOroshi.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 17:16 #18

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
Обороты это вторично, важно частота импульсов.

Про температуру я имел ввиду воздействие на механику, если не будет обратной связи по скорости.

Положение вала удерживать, это как?
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 17:22 #19

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Не понял про частоту, извините.
Удержание вала как в случае сервопривода: например мы покрутили энкодер и остановились, редуктор соответственно тоже остановлен и если будет оказываться усилие на него посредством рычага-он должен пытаться вернутся в исходное состояние в каком его остановили. Это как на вытянутой руке держать груз и не давать ему отклонять ее вниз под своим весом.
Последнее редактирование: 16 янв 2019 17:23 от MitsuokaOroshi.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 17:34 #20

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
Понятно, ещё одна сложность. Удержание наверное будет с дерганьем в пределах одного шага датчика положения. Датчик положения нужен аналоговый - переменный резистор, Холла... Или за счёт механики - червячная передача, например.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 17:41 #21

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Датчик положения нужен аналоговый - переменный резистор
Многооборотный проволочный подойдет? Есть пара на 10 кОм
Или за счёт механики - червячная передача, например
Да этот редуктор имеет червячную передачу
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 18:15 #22

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
MitsuokaOroshi пишет:
Многооборотный проволочный подойдет?
Не знаю, я рассуждаю чисто гипотетически, как принцип. Нужно примерять к реальному объекту.
Но опять же, удержание может быть не стабильным. По крайней мере, сразу за остановкой. Контроллеру нужно будет подобрать нужное напряжение, чтобы удерживать привод. Еще неизвестно, как поведет себя двигатель в режиме остановки, оставаясь под напряжением. Будут греться и обмотки, и управляющий транзистор, и блок питания...

По сумме всех исходных требований, мне видится такой проект мало реальным на такой элементной базе.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 18:36 #23

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Элементная баз самая минимальная по простой причине-если не удастся то смысл мне набирать элементов которые могут не понадобится. Все зависит от Ваших взглядов на решение вопроса. Тип МК, энкодера, оптопары и прочего. Я лишь купил привод и все. Если не пойдет то просто подарю другу, пусть поставит себе стеклоподъемик. Прикиньте на свой взгляд какие ресурсы могут понадобится для старта эксперимента и начнем.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 19:26 #24

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9022
  • Спасибо получено: 3129
  • Respect Site Sponsor 2019 Author
Не знаю, Вы за частоту так и не ответили, ТЗ нет...
Если навскидку, то МК желательно с АЦП (тоже неизвестно, будет ли аналоговая часть измерения). На этапе отладки, а может и потом, лучше иметь индикатор (хорошо 1602 или что-то такое), кнопки. Поэтому МК вырисовывается ATMEGA8.
Дальше - управляющий энкодер, узел ЦАП с мощным выходом, датчик положения, или вращения, или что там нужно...

Но сначала описание с техническими характеристиками.
Администратор запретил публиковать записи гостям.

Управление коллекторным двигателем с обратной связью энкодером 16 янв 2019 23:32 #25

  • MitsuokaOroshi
  • MitsuokaOroshi аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 61
Дисплей 1602 есть, мк какой скажете я куплю-не проблема, ATMEGA8 есть в наличии. энкодер и датчик положения тоже куплю. Думаю было бы хорошо что бы он был с максимально большим разрешением? Узел ЦАП с мощным выходом из статьи что я в начале давал ссылку подойдет по принципу: как есть?
По частоте, если Вы о частоте ШИМ-а то чем выше тем лучше? Верно?
Я могу только описать базовые характеристики, более точные надеялся узнать от тех кто с этим сталкивался. Не конкретно с такой задаче как у меня а с управлением с помощью шим-а
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Модераторы: wolf2000, Vakula, Айнцвайдрайченко, Soir