Фильтр по тематике

ШИМ на микроконтроллере ATTINY2313-PU

В статье представлено устройство, реализующее широтно-импульсную модуляцию (ШИМ) на базе микроконтроллера ATtiny2313. Для реализации ШИМ в микроконтроллере задействован таймер/счётчик Т/С1, работающий в режиме Phase Correct PWM (ШИМ, корректный по фазе).

01.03.2017 1428 0
ШИМ на микроконтроллере ATTINY2313-PU

В ATtiny2313 предусмотрены два таймера/счётчика общего назначения: 8­разрядный (Т/С0) и 16­разрядный (Т/С1). Оба они могут работать в режиме ШИМ. Рассмотрим подробнее все особенности работы Т/С1 указанного микроконтроллера в режиме ШИМ. Модуль Т/С1 поддерживает следующие режимы работы:

  • Normal (нормальный режим);
  • СТС (сброс при совпадении);
  • Phase Correct PWM (ШИМ, корректный по фазе);
  • Phase Correct and Frequency Correct PWM (ШИМ, корректный по фазе и частоте);
  • Fast PWM (быстрый ШИМ).

Микроконтроллер в представленном устройстве, как уже упоминалось, работает в режиме Phase Correct PWM (ШИМ, корректный по фазе). Рассмотрим детально данный режим работы.

В качестве источников импульсов для таймера можно выбрать сигнал с тактовой частотой микроконтроллера (СК), импульсы предварительного делителя (СК/8, СК/64, СК/256, СК/1024) или импульсы с соответствующего внешнего вывода.

Для управления Т/С1 используются два регистра. Это регистры TCCR1A и TCCR1В. Биты регистра TCCR1A приведены в таблице 1.

Биты 7 (COM1A1) и 6 (COM1A0) – выбор режима работы выхода совпадения порта А (вывод 15 микроконтроллера). Биты 5 (COM1В1) и 4 (COM1В0) – выбор режима работы выхода совпадения порта В (вывод 16 микроконтроллера). Соответствие значений битов 7, 6, а также битов 5, 4 режимам работы портов A и B в режиме Phase Correct PWM (или Phase Correct and Frequency Correct) приведено в таблице 2.

Выбор данных режимов осуществляется при помощи бита WGM13 в регистре TCCR1В. Биты 2, 3 регистра TCCR1A зарезервированы и всегда читаются как 0. Настройка работы Т/С1 битами WGM11, WGM10 для режима Phase Correct PWM приведена в таблице 3.


Биты регистра TCCR1В приведены в таблице 4. Бит 7 (ICNC1) разрешает работу шумоподавителя на входе захвата. Если ICNC1 = 0, то подавление входного шума входа захвата запрещено. Установка этого бита в единицу активизирует схему шумоподавителя на входе захвата. При этом захват срабатывает по первому заданному (нарастающему или спадающему) фронту сигнала на входе ICP1. При установке бита обрабатываются четыре последовательные выборки сигнала на входе ICP1. Для срабатывания захвата все выборки должны соответствовать уровню, заданному битом ICES1. Частота выборок равна тактовой частоте генератора. Бит 6 (ICES1) определяет выбор фронта захвата сигнала. Если ICES1 = 0, содержимое Т/С1 переписывается в регистр захвата по спадающему фронту на входе ICP. Если бит установлен – по нарастающему. Бит 5 зарезервирован и всегда читается как 0. Биты 4, 3 (WGM13, WGM12) служат для выбора режима генерации сигнала. Биты 2, 1, 0 (CS12, CS11, CS10) предназначены для выбора тактовой частоты. Эти биты задают коэффициент предварительного деления для Т/С1. Соответствие настроек указанных битов режимам работы Т/С1 приведено в таблице 5.


В режиме Phase Correct PWM таймер/счётчик Т/С1 можно использовать как 8­, 9­ или 10­разрядный широтно­импульсный модулятор. В этом случае счётчик и регистр OCR1А (ОСR1В) работают как защищённый от дребезга независимый ШИМ с отцентрированными импульсами.

При выборе режима широтно­импульсной модуляции таймер/счётчик Т/С1 и регистр совпадения OCR1A (ОСR1В) формируют 8­, 9­ или 10­разрядный непрерывный, свободный от «дрожания» и правильный по фазе сигнал, подающийся на вывод 15 (вывод 16 для ОСR1В) микроконтроллера. Т/С1 работает как реверсивный счётчик, считающий от нуля до конечного значения. Конечное значение таймера и соответствующая частота ШИМ приведены в таблице 6.

При достижении конечного значения счётчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счётчика совпадёт с 8, 9 или 10, в зависимости от выбранной разрядности, младшими битами регистра OCR1A (ОСR1В), вывод 15 (вывод 16 для ОСR1В) устанавливается или сбрасывается в соответствии с установками битов СОМ1А1 и СОМ1А0 (СОМ1В1 и СОМ1В0 для порта B) в регистре TCCR1A (см. таблицу 2). В целом, программные ресурсы данного микроконтроллера ATtiny2313 позволяют реализовать ШИМ с достаточно гибким управлением и с большим диапазоном задаваемых частот.

