Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование микропроцессорных систем управления подвижного состава железных дорог. Учебное пособие по дисциплинам «Автоматизированные и микропроц.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Рисунок 4.14 – 2-х разрядный параллельный
аналого-цифровой преобразователь
Для выполнения операции, описываемой выражением (4.4)
10
удобно использовать микросхему-шифратор
, обозначенную на схеме DD1 (рисунок 4.14). Ниже в таблице приведены значения кода на выходе линейки компараторов k, выходного кода z
ана-
к
лого-цифрового преобразователя в двоичной и десятичной систе­мах счисления в зависимости от величины входного сигнала U
.
вх
На рисунке 4.15 приведена принципиальная схема исследуе-
мого аналого-цифрового преобразователя.
10
Использован так называемый приоритетный шифратор, отображающий на своих выходах номер старшего из входных раз­рядов, содержащих уровень логической единицы.
71
Таблица 4.3 Взаимосвязь между входным и выходным
zк
2 с.с.
10 с.с.
U
вх
< Ua0
B000
B00 0 Ua0 < Uвх < Ub0
B001
B01 1 Ub0 < Uвх < Uc0
B011
B10 2 Uвх > Uc0
B111
B11
3
сигналом параллельного аналого-цифрового преобразователя.
k
U
вх
Переменный резистор R1 служит для задания величины измеряемого напряжения; светодиоды HL1 – HL3 предназначены для индикации срабатывания компараторов, светодиоды HL4, HL5 оттображают результат преобразования. Логические элементы DD2.1 и DD2.2 предназначены для инвертирования выходных сигналов шифратора DD1, так как активными уровнями микросхемы SN74HC148N являются уровни логического нуля.
Порядок выполнения работы
1. Вычислить величину шага квантования по уровню и макси-
мальной величины ошибки преобразования по уровню. Начер­тить график зависимости величины ошибки преобразования от величины входного напряжения.
2. Руководствуясь основными законами электротехники, рассчи-
тать характеристику нелинейного элемента (рисунок 4.14), приняв, что величина R1=10 кОм, а U
3. Изучить основные характеристики интегральных микросхем
LM239N, SN74HC04N и SN74HC148N.
4. Собрать схему аналого-цифрового преобразователя, исполь-
зуя принципиальную (рисунок 4.15) и монтажную (рисунок
4.16) схемы.
5. Используя мультиметр, снять статическую характеристику
элемента, формирующего характеристику квантования по уровню, и заполнить таблицу 3.4. Используя полученные дан­ные, начертить характеристику нелинейного элемента. Объ­яснить возможную разницу с результатами, полученными при выполнении п. 2.
=5 В.
оп
72
Рисунок 4.15 – Принципиальная схема аналого-цифрового
U
a0
, В
U
b0
, В
U
c0
, В
U
оп
, В
преобразователя
Таблица 4.4 Характеристика нелинейного элемента
6. Изменяя при помощи переменного резистора R1 величину
напряжения, подаваемого на вход аналого-цифрового преоб­разователя, фиксировать величину этого напряжения, при ко­торой происходит переключения на последующий уровень квантования. Заполнить таблицу 4.5, выполнив не менее трёх циклов измерения. Обработать экспериментальные данные, начертить полученную характеристику в той же самой си­стеме координат, что и график, построенный по данным таб­лицы 4.4.
7. Оформить отчёт по лабораторной работе.
73
Опыт 1
Опыт 2
Опыт 3
Среднее по трём
опытам
U
вх
↑
U
вх
↓
U
вх
↑
U
вх
↓
U
вх
↑
U
вх
↓
U
вх
↑
U
вх
↓
B00
– – – –
B01
B10
B11
– – –
–
Рисунок 4.16 – Монтажная схема аналого-цифрового
преобразователя
Содержание отчёта.
1. Результаты расчёта характеристики нелинейного элемента.
2. Принципиальная схема аналого-цифрового преобразователя.
3. Заполненные таблицы 4.4, 4.5, графики, построенные на осно-
вании данных в этих таблицах.
4. Заключение по работе. Таблица 4.5 Характеристика аналого-цифрового
преобразователя
74
Исследование генератора с
широтно-импульсной модуляцией сигнала (ШИМ-генератора)
Цель работы
Изучения назначения, устройства и принципа действия гене­ратора ШИМ. Разработка и экспериментальное исследование алго­ритмов обработки сигналов с выхода датчика угла поворота для определения направления вращения и угла поворота ротора. Краткие теоретические сведения
В общем случае ШИМ-генератор, это устройство, формирую­щее прямоугольный сигнал, с переменными периодом и коэффици­ентом заполнения импульсного цикла. Генератор ШИМ позволяет плавно изменять напряжение на нагрузке. Примерная структура генератора ШИМ микроконтроллера приведена на рисунке 4.17. Она содержит источник сигнала – генератор тактовой частоты f процессора, программируемый делитель частоты (÷x), позволяю- щий увеличить период вырабатываемого сигнала за счёт пониже­ния входной частоты, счётчик PTx, два регистра (ячейки памяти) PWx и PPx, содержащие в себе величины, определяющие значения периода и длительности вырабатываемого сигнала, логические блоки, управляющие работой генератора. На рисунке 4.18 приве­дена временная диаграмма, иллюстрирующая принцип действия ШИМ генератора.
CPU
Рисунок 4.17 – Структура генератора ШИМ
микроконтроллера
75
Частота сигнала на входе счётчика f вого генератора f
и кратностью делителя частоты x соотноше-
CPU
’
связана с частотой такто-
нием:

