Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование микроконтроллеров AVR. Учебное пособие.pdf
X
- •ПРЕДИСЛОВИЕ
- •1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR СЕМЕЙСТВА MEGA
- •1.1. Регистры микроконтроллера
- •1.2. Порты ввода/вывода
- •1.3. Периферийные устройства
- •1.3.1. Таймеры/счетчики
- •1.3.2. Аналого-цифровой преобразователь
- •2. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ С
- •2.1. Вводные понятия в языке С
- •2.2. Правила приведения типов компилятора Code Vision AVR
- •2.3. Структура программы на языке С
- •3. СОЗДАНИЕ ПРОЕКТА С ИСПОЛЬЗОВАНИЕМ МАСТЕРА-ПОСТРОИТЕЛЯ
- •3.1. Выбор общих параметров проекта
- •3.1.1. Настройка портов
- •3.1.2. Настройка таймеров
- •3.1.3. Настройка параметров АЦП
- •3.1.4. Настройка параметров ЖКИ
- •3.2. Генерации программы
- •4. ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ AVR ПРИ РАЗРАБОТКЕ ИЗМЕРИТЕЛЬНЫХ СИСТЕМ
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

напряжения, тока и активной мощности. Полученные результаты подготавливаются к выводу на ЖК-дисплей в конце каждой секунды после
начала измерений.
Содержимое переменных, участвующих в процессе, в конце каждого
цикла (через 1 с) должно обнуляться.
Фрагменты дополнительных кодов программы для измерения пере-
менного напряжения представлены ниже: фрагмент с определениями глобальных и локальных переменных (листинг 4.4.1), фрагмент п/программы
обработки прерывания АЦП (листинг 4.4.2).
Листинг 4.4.1
#define c_u 139.32 // калибровочный коэффициент по
напряжению
unsigned char str1[16]; // строка для вывода результата
на ЖКИ
signed long int Um=0;
float Ud=0;
float Uds=0; // Uds - действ. средн. знач. напряжения
unsigned int otschet=0, // количество отсчетов АЦП за 1
период сети
period=0; // количество периодов за время накопления
результата (1 сек)
// подпрограмма (функция) вывода данных на ЖК-дисплей
void lcd_output(void)
{
sprintf(str1,"U:%.1f B", Uds); // формат 1-й
строки
lcd_clear(); // очистка ЖК-
дисплея
lcd_gotoxy(0,0); // определение позиции для вывода
1-го символа 1й строки ЖКИ
lcd_puts(str1); // вывод 1-й
строки
}
81

вывод 1-й строки
}
Листинг 4.4.2
otschet++; // наращиваем счетчик отсчетов АЦП за 1
период
Um+= (long)(adc_data -128)*(adc_data -128); //
накапливаем квадраты напряжения за 1 период с вычетом
128 бит, соотв. +2.5 В
if (otschet == 80) // если количество отсчетов АЦП =
80,то
{
Ud+=sqrt(Um/80)*5/256; // вычисление
среднеквадратичного значения напряжения
otschet=0; Um=0; // сброс переменных
period++; // наращиваем счетчик количества периодов
}
if (period==50) // если количество периодов = 50,то
{
Uds=(Ud/50)*c_u; // действ. среднее знач.
напряжения
Ud=0; // обнуление промежуточных результатов
измерений
period=0;
lcd_output(); // вывод информации на ЖК-дисплей
}
После успешного завершения трансляции отлаженной программы
в среде Code Vision AVR можно перейти к симуляции ее работы в программной среде PROTEUS. Для этого требуется сначала подготовить файл
Design-схемы для симуляции программы измерения переменного напряжения, скриншот которого представлен на рис. 4.16, а затем загрузить
в микроконтроллер симулятора сгенерированный при компиляции файл
с расширением .cof.
82

Рис. 4.16. Скриншот файла Design-схемы для измерения
переменного напряжения
При правильной настройке программы показания напряжения на ЖКИ
должны совпадать с показаниями вольтметра.
4.5. ПОДГОТОВКА ПРОГРАММЫ
ДЛЯ ИЗМЕРЕНИЯ ПЕРЕМЕННОГО ТОКА
При измерении переменного тока с помощью микроконтроллера AVR
следует соблюдать те же ограничения по отношению к максимальному
напряжению на входе АЦП, что и в п. 4.1. Из справочника [7] выбираем
измерительный трансформатор тока типа ТК-20-20/5 и рассчитываем схему делителя напряжения для ввода аналоговой информации в АЦП.
На вход АЦП микроконтроллера необходимо подавать уровни измеряемых напряжений только положительной полярности, не превышающих
значения опорного напряжения АЦП, которое обычно устанавливается
83

