Управление двигателем постоянного тока с энкодером

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Александр
Рядовой
Сообщения: 85
Зарегистрирован: 01 дек 2015, 15:49
Откуда: Бобруйск
Имя: Александр
Поблагодарили: 2 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Александр »

MM33 писал(а): 01 апр 2025, 15:08 это целевые позиции с шагом 10%. Про точность позиционирования разговора не было. Пр алгоритму приведенному выше без пид регулятора ошибка может быть достаточно большой, от бонального недостижения целевой позиции до автоколебательного режима. Все зависит от свойств механики и настроек, а с течением времени и с изменением условий окружающей среды свойства механики могут изменяться. соответственно может изменятся и сервоошибка. Изменение ШИМ - это по сути изменение напряжения приложенного к двигателю и без ОС по скорости и пид регулятора невозможно гарантировать достижение целевой позиции.
Использование переменного резистора в качестве ОС по положению оправдано так как это по сути абсолютный датчик.
Вы читали не внимательно мой пост.
Какое недостижение, какой автоколебательный режим?
Примем коэф редуктора 2100 на 360 градусов. Энкодер 50 на один оборот двигателя. на один оборот вала 105000.
Допустим, весь диапазон поворота заслонки на 72 градусов, 100%, составляет 105000 / 5 данных энкодера, 21000.
Уставку умножим на 210.
Плата, на которой расположены блоки, управляется с другой платы через триггер, его выход, val_En_a. Переменная xx = abs Vset - Vval.
На входы RS - S =1 если xx > 1000, R=1 если xx < 100. Если val_En_a ==false, ШИМ=0.
Плата, исполняется при val_En_a == true:
Поставим компаратор, на один из входов абсолютную разницу уставки и текущего, xx, на второй константу, указывающую, когда сбросить скорость, например 1000. Выходом управляем шимом, 100 или 40, к примеру.
Направление вращения - сравнив Vset и Vval.
Это в первом приближении, цифры с потолка. Точности позиционирования для вентиляции будет достаточно, более чем, механика механизма проиграет люфтами и геометрией.
ИМХО.
Alhim20 писал(а): 01 апр 2025, 09:04 Не угол открытия, а количество шагов двигателя для отодвигания заслонки на определенную высоту и задвигания обратно посредством ременной передачи от 0 доя 100% процентов размера ширины шахты воздуховода. Коэффициент редуктора 1:2098. Положение 0 определяется датчиком холла.
Во, и я не очень внимательно читал.
Оборотов будет несколько, энкодер насчитает вообще немеряно, точности хватит за глаза.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

MM33 писал(а): 01 апр 2025, 15:08 это целевые позиции с шагом 10%. Про точность позиционирования разговора не было. Пр алгоритму приведенному выше без пид регулятора ошибка может быть достаточно большой, от бонального недостижения целевой позиции до автоколебательного режима. Все зависит от свойств механики и настроек, а с течением времени и с изменением условий окружающей среды свойства механики могут изменяться. соответственно может изменятся и сервоошибка. Изменение ШИМ - это по сути изменение напряжения приложенного к двигателю и без ОС по скорости и пид регулятора невозможно гарантировать достижение целевой позиции.
Использование переменного резистора в качестве ОС по положению оправдано так как это по сути абсолютный датчик.
Пр алгоритму приведенному выше делал, ошибка набегает большая из за выбега мотора, присутствует в конце автоколебательный режим до установки в целевую позицию . То есть моя схема если шаги рассчитаны с плюсом, крутит мотор вправо(как пример), если шаги рассчитаны с минусом, мотор крутит влево(как пример), если компаратор уловил 0 с энкодера (когда количество рассчитанных шагов равно количеству пройденных шагов), то стоп. Потом добавил расчет по процентам (путь (шаги до цели) разделил на 100 получил 1 процент (если шаги с минусом то умножил на -1) и умножил на 30, получил старт и длину стартового отрезка пути в 30% с PWM указал например 30, дальше отрезок пути с PWM 254, потом опять отрезок пути торможения с PWM 30., в итоге получил рывки ускорения и торможения от PWM. Дальше стал внедрять много отрезков пути с PWM и почти изобрел ПИД регулятор. (*_*). Вот буду пробовать в эту схему добавить ПИД регулятор на расчёт PWM). Так понимаю, что ПИД нужно походу от знака расчета шагов пути тоже считать в минус или плюс.
Последний раз редактировалось Alhim20 02 апр 2025, 04:00, всего редактировалось 5 раз.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

