02.09.2015, 12:08
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как стабилизировать частоту вращения на STM32F100RB
Добрый день. Что имеется: программа которая генерирует ШИМ, коллекторный двигатель, который управляется этим ШИМом через полевой транзистор. Так же имеется оптопара которая считает обороты вала двигателя. Сейчас могу управлять в ручную скважностью ШИМ тем самым регулировать обороты. Требуется: задавать число оборотов в диапазоне 500-6000 об/мин, и двигатель автоматически набирал нужные обороты и поддерживал их. Подскажите пожалуйста, как это можно реализовать?
|
|
|
|
02.09.2015, 13:03
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
PID в помощь. Я даже выкладывал здесь на форуме с примерами.
|
|
|
|
03.09.2015, 01:34
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Сообщение от Easyrider83
|
PID в помощь. Я даже выкладывал здесь на форуме с примерами.
|
Не могли бы Вы дать ссылку, пожалуйста
|
|
|
|
03.09.2015, 01:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,054
Сказал спасибо: 3,042
Сказали Спасибо 3,213 раз(а) в 2,183 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Сообщение от _SayHello
|
Не могли бы Вы дать ссылку, пожалуйста
|
LMGTFY, как-то так. Самое место - про паяльник, наверное.
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
03.09.2015, 02:14
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
_SayHello, еслинет глубокого понимания как работает проц и много чего другого - можешь даже не начинать.
вернее можешь но результат будет через годы
хотя оно даже полезно буит
|
|
|
|
03.09.2015, 02:18
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Сообщение от Easyrider83
|
MisterDi, я уговорен!
Пример использования:
Декларируем структуру:
Инитиализируем PID:
Код:
|
PID_init(&PID, 1, 0.05, 0.25, PID_Direction_Direct);
PID_SetMode(&PID, PID_Mode_Automatic);
PID_SetOutputLimits(&PID, PWM_Step, PWM_Period); |
PWM_Step - минимальное значение ШИМ
PWM_Period - максимальное значение ШИМ
Работаем с PID, обращаясь к нему один раз в секунду:
Код:
|
PID.mySetpoint = SetTemp;
PID.myInput = RealTemp;
PID_Compute(&PID);
SetPWM = (u16)PID.myOutput; |
Где SetTemp - переменная типа unsigned int, в которой требуемая температура в градусах цельсия, а SetPWM - период ШИМ (в моем случае от 0 до 500).
|
В связи с началом освоения миропроцессорной техники хочу уточнить:
1) Время обращения к регулятору фиксировано, или мы сами вставляем его в прерывание по таймеру?
2) Понятно, что ПИДу все равно, сравнивать температуры или обороты, но интересно как связать данное воздействие SetPWM со скважностью которая управляет оборотами?
Может конечно вопросы и тупые))
|
|
|
|
03.09.2015, 02:37
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Сообщение от индюк
|
_SayHello, еслинет глубокого понимания как работает проц и много чего другого - можешь даже не начинать.
вернее можешь но результат будет через годы
хотя оно даже полезно буит
|
Ну как Вам сказать, в попытке обучиться, я немного изучил особенности данного процессора. И в частности работу с портами ввода/вывода, таймерами и прерываниями, этого мне было достаточно, чтобы наладить управляемый ШИМ, посчитать период импульсов с оптодатчика и вывести на 4-ех разрядный индикатор эту самую частоту. К сожалению, стабильность частоты меня не устраивает. Начиная придумывать велосипед я пробовал, в теле программы сравнивать входную частоту с заданной и исходя из результата прибавлять скважность или убавлять, но данный способ, как мне кажется неприемлим. В связи с этим я решил использовать ПИД регулятор. Как я понял это математика чистой воды, которую надо запрограммировать с чем у меня и имеются трудности на данный момент.
|
|
|
|
03.09.2015, 03:09
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Пид это частный случай нечеткой логики. Почитай о ней для развития
|
|
|
|
03.09.2015, 08:50
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
Сообщение от _SayHello
|
1) Время обращения к регулятору фиксировано, или мы сами вставляем его в прерывание по таймеру?
2) Понятно, что ПИДу все равно, сравнивать температуры или обороты, но интересно как связать данное воздействие SetPWM со скважностью которая управляет оборотами?
|
1. Время, конечно, фиксировано. Как и коэффициенты ПИД тоже придется подбирать опытным путем. Но пихать в прерывание не советую. Слишком много математики. В прерываниях только флаги.
2. SetPWM - это длительность, которая записывается в регистр сравнения для воздействия на систему регулирования.
SetTemp - желаемое значение системы.
RealTemp - измеренное значение. SetTemp и RealTemp могут быть даже разных порядков. Это не важно. Система смотрит, на сколько мы удаляемся/приближаемся к желаемому результату каждый шаг измерения и меняет этот шаг и его направление.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
08.09.2015, 18:19
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как стабилизировать частоту вращения на STM32F100RB
То есть, я настраиваю таймер на определенное время, а в мейне проверяю флаг прерывания и если он выставлен обращаюсь к функции пида, и очищаю флаг
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:24.
|
|