Управление двигателем постоянного тока с энкодером
Re: Управление двигателем постоянного тока с энкодером
Ну что же, удачи . Иногда полезно идти своим путем, не опираясь на общепризнанный опыт. Во всяком случае будет опыт и практика
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Re: Управление двигателем постоянного тока с энкодером
Вы путаете одну вещь,в примере контролируемой величиной является скорость вращения двигателя,поэтому и применяют энкодер,что бы знать мгновенную скорость вращения,только и всего.Alhim20 писал(а): 02 апр 2025, 09:12Мотор как на видео в примере https://microkontroller.ru/arduino-proj ... ntrollere/Brand2 писал(а): 02 апр 2025, 09:06К сожалению автор поста так и не написал какой параметр он собирается контролировать,но я думаю это или температура или влажность или скорость потока воздуха,в принципе это не так и важно,для ПИД регулятора это не важно.montirovka писал(а): 02 апр 2025, 08:35
Brand2, а процесс быстроменяющийся в этой теме? Что то нужно поддерживать, какие то параметры есть ?
Да и вообще я думаю это применить можно с любым коллекторным мотором и энкодером.
Вам же нужно контролировать другую величину,поэтому оставьте энкодер в покое.
По поводу быстродействия системы с ПИД регулятором,для этого существует расчет коэффициентов ПИД регулятора в зависимости от точности выходного параметра,величины перерегулирования,устойчивости системы и тд,но можно их подбирать и экспериментально,глядя как система реагирует на возмущение.
Вот пример регулирования заслонки ДПТ с ПИД регулятором на примере регулирования температуры,драйвер двигателя L289N.
Коэфициенты взяты с потолка,подбираются на месте.
Можно еще добавить блок гистерезиса и подумать какое управление применить в ПИД регуляторе,аналоговое или релейное.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Вот что то такое получилось с ПИД регулятором. Значение ПИД выставлены случайные, надо тестить.
Прикручен веб интерфейс для теста.
Прикручен веб интерфейс для теста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alhim20 03 апр 2025, 05:04, всего редактировалось 3 раза.
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
А вот это с линейным регулятором скорости. Надо тестить.
Прикручен веб интерфейс для теста.
Прикручен веб интерфейс для теста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
То что значения выставлены случайным образом, вы не заметили что ШИМ работает. Так? Так.Alhim20 писал(а): 02 апр 2025, 16:38 Вот что то такое получилось с ПИД регулятором. Значение ПИД выставлены случайные, надо тестить.
Прикручен веб интерфейс для теста.
В вашем случае линейная зависимость количества импульсов от оборотов, скорости импульсов от скорости оборотов. Все на одном валу.
Значение Кп поставьте для начала 1, а остальные коэффициенты по нулям. В теории он не должен докручивать. Должен остановиться немного не докрутив.
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Вот попробовал сделать код энкодера на быстрых счетчиках на прерываниях.Не знаю, будет ли работать. Прийду с работы, залью на камень проверю.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 13
- Зарегистрирован: 05 янв 2022, 19:04
- Имя: Вадим
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
Re: Управление двигателем постоянного тока с энкодером
Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
Arduino UNO c одним блоком Энкодер_мотора_(Code_-_Basic).ubi восьмая версия закрывается. А для чего вообще этот блок?Faza888 писал(а): 03 апр 2025, 14:31 Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Коллекторный мотор восьмую тоже закрывает.
А что является выходом у блоков?
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
Что бы заранее предугадать рухнет ли программа, я пользуюсь кнопкой "глаз" - просмотр кода проекта. Код есть - не рухнет, нет кода - закроется.
-
- Рядовой
- Сообщения: 13
- Зарегистрирован: 05 янв 2022, 19:04
- Имя: Вадим
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
Re: Управление двигателем постоянного тока с энкодером
Делал в свежей версии FLProg.
У блока энкодера выход со счетом, который через входы можно сбросить либо присвоить значение. Задумывал что при старте начальное положение будет считано из eeprom, при выключении устройства записываться в eeprom. Это чтобы использовать инкрементальный энкодер в качестве абсолютного.
У блока мотора нет выходов, в самом блоке прописываются пины к которым подключен драйвер мотора, для этого надо зайти в редактирование блока.
Могу вынести настройку пинов в параметры блока.
У блока энкодера выход со счетом, который через входы можно сбросить либо присвоить значение. Задумывал что при старте начальное положение будет считано из eeprom, при выключении устройства записываться в eeprom. Это чтобы использовать инкрементальный энкодер в качестве абсолютного.
У блока мотора нет выходов, в самом блоке прописываются пины к которым подключен драйвер мотора, для этого надо зайти в редактирование блока.
Могу вынести настройку пинов в параметры блока.
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
Если можете, то сделайте и подпишите для какой версии программы эти блоки. По моемому хватит путаницы с блоками для разных версий .
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Да, посмотрел свой быстрый энкодер, он работает, только переменную нужно инкрементировать или декрементировать, это я упустил.(*_*).Faza888 писал(а): 03 апр 2025, 14:31 Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Буду Ваши пробовать блоки. Сегодня занят, вечером попробую)
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Вот наткнулся еще на статью на форуме.. Оказывается велосипед или пол велосипеда уже давно изобретены.(*_*). Нужно оптимизировать код под мой энкодер наверно, еще не вникал.
► Показать
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
По ссылке статья о том, что я советовал на первой странице поста в самом низу.Alhim20 писал(а): 05 апр 2025, 04:08 Вот наткнулся еще на статью на форуме.. Оказывается велосипед или пол велосипеда уже давно изобретены.(*_*). Нужно оптимизировать код под мой энкодер наверно, еще не вникал.► Показать
Магнитный энкодер.
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Задолбался я короче искать блок, компилить разные библиотеки и т.д. Переделал код своего быстрого энкодера, и он прекрасно заработал с моим двигателем и магнитным энкодером. Вообще код работает ис щелевым оптическим энкодером и с крутилкой от Ардуино для настройки меню тоже.
У меня работает на ESP32. на других платах не тестил. Не нужно никаких библиотек. Пропуски шагов отсутствуют, проверял тахометром с компаратором для сравнения. мотор раскручивал до 3500 к оборотов.
Выдает один Тик за такт.
Определяет сторону вращения в Переменных Счет + и Счет -
Быстрые счетчики используются только для захвата прерывания для пина и получения импульса от энкодера. В быстрых счетчиках необходимо настроить пины с прерываниями для энкодера .
В медленном счетчике выведен Reset по переменной. Можно настроить пины Preset. В счетной переменной выводиться результат счета.
Пользуйте, кому мож надо. Позже попробую сделать еще версию, чтоб выдавал два тика за такт на спадах и подъемах уровней сигнала энкодера.
Может кто то сделает блок по этому коду. В новой версии проги получается самому сделать какой то полублок(
У меня работает на ESP32. на других платах не тестил. Не нужно никаких библиотек. Пропуски шагов отсутствуют, проверял тахометром с компаратором для сравнения. мотор раскручивал до 3500 к оборотов.
Выдает один Тик за такт.
Определяет сторону вращения в Переменных Счет + и Счет -
Быстрые счетчики используются только для захвата прерывания для пина и получения импульса от энкодера. В быстрых счетчиках необходимо настроить пины с прерываниями для энкодера .
В медленном счетчике выведен Reset по переменной. Можно настроить пины Preset. В счетной переменной выводиться результат счета.
Пользуйте, кому мож надо. Позже попробую сделать еще версию, чтоб выдавал два тика за такт на спадах и подъемах уровней сигнала энкодера.
Может кто то сделает блок по этому коду. В новой версии проги получается самому сделать какой то полублок(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alhim20 07 апр 2025, 17:41, всего редактировалось 1 раз.
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Re: Управление двигателем постоянного тока с энкодером
А не разбирались какой принцип? Две шторки? На оборот сколько импульсов?
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 28 окт 2024, 04:02
- Откуда: Белогорск
- Имя: Илья
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: Управление двигателем постоянного тока с энкодером
Обычный инкрементальный энкодер. В количество импульсов не вникал.
Логика такая:
Если последовательно (LOW_1 + LOW_2) > RISING_1 > RISING_2 > (LOW_1 + LOW_2) - значит один тик вправо.
Если последовательно (LOW_1 + LOW_2) > RISING_2 > RISING_1 > (LOW_1 + LOW_2) - значит один тик влево.
Если последовательно (LOW_1 + LOW_2) > RISING_1 > (LOW_1 + LOW_2) или (LOW_1 + LOW_2) > RISING_2 > (LOW_1 + LOW_2) - то сброс, зачета тика не произошло
Соответственно получаем один тик с одного полного такта.
Инфу взял у Dryundel с форума Энкодер Pro.
Логика такая:
Если последовательно (LOW_1 + LOW_2) > RISING_1 > RISING_2 > (LOW_1 + LOW_2) - значит один тик вправо.
Если последовательно (LOW_1 + LOW_2) > RISING_2 > RISING_1 > (LOW_1 + LOW_2) - значит один тик влево.
Если последовательно (LOW_1 + LOW_2) > RISING_1 > (LOW_1 + LOW_2) или (LOW_1 + LOW_2) > RISING_2 > (LOW_1 + LOW_2) - то сброс, зачета тика не произошло
Соответственно получаем один тик с одного полного такта.
Инфу взял у Dryundel с форума Энкодер Pro.
Последний раз редактировалось Alhim20 07 апр 2025, 17:05, всего редактировалось 1 раз.
- montirovka
- Капитан
- Сообщения: 728
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя