Методичка MCU
.pdfобеспечения помехоустойчивости. Пример возможного сигнала показан на рисунке.
В нашем контроллере USART (Universal Serial Asynchronous Receiver/Transmitter) устроен так (см. рис.). За преобразования параллельного кода (с шины данных) в последовательный (чтобы передать его по 1 проводу) отвечает Transmit shift register (сдвиговый регистр передачи). Попробуйте вспомнить, что такое сдвиговый регистр.
Обратным преобразованием, из последовательного в параллельный, занимается Receive shift register (сдвиговый регистр приема).
Некоторое время назад, за последовательный интерфейс отвечала специальная микросхема, например, К580ВВ51 или TL16550. В микроконтроллерах такой периферии не было. Для экономии можно было реализовать USART программно, при помощи уже известных Вам операций побитового сдвига.
Задание: организовать вывод байта 0x53 в побитовом режиме, со стартовым и стоповым битами на линию PA5 (можно без строгой синхронизации).
Откройте проект «Tmeter». Нам предстоит сделать термометр, который будет раз в секунду измерять температуру, и передавать ее на компьютер по интерфейсу RS-232. Данные можно сохранять в файл, а потом, обработав в OpenOffice.org Calc (либо в Microsoft Excel), нарисовать график изменения температуры в комнате (или на улице, или в установке, ...).
Для понимания, как же передаются данные, сделаем следующее:
В файле конфигурации проекта напишите
X1 TTY(9600 8) PD0 PD1
.plot V(PD0) v(PD1)
Первая строка подключит виртуальный «терминал» (расположенный на панели управления Control panel внизу) к ножкам процессора с назначением PD... . В данном случае, важно не PD1, а буквы RX/TX в обозначениях рядом с ножкой на рис. RX/TX называются альтернативными функциями ножки. После корректной инициализации USART, соответствующие биты из DDRD и PORTD перестанут управлять ножками, RX переключится на ввод, а TX – на вывод. А вот посредством PIND считать состояния ножек RX и TX будет возможно!
Вторая строка подключит к ножкам RX/TX виртуальный осциллограф, чтобы мы смогли наблюдать передачу в реальном времени.
В качестве параметра «тактовая частота» укажите 11 059 200 (11.0592 МГц). Откуда взялось такое странное число? Почему нельзя использовать, например, 11 МГц, или 11.1 МГц ? Все достаточно просто. Приемная часть USART устроена таким образом, что считывание каждого бита информации
51
происходит за 16 шагов. Начало передачи (начало стартового бита) запускает счетчик шагов. В шагах 7, 8, 9 (середина из 16) происходит считывание значений бита, и если все они совпадают, бит принят надежно. После 16 шага начинается отсчет шагов следующего бита.
Таким образом, удается настроиться на середину битовых интервалов и предотвратить прием шумовых сигналов вместо полезной информации. Частота следования шагов определяется прескалером USART'a, который похож на прескалер таймера. Пусть скорость передачи = 115200 бит/сек. Тогда частота «шагов» = 16*115200 = 1 843 200 Гц. Поскольку прескалер может делить частоту только в целое количество раз, для обеспечения стандартной скорости передачи 115 200 бод требуется тактовя частота контроллера, равная или кратная f0 = 1.8432 МГц, например, 3 686 400 Гц (f0 * 2), 7 327 800 Гц, 14 745 600 Гц. Или 11 059 200 Гц (f0 * 6), как в нашем случае. Кратность-1 = 6-1 = 5 будет параметром настройки прескалера.
В программе создайте бесконечный цикл с содержимым:
while (); UDR = 0x55; while (); UDR = 0x41;
Здесь while ожидает, пока освободится передающий регистр (выполняет пустое тело, пока регистр занят, то есть, флаг … регистра … равен 1). После этого передает символ с кодом 0x55, затем снова ждет, затем передает код 0x41 (латинская большая буква «А»).
Компилируйте, запускайте. Через некоторое время остановите, чтобы спокойно анализировать изображение на осциллографе. Настройте масштаб так, чтобы было видно 2-3 передаваемых символа целиком. Найдите стартовый бит, биты данных и стоповый бит.
Самостоятельное задание:
1)Рассчитать значение прескалера для получения скорости 9600 с «кварцем» на 14 745 600 Гц.
2)Определить, какой символ был передан на рис. , также определить количество стоповых бит.
3)Подумать, как определить, с какой скоростью ведется передача в линии, имея только осциллограф?
4)В каких случаях (привести примеры передаваемых данных и осциллограмм) невозможно определить однозначно, с какой скоростью и какие данные передаются?
5)С использованием таймера (1 сек) модифицируйте программу «Tmeter» так, чтобы результат измерения с обоих датчиков выводился в текстовом виде на компьютер.
52
Калибровка измерителя температуры.
Проект «Tmeter» заработал. Но насколько точно он выдает значения температуры? Какие явления приводят к погрешностям измерения? Во-первых, это технологический разброс параметров элементов от экземпляра к экземпляру.
В усилителе сигнала термопары мы используем резисторы обратной связи номиналами 20 КОм и 71.5 Ом. Коэффициент усиления по напряжению для неинвертирующего усилителя равен K=1+R1/R2 = 1+20000/71.5 =~ 280. Казалось бы, все хорошо. Но оказывается, что изготовить все резисторы одинаковыми не получается: где-то чуть больше напыления, где-то чуть меньше, где-то оно плотнее, и т.п. Для резисторов имеется несколько уровней точности. Самый плохой +-20%. Сейчас такие не выпускаются. Типичные серийные резисторы имеют погрешность +-5% (на самом деле, это - среднеквадратичное отклонение, но мы для примера возьмем его за максимальное). Тогда в худших случаях коэффициент усиления будет (от экземпляра к экземпляру) в диапазоне 1+(20000-5%)/(71.5+5%)… 1+(20000+5%)/(71.5-5%) = 254…310. Видим, что разброс достаточно большой. Взяв более точные резисторы, например, с отклонением +-0.25%, получим диапазон 279,3…282,1, что уже, согласитесь, значительно лучше.
Кроме того, термопары тоже не будут идеальными, и их параметры отличаются друг от друга в серии, и от эталонной термопары. Это обусловлено различием в составе и однородности сплавов, из которых сделаны проводники термопары, соответственно, изменяется и термо-ЭДС. Самым большим разбросом параметров обладает KTY83-111.
Можно, конечно, погрузить «холодный» спай термопары в лед, а «горячий» в среду с известной температурой, а затем определить коэффициенты зависимости напряжения от температуры, но мы для упрощения сделаем следующее:
Считаем, что термопара и ее усилитель – это самые точные приборы, которые у нас сейчас имеются, и по ним откалибруем KTY83-111.
Для повышения точности, учтем нелинейность термопары при помощи таблицы соответствия напряжения и температуры.
Зависимость R(T) для KTY83-111 будем считать линейной.
53
Краткие сведения о теории автоматического регулирования.
Может показаться, что создать любую систему управления очень просто: применяй пороговые устройства, конечные автоматы, простые алгоритмы – и все дело останется в аккуратном программировании. На самом же деле, даже управление простейшим нагревателем с целью поддержания постоянной температуры – непростая задача. Главная проблема в том, что нагреватель и нагреваемое тело инерционны. Обычно одним из требований к термоконтроллеру ставится быстрый выход на рабочий режим.
Допустим, требуется нагреть 1 л воды от T=20 С до T=80 С за 2 минуты. Для нагрева требуется Q= c * m * deltaT = 4200 Дж/(кг*C) * 1 кг * 60 С = 252 кДж. 2 минуты = 120 сек, N=Q/t = 2100 Вт (кстати, это типичная мощность бытового чайника). Казалось бы, задача решена.
Собрав релейную схему обнаружим, что несмотря на отключение нагревателя (при Tизм > Tуст = 80 C), вода продолжает нагреваться, и нагреется, скажем, до 90 градусов («заброс» температуры = 10 градусов). Затем медленно остынет до 80, нагреватель снова включится, и в конце концов система будет находиться в колебательном режиме, и ее температура будет меняться градусов на 5. Для бытового чайника это не страшно, но для управления техпроцессом – может оказаться критическим.
Заброс температуры будет тем больше, чем больше отношение теплоемкостей нагревателя и нагреваемого тела, и чем больше мощность нагревателя.
С одной стороны, чем больше мощность, тем быстрее нагрев, но тем больше заброс температуры.
Вместо порогового регулирования, можно применить плавное. Пусть e = Tизм – Tуст - ошибка регулирования. e>0, если перегрев. Определим такой закон регулирования:
при e>0 => P=0% (мощность, выдаваемая на нагреватель). при e< -e_band => P=100% (номинальная мощность) -e_band < e < 0 => P = -e/e_band * 100%.
Таким образом, e_band – это полоса пропорциональности. Т.е., диапазон температур (в градусах), в котором мощность нагревателя плавно меняется от 0 до 100%. Пороговому режиму соответствует e_band -> 0.
Регулятор такого типа называется пропорциональным, или П- регулятором.
Чем больше e_band, тем плавнее регулируется мощность, тем меньше «заброс» температуры. Но тем больше статическая ошибка регулирования. Это означает, что в установившемся режиме (когда все колебания затухнут) температура системы будет на DT градусов ниже, чем Tуст. Легко понять, что это – принципиальное свойство такой системы (попробуйте найдите понятное объяснение).
Для устранения этого недостатка применяют ПИ-регулятор:
54
Помимо пропорционального слагаемого, вычисляют интеграл от статической ошибки по времени, и добавляют его к пропорциональному слагаемому.
P = -e/e_band + Ki*Integrate e,dt
Таким образом статическую ошибку регулирования можно существенно уменьшить.
Правда, установившийся режим будет достигнут значительно позднее, чем для П-регулятора.
Чтобы ускорить выход на режим, применяют ПИД-регулятор: P = -e/e_band + Ki*Integrate e,dt+Kd*de/dt
Последнее слагаемое пропорционально скорости изменения температуры.
ПИД-регулятор является наиболее универсальным, обеспечивает минимальный «заброс», минимальное время выхода на режим и минимальную статическую ошибку регулирования. Но все это – только при условии правильной настройки параметров e_band, Ki, Kd, что является очень нетривиальной задачей.
Существует множество различных алгоритмов настройки. Многие из них являются «закрытыми», как по коммерческим, так и по стратегическим соображениям.
Рассмотрим ставший классическим алгоритм Зайглера-Николса (ZeiglerNichols):
Сначала система в пороговом режиме совершает несколько колебаний. Из этого режима находим величину «заброса» и период колебания.
ПИД-регуляторы как законченные устройства выпускаются множеством фирм, как российских, так и зарубежных. Как правило, достаточно подключить питание, датчик и нагреватель (с усилителем, например, оптосимистором), и система сразу начнет работать. Задаем уставку (заданное значение параметра), и система через некоторое время достигнет требуемой температуры.
Иногда нужно провести «обучение» (либо регулятор самообучается в процессе регулирования) для точного выбора коэффициентов Kp, Ki, Kd.
Более подробно об этой науке можно узнать из книги [10]. Современное состояние теории Вам расскажут на курсе «Современные проблемы математики» в магистратуре.
55
Литература
[1]
56
Что планирую сделать к след. разу:
1)Про ЦАП, реализованный ШИМ. Показать эпюры напряжений.
2)Добавить примеров программ. (подробно разобрать «Двоичные часы»)
3)Добавить раздел «литература»
4)Подготовить демонстрацию сборки какого-нибудь работающего прибора.
5)Найти и напечатать datasheet на русском языке
6)Переделать оставшиеся 2 стенда для MEGA16
7)Написать отдельный курс по теории автоматического управления.
57
Задания для самостоятельного проектирования:
1)Электронные часы. Необходима реализация программной конструкции, которая при выполнении будет обеспечивать ход секунд, минут и часов по привычным нам правилам. Отсчет времени должен быть реализован внутри прерывания от таймера; таймер должен быть корректно запрограммирован и д. срабатывать 200 раз в секунду. В том же обработчике целесообразно реализовать вывод времени на динамическое устройство индикации.
2)СУ лифта. Имеющиеся 3 кнопки: вызов лифта; светодиоды — фактическое нахождение лифта на этаже. Выключатели — конечные датчики положений лифта. СУ должна обеспечить привычную нам работу лифта.
3)Измерительный прибор: измеритель L
Полезным в практике инженера является прибор «Измеритель комплексного RLC». Имея MCU, возможно разработать удобный и практичный прибор для измерения RLC (хотя бы L).
4) Измерительный прибор: осциллограф.
Известно, что осциллограф является большим, сложным и недешевым прибором, таким образом, маловероятно, что он есть у Вас дома. В то же время, наличие О. часто полезно для проведения ремонта, разработки или настройки к.-л. домашнего, компьютерного или автомобильного оборудования. Предлагается модифицировать схему ChaN, переведя ее на более современный ATMEGA8, написать микрокод и написать управляющую программу для работы ПК+приставки в кач-ве О.
5)Измерительный прибор: измеритель параметров магнитопроводов. Во многих технических и инженерных задачах имеется необходимость измерять параметры магнитопроводов: площадь предельной кривой гистерезиса; остаточную намагниченность, коэрцитивную силу.
Задача: составить блок-схему прибора и написать управляющую программу для измерения этих параметров.
6)Регулятор света: Известно, что если плавно регулировать напряжение питания лампы накаливания (по крайней мере, температуру ее спирали), то далеко не во всех положениях цвет свечения будет комфортным для человека. Кроме того, только вблизи номинальной мощности световой поток будет хоть как-то оправдывать нагрев воздуха. В то же время, большинство люстр рассчитано на раздельное включение 1 и 2х ламп, то есть, можно при помощи 2х клавиш
выключателя дискретно включать 0, 1, 2, 1+2=3 ламп, тем самым выдавая дискретный световой поток нормальной цветности.
Задача: реализовать устройство, имеющее ручку управления (энкодер), и управляющее 2 цепями ламп накаливания, и позволяющую плавно регулировать освещение в тех же пределах (0 ламп — 3 лампы).
58
7)Автомат управления светом в квартире. Известно, что цена на энергоносители (в т.ч. электричество) постоянно возрастает. С т.з. экономии, оптимальным вариантом является включение света в помещениях только когда темно, и когда в помещении есть люди. В то
же время, постоянное включение/выключение лампочек плохо отражается на их долговечности.
Пусть имеется обычная 1-комнатная квартира:
4 помещения: 1 комната, 1 кухня, совмещенный c/у, коридор
4 осветительных прибора: в каждом помещении по 1 люстре.
4 датчика, выдающие сигналы по перемещению людей через проемы (вход +1/выход -1) в помещения и из/в квартиру.
4 энкодерных датчика с кнопками.
1 датчик наружной освещенности.
Задача: на основе схемы написать управляющую программу, позволяющую комфортно проживать в этой квартире и минимизирующую число «ручных» воздействий на систему (желательно только выключать свет перед сном).
8)Спроектировать многоканальный (6-канальный) термометр, использующий в качестве датчиков KTY 83-111. Реализовать возможность дифференциальных измерений температуры.
9)Спроектировать устройство, содержащее микроконтроллер, 2- разрядный СД-индикатор, «пищалку» и 2 кнопки. Реализовать функциональность кухонного таймера: возможность задания и отсчета временных интервалов. Дискретность задания 1, 5, 10 минут
(например, по нажатию на кнопку: 1,2,3,4,5,10,15,20,30,40,50,60 минут). После отпускания кнопки запустить обратный отсчет с отображением оставшегося времени сначала в минутах, а начиная с 99 секунд — в секундах на индикаторе. По истечении времени выдавать звуковой
сигнал. |
|
10) |
Разработать автомат управления посудомоечной |
машиной. Недостаток имеющегося в том, что он производит недостаточное количество полосканий. Разработанный должен быть более гибким и настраиваемым, в то же время не менее удобным.
11) Написать программу для управления автоматическим 4-канальным зарядным устройством для Ni-MH аккумуляторов. Схема устройства дана в приложении; подачей лог. 1 и 0 можно отдельно включать/выключать заряд/разряд каждого аккумулятора по отдельности. Также можно измерять напряжение на каждом акк. и общий ток зарядки всех 4х аккумуляторов. Хорошо бы сделать вывод информации на компьютер и обеспечить возможность разряда аккумуляторов перед зарядкой (для уменьшения «эффекта памяти»).
12) Разработать модификацию стендов, использующую радиоканал для связи между стендами. Для начала достаточно перекрестно управлять светодиодами от кнопок, в дальнейшем неплохо было бы сделать «коммуникатор» - обмениваться сообщениями с клавиатуры и выводить их на встроенный ЖКиндикатор.
59
13) Придумать и реализовать еще какой-нибудь демонстрационный стенд.
60
