Программное управление технологическим оборудованием
.pdf
Рис.3. Просмотр созданной программы в CodeWizard
Как видно из программы, скорость вращения вала двигателя будет переключаться мгновенно, а не плавно, как это можно сделать при помощи аппаратной ШИМ. Это является основным недостатком программной ШИМ.
Примечания к Proteus
Для наблюдения изменения сигнала воспользуйтесь осцилографом.
421
Лабораторная работа №4
ИСПОЛЬЗОВАНИЕ АППАРАТНОЙ ШИМ ДЛЯ УПРАВЛЕНИЯ ДВИГАТЕЛЕМ
Цель работы:
Изучить принцип работы внутренних регистров МК и написать программу изменения мощности двигателя при помощи аппаратной ШИМ.
Общие сведения:
Аппаратную ШИМ проще всего сделать на ШИМ генераторе, который встроен в таймеры МК. В Atmega8 3 ШИМ канала (рисунок 1):
ОС1А (16-битный);
ОС1В (16-битный);
ОС2 (8-битный).
Рис.1. ШИМ каналы МК Atmega8
У таймера есть особый регистр сравнения OCR**. Когда значение в счётном регистре таймера достигает значения находящегося в регистре сравнения, то могут возникнуть следующие аппаратные события:
1.Прерывание по совпадению (уже использовали в аппаратном таймере)
2.Изменение состояния внешнего выхода сравнения OC**. Предположим, что мы настроили наш ШИМ генератор так, что, когда
значение в счетном регистре больше, чем в регистре сравнения, то на выходе у нас 1, а когда меньше, то 0. Таймер будет считать как ему и положено, от нуля до 256, с частотой, которую мы настроим битами предделителя таймера. После переполнения сбрасывается в 0 и продолжает заново. В итоге на выходе появляются импульсы. А если увеличить значение в регистре сравнения, то ширина импульсов станет уже.
У таймера может быть определенное количество регистров сравнения. Зависит от модели МК и типа таймера. Например, у Atmega8:
4. Timer1 - два регистра сравнения (16-разрядных)
422
5. Timer2 - один регистр сравнения (8-разрядный) Самих режимов ШИМ существует несколько (рис. 2, 3):
a.Fast PWM (быстрый ШИМ)
Вэтом режиме счетчик считает от нуля до 255, после достижения переполнения сбрасывается в нуль и счет начинается снова. Когда значение в счетчике достигает значения регистра сравнения, то соответствующий ему вывод ОСххсбрасыватся в ноль. При обнулении счетчика этот вывод устанавливается в 1.
Частота получившегося ШИМ сигнала определяется просто: частота процесора 8МГц, таймер считает до 256 с тактовой частотой. Значит один период ШИМ будет равен 8 000 000/256 = 31250Гц. Это максимальная скорость на внутреннем 8Мгц тактовом генераторе. Еще есть возможность повысить разрешение, сделав счет 8, 9, 10 разрядным (если разрядность таймера позволяет), но надо учитывать, что повышение разрядности, вместе с повышением дискретности выходного аналогового сигнала, резко снижает частоту ШИМ.
b.PhaseCorrect PWM (ШИМ с точной фазой)
Работает также, но счетчик считает уже по-другому. Сначала от 0 до 255, потом от 255 до 0. Вывод OCxx при первом совпадении сбрасывается, при втором устанавливается.
Но частота ШИМ при этом падает вдвое, из-за большего периода. Основное его предназначение, делать многофазные ШИМ сигналы, например, трехфазную синусоиду. Чтобы при изменении скважности не сбивался угол фазового сдвига между двумя ШИМ сигналами. Т.е. центры импульсов в разных каналах и на разной скважности будут совпадать. Чтобы не было кривых импульсов, то в регистр сравнения любое значение попадает через буферный регистр и заносится только тогда, когда значение в счетчике достигнет максимума. Т.е. к началу нового периода ШИМ импульса.
Рис.2 Сравнение режимов Fast PWM и Phase Correct PWM аппаратной ШИМ
c. Clear Timer On Compare (Сброс при сравнении)
423
Это уже скорей ЧИМ - частотно-импульсномоделированный сигнал. Тут работает несколько иначе, чем при других режимах. Тут счетный таймер считает не от 0 до предела, а от 0 до регистра сравнения! А после чего сбрасывается.
Рис. 3. Режим Clear timer on compare (TCNT) ШИМ МК Atmega8
В лабораторной работе вы научитесь использовать «быстрый ШИМ». Он относительно прост в настройке и удобен для того, чтобы снизить мощность двигателя.
Ход работы:
Создать проект при помощи CodeWizard. Выставить порты согласно таблице 3.1 или рисунку 3.2 предыдущей лабораторной работы.
Во вкладке Timer1 настроить таймер на работу ШИМ. Для этого необходимо выставить режимы согласно рис.4.
Рис.4. Настройка таймера на режим Fast PWM аппаратной ШИМ
В итоге получаем таймер, который будет считать с частотой 31,25 кГц (как показала практика, чем меньше частота, тем лучше работает МК, также частота влияет на период импульса) и выдавать на выход А (т.е. порт B.1) не инвертирующий сигнал ШИМ (значение Non-inv). После того, как таймер
424
досчитает до 255, он сброситься в ноль и будет считать заново (значение
Interrupton:Timer1 Overflow).
Получить программу аналогичную программе лабораторной работы №3, но уже с использованием аппаратного таймера.
Листинг основной части программы:
PORTC.1=0; // задаем направление вращения while (1)
{
if((PINC.4==0)&(OCR1A!=255)) // увеличивать пока не достигло максиума
{ delay_ms(7); // задержка 7 мс (скорость наростания уровня сигнала) OCR1A++; //увеличиваем заполнение
}
if((PINC.5==0)&(OCR1A!=0)) // уменьшать пока не достигло миниума
{
delay_ms(7); // задержка 7 мс (скорость снижения уровня сигнала). OCR1A--; //уменьшаем заполнение
};
if (OCR1A>=64) PORTD.0=0; else PORTD.0=1; // вкл/выкл 1-й светодиод if (OCR1A>=85) PORTD.1=0; else PORTD.1=1; // вкл/выкл 2-йсветодиод if (OCR1A>=128) PORTD.2=0; else PORTD.2=1; // вкл/выкл 3-йсветодиод if (OCR1A>=254) PORTD.3=0; else PORTD.3=1; // вкл/выкл 4-йсветодиод
} }
При нажатии кнопки button1 ширина импульса ШИМ сигнала (OCR1A, поступающего на порт B.1) увеличивается со скоростью 1мкс за 7 мс до тех пор, пока не достигнет максимума (значения 255). При нажатии кнопки button2 возникает обратное действие до тех пор, пока ширина ШИМ сигнала не станет минимальной (значение 0), т.е. 7 мкс (это было установлено опытным путем).
Включение светодиодов делаем исходя из сравнения величины сигнала в регистре OCR1A с величинами, характеризиющими скорость вращения вала. Например, для 25% это будет величина равная
25% ∙ 255 = 63,75 ≈ 64
Исходя из проделанных работ, можно выявить ещё одно преимущество аппаратной ШИМ – это ее плавность изменения, чего нельзя добиться программным путем.
Примечания к Proteus
Для наблюдения изменения сигнала воспользуйтесь осцилографом.
425
3. ЛАБОРАТОРНЫЕ РАБОТЫ ПО ПРОГРАММИРОВАНИЮ МИКРОКОНТРОЛЛЕРОВ PIC
Лабораторная работа 1
Изучение работы учебного стенда НТЦ-02.31.2
Цель работы:
Изучить состав, функциональную схему стенда, ознакомиться со структурой и принципом работы микроконтроллера, изучить порядок работы стенда.
Порядок выполнения работы:
3Изучить краткие теоретические сведения о структуре и принципе работы микроконтроллера.
4Изучить функциональную схему стенда.
5Изучить порядок работы со стендом.
6Изучить расположение и назначение рабочих органов стенда и разъёмов для подключения внешних устройств.
7Оформить отчёт по лабораторной работе.
8Ответить на контрольные вопросы.
1 Краткие теоретические сведения
1.1 Микроконтроллеры семейства dsPIC33fj32
Микроконтроллер dsPIC33fj32mc204 относится к семейству 16-ти разрядных Flash микроконтроллеров с поддержкой команд цифровой обработки сигналов. Высокое быстродействие (40 MIPS для dsPIC33FJ) и эффективная система команд позволяет использовать контроллеры в сложных системах реального времени. Ключевые особенности:
расширенная система команд, включающая специфические команды поддержки цифровой обработки сигналов (DSP).
24-разрядные инструкции выполняются за 2 периода тактовой частоты, за исключением команд деления, переходов, команд пересылки данных из регистра в регистр и табличных команд.
разрядность программного счетчика позволяет адресовать до 4М слов программной памяти (4М * 24бит).
аппаратная поддержка циклов типа DO и REPEAT, выполнение которых не требует дополнительных издержек программной памяти и времени на анализ условий окончания, в то же время эти циклы могут быть прерваны событиями прерывания в любой момент;
16 рабочих регистров, каждый регистр массива может выступать как данные, адрес или смещение адреса
426
два класса команд: микроконтроллерные инструкции (MCU) и команды цифровой обработки сигналов (DSP). Оба этих класса равноправно интегрированы в архитектуру контроллера и обрабатываются одним ядром.
различные типы адресации;
система команд оптимизирована для получения
максимальной эффективности при программировании на языке высокого уровня Си.
Микроконтроллер обладает обширным набором периферийных модулей:
порты ввода-вывода общего назначения;
таймеры;
модули захвата и сравнения;
модули генерации ШИМ сигналов;
модуль интерфейса квадратурного энкодера;
10- и 12битный аналого-цифровой преобразователь;
коммуникационные интерфейсы (UART, SPI, I2C, DCI, CAN).
Структурная схема микроконтроллера dsPIC33fj32mc204 представлена на рисунке 1.1. Основные параметры приведены в таблице 1.1. Цоколёвка микроконтроллера приведена в приложении А.
Таблица 1.1
Основные параметры микроконтроллера
ЦПУ: Ядро |
dsPIC33 |
ЦПУ: F, МГц |
от 0.5 до 7.37 |
Память: Flash, Кбайт |
32 |
Память: RAM, Кбайт |
2 |
I/O (макс.), шт. |
35 |
Таймеры: 16-бит, шт |
3 |
Таймеры: Каналов ШИМ, шт |
2 |
Таймеры: RTC |
Нет |
Интерфейсы: UART, шт |
1 |
Интерфейсы: SPI, шт |
1 |
Интерфейсы: I2C, шт |
1 |
Аналоговые входы: Разрядов АЦП, бит |
10 |
Аналоговые входы: Каналов АЦП, шт |
9 |
Аналоговые входы: Быстродействие АЦП, |
|
kSPS |
1100 |
VCC, В |
от 3 до 3.6 |
ICC, мА |
250 |
TA, °C |
от -40 до 125 |
Корпус |
TQFP-44 |
427
Рис. 1.1. Структурная схема микроконтроллера
428
1.2 Среда разработки MPLAB IDE
Основной средой разработки для всех семейств (и 8- и 16-битных) является MPLAB IDE, которую предоставляет компания Microchip. Среда имеет следующие встроенные средства и возможности:
менеджер проекта и рабочей области.
текстовый редактор с подсветкой кода для ассемблеров всех семейств и языка Си. Возможен парсинг кода и вывод списка элементов программы (функций, переменных, констант, структур, и т. п.). Текстовый редактор поддерживает запись и выполнение макросов.
ассемблер для всех семейств Microchip. Для 16-битных контроллеров - ассемблер ASM30. В состав среды входят заголовочные файлы и скрипты линкера для всех контроллеров.
программный симулятор для всех семейств Microchip, который обеспечивает симуляцию большинства периферийных модулей, трассировку выполняемого кода, произвольное число точек останова, пошаговое выполнение. Симулятор имеет счетчик времени выполнения, логический анализатор (графическое представление изменений логических уровней на выводах контроллера).
Симулятор позволяет имитировать работу внешних устройств: аналоговый сигнал на входе АЦП, RS-232 терминал, и т. п. Возможно изменение любого служебного регистра или ячейки ОЗУ в соответствии с заданной в текстовом файле последовательностью.
Для 16-битных семейств компания Microchip предлагает компилятор MPLAB C30, в состав которого входят: собственно компилятор исходных файлов в объектные; линкер; генератор библиотечных файлов.
Основные особенности компилятора C30:
1)ANSI C совместимый, в комплекте поставляются стандартные библиотеки.
2)поддержка типов 32-bit double и 64-bit double, 64-битного целого (long long).
3)поддержка всех 16-битных семейств Microchip.
4)поддержка смешанного кода Си + asm.
5)поддержка расширенных настроек оптимизации кода.
6)наличие встроенных (intrinsincs) функций для работы с DSP-ядром.
Учебный стенд НТЦ-02.31.2
1.3.1 Структура стенда Структурная схема стенда представлена на рисунке 1.2. Электрическая
схема стенда представлена в приложении Б.
Стенд построен на базе микроконтроллера dsPIC33fj32mc204. Микроконтроллер имеет встроенное ОЗУ для хранения пользовательских программ. Для изучения простейших операций ввода-вывода дискретных данных и ввода аналоговых данных непосредственно к контроллеру подключены светодиодные индикаторы, тумблеры и аналоговые задатчики. Для изучения принципа обработки квадратурного сигнала используется
429
энкодер. Для подключения большого числа периферийных модулей в стенде организована последовательная шина данных, по которой происходит управление портами расширений дискретных входов-выходов, а так же светодиодной семисегментной индикацией. Так же для заимодействия с пользователем посредством знако-символьной информации к контроллеру подключён жидко-кристаллический индикатор (ЖКИ). С помощью дешифратора и мультиплексора реализована возможность обработки клавиатуры, построенной по матричной схеме. Для подключения иных периферийных устройств (ЦАП, внешняя память) используется шина I2C. Для организации связи с внешними устройствами (в частности с ПК) микроконтроллер имеет порт последовательного асинхронного приёмопередатчика, позволяющий организовывать обмен данными по интерфейсу
RS232.
Все устройства, входящие в состав стенда и отображённые на структурной схеме стенда, являются программно-доступными.
Рис. 1.2. Структурная схема учебного стенда
1.3.2 Органы управления
Лицевая панель стенда представлена на рисунке 1.3. На передней панели стенда расположены:
1 – датчики дискретных сигналов (10 переключателей SA1..SA10);
2 – дискретный светодиодный индикатор (10 светодиодов VD1..VD10); 3 – светодиодный семисегментный индикатор
(LED);
4 – матричный жидкокристаллический индикатор (LCD);
430
