С учетом управления двигателем с помощью ШИМ и ПИД-регулятора необходимо указать желаемое разрешение в виде отметок таймера ШИМ или показаний AD C. Это самая важная часть. Также не повредит, если AD C имеет большее разрешение, чем указанное вами разрешение. Печатная плата должна быть спроектирована соответствующим образом с достаточным разрешением для резисторов и т. Д. c.
. После того, как вы это сделаете, найдите MCU с достаточно точным AD C. Я полагаю, что для большинства приложений достаточно 12-битного разрешения, но я не знаю вашего конкретного случая c.
Далее вам нужно решить, насколько быстрым должен быть PID. Должен ли вывод на ШИМ привести к чтению AD C в следующем цикле, или вы могли бы согласиться на более медленный ответ? Узким местом в реальном времени здесь будут часы преобразования AD C, а не процессор.
Остальная часть системы вообще не выглядит критичной по времени - нужно просто убедиться, что все считывается / устанавливается синхронно , Передача данных на хост / с хоста предпочтительно должна осуществляться по шине CAN, поскольку она имеет жесткие характеристики в реальном времени. Не похоже, что вам нужна большая полоса пропускания.
Я спроектировал системы, очень похожие на это, используя 16-битные микроконтроллеры в чистом виде, работающие на 16 МГц. Скорость обработки на самом деле не большая проблема, но соблюдение сроков в реальном времени. Это означает, что вы можете забыть об использовании Linux игрушек, таких как R asp PI, об этом совершенно не может быть и речи. И ОСРВ, вероятно, излишне, поскольку в основном добавляет дополнительную сложность.
Чистый металлический Cortex M с достаточным разрешением AD C и CAN кажется хорошим выбором. Если вы можете держаться подальше от числа с плавающей запятой, это тоже хорошо - зависит от того, насколько вам нужна сложная математика. Если вам не нужно ничего более продвинутого, чем PID, его можно реализовать с фиксированной точкой. (Или скорее PI, так как это обычно работает лучше всего для систем управления быстрым двигателем.)