Глупый вопрос PID с использованием библиотеки PID

Я новичок в PID. Моя цель: управлять двигателем, чтобы заставить его работать с заданной частотой вращения с помощью потенциометра (который является заданным значением). Датчик оптический (обнаруживает белую линию, отражения), отсчитывает 100 раундов за х времени. Небольшой расчет дает обнаруженные обороты в минуту. Я использую Arduino и библиотеку PID.

Теперь мой вопрос. Допустим, я реализовал PID-библиотеку на Arduino. Он все вычисляет и так далее, но выдает значение PID_value, которое я не понимаю.

Пример: уставка = 5000 обнаружено = 4999 получено значение PID = 40

Я предполагаю, что эта (или, скорее, вся) PID-библиотека, которую я использую, всегда дает значение от 0 до 255, и мне нужно сопоставить/масштабировать это значение с моим триггером переменного тока. Может ли кто-нибудь указать мне правильное направление? Спасибо!

, 👍1

Обсуждение

Какая PID-библиотека? Можете ли вы опубликовать свой код?, @Nick Gammon


1 ответ


1

См. Библиотеку PID — SetOutputLimits() — вы можете изменить ограничения.

Для получения значимого результата вам нужно заставить вывод делать что-то разумное по скорости. Поскольку обнаруженная вами скорость ниже желаемой, вы обнаружили, что она выдает положительное значение, и это хорошо, насколько это возможно. Но вы должны интерпретировать это в контексте того, что вы в данный момент отправляете в двигатель. Если вы используете ШИМ для управления двигателем, вы можете подать выходной сигнал (в данном случае 40) на двигатель. Если это замедлит работу, надеюсь, библиотека PID это компенсирует.

Трудно дать больше предложений, не видя кода.

,

вы, сэр, гений. Спасибо, мой мозг остановился на #include <PID.h>. Я посмотрю на бит RTFM PID...., @user3810130