Александр писал(а): 01 апр 2025, 15:58
MM33 писал(а): 01 апр 2025, 15:08 это целевые позиции с шагом 10%. Про точность позиционирования разговора не было. Пр алгоритму приведенному выше без пид регулятора ошибка может быть достаточно большой, от бонального недостижения целевой позиции до автоколебательного режима. Все зависит от свойств механики и настроек, а с течением времени и с изменением условий окружающей среды свойства механики могут изменяться. соответственно может изменятся и сервоошибка. Изменение ШИМ - это по сути изменение напряжения приложенного к двигателю и без ОС по скорости и пид регулятора невозможно гарантировать достижение целевой позиции.
Использование переменного резистора в качестве ОС по положению оправдано так как это по сути абсолютный датчик.
Вы читали не внимательно мой пост.
Какое недостижение, какой автоколебательный режим?
Примем коэф редуктора 2100 на 360 градусов. Энкодер 50 на один оборот двигателя. на один оборот вала 105000.
Допустим, весь диапазон поворота заслонки на 72 градусов, 100%, составляет 105000 / 5 данных энкодера, 21000.
Уставку умножим на 210.
Плата, на которой расположены блоки, управляется с другой платы через триггер, его выход, val_En_a. Переменная xx = abs Vset - Vval.
На входы RS - S =1 если xx > 1000, R=1 если xx < 100. Если val_En_a ==false, ШИМ=0.
Плата, исполняется при val_En_a == true:
Поставим компаратор, на один из входов абсолютную разницу уставки и текущего, xx, на второй константу, указывающую, когда сбросить скорость, например 1000. Выходом управляем шимом, 100 или 40, к примеру.
Направление вращения - сравнив Vset и Vval.
Это в первом приближении, цифры с потолка. Точности позиционирования для вентиляции будет достаточно, более чем, механика механизма проиграет люфтами и геометрией.
ИМХО.
Alhim20 писал(а): 01 апр 2025, 09:04 Не угол открытия, а количество шагов двигателя для отодвигания заслонки на определенную высоту и задвигания обратно посредством ременной передачи от 0 доя 100% процентов размера ширины шахты воздуховода. Коэффициент редуктора 1:2098. Положение 0 определяется датчиком холла.
Во, и я не очень внимательно читал.
Оборотов будет несколько, энкодер насчитает вообще немеряно, точности хватит за глаза.
При слишком большом PWM (больше 40) возникает автоколебательный режим на валу двигателя, пока он не найдет целевое положение( количество указанных шагов до точки остановки) по энкодеру. С радостью бы поставил переменник в ОС, только он походу должен быть многооборотным и его как то механически надо крутить и еще позиционировать в 0 по механике.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

Вот здесьhttps://microkontroller.ru/arduino-proj ... ntrollere/ чел описывает алгоритм работы ПИД регулятора. Драйвер у него тоже мост, но шимит он его PWM прямо на управляющие пины моста. И библиотека ПИДа там своя.. Вот думаю, как грамотно написать код (использовать стандартные блоки) для управления, без лишнего. Не могу понять, как в ФЛ прог использовать быстрый счетчик для подсчета импульсов с энкодера. Там же нужно использовать блоки Триггера и Анд для построения схемы определения вращения мотора в + или - Прилагаю схему считывания пинов с Энкодера. Как его перевести на быстрый счетчик?