равным +5 В. Кривые входного напряжения имеют постоянную и пере-
R
Ш
R
4
R
3
+5 B
к АЦП
Ш3
~=
4
1,77 B ; 10 mA .
R RR
U II∆=≤≈
менную составляющие, поэтому амплитудные значения двухполярных
сигналов переменного напряжения не должны превышать 2,5 В. Вследствие этого на входе АЦП нужно установить положительное напряжение
смещения, равное +2,5 В.
Для разработки схемы измерительной цепи с трансформатором тока,
показанной на рис. 4.17, произвести выбор токового шунта RШ и расчет
делителя напряжения R3, R4.
Рис. 4.17. Схема измерительной цепи
тока нагрузки
Расчёт измерительной цепи тока нагрузки с трансформатором тока
производится с условием, что токи делителей напряжения должны быть
в пределах 10 мА:
Проводим расчет токового шунта, соблюдая следующие условия:
максимальное падение напряжения при I
Напряжение ∆URШ = U
АЦПвх
Шmax
→∆U
≤ 1,77 B.
RШ
= 1,77 В соответствует U
АЦПвых
= 5 В.
84

Максимальный ток, протекающий через шунт при I
Ш max
18 5
4,5 А.
20
I
⋅
= =
Ш
Шmax
R
Ш
1, 77
0,393 Ом.
4,5
U
R
I
∆
= = =
Шрас Ш Ш
2
20,25 0,39 7,89 Вт.P IR
= = ⋅=⋅
= 18 A:
1max
Расчет сопротивления шунта RШ:
В качестве шунта выбираем токоизмерительный резистор сопротив-
лением RШ = 0,39 Ом из стандартного ряда Е24.
Расчетная мощность, выделяемая на таком шунте, при максимальном
токе
Выбранная мощность шунта RШ должна быть ≥ Р
, РШ = 10 Вт.
Шрас
Выбираем токовый шунт AH (Rх24)10W0.39, внешний вид которого
показан на рис. 4.18.
Рис. 4.18. Токовый шунт AH (Rх24)10W0.39
85

Падение напряжения на выбранном шунте при максимальном токе
Ш
ШШ
4,5 0,39 1,755
В
R
U IR
∆= =×=
⋅
вых
3,4
3
5
500 Ом.
10 10
дел
U
R
I
−
= = =
∑
⋅
меньше предельно допустимого:
< 1,77 В.
Расчет величин сопротивлений R3, R4 с учетом рекомендаций:
Из расчета следует, что сопротивления равны R3 = 250 Ом и R4 =
= 250 Ом, но из стандартного ряда Е24 должны быть выбраны величины
стандартных сопротивлений R3 = R4 = 240 Ом или R3 = R4 = 270 Ом.
Описание работы программы. Блок-схемы алгоритмов
В данной работе АЦП используется в 8-разрядном режиме с выравниванием по левому краю, поэтому результат считывается из старшего байта
ADCH. Запуск АЦП и вывод каждого результата производятся через
250 мкс. Блок-схема алгоритма основной программы остается неизменной,
такой же, как на рис. 4.2. Блок-схема алгоритма п/программы обработки
прерывания таймера/счетчика ТС0 такая же, как на рис. 4.14. Блок-схема
алгоритма п/программы обработки прерывания АЦП при измерении переменного тока представлена на рис. 4.19.
Формулы и алгоритмы, по которым производится вычисление действующего значения переменного тока, аналогичны тем формулам и алгоритмам, по которым рассчитывались действующие значения переменного
напряжения в п. 4.4. После занесения результата преобразования из ADCH
в переменную Im с вычетом постоянной составляющей (2,5 В) содержимое переменной Im возводится в квадрат и происходит накопление сумм
квадратов тока в переменной Im в течение периода tC = 20 мс. В конце
каждого периода происходит перенос содержимого Im в переменную Id
и переменная Im обнуляется.
86

