Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Библиографическое описание:

Емельянов А. А., Бесклеткин В. В., Иванин А. Ю., Пестеров Д. И. Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки // Молодой ученый. — 2017. — №22. — С. 12-19. — URL https://moluch.ru/archive/156/44205/ (дата обращения: 18.11.2019).



Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки

Емельянов Александр Александрович, доцент;

Бесклеткин Виктор Викторович, ассистент;

Иванин Александр Юрьевич, студент;

Пестеров Дмитрий Ильич, студент.

Российский государственный профессионально-педагогический университет

(г. Екатеринбург)

Целью данной работы является программирование студентами на лабораторном стенде изменения скважности импульсов ШИМ с помощью кнопки. Программирование осуществляется в среде CooCox CoIDE.

Для реализации этой цели необходимо решить следующие задачи:

‒ Ввод значений для кнопки в положении «ON» и в положении «OFF»;

‒ Ввод структур для использования портов ввода-вывода и таймера;

‒ Включение тактирования периферийных устройств;

‒ Ввод функции инициализации:

а) Назначение портов ввода-вывода (GPIO – General Ports Input/Outputs);

б) Инициализация таймера (TIM4);

в) Инициализация ШИМ;

‒ Описание поведения ШИМ при нажатой кнопке с помощью структуры «if…else».

Порты ввода-вывода (GPIO) - это основной элемент любого микроконтроллера. Они используются для «общения» микроконтроллера с внешним миром. Устройство портов ввода-вывода представлено на рис. 1.

Как видно из рис. 1, выводы микроконтроллера можно сконфигурировать как на вход, так и на выход:

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

а) Триггер Шмитта (TTL Schmitt trigger);

б) Стягивающий резистор (Pull-down) – подключен к выводу G (земля), позволяет получить на выводе низкое напряжение (логический ноль);

в) Подтягивающий резистор (Pull-up) – подключен к питанию микроконтроллера, позволяет получить на выводе высокое напряжение (логическую единицу);

г) Защитный диод (Protection diode) – защищает микроконтроллер от перенапряжения.

I:\ВКР\картинки\устройство порта.jpg

Рис. 1. Устройство портов ввода-вывода (GPIO)

  1. Выходной драйвер (Output driver) – позволяет сконфигурировать порт микроконтроллера как выход с возможностью чтения и записи выходных данных. Кроме того, возможна конфигурация порта в виде выхода альтернативной функции (например, для генерации ШИМ-сигналов). Выходной драйвер включает в себя:

а) Управление выходом (Output control);

б) Транзисторы (PMOS и NMOS) - используются для определения на выходе микроконтроллера высокого напряжения (логической единицы), либо низкого напряжения (логического нуля);

в) Защитный диод (Protection diode) – защищает микроконтроллер от перенапряжения.

В данной работе для изменения скважности импульсов ШИМ необходимо подключить кнопку. Кнопка – это устройство, при нажатии на которое происходит замыкание контактов. Для подключения кнопки к микроконтроллеру необходимо сконфигурировать порт микроконтроллера как вход и включить чтение входных данных.

Алгоритм набора кода в программе CoIDE состоит в следующем:

  1. Запускаем среду программирования CooCox CoIDE.
  2. После запуска CooCox CoIDE в строке меню нажать: Project → New Project.
  3. В появившемся окне в поле «Project name» ввести имя своему проекту.
  4. Далее нужно выбрать поле с надписью «Chip».
  5. Появится окно с выпадающими списками различных фирм микроконтроллеров (рис. 2). Необходимо открыть список ST, затем из выпадающего списка открыть подсписок STM32F103x, после чего найти микроконтроллер STM32F103C8, выбрать его левым щелчком мыши и нажать Finish (рис. 3).

Рис. 2. Выбор фирмы микроконтроллера

Рис. 3. Выбор микроконтроллера

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

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

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

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

Рис. 4. Выбор библиотек в репозитории

  1. После выбора необходимых библиотек в панели файлов нужно выбрать файл «main.c», весь код будет находится здесь.
  2. С помощью директивы «#include <>» необходимо подключить заголовочные файлы (рис. 5).

Рис. 5. Подключение заголовочных файлов

  1. После подключения заголовочных файлов необходимо с помощью директивы «#define» ввести значения для положения кнопки «ON» - нажата и «OFF» - не нажата (рис. 6).

Рис. 6. Ввод значения для положений кнопки

  1. Необходимо включить тактирование периферийных устройств. Для этого нужно создать и заполнить функцию «InitRCC()» (рис. 7).

Рис. 7. Функция включения тактирования периферийных устройств

  1. Следующим шагом будет создание и заполнение функции инициализации периферийных устройств «InitAll()»:

а) Необходимо ввести структуры для инициализации портов ввода-вывода (GPIO) и таймера (рис. 8);

Рис. 8. Ввод структур

б) Провести инициализацию и настройку портов ввода-вывода (рис. 9);

Рис. 9. Инициализация GPIO

в) Инициализация и настройка таймера TIM4 (рис. 10);

Рис. 10. Инициализация таймера (TIM4)

г) Инициализация и настройка ШИМ (рис. 11);

Рис. 11. Настройка ШИМ

  1. После того как функции «InitRCC()» и «InitAll()» были введены, необходимо объявить их перед функцией «main()» (рис. 12).

Рис. 12. Объявление функций

  1. Следующим шагом необходимо записать функци «InitRCC()» и «InitAll()» между фигурными скобками в функцию «main()», а также в цикле «while(1)» с помощью структуры «if…else» задать параметры для кнопки и регистров сравнения таймера TIM4 (рис. 13). После проделанных действий код можно считать завершенным.

Рис. 13. Заполнение функции «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». Необходимо проверить кабель, к которому подключено устройство.

Результаты изменения скважности импульсов ШИМ с помощью кнопки даны на рис. 14.

Рис. 14. Осциллограммы изменения скважности импульсов ШИМ с помощью кнопки

Литература:

  1. Анучин А. С. Системы управления электроприводов: учебник для вузов / А. С. Анучин. – М.: Изд. дом МЭИ, 2015. – 373 с.
  2. Огородников И. Н. Микропроцессорная техника: введение в Cortex-M3: учеб. пособие / И. Н. Огородников. – Екатеринбург: изд-во Урал. Ун-та, 2015. – 116 с.
  3. Джозеф Ю. Ядро Cortex-M3 компании ARM. Полное руководство / Ю. Джозеф; пер. с англ. А. В. Евстифеева. – М.: Додэка-XXI, 2012. – 552 с.
  4. ST Microelectronics. RM0008 Reference manual. STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs. Rev 16 - 2015.
Основные термины (генерируются автоматически): GPIO, BUILD, помощь кнопки, порт микроконтроллера, логическая единица, выходной драйвер, высокое напряжение, альтернативная функция, Защитный диод, FAILED.


Похожие статьи

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

а) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Основные термины (генерируются автоматически): GPIO, BUILD, лабораторный стенд

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Программирование прямого и комплементарного ШИМ-сигналов...

1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Микроконтроллер STM32F103C8T6 имеет в своем наборе таймер TIM1, с помощью которого можно назначить

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

Программирование синусоидального и пилообразного сигналов...

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

Открыть файл «dac_user.с» и создать в нем функцию, в которой необходимо включить тактирование периферийных

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Регулирование скважности сигнала при помощи аналогового...

‒ Ввод функции инициализации: 1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

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

‒ Ввод функции инициализации: 1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Подключение акселерометра, выполненного по MEMS-технологии...

...ЦАП с интегрированным драйвером громкоговорителя, работающим в классе D, светодиоды и кнопки, а также разъем USB OTG micro-AB.

Листинг функций получения и обработки значений регистров для оси X приведены ниже. void X_read(void). { HAL_GPIO_WritePin(GPIOE...

Управление шаговым двигателем с использованием...

Если на данной линии логический нуль — модулируются сигналы INH1 и INH2, если единица — сигналы A, B, C, D.

Ключевые слова. управление, микроконтроллер, LabVIEW, шаговый двигатель, драйвер

Похожие статьи. Управление шаговым двигателем с помощью NI MyRIO.

Реализация VGA-интерфейса на базе FPGA фирмы Altera

‒ шесть семисегментных индикаторов, 10 светодиодов, 10 переключателей, 4 кнопки.

‒ два GPIO разъема на 35 выводов каждый.

При каждом положительном фронте поступившем на вход pixel_clock, увеличиваем на единицу счетчик pixel_count и в зависимости от его значения...

Особенности работы с приемопередатчиком NRF24L01+

Управление приемопередатчиком осуществляется посредством микроконтроллера по интерфейсу SPI.

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

Похожие статьи

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

а) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Основные термины (генерируются автоматически): GPIO, BUILD, лабораторный стенд

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Программирование прямого и комплементарного ШИМ-сигналов...

1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Микроконтроллер STM32F103C8T6 имеет в своем наборе таймер TIM1, с помощью которого можно назначить

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

Программирование синусоидального и пилообразного сигналов...

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

Открыть файл «dac_user.с» и создать в нем функцию, в которой необходимо включить тактирование периферийных

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Регулирование скважности сигнала при помощи аналогового...

‒ Ввод функции инициализации: 1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

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

‒ Ввод функции инициализации: 1) Назначение портов ввода-вывода (GPIOGeneral Ports Input/Outputs)

Программирование изменения скважности импульсов ШИМ на микроконтроллере STM32 с помощью кнопки.

Подключение акселерометра, выполненного по MEMS-технологии...

...ЦАП с интегрированным драйвером громкоговорителя, работающим в классе D, светодиоды и кнопки, а также разъем USB OTG micro-AB.

Листинг функций получения и обработки значений регистров для оси X приведены ниже. void X_read(void). { HAL_GPIO_WritePin(GPIOE...

Управление шаговым двигателем с использованием...

Если на данной линии логический нуль — модулируются сигналы INH1 и INH2, если единица — сигналы A, B, C, D.

Ключевые слова. управление, микроконтроллер, LabVIEW, шаговый двигатель, драйвер

Похожие статьи. Управление шаговым двигателем с помощью NI MyRIO.

Реализация VGA-интерфейса на базе FPGA фирмы Altera

‒ шесть семисегментных индикаторов, 10 светодиодов, 10 переключателей, 4 кнопки.

‒ два GPIO разъема на 35 выводов каждый.

При каждом положительном фронте поступившем на вход pixel_clock, увеличиваем на единицу счетчик pixel_count и в зависимости от его значения...

Особенности работы с приемопередатчиком NRF24L01+

Управление приемопередатчиком осуществляется посредством микроконтроллера по интерфейсу SPI.

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

Задать вопрос