Вот мой код надо дальше допилить с новым блоком PWM c ПИДом.
[

Драйвер двигателя я использую TB6612FNG c PWM входом.
Про код: ошибка набегает большая из за выбега мотора, присутствует в конце автоколебательный режим до установки в целевую позицию . То есть моя схема если шаги рассчитаны с плюсом, крутит мотор вправо(как пример), если шаги рассчитаны с минусом, мотор крутит влево(как пример), если компаратор уловил 0 с энкодера (когда количество рассчитанных шагов равно количеству пройденных шагов), то стоп. Потом добавил расчет по процентам (путь (шаги до цели) разделил на 100 получил 1 процент (если шаги с минусом то умножил на -1) и умножил на 30, получил старт и длину стартового отрезка пути в 30% с PWM указал например 30, дальше отрезок пути с PWM 254, потом опять отрезок пути торможения с PWM 30., в итоге получил рывки ускорения и торможения от PWM. Дальше стал внедрять много отрезков пути с PWM и почти изобрел ПИД регулятор. (*_*). Вот буду пробовать в эту схему добавить ПИД регулятор на расчёт PWM). Так понимаю, что ПИД нужно походу от знака расчета шагов пути тоже считать в минус или плюс.
Последний раз редактировалось Alhim20 08 апр 2025, 17:49, всего редактировалось 1 раз.
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Читаю и поражаюсь требованиям точности. Я так и не услышал кто задает процент открытия заслонки. Ведь и там могут быть погрешности. Наверное коллайдер. Так и еще ременная передача. А коэффициент она имеет? Как может набегать ошибка? Не понимаю. К примеру нужно открыть на 100%. Пусть это будет 26250 шагов (2100/4*50). Двигатель прокрутил на 26500 шагов. При переходе в другое положение вы же отсчитываете от 26500 и этот "лишний пробег" убирается. После следующего передвижения двигателя в нужную точку опять расчет идет с абсолютным значением. А вот ошибка может возникнуть из за энкодера, а также от длины проводов до исполнительного механизма и платы управления.
Было делал блок управления спутниковой тарелки.Столкнулся с пропуском шагов. Применил скоростной счетчик. Пост про это по ссылке.
Скоростной счетчик.
Brand2
Лейтенант
Сообщения: 450
Зарегистрирован: 26 фев 2018, 21:27
Откуда: Haifa
Имя: Alex
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Re: Управление двигателем постоянного тока с энкодером

Сообщение Brand2 »

Уважаемые господа,вы рассуждаете здесь о количестве импульсов,энкодерах,счетчиках импульсов и тд,забыв одну важную вещь.
В любой системе с ПИД регулятором,абсолютно не важно начальное и текущее положение исполнительного механизма.
Главным здесь является текущее и заданное значение регулируемого параметра.
И не важно что будет перемещать заслонку,ШД,ДПТ,серво и тд.
Правильно подобрав коэффициенты ПИД регулятора,вы получите желаемый результат,без необходимости изобретать что то новое.
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Brand2 писал(а): 02 апр 2025, 08:09 Уважаемые господа,вы рассуждаете здесь о количестве импульсов,энкодерах,счетчиках импульсов и тд,забыв одну важную вещь.
В любой системе с ПИД регулятором,абсолютно не важно начальное и текущее положение исполнительного механизма.
Главным здесь является текущее и заданное значение регулируемого параметра.
И не важно что будет перемещать заслонку,ШД,ДПТ,серво и тд.
Правильно подобрав коэффициенты ПИД регулятора,вы получите желаемый результат,без необходимости изобретать что то новое.
Brand2, а процесс быстроменяющийся в этой теме? Что то нужно поддерживать, какие то параметры есть ?
Brand2
Лейтенант
Сообщения: 450
Зарегистрирован: 26 фев 2018, 21:27
Откуда: Haifa
Имя: Alex
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Re: Управление двигателем постоянного тока с энкодером

Сообщение Brand2 »

montirovka писал(а): 02 апр 2025, 08:35
Brand2 писал(а): 02 апр 2025, 08:09 Уважаемые господа,вы рассуждаете здесь о количестве импульсов,энкодерах,счетчиках импульсов и тд,забыв одну важную вещь.
В любой системе с ПИД регулятором,абсолютно не важно начальное и текущее положение исполнительного механизма.
Главным здесь является текущее и заданное значение регулируемого параметра.
И не важно что будет перемещать заслонку,ШД,ДПТ,серво и тд.
Правильно подобрав коэффициенты ПИД регулятора,вы получите желаемый результат,без необходимости изобретать что то новое.
Brand2, а процесс быстроменяющийся в этой теме? Что то нужно поддерживать, какие то параметры есть ?
К сожалению автор поста так и не написал какой параметр он собирается контролировать,но я думаю это или температура или влажность или скорость потока воздуха,в принципе это не так и важно,для ПИД регулятора это не важно.
MM33
Рядовой
Сообщения: 60
Зарегистрирован: 23 июн 2021, 11:52
Имя: Михаил
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение MM33 »

1. Полностью согласен с Brand2
2. Alhim20 - входа энкодера должны быть настроены на обработку прерываний, иначе пропуски счета неизбежны . Почитайте viewtopic.php?t=7580&hilit=энкодер+PRO . я тестил блоки уважаемого Drundel с промышленным инкрементальным оптическим энкодером. Все работает, правда блоки сделаны для AVR.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

ПИД нужно рассчитывать будет для PWM исходя из числа шагов будущего пути заслонки (для энкодера количество шагов) от текущей позиции до конечной точки пути. Этот вычисленный ПИД (график или кривая ) нарастания и спада питания PWM двигателя. будет отвечать за ускорение и торможение двигателя при проходе этого пути. Как то так вроде.

А у меня сейчас PWM в моем коде рассчитывается жестко линейно от шагов энкодера. Выглядит это так Старт движение 20% пути с PWM 30 потом увеличение за 0.5 секунды плавно от 30 до 254 PWM движение участка от 20% пути до 80% пути с 254 PWM, потом плавный спад за 0.5 секунды до 30 PWM и дальше движение до конца 30 PWM и конечный автоколебательный процесс со скоростью 30 PWM до поиска конечного шага на энкодере.
Почему Автоколебательный, потому что мотор все равно проскакивает последний шаг и возвращается назад на N количество шагов для поиска искомого конечного шага , и так может несколько раз туда сюда в конце.
Поэтому и нужен походу ПИД, чтоб он в конце как можно плавнее вращался.
Последний раз редактировалось Alhim20 02 апр 2025, 09:30, всего редактировалось 3 раза.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

Brand2 писал(а): 02 апр 2025, 09:06
montirovka писал(а): 02 апр 2025, 08:35
Brand2 писал(а): 02 апр 2025, 08:09 Уважаемые господа,вы рассуждаете здесь о количестве импульсов,энкодерах,счетчиках импульсов и тд,забыв одну важную вещь.
В любой системе с ПИД регулятором,абсолютно не важно начальное и текущее положение исполнительного механизма.
Главным здесь является текущее и заданное значение регулируемого параметра.
И не важно что будет перемещать заслонку,ШД,ДПТ,серво и тд.
Правильно подобрав коэффициенты ПИД регулятора,вы получите желаемый результат,без необходимости изобретать что то новое.
Brand2, а процесс быстроменяющийся в этой теме? Что то нужно поддерживать, какие то параметры есть ?
К сожалению автор поста так и не написал какой параметр он собирается контролировать,но я думаю это или температура или влажность или скорость потока воздуха,в принципе это не так и важно,для ПИД регулятора это не важно.
Мотор как на видео в примере https://microkontroller.ru/arduino-proj ... ntrollere/
Да и вообще я думаю это применить можно с любым коллекторным мотором и энкодером.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

montirovka писал(а): 02 апр 2025, 07:34 Читаю и поражаюсь требованиям точности. Я так и не услышал кто задает процент открытия заслонки. Ведь и там могут быть погрешности. Наверное коллайдер. Так и еще ременная передача. А коэффициент она имеет? Как может набегать ошибка? Не понимаю. К примеру нужно открыть на 100%. Пусть это будет 26250 шагов (2100/4*50). Двигатель прокрутил на 26500 шагов. При переходе в другое положение вы же отсчитываете от 26500 и этот "лишний пробег" убирается. После следующего передвижения двигателя в нужную точку опять расчет идет с абсолютным значением. А вот ошибка может возникнуть из за энкодера, а также от длины проводов до исполнительного механизма и платы управления.
Было делал блок управления спутниковой тарелки.Столкнулся с пропуском шагов. Применил скоростной счетчик. Пост про это по ссылке.
Скоростной счетчик.
Спасибо, курю инфу.)
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Мне кажется он (ТС -топик стартер) так и не напишет какой он параметр будет контролировать. А если нет параметров, то и ПИД не какой и не нужен. Простой поворот на нужный угол, на нужное количество шагов.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

