Файл: Разработка лабораторного стенда по программированию микроконтроллера stm.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 244

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1.БАЗОВЫЕ ПОНЯТИЯ О МИКРОКОНТРОЛЛЕРАХ

1.1.Микроконтроллеры STM32 В данной разработке лабораторного стенда используются микроконтроллеры STM32. Выбор пал именно на эти контроллеры из-за наличия в них интегрированной периферии – расширенных таймеров, которые позволяют формировать ШИМ – сигнал для управления 3-фазными двигателями, а именно такой ШИМ является целью исследований в лабораторных работах. Микроконтроллеры STM32 выполнены на базе ядра ARM Cortex. На первый взгляд разница между микроконтроллерами STM32 и микроконтроллерами другой фирмы не видна, набор встроенных УВВ (устройств ввода-вывода) такие как АЦП, таймеры общего назначения, I2C, SPI, CAN, USB и часы реального времени имеют и самые обыкновенные микроконтроллеры. Но если рассматривать каждое из этих УВВ более детально станет очевидно, что в STM32 они устроены гораздо сложнее. Например, АЦП – аналогово – цифровой преобразователь имеет разрядность в 12 бит, а также имеет встроенный датчик температуры и поддерживает несколько режимов преобразования входных данных. Таймеры оснащены блоками захвата и сравнения и могут быть использованы как отдельно, так и синхронно, что позволяет создавать большие массивы таймеров. В STM32, как было сказано ранее, имеются, так называемые, расширенные таймеры (advanced timers), их используют для управления электродвигателями. Для этого у них предусмотрено шесть комплементарных ШИМ-выводов с программируемым мертвым временем (dead-time) [20]. В отличие от других микроконтроллеров в STM32 предусмотрен модуль DMA – прямой доступ к памяти, каждый канал данного модуля может быть использован для передачи данных между регистрами любого из УВВ и запоминающими устройствами. Еще одним плюсом микроконтроллеров STM32 является сочетание характеристик малого энергопотребления и довольно высокой производительности. Они способны работать всего лишь от 2В-ого источника питания на тактовой частоте 72Мгц и потреблять в активном состоянии всего лишь 36мА, если же использовать поддерживаемые ядром Cortex экономные режимы работы, то можно снизить энергопотребление до ничтожных 2мА. За безопасность в данном типе микроконтроллеров отвечают два сторожевых таймера (watchdog), которые позволяют в случае ошибки исполнения программы перезагрузить микроконтроллер автоматически и продолжить выполнение. При разработке лабораторного стенда использовались микроконтроллеры STM32F103C8T6 (рисунок 1) и STM32F407VGT6 (рисунок 3). Рисунок 3 – Микроконтроллер STM32F407VGT6 Микроконтроллер STM32F103C8T6 имеет 64Кб Flash – памяти и тактовую частоту ядра 72МГц. Выполнен на базе процессора ARM Cortex M3 и имеет 32-х битную архитектуру. Имеет в наличии один расширенный таймер TIM1 с помощью которого можно генерировать 3-х фазный ШИМ сигнал. Микроконтроллер STM32F404VGT6 имеет 1Мб Flash- памяти и тактовую частоту ядра 192Мгц. В отличие от предыдущего STM32F4VGT6 выполнен на базе процессора ARM Cortex M4, который так же имеет 32-х битную архитектуру. В наличие имеется уже два расширенных таймера, а также двухканальный ЦАП, который будет использоваться в исследованиях. 1.2.Особенности программирования микроконтроллеров STM32 Программирование микроконтроллеров STM32 сводится к написанию алгоритма программы на языке программирования и записи исполняемой программы в память контроллера. Для написания программ будет использоваться язык C (Си). C (Си) – компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Вначале код пишется на понятном для человека языке в среде программирования IDE, затем с помощью компилятора переводится в, так называемый, машинный код и записывается с помощью программатора в память микроконтроллера. Для программирования STM32 на языке C существует множество платных и бесплатных сред разработок. Также существуют компиляторы для различных языков. Но в данной разработке используется язык программирования Си, следовательно, и компилятор будет использоваться для этого языка. Для того чтобы научиться разрабатывать программное обеспечение для микроконтроллеров, которые будут использованы в лабораторных работах, необходимо научиться общаться с ними на одном языке [17]. Комментарии Комментарии необходимы для пояснения кода программы и не являются частью кода. Комментарии бывают многострочные и однострочные. Однострочные и многострочные комментарии подробнее рассмотрены в таблице 1. Таблица 1 – Виды комментариев

1.3.Основные сведения о широтно – импульсной модуляции

