Презентация лекции, посвященной общей информации по сабжу.
В качестве иллюстрации рассмотрим реализацию ПИД-регулятора на микроконтроллере STM32. Для этого воспользуемся отладочной платой STM32 Value Line Discovery Kit и библиотекой RapidSTM32 (соответственно вот и вот информация).
Задача: управлять яркостью лампочки с помощью широтно-импульсной модуляции (ШИМ), измерять и стабилизировать температуру ее поверхности с помощью пропорционально-интегрально-дифференциального регулятора (ПИД). Все это можно сделать, не написав ни одной строчки кода!
Установив RapidSTM32 (следуя инструкциям из файла how_to_setup.txt), получаем в библиотеке Simulink новый блоксет:

Соберем следующую схему на основе nonfio_bland_template_demo.mdl, в которой используются специальные компоненты для доступа к ресурсам микроконтроллера из библиотеки RapidSTM32 (ШИМ, АЦП, порты ввода-вывода) так и стандартные из библиотеки Simulink (PID Controller, Saturation, Gain)

Настроим необходимые параметры модели для генерации кода, а именно выберем в окне Configuration parameters, в группе параметров Real-Time Workshop/RapidSTM32 Options из списка RapidSTM32Board: STM32VLDISCOVERY.
Разными цветами на схеме показаны сигналы с разной частотой квантования, которую можно посмотреть нажав Ctrl+J:

Из меню Tools/Real time workshop/Build model вызовем генерацию кода, в результате чего будет получен C/C++ код для компилятора Keil.
Создадим проект в Keil RealView MDK, добавив в него все полученные .c и .s файлы, откомпилируем и загрузим в микроконтроллер
Соберем следующую схему к платке STM32 Value Line Discovery Kit:

Переменный резистор R1 предназначен для задания поддерживаемой температуры, U1 -- датчик температуры, находящийся в непосредственном контакте с лампочкой-нагревателем
Все это в сборе и работает:

Дополнительные материалы:
Модель Simulink и проект Keil от рассмотренного примера
Видео, где показан процесс настройки модели и генерации кода
Пробую сделать аналогичный проект.
ОтветитьУдалитьПри генерации кода выскакивает ошибка
### Successful completion of Real-Time Workshop build procedure for model: non_fio_pwm_demo
Warning: During the 'exit' hook call to 'rapidstm32_make_rtw_hook', pwd was changed
to:
'D:\stm32\non_fio_pwm_demo'
Changing folders is not allowed. The pwd will be reset to:
'D:\stm32\non_fio_pwm_demo\non_fio_pwm_demo_rapidstm32'
### Real-Time Workshop build procedure for model: 'non_fio_pwm_demo' aborted due to an error.
В действительности эта папка существует.
Не подскажите, что я делаю не так?
Скажите, пожалуйста, есть ли подобные решения (возможно ли)на AVR и PIC?
ОтветитьУдалитьЕсли да, то направите на необходимые ресурсы.