montirovka писал(а): 02 апр 2025, 09:30 Мне кажется он (ТС -топик стартер) так и не напишет какой он параметр будет контролировать. А если нет параметров, то и ПИД не какой и не нужен. Простой поворот на нужный угол, на нужное количество шагов.
А Вы попробуйте поверните коллекторный мотор на нужное количество шагов с обратной связью да так, чтоб он сразу точно встал на свое место. А параметр контроля ПИДа, это напряжение для ускорения и торможения двигателя для прохода нужного участка пути (количества шагов) с максимально точным попаданием в конечный шаг по энкодеру с минимальной скоростью

Энкодер же на валу двигателя, а не на валу низкоскоростного девайса после редуктора.
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Разговор уже давно идет о совершенно другом. С помощью ПИДа идет слежение или управление каким то параметром, к примеру влажность, температура, содержание в воздухе СО2, управляя степенью открытия заслонки. Разговор про этот параметр. Нет параметра не надо ни каких ПИДов. Для чего вы открываете заслонку?
Сделать две три скорости в зависимости от количества шагов до нужной точки достаточно просто. А надо ли оно? У вас широтно импульсная модуляция.
Последний раз редактировалось montirovka 02 апр 2025, 10:08, всего редактировалось 1 раз.
Alhim20
Рядовой
Сообщения: 77
Зарегистрирован: 28 окт 2024, 04:02
Откуда: Белогорск
Имя: Илья
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение Alhim20 »