2.ОПИСАНИЕ ЛАБОРАТОРНОГО СТЕНДА

2.1.Описание среды программирования

2.2.Разработка комплекса лабораторных работ

2.3.Указания по выполнению лабораторной работы 1

2.4. Характеристика лабораторной работы 2

2.5. Характеристика лабораторной работы 3

2.6. Характеристика лабораторной работы 4

2.7. Характеристика лабораторной работы 5

2.8. Характеристика лабораторной работы 6

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ




Рисунок 22 – Текстовой редактор кода CoIDE


Слева от редактора кода находится панель компонентов проекта и панель файлов, входящих в проект (рисунок 23). В панели компонентов отображаются все подключенные к проекту библиотеки, а также к каждой из библиотек можно посмотреть примеры программ в интернете. В панели файлов отображаются все файлы, которые находятся в папке проекта и подключены к нему, можно подключать и создавать новые файлы.


Рисунок 23 – Панель компонентов и панель файлов


Очень важной частью окна является консоль (рисунок 24). В консоли отображаются все действия, которые производит пользователь: компиляция, загрузка кода, отладка и так далее.


Рисунок 24 – Консоль

2.2.Разработка комплекса лабораторных работ


Данная разработка предназначена для студентов профиля «Энергетика» направления подготовки 44.03.04 Профессиональное обучение (по отраслям) [16]. Может применяться в рамках дисциплины «Интегрированные инженерные сети». В процессе выполнения комплекса лабораторных работ, обучающиеся познакомятся с применением микроконтроллеров в качестве систем управления, которые могут применятся в таких актуальных, на сегодняшний день, технологиях как «умный» дом. Также данный комплекс лабораторных работ может применятся в дисциплине «Электрические машины» для изучения систем управления электроприводом.

2.3.Указания по выполнению лабораторной работы 1


Тема «Программирование двухфазного генератора с синусоидальными

ШИМ – сигналами со сдвигом 90°»

Цель: программирование ШИМ – сигналов, сдвинутых на 90°. Оборудование:

  • учебный лабораторный стенд;

  • персональный компьютер;

  • двухканальный цифровой осциллограф.

Краткие теоретические сведения:

Сдвиг сигналов в данной лабораторной работе производится с помощью прерывания, которое генерируется системным таймером (SysTick). Системный таймер является частью ядра Cortex – M3, это 24 – битный вычитающий счетчик, с функциями автоперезагрузки и генерации прерывания по завершению счета. Данный таймер работает на тактовой частоте процессора.

Для инициализации системного таймера используется функция SysTick_Config(), в аргументах (скобках) данной функции указывается количество тактов, которое следует считать таймеру. После инициализации системного таймера, важной частью является описание функции прерывания (обработчика прерывания). Все функции прерывания можно найти в файле startup_stm32f10x_md.c[24]. На рисунке 25 представлен общий вид функции прерывания для системного таймера.


Рисунок 25 – Функция прерывания SysTick


Во время прерывания процессор приостанавливает свою текущую активность, сохраняя своё состояние и переходит к выполнению обработчика прерывания. В обработчике прерывания будет записан код, в результате которого будут получены синусоидальные напряжение, сдвинутые на 90°.

Содержание и порядок выполнения работы:

  1. На рабочем столе компьютера найти и двойным щелчком левой кнопки мыши на значке CooCox CoIDE запустить среду программирования.

  2. После запуска CooCox CoIDE в строке меню нажать: Project -> New Project.

  3. В появившемся окне в поле Project name, ввести имя своему будущему проекту на английской раскладке, после этого нажать Next>.

  4. Выбрать поле с надписью Chip, после этого нажать Next>.

  5. Появится окно с выпадающими списками различных фирм микроконтроллеров (рисунок 26), необходимо открыть список ST, затем из выпадающего списка открыть подсписок STM32F103x, после этого найти микроконтроллер STM32F103C8 выбрать его левым щелчком мыши и нажать Finish.



Рисунок 26 – Выбор микроконтроллера


  1. После проделанных действий появится главное окно с репозиторием для выбора необходимых для проекта библиотек, подключить следующие библиотеки:

а) RCC – для управления тактовым генератором;

б) GPIO – для управления портами ввода – вывода;

в) TIM – для управления таймерами.

  1. После выбора необходимых библиотек, в панели файлов выбрать файл main.c, весь код будет находится здесь.

  2. С помощью директивы #include <> подключить заголовочные файлы

(рисунок 27).


Рисунок 27 – Подключенные библиотеки


