Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование микроконтроллеров AVR. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
На вход АЦП микроконтроллера необходимо подавать уровни изме-
~ 220 В
TV
R
2
R
4
R
1
R
3
+5 B
к АЦП
12 34
~=
10 mA ; 10 mA .
RR RR
II II≈= ≈ =
ряемых напряжений только положительной полярности, не превышающих значения опорного напряжения АЦП, которое обычно устанавливается равным +5 В. Кривые входного напряжения имеют постоянную и пере­менную составляющие, поэтому амплитудные значения двухполярных сигналов переменного напряжения не должны превышать значений 2,5 В. Вследствие этого на входе АЦП нужно установить положительное напря­жение смещения, равное +2,5 В.
В этом случае для измерения напряжения на нагрузке необходимо ис­пользовать следующую схему измерительной цепи (рис. 4.21):
Рис. 4.21. Схема измерительной цепи напряжения
на нагрузке
Расчёт измерительной цепи напряжения на нагрузке с трансформато­ром напряжения производится с условием, что токи делителей должны быть в пределах 10 мА:
Последовательность действий при расчете такая же, как в п. 4.4.
Для разработки схемы измерительной цепи с трансформатором тока, показанной на рис. 4.22, произвести выбор токового шунта RШ и расчет делителя напряжения R3, R4.
91
R
Ш
R
4
R
3
+5 B
к АЦП
Рис. 4.22. Схема измерительной цепи
тока нагрузки
Последовательность действий при расчете такая же, как в п. 4.5.
Описание работы программы. Блок-схемы алгоритмов
В данной работе АЦП используется в 10-разрядном режиме с вырав-
ниванием по правому краю, поэтому результат считывается из двух бай­тов регистра ADCW. Запуск АЦП и вывод каждого результата произво­дятся через 250 мкс. Блок-схема алгоритма основной программы остается неизменной, такой же, как и в п. 4.1 (рис. 4.2). Блок-схема алгоритма п/программы обработки прерывания таймера-счетчика ТС0 такая же, как в п. 4.4 (рис. 4.14). Блок-схема алгоритма п/программы обработки преры­вания АЦП при измерении активной мощности представлена на рис. 4.23.
Формулы и алгоритмы, по которым производится вычисление дей­ствующего значения переменного тока, аналогичны тем формулам и алго­ритмам, по которым рассчитывались действующие значения переменного напряжения в п. 4.4 и переменного тока в п. 4.5.
Потребность в перемножении двух операндов при измерении мощно­сти вынуждает производить смену каналов мультиплексора АЦП.
92
НАЧАЛО
Чтение Um
из ADCH
Вычитание
пост. сост Um
Номер канала
i
Кол-во
отсчетов
80
Кол-во
периодов
50
ВОЗВРАТ
Чтение Im
из ADCH
Вычитание
пост. сост Im
Вычисление
мгн. мощн. Pm
Накопление
ΣPm за период
Обнуление
Um и Im
Накопление
ΣPd за 1 с
Наращивание
числа периодов
Изменение
номера канала
ввода i
Обнуление
числа периодов
Pd=0; Pds=0
Обнуление
числа отсчетов
Вычисление
Pds =ΣPd/50
Вывод
Pds на ЖКИ
Наращивание
числа отсчетов
Нет
Да
0
1
Да
Нет
Рис. 4.23. Блок-схема алгоритма п/программы обработки
прерывания АЦП при измерении мощности
93
Сначала происходит считывание входного сигнала в АЦП по каналу напряжения (ADC0), а затем по каналу тока (ADC1).
После переноса результата преобразования из ADCH в переменную Um с вычетом постоянной составляющей (2,5 В) осуществляется смена канала ввода и результат преобразования из ADCW заносится в перемен­ную Im с вычетом постоянной составляющей (2,5 В). Далее происходит перемножение содержимого обеих переменных с занесением результата в переменную Pm с последующим накоплением ее содержимого в течение периода tC = 20 мс.
По окончании периода содержимое переменной Pm переносится в пе­ременную Pd, в которой оно продолжает накапливаться в течение 50 пе­риодов, т. е. 1 с. В конце каждой секунды происходит вычисление средней арифметической мощности, конечный результат которой заносится в пе­ременную Pds и подготавливается к выводу на ЖКИ.
По таким же алгоритмам, согласно приведенным формулам (4.2), вычисляются действующие значения напряжения, тока и активной мощности.
Содержимое переменных, участвующих в процессе, в конце каждого цикла (через 1 с) должно обнуляться.
Фрагменты дополнительных кодов программы для измерения пере­менного тока представлены ниже: фрагмент с определениями глобальных и локальных переменных (листинг 4.6.1), фрагмент п/программы обработ­ки прерывания АЦП (листинг 4.6.2).
Листинг 4.6.1
static unsigned char input_index=0;
#define koef_u 139.88 // калибровочный коэффициент по
напряжению #define koef_i 25.64 // калибровочный коэффициент по току
unsigned char str1[16]; // строка для вывода результата
на ЖК-дисплей
94
signed long int Um=0,Im=0,Pm=0; // Um - мгн. знач. напряжения, Im - мгн. знач. тока , Pm, Pd - действ. знач. активной мощности float Pds=0,Pd=0; // Pds - действ. средн. знач. активной мощности
unsigned int otschet=0, // количество отсчетов АЦП за 1
период сети period=0; // количество периодов за время накопления результата (1 с) // подпрограмма вывода данных на ЖК-дисплей
void lcd_output(void) { sprintf(str1,"P:%.2f Wt", Pds); // формат 1-й строки lcd_clear(); // очистка ЖК-дисплея lcd_gotoxy(0,0); // определение позиции для вывода 1-го символа 1-й строки ЖКИ lcd_puts(str1); // вывод 1-й строки }
Листинг 4.6.2
// Read the AD conversion result
adc_data[input_index]=ADCW;
otschet++; // наращиваем счетчик количества отсчетов АЦП
за 1 период
if (input_index==0)
{Um=(adc_data[0]-512);} // результат при вводе с 0-го
канала АЦП за вычетом 512 бит, соответствующих напряжению
смещения +2.5 В
if (input_index==1)
{Im=(adc_data[1]-512); // результат при вводе с 1-го
канала АЦП за вычетом 512 бит, соответствующих напряжению
смещения +2.5 В
95
Pm+=(adc_data[0]-512)*(adc_data[1]-512); // накапливаем мгновенную мощность
Um=0; Im=0; // обнуление результатов измерений
}
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) // определение номера канала
input_index=0;
ADMUX=(FIRST_ADC_INPUT | ADC_VREF_TYPE)+input_index; //
установка адреса канала
if (otschet==80) // если количество отсчетов АЦП =
80,то
{
Pd+=Pm*25/1048576; // сохранение количества выборок за
период
otschet=0;
Pm=0; // сброс переменных
period++; // наращиваем счетчик количества периодов
}
if (period==50) // если количество периодов = 50,то
{Pds=(Pd/50)*koef_u*koef_i; // действ. средн. знач. активной мощности
Um=0; Im=0; Pm=0; Pd=0; // обнуление результатов измерений
period=0;
lcd_output(); // вывод информации на ЖК-дисплей
}
96
После успешного завершения трансляции отлаженной программы в среде CodeVisionAVR можно перейти к симуляции ее работы в про­граммной среде PROTEUS. Для этого требуется сначала подготовить файл Design-схемы для симуляции программы измерения активной мощности, скриншот которого представлен на рис. 4.24, а затем загрузить в микро­контроллер симулятора сгенерированный при компиляции файл с расши­рением .cof.
Рис. 4.24. Скриншот файла Design-схемы
для измерения мощности
При правильной настройке программы показания мощности на ЖКИ должны быть равны произведению напряжения и тока.
97
4.7. ПОДГОТОВКА ПРОГРАММЫ
Статор Ротор
1
2
3
e
ДЛЯ ИЗМЕРЕНИЯ СКОРОСТИ ВРАЩЕНИЯ
При измерении скорости вращения вала с помощью микроконтролле-
ра AVR следует сначала выбрать первичный преобразователь (датчик) ско­рости вращения ротора асинхронного двигателя, обеспечивающий выпол­нение условий, оговоренных в техническом задании. Для решения подоб­ной задачи наибольшее распространение приобрел способ измерения обо­ротов, основанный на индукционном датчике, ось которого располагается перпендикулярно оси ротора с ферромагнитным зубцом (рис. 4.25).
Рис. 4.25. Конструкция индукционного датчика:
1 – магнит; 2 – сигнальная обмотка; 3 – сердечник
В простейшем случае индукционный датчик состоит из катушки с об-
моткой, сердечника из магнитомягкой стали и постоянного магнита. Эти три компонента составляют статор датчика. С магнитным полем статора взаи­модействует ротор в виде диска с одним зубцом или зубчатого диска с коли­чеством зубцов, определяемым условиями применения датчика. При враще­нии ротора в обмотке статора возникает переменная ЭДС. Когда один из зубцов ротора приближается к обмотке, ЭДС в ней быстро возрастает и при совпадении со средней линией обмотки достигает максимума, затем при удалении зубца быстро меняет знак и увеличивается в противоположном направлении до другого максимума. На графике рис. 4.26 отчетливо видна крутизна изменения ЭДС, а момент перехода между двумя максимумами соответствует соосному состоянию зубца ротора и оси датчика.
98
Зубец ротора
Полюс статора
U
ВЫХ
α,°
0
В
3
к
1
к
1
к
+9
В
0
В
Вых
VD
VT
Рис. 4.26. График зависимости напряжения
на выводах сигнальной обмотки датчика U
от угла поворота
α
вала ротора с зубцом
ВЫХ
Промышленность выпускает целый ряд датчиков такого класса, на­пример датчик LJ12A3-4-Z/BX. Это индукционный, герметичный, пыле-
влагозащищенный, бесконтактный сенсор для определения частоты вра­щения, а также для подсчета числа оборотов на станках с ЧПУ и произ­водственных линиях промышленного оборудования.
Датчик имеет транзисторный выход NPN полярности и нормально от­крытое состояние выхода (рис. 4.27, а).
а б
Рис. 4.27. Функциональная (а) и принципиальная (б)
схемы включения индукционного датчика
99
Для осуществления цифрового ввода сигнала в микроконтроллер
t
t
5
0,1
e
B
BU
0
0
необходимо преобразовать форму сигнала в прямоугольный импульс, при этом достаточно одной полуволны. Любой повторяющийся сигнал можно преобразовать в прямоугольный, подавая его на усилитель напряжения таким образом, чтобы транзистор попеременно оказывался в состоянии отсечки или насыщения.
В течение положительного полупериода входной сигнал удерживает
транзистор в режиме насыщения, а потенциал коллектора транзистора близок к нулю; в течение отрицательного полупериода транзистор закрыт, а напряжение на коллекторе равно +9 В. Диод, включенный между базой и корпусом, ограничивает напряжение в отрицательном полупериоде и предотвращает пробой при обратном смещении перехода база-эмиттер, который может произойти при напряжении на входе ниже –6 В. Таким об­разом, выходной сигнал с делителя напряжения имеет прямоугольную форму и амплитуду около 5 В. На рис. 4.28 приведены временные диа­граммы исходного и преобразованного сигналов.
и преобразованного сигналов с индукционного датчика
Рис. 4.28. Временные диаграммы исходного
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]