montirovka писал(а): 02 апр 2025, 09:59 Разговор уже давно идет о совершенно другом. С помощью ПИДа идет слежение или управление каким то параметром, к примеру влажность, температура, содержание в воздухе СО2, управляя степенью открытия заслонки. Разговор про этот параметр. Нет параметра не надо ни каких ПИДов. Для чего вы открываете заслонку?
Дело не в заслонке. ( заслонка это условная нагрузка или девайс на редукторе мотора). Дело в точном позиционировании ротора мотора на нужных шагах с минимальным (автоколебательным процессом) и точным попаданием в нужный градус поворота ротора мотора.
Как шаговику сказали прошагай 100 шагов, он и прошагает и остановиться в нужном угле поворота ротора, так нужно, чтоб коллекторник тоже так смог с минимальным временем отклика на операцию и точным позиционированием.
Весь мой код, это драйвер мотора, а не девайс управления заслонкой. (заслонка условна).
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Делайте.
На TB6612FNG приходит четыре управляющих сигнала: IN1,IN2, PWM и STBY.
В зависимости от нужного положения в какую сторону должен крутиться двигатель делаете по таблице.
2025-04-02_10-55-10.png
Включаем STBY. Подаем N1,IN2 и PWM 100. При подходе к нужной позиции скорость можете уменьшать значением PWM. Значение PWN 100 - максимальная скорость, 0 - минимальная. Можно и SCALE.
Двигатель отработал - STBY отключили.
Вот этот мой проект посмотрели? Многое то что вам нужно здесь есть.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось montirovka 02 апр 2025, 11:11, всего редактировалось 2 раза.
MM33
Рядовой
Сообщения: 60
Зарегистрирован: 23 июн 2021, 11:52
Имя: Михаил
Поблагодарили: 3 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение MM33 »