9. Ввести все структуры, которые будут использоваться в коде, а также ввести массив для построения синусоидальной ШИМ (Рисунок 28). Массив имеет тип uint16_t, что означает, что данный массив не имеет отрицательных значений, а также числа, входящие в этот массив, могут принимать значения в диапазоне от 0 до 65535.


Рисунок 28 – Ввод структур и массива синуса


10. Для удобства восприятия кода, программа была разделена на несколько подпрограмм (функций), вначале необходимо ввести и заполнить функцию voidinitRcc(void) (рисунок 29) для включения тактирования всех используемых периферийных устройств. Данная функция имеет тип void.


Рисунок 29 – Функция включения тактирования


11. Ввести и заполнить функцию инициализации всех периферийных устройств voidinitAll(void), данная функция, как и предыдущая также имеет тип void. Но так как она имеет большой объем необходимо разбить ее на участки:

а) назначение портов ввода – вывода (рисунок 30). Все выводы назна-

чены как альтернативные функции с двумя состояниями;


Рисунок 30 – Назначение GPIO в функции initAll()


б) инициализация таймера TIM1 (рисунок 31):



в) инициализация ШИМ (рисунок 32):


Рисунок 32 – Инициализация ШИМ


г) необходимо инициализировать системный таймер, для этого напи-

сать функцию SysTick_
Config(), в аргументах у данной функции указывается количество тактов, необходимо указать 1200, в итоге должно получиться SysTick_Config(1200).

12. Заполнить обработчик прерывания SysTick_Handler (рисунок 33), в котором будет проходить процесс записи значений массива в регистры сравнения таймера.


Рисунок 33 – Описание функции прерывания


13. После того как все функции были введены и заполнены нужно объявить их перед функцией intmain(), как это делается представлено на рисунке 34.


Рисунок 34 – Объявление функций


14. Записать данные функции между фигурными скобками в main() (рисунок 35), цикл while, в этом проекте останется пустым. После этого код можно считать завершенным.


Рисунок 35 – Функция main()


  1. После написания кода программы его необходимо скомпилировать, для этого в панели инструментов нужно нажать «Build», проект будет собираться. В случае успешной компиляции в консоли появится надпись «BUILD SUCCESSFUL», а также будет указан размер программы. Если же в коде присутствуют ошибки тогда в консоли будут указаны где именно находятся эти ошибки, а также появится надпись «BUILD FAILED».

  2. После завершения компиляция, последним этапом станет загрузка рабочей программы в микроконтроллер (прошивка). Для этого нужно, через специальный кабель (удлинитель USB), подключить программатор, расположенный на лабораторном стенде к компьютеру. После подключения, в панели инструментов нажать «Download Code to Flash» и дождаться окончания загрузки, в случае удачной загрузки в консоли появятся надписи: Erase: Done; Program: Done; Verify: Done. Если существуют проблемы с подключением платы к компьютеру, то появится надпись «Error: Connect failed, check config and cable connection», необходимо проверить кабель, к которому подключено устройство; 17. Для проверки работоспособности программы необходимо подключить двухканальный цифровой осциллограф «GWINSTEK GDS – 71062», к выводам на лабораторном стенде. Щупы осциллографа присоединяются к клеммам. Первый канал осциллографа необходимо подключить к клемме «G» и «1», предварительно настроив масштаб 2В на осциллографе. Второй канал осциллографа необходимо подключить к клемме «G» и «2».

Описание клемм представлено на рисунке 36.



Рисунок 36 – Лабораторный стенд для исследования сдвига двух сигналов на 90°


  1. – вывод первого синусоидального сигнала, 1К – вывод первого комплементарного сигнала,

  2. – вывод второго синусоидального сигнала, 2К – вывод второго комплементарного сигнала, G – земля.

Задание: в соответствии с назначенным преподавателем вариантом, необходимо к каждому значению массива синусов sinPWM прибавить соответствующее значение из таблицы 5, скомпилировать полученный проект, загрузить рабочую программу в микроконтроллер, получить результат и продемонстрировать его преподавателю.

Таблица 5 – Значения для таблицы синусов

Вариант

1

2

3

4

Значение

50

60

70

80



Содержание отчёта:

    1. Название и цель работы.

    2. Код с измененными параметрами.

    3. Компоновка элементов лабораторной установки, название входящих в нее элементов, в том числе основных узлов микроконтроллера.

    4. Выводы о проделанной работе.

    5. Подготовиться к устному опросу по лабораторной работе. Вопросы для самоконтроля:

    1. Что такое компиляция?

    2. Дайте определение термину «прерывание».

    3. Объясните, как в данном коде организован сдвиг сигналов на определенный электрический угол.