󰆒
=
Вырабатываемый генератором сигнал имеет максимальную частоту, если содержимое регистра PPx максимально, минималь­ную частоту — если содержимое регистра PPx максимально. Это значение, в свою очередь, не может быть больше, чем значение ём-
N
кости счётчика PTxMAX =2
-1, где N – разрядность счётчика.
Генератор ШИМ микроконтроллера ATMega328P имеет шесть независимых каналов. В среде Arduino IDE они программируются для работы с фиксированной выходной частотой f
, равной, в за-
OUT
висимости от канала, 490,2 или 980,4 Гц. Величина кратности де­лителя в первом случае при f
= 16 МГц равна
CPU
=
 


= 128,

при условии, что разрядность счётчика N = 8, так же, как и разряд­ность регистра управления шириной импульса PWx. Аналогично во втором случае x
= 64.
В среде программирования Arduino IDE для управления кана- лами задаётся параметр ширины импульса PWx. При этом
= 󰆒.

На рисунке 4.19 показана зависимость между параметром ши­рины импульса и величиной заполнения импульсного цикла. В дан­ной работе величина ширины импульса τ
должна задаваться при
out
помощи органа управления, в качестве которого предполагается использование датчика угла поворота.
Подготовка к работе
1. Изучить принцип действия генератора ШИМ.
2. Изучить устройство и принцип действия датчика угла пово-
рота.
3. На основании диаграмм работы датчика угла поворота, разра-
ботать алгоритм определения направления и величины угла
поворота ротора относительно исходного положения. Начер-
тить схему алгоритма.
76
Рисунок 4.18 – Временная диаграмма, иллюстрирующая принцип
работы генератора ШИМ.
4. Изучить программу опроса датчика угла поворота (lab_4_1)
/*
Опрос энкодера и включение индикации активных каналов
*/ #define FIRST_SEGMENT_PIN 10 #define SEGMENT_COUNT 4 byte Channel_A_pin=3; byte Channel_B_pin=2; boolean Channel_A_Signal, Channel_B_Signal, Channel_A_Signal_Last, Channel_B_Signal_Last;
void setup() { Channel_A_Signal=false; Channel_B_Signal=false; Channel_A_Signal_Last=false; Channel_B_Signal_Last=false;
77
Рисунок 4.19 – Связь величины коэффициента заполнения им-
пульсного цикла со значением параметра ширины импульса в
среде Arduino IDE.
pinMode (Channel_A_pin, INPUT); pinMode (Channel_B_pin, INPUT);
for (int i = 0; i<SEGMENT_COUNT; ++i) pinMode(i + FIRST_SEGMENT_PIN, OUTPUT); } boolean Click(int pin, boolean old_stat) { boolean stat=digitalRead(pin); if (stat!=old_stat) { delay (1); stat=digitalRead(pin); if (stat!=old_stat) {
78
return stat; } } } void loop() { Channel_A_Signal=Click(Channel_A_pin,
Channel_A_Signal_Last);
Channel_B_Signal=Click(Channel_B_pin,
Channel_B_Signal_Last); digitalWrite (10, Channel_A_Signal); digitalWrite (13, Channel_B_Signal); Channel_A_Signal_Last=Channel_A_Signal; Channel_B_Signal_Last=Channel_B_Signal; }
5. Изучить программу, реализующую управление генератором
ШИМ микроконтроллера при помощи энкодера (lab_4_2). До­полнить программу фрагментом, реализующим функцию определения направления вращения ротора.
/*
Управление генератором ШИМ при помощи энкодера, с отображением кода задания на четырёхразрядном ин­дикаторе
*/ #define FIRST_SEGMENT_PIN 10 // Установка первого вывода индикатора #define SEGMENT_COUNT 4 // Установка числа разрядов в индикаторе byte Channel_A_pin=3; byte Channel_B_pin=2; byte PWM_Out=6; boolean Channel_A_Signal, Channel_B_Signal,
Channel_A_Signal_Last, Channel_B_Signal_Last; int value; void setup() { value=0; // Установка значения по умолчанию для // индикатора Channel_A_Signal=false; Channel_B_Signal=false;
79
Channel_A_Signal_Last=false; Channel_B_Signal_Last=false; value=0; pinMode (Channel_A_pin, INPUT); pinMode (Channel_B_pin, INPUT); pinMode (6, OUTPUT); for (int i = 0; i<SEGMENT_COUNT; ++i) pinMode(i + FIRST_SEGMENT_PIN, OUTPUT); }
boolean Click(int pin, boolean old_stat) { boolean stat=digitalRead(pin); if (stat!=old_stat) { delay (1); stat=digitalRead(pin); if (stat!=old_stat) { return stat; } } } void loop() { Channel_A_Signal=Click(Channel_A_pin, Channel_A_Signal_Last); Channel_B_Signal=Click(Channel_B_pin, Channel_B_Signal_Last);
if (/*здесь условие определения вращения ротора по часовой стрелке*/) {++value;} if (/*здесь условие определения вращения ротора против часовой стрелки*/) {--value;}
if (value>15){value=15;} if (value<0){value=0;}
//-------------------------------------------- analogWrite(PWM_Out, value*15); // Вывод сигнала в канал с генератором ШИМ
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]