Alhim20 писал(а): 02 апр 2025, 10:07
montirovka писал(а): 02 апр 2025, 09:59 Разговор уже давно идет о совершенно другом. С помощью ПИДа идет слежение или управление каким то параметром, к примеру влажность, температура, содержание в воздухе СО2, управляя степенью открытия заслонки. Разговор про этот параметр. Нет параметра не надо ни каких ПИДов. Для чего вы открываете заслонку?
Дело не в заслонке. ( заслонка это условная нагрузка или девайс на редукторе мотора). Дело в точном позиционировании ротора мотора на нужных шагах с минимальным (автоколебательным процессом) и точным попаданием в нужный градус поворота ротора мотора.
Как шаговику сказали прошагай 100 шагов, он и прошагает и остановиться в нужном угле поворота ротора, так нужно, чтоб коллекторник тоже так смог с минимальным временем отклика на операцию и точным позиционированием.
Весь мой код, это драйвер мотора, а не девайс управления заслонкой. (заслонка условна).
Во-о-т. А теперь возвращаемся к исходному .
Чтобы все это реализовать вам необходимо построить:
1.три контура управления : Положение, скорость , ток
2. Планировщик движения работающий строго по жестким часам, оптимально с тактом от 1 ди 10 ms ( в зависимости от точности позиционирования).
В каждом такте планировщик сообщает контуру положения точку где привод должен оказаться к исходу текущего такта. Точка расчитывается с учетом максимально возможного ускорения ( а в нормальных приводах и рывка и скорости рывка). контур положения вычисляет сервоошибку ( разность текущего положения и целевого положения ), делит на время такта и получает скорость на такт расчета. Расчетное значение подается на контур скорости и сравнивается стекущей скоростью полученное значение пропускается чере ПИ регулятор и выдается на контур тока . Там происходит расчет требуемого тока (момента) чтобы привод мог повернутся на заданный угол в такте расчета.
текущие положение и скорость получают от энкодера, а ток от датчика тока.
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

MM33 писал(а): 02 апр 2025, 11:02
Alhim20 писал(а): 02 апр 2025, 10:07
montirovka писал(а): 02 апр 2025, 09:59 Разговор уже давно идет о совершенно другом. С помощью ПИДа идет слежение или управление каким то параметром, к примеру влажность, температура, содержание в воздухе СО2, управляя степенью открытия заслонки. Разговор про этот параметр. Нет параметра не надо ни каких ПИДов. Для чего вы открываете заслонку?
Дело не в заслонке. ( заслонка это условная нагрузка или девайс на редукторе мотора). Дело в точном позиционировании ротора мотора на нужных шагах с минимальным (автоколебательным процессом) и точным попаданием в нужный градус поворота ротора мотора.
Как шаговику сказали прошагай 100 шагов, он и прошагает и остановиться в нужном угле поворота ротора, так нужно, чтоб коллекторник тоже так смог с минимальным временем отклика на операцию и точным позиционированием.
Весь мой код, это драйвер мотора, а не девайс управления заслонкой. (заслонка условна).
Во-о-т. А теперь возвращаемся к исходному .
Чтобы все это реализовать вам необходимо построить:
1.три контура управления : Положение, скорость , ток
2. Планировщик движения работающий строго по жестким часам, оптимально с тактом от 1 ди 10 ms ( в зависимости от точности позиционирования).
В каждом такте планировщик сообщает контуру положения точку где привод должен оказаться к исходу текущего такта. Точка расчитывается с учетом максимально возможного ускорения ( а в нормальных приводах и рывка и скорости рывка). контур положения вычисляет сервоошибку ( разность текущего положения и целевого положения ), делит на время такта и получает скорость на такт расчета. Расчетное значение подается на контур скорости и сравнивается стекущей скоростью полученное значение пропускается чере ПИ регулятор и выдается на контур тока . Там происходит расчет требуемого тока (момента) чтобы привод мог повернутся на заданный угол в такте расчета.
текущие положение и скорость получают от энкодера, а ток от датчика тока.
Теория на 5, практика - 0. Какие токи и датчики тока, какие контура?
Аватара пользователя
montirovka
Капитан
Сообщения: 728
Зарегистрирован: 15 фев 2021, 16:16
Откуда: Геленджик
Имя: Сергей
Благодарил (а): 42 раза
Поблагодарили: 173 раза

Re: Управление двигателем постоянного тока с энкодером

Сообщение montirovka »

Alhim20, начните со счета импульсов при подаче на двигатель номинального напряжения.
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя