Страница 3 из 3
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 02 апр 2025, 11:57
MM33
Ну что же, удачи . Иногда полезно идти своим путем, не опираясь на общепризнанный опыт. Во всяком случае будет опыт и практика
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 02 апр 2025, 13:49
Brand2
Reguliator zaslonki.flp
Reguliator zaslonki.flp
Alhim20 писал(а): 02 апр 2025, 09:12
Brand2 писал(а): 02 апр 2025, 09:06
montirovka писал(а): 02 апр 2025, 08:35
Brand2, а процесс быстроменяющийся в этой теме? Что то нужно поддерживать, какие то параметры есть ?
К сожалению автор поста так и не написал какой параметр он собирается контролировать,но я думаю это или температура или влажность или скорость потока воздуха,в принципе это не так и важно,для ПИД регулятора это не важно.
Мотор как на видео в примере
https://microkontroller.ru/arduino-proj ... ntrollere/
Да и вообще я думаю это применить можно с любым коллекторным мотором и энкодером.
Вы путаете одну вещь,в примере контролируемой величиной является скорость вращения двигателя,поэтому и применяют энкодер,что бы знать мгновенную скорость вращения,только и всего.
Вам же нужно контролировать другую величину,поэтому оставьте энкодер в покое.
По поводу быстродействия системы с ПИД регулятором,для этого существует расчет коэффициентов ПИД регулятора в зависимости от точности выходного параметра,величины перерегулирования,устойчивости системы и тд,но можно их подбирать и экспериментально,глядя как система реагирует на возмущение.
Вот пример регулирования заслонки ДПТ с ПИД регулятором на примере регулирования температуры,драйвер двигателя L289N.
Коэфициенты взяты с потолка,подбираются на месте.
Можно еще добавить блок гистерезиса и подумать какое управление применить в ПИД регуляторе,аналоговое или релейное.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 02 апр 2025, 16:38
Alhim20
Вот что то такое получилось с ПИД регулятором. Значение ПИД выставлены случайные, надо тестить.
Прикручен веб интерфейс для теста.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 02 апр 2025, 16:54
Alhim20
А вот это с линейным регулятором скорости. Надо тестить.
Прикручен веб интерфейс для теста.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 07:50
montirovka
Alhim20 писал(а): 02 апр 2025, 16:38
Вот что то такое получилось с ПИД регулятором. Значение ПИД выставлены случайные, надо тестить.
Прикручен веб интерфейс для теста.
То что значения выставлены случайным образом, вы не заметили что ШИМ работает. Так? Так.
В вашем случае линейная зависимость количества импульсов от оборотов, скорости импульсов от скорости оборотов. Все на одном валу.
Значение Кп поставьте для начала 1, а остальные коэффициенты по нулям. В теории он не должен докручивать. Должен остановиться немного не докрутив.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 08:54
Alhim20
Вот попробовал сделать код энкодера на быстрых счетчиках на прерываниях.Не знаю, будет ли работать. Прийду с работы, залью на камень проверю.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 14:31
Faza888
Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 16:13
montirovka
Faza888 писал(а): 03 апр 2025, 14:31
Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Arduino UNO c одним блоком Энкодер_мотора_(Code_-_Basic).ubi восьмая версия закрывается. А для чего вообще этот блок?
Коллекторный мотор восьмую тоже закрывает.
А что является выходом у блоков?
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 17:03
montirovka
Что бы заранее предугадать рухнет ли программа, я пользуюсь кнопкой "глаз" - просмотр кода проекта. Код есть - не рухнет, нет кода - закроется.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 17:07
Faza888
Делал в свежей версии FLProg.
У блока энкодера выход со счетом, который через входы можно сбросить либо присвоить значение. Задумывал что при старте начальное положение будет считано из eeprom, при выключении устройства записываться в eeprom. Это чтобы использовать инкрементальный энкодер в качестве абсолютного.
У блока мотора нет выходов, в самом блоке прописываются пины к которым подключен драйвер мотора, для этого надо зайти в редактирование блока.
Могу вынести настройку пинов в параметры блока.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 03 апр 2025, 17:13
montirovka
Если можете, то сделайте и подпишите для какой версии программы эти блоки. По моемому хватит путаницы с блоками для разных версий .
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 04 апр 2025, 02:09
Alhim20
Faza888 писал(а): 03 апр 2025, 14:31
Добрый день!
Сделал 2 блока, для энкодера и мотора.
Прерывание срабатывает от первого выхода энкодера, в обработчике прерывания считываем уровень второго выхода и в зависимости от него инкрементируем или декрементируем переменную счета. Обратите внимание, номер прерывания это не номер пина!
Блок мотора на библиотеке accelmotor от AlexGyver. Как раз то что Вам нужно. Пины выхода на драйвер нужно указать в коде блока. Библиотеку скачаете в arduinoIDE.
Блоки не опробованы!
Да, посмотрел свой быстрый энкодер, он работает, только переменную нужно инкрементировать или декрементировать, это я упустил.(*_*).
Буду Ваши пробовать блоки. Сегодня занят, вечером попробую)
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 05 апр 2025, 04:08
Alhim20
Вот наткнулся еще на статью на форуме.
. Оказывается велосипед или пол велосипеда уже давно изобретены.(*_*). Нужно оптимизировать код под мой энкодер наверно, еще не вникал.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 05 апр 2025, 07:13
montirovka
Alhim20 писал(а): 05 апр 2025, 04:08
Вот наткнулся еще на статью на форуме.
. Оказывается велосипед или пол велосипеда уже давно изобретены.(*_*). Нужно оптимизировать код под мой энкодер наверно, еще не вникал.
По ссылке статья о том, что я советовал на первой странице поста в самом низу.
Магнитный энкодер.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 16:27
Alhim20
Задолбался я короче искать блок, компилить разные библиотеки и т.д. Переделал код своего быстрого энкодера, и он прекрасно заработал с моим двигателем и магнитным энкодером. Вообще код работает ис щелевым оптическим энкодером и с крутилкой от Ардуино для настройки меню тоже.
У меня работает на ESP32. на других платах не тестил. Не нужно никаких библиотек. Пропуски шагов отсутствуют, проверял тахометром с компаратором для сравнения. мотор раскручивал до 3500 к оборотов.
Выдает один Тик за такт.
Определяет сторону вращения в Переменных Счет + и Счет -
Быстрые счетчики используются только для захвата прерывания для пина и получения импульса от энкодера. В быстрых счетчиках необходимо настроить пины с прерываниями для энкодера .
В медленном счетчике выведен Reset по переменной. Можно настроить пины Preset. В счетной переменной выводиться результат счета.
Пользуйте, кому мож надо. Позже попробую сделать еще версию, чтоб выдавал два тика за такт на спадах и подъемах уровней сигнала энкодера.
Может кто то сделает блок по этому коду. В новой версии проги получается самому сделать какой то полублок(
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 16:48
montirovka
У вас на двигателе стоит магнитный энкодер?
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 16:49
Alhim20
Да, установлен. Исполнен на датчиках холла.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 16:53
montirovka
А не разбирались какой принцип? Две шторки? На оборот сколько импульсов?
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 16:59
Alhim20
Обычный инкрементальный энкодер. В количество импульсов не вникал.
Логика такая:
Если последовательно (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.
Re: Управление двигателем постоянного тока с энкодером
Добавлено: 07 апр 2025, 17:05
montirovka
Удачи в проектах.