НАЧАЛО
Кол-во
периодов
50
ВОЗВРАТ
Чтение Im
из ADCH
Вычитание
пост. сост из Im
Вычисление
квадрата тока
I
2
m
Накопление
ΣI
2
m
за период
Обнуление
Im
Вычисление
Наращивание
числа периодов
Обнуление
числа периодов
Id=0; Ids=0
Обнуление
числа измерений
Вычисление
Ids =ΣId/50
Вывод
Ids на ЖКИ
Наращивание
числа измерений
Нет
Да
Да
Нет
Кол-во
измерений
80
Накопление
ΣId за 1 с
2
Id I m= Σ
Рис. 4.19. Блок-схема алгоритма п/программы обработки
прерывания АЦП при измерении переменного тока
Таким образом, за время T = 1 с производится накопление средне-
квадратических значений тока в течение 50 периодов сети. Затем с целью
87

усреднения полученного значения эта сумма делится на 50. По таким алгоритмам, согласно приведенным формулам (4.2) вычисляются действующие значения напряжения, тока и активной мощности. Полученные результаты подготавливаются к выводу на ЖК-дисплей в конце каждой секунды после начала измерений.
Содержимое переменных, участвующих в процессе, в конце каждого
цикла (через 1 с) должно обнуляться.
Фрагменты дополнительных кодов программы для измерения переменного тока представлены ниже: фрагмент с определениями глобальных
и локальных переменных (листинг 4.5.1), фрагмент п/программы обработки прерывания АЦП (листинг 4.5.2).
Листинг 4.5.1
#define koef_i 2.56 // калибровочный коэффициент по току
unsigned char str1[16]; // строка для вывода результата
на ЖКИ
signed long int Im=0; // Im - мгновенное значение тока
float Id=0; // Id - действующее значение тока
float Ids=0; // Ids - действующее среднее значение тока
unsigned int otschet=0; // количество отсчетов АЦП за 1
период сети
// подпрограмма (функция) вывода данных на ЖК-дисплей
void lcd_output(void)
{
sprintf(str1,"I:%.1f A", Ids); // формат
1-й строки
lcd_clear(); // очистка
ЖК-дисплея
lcd_gotoxy(0,0); // определение позиции для вывода
1-го символа 1-й строки ЖКИ
lcd_puts(str1); // вывод
1-й строки
}
88

Листинг 4.5.2
otschet++; // наращиваем счетчик количества отсчетов
АЦП за 1 период
Im+= (long)(adc_data -128)*(adc_data -128); //
накапливаем квадраты тока за 1 период с вычетом 128 бит,
соответствующих напряжению +2.5 В
if (otschet == 80) // если количество отсчетов АЦП =
80,то
{
Id+=sqrt(Im/80)*5/256; // вычисление
среднеквадратичного значения тока
otschet=0; Im=0; // сброс переменных
period++; // наращиваем счетчик количества периодов
}
if (period==50) // если количество периодов = 50,то
{
Ids=(Id/50)*koef_i; // действ. среднее знач. тока
Id=0; // обнуление промежуточных результатов
измерений
period=0;
lcd_output(); // вывод информации на ЖК-дисплей
}
После успешного завершения трансляции отлаженной программы
в среде Code Vision AVR можно перейти к симуляции ее работы в программной среде PROTEUS. Для этого требуется сначала подготовить файл
Design-схемы для симуляции программы измерения переменного напряжения, скриншот которого представлен на рис. 4.20, а затем загрузить
в микроконтроллер симулятора сгенерированный при компиляции файл
с расширением .cof.
89

Рис. 4.20. Скриншот файла Design-схемы для измерения
переменного тока
При правильной настройке программы показания тока на ЖКИ долж-
ны совпадать с показаниями амперметра.
4.6. ПОДГОТОВКА ПРОГРАММЫ
ДЛЯ ИЗМЕРЕНИЯ АКТИВНОЙ МОЩНОСТИ
При измерении переменного напряжения и тока с помощью микро-
контроллера AVR следует соблюдать те же ограничения по отношению
к максимальному напряжению на входе АЦП, что и в п. 4.1. В этой разработке требуется выбрать из справочника [7] измерительный трансформатор напряжения на входное напряжение 220 В +10 %, измерительный
трансформатор тока при токе нагрузки 43 А и рассчитать схему делителя напряжения R1, R2 и R3, R4 (рис. 4.13), а также выбрать измерительный трансформатор тока и рассчитать схему делителя напряжения R1,
R2 и R3, R4 (рис. 4.17) для ввода аналоговой информации в АЦП.
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