Принципиальная схема широтно­импульсного модулятора (далее – устройства) на базе микроконтроллера ATtiny2313­PU представлена на рисунке 1.

В устройстве задействован 8­разрядный Phase Correct PWM с выходом ОСА1. Поэтому в регистр TCCR1A загружается число 0b11000001. Для согласования двухразрядного числа, индицируемого на индикаторах HG1 и HG2, c конечным значением таймера/счётчика Т/С1, в программе заложена формула: Y = 2,5 × X, где X – число, индицируемое на индикаторах, Y – число, загружаемое в Т/С1. На дисплее в этом случае индицируется относительная величина (в %) загрузки числа в счётчик. Реально в счётчик загружается число от 0 до 247.

Индикатор HL1 включается с вывода 11 микроконтроллера DD1. Через порт В микроконтроллер DD1 управляет клавиатурой (кнопки S1…S3) и динамической индикацией. Динамическая индикация собрана на транзисторах VT1, VT2 и цифровых семисегментных индикаторах HG1, HG2. Резисторы R4…R11 выполняют функцию токоограничителей для сегментов индикаторов HG1, HG2. Коды для включения индикаторов HG1, HG2 при функционировании динамической индикации поступают на порт В микроконтроллера DD1. Для функционирования клавиатуры задействован также вывод 6 микроконтроллера DD1. Выходной сигнал ШИМ поступает на контакт 1 соединителя Х2 с выхода эмиттерного повторителя, собранного на транзисторе VT1. Рабочая частота 10 МГц микроконтроллера задаётся генератором с внешним резонатором ZQ1.

Элементы интерфейса устройства: клавиатура (кнопки S1…S3), индикатор HL1 и блок индикации (дисплей), состоящий из двух цифровых семисегментных индикаторов HG1, HG2. Кнопки клавиатуры имеют следующие назначения:

S1 (Δ) – увеличение на единицу значения ШИМ (в %) при удержании данной кнопки в нажатом состоянии не более двух секунд (при нажатии более двух секунд значение ШИМ, индицируемое на дисплее, увеличивается на пять единиц за одну секунду);

S2 (∇) – уменьшение на единицу значения ШИМ (в %) при удержании данной кнопки в нажатом состоянии не более двух секунд (при нажатии более двух секунд значение ШИМ, индицируемое на дисплее, уменьшается на пять единиц за одну секунду);

S3 (C) – выключение ШИМ (при выключении ШИМ выключается индикатор HL1, на выводе 15 микроконтроллера – логическая «1»).

Фотография интерфейса устройства на макетной плате приведена на рисунке 2.

Для включения ШИМ достаточно нажать кнопку S1 или S2. При включённом ШИМ индикатор HL1, соответственно, тоже включён.

Системный сброс микроконтроллера DD1 осуществляется сигналом низкого уровня, через RC­цепь (резистор R3, конденсатор С3). При инициализации индикатор HL1 отключён. На индикаторах HG1, HG2 индицируются нули. Для перевода устройства в рабочий режим необходимо кнопками S1, S2 установить необходимое значение ШИМ. При этом включится индикатор HL1. Для отключения ШИМ необходимо нажать на кнопку S3. На выводе 15 микроконтроллера при этом установится логическая «1».

Программа микроконтроллера состоит из трёх основных частей: процедура инициализации, основная программа, работающая в замкнутом цикле, и подпрограмма обработки прерывания от таймера/счётчика T/C0 (соответственно, метки INIT, SE1, S0).

В основной программе происходит инкремент и декремент заданного значения ШИМ.

В подпрограмме обработки прерывания от таймера/счётчика T/C0 происходит опрос клавиатуры и перекодировка двоичного числа значений времени в код для отображения информации на семисегментных индикаторах, а также отображения разрядов в динамической индикации. В памяти данных микроконтроллера с адреса $60 по $61 организован буфер отображения для динамической индикации.

Каждый байт из функциональной группы в цикле, в подпрограмме обработки прерывания таймера T/C0 (метка S0), после перекодировки выводится в порт В микроконтроллера. Для включения индикаторов HG1, HG2 необходимо установить логический «0» на выводах 2 и 3 микроконтроллера DD1. Например, для того чтобы на индикаторе HG1 индицировалось число «1», необходимо двоично­десятичное число, расположенное по адресу $60, перекодировать, вывести в порт B микроконтроллера и установить логический «0» на выводе 2 (порт D) микроконтроллера DD1. Записывая поочерёдно после перекодировки, в цикле, в порт B микроконтроллера байты из функциональной группы буфера отображения и логический «0» на соответствующий вывод порта D, мы получаем режим динамической индикации.

В процессе обработки подпрограммы прерывания происходит опрос клавиатуры. Младшая тетрада выводимого при этом в порт В микроконтроллера байта для клавиатуры представляет собой код «бегущий ноль». После записи данного байта в порт В микроконтроллер DD1 анализирует сигнал на входе 6 порта D. В рамках подпрограммы, при любой нажатой кнопке, на входе 6 микроконтроллера присутствует логический «0». Таким образом, каждая кнопка клавиатуры «привязана» к «своему» разряду в младшей тетраде байта данных, выводимого в порт B микроконтроллера для опроса клавиатуры.

При нажатии на кнопку S1 текущее значение ШИМ на дисплее увеличивается на единицу и устанавливается флаг, разрешающий увеличивать значение ШИМ, индицируемое на дисплее. Одновременно запускается счётчик, организованный на регистре R2, формирующий интервал в две секунды. Если кнопка удерживается более двух секунд, значение ШИМ, индицируемое на дисплее, увеличивается на пять единиц за одну секунду. Интервал времени, в течение которого происходит увеличение значения, организован в регистре R1. При отпускании кнопки S1 все указанные счётчики обнуляются.

Аналогичным образом организована работа кнопки S2 для уменьшения значения ШИМ, индицируемого на дисплее. При нажатии на кнопку S2 текущее значение времени на дисплее уменьшается на единицу. Если кнопка удерживается более двух секунд, значение времени, индицируемое на дисплее, уменьшается на пять единиц за одну секунду. Счётчики приведённого алгоритма для кнопки S2 организованы, соответственно, в регистрах R3, R4. В листинге 1 (исходный текст программы содержится в архиве, который доступен для загрузки на сайте журнала www.soel.ru) приведён фрагмент программы работы клавиатуры.

В регистре R22 осуществляется выбор разрядов в динамической индикации. При инициализации в R22 заносится число 0b00000001. При каждом обращении к подпрограмме обработки прерывания единица сдвигается влево, подготавливая включение следующего разряда. В подпрограмме также осуществляется проверка, не вышла ли единица за пределы разрядной сетки, т.е. после числа 0b00000100 в R22 загружается снова 0b00000001. Все флаги, которые используются при работе программы, выполнены на регистрах R24, R25. Назначение каждого флага приведено в тексте программы.

Разработанная программа на ассемблере (см. листинг 2 – исходный текст программы содержится в архиве, который доступен для загрузки на сайте журнала www.soel.ru) занимает порядка 0,7 кбайт памяти программ микроконтроллера. Потребление тока по каналу напряжения +5 В составляет не более 100 мА. В схеме, представленной на рисунке 1, применены конденсаторы С1…С5 типа К10­17а. Конденсатор С6 – типа К50­35. Данный конденсатор устанавливается между цепью +5 В и общим проводником микроконтроллера DD1. Применены резисторы типа С2­33Н­0.125.

Скачать

20173058.zip / ZIP, 36 КБ

Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

01.03.2017 1428 0
Комментарии
Рекомендуем
Бионический дизайн и SLM-технология в корпусных конструкциях электроники будущего

Бионический дизайн и SLM-технология в корпусных конструкциях электроники будущего

Роботизированная техника с помощью ИИ и 3D-технологий помогает разрабатывать корпусные изделия для РЭА качественнее, быстрее и эстетичнее. Иногда важен каждый грамм веса без потери надёжности конструкции, как в аэрокосмических разработках или специальной РЭА. Заметна тенденция в создании инновационных корпусов для РЭА: от бытовых переносных систем до монтажных шкафов с модульным размещением электронного оборудования, эффективной системой расположения модулей и вентиляции – для серверных и специальных установок. Статья будет полезна разработчикам РЭА, а также инженерам-конструкторам и технологам в области проектирования модульных, пластиковых и металлопрофильных конструкций корпусов для РЭА, монтажных, в том числе встраиваемых, шкафов, руководителям предприятий и отраслевым аналитикам.
11.06.2026 СЭ №5/2026 241 0
Современные системы управления электроприводов: структура и конструкция. Часть 2

Современные системы управления электроприводов: структура и конструкция. Часть 2

Статья посвящена системам управления электроприводов, которые в настоящее время являются основным средством приведения в движение рабочих машин и других технических устройств. Излагаются основные сведения об электроприводах и их системах управления, предназначенных для управления преобразователем электрической энергии и электродвигателем – главными составными частями электропривода. Рассматриваются различные варианты структуры и конструкции систем управления электроприводов. Приводится описание универсального микроконтроллерного блока управления БУПЧ, который является основой систем управления преобразователями частоты для электроприводов большой и сверхбольшой мощности концерна «Русэлпром».
09.06.2026 СЭ №5/2026 354 0

Реклама. ООО «Формика Ивент»  ИНН 7709889632  erid = 2SDnjdV94YS
Реклама. ООО «Формика Ивент»  ИНН 7709889632  erid = 2SDnjdsNsmc
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться