- •Электронное управление двс
- •1. Введение
- •1.1. Недостатки механических устройств топливоподачи
- •1.2. Недостатки механических устройств регулирования уоз
- •1.3. Недостатки механических устройств поддержания частоты вращения холостого хода
- •1.4. Структурная схема электронного управления
- •Д. Детонации – современные широкополосные датчики в состоянии слышать не только детонацию, но и оценивать наличие сгорания (по шуму выпуска) и другие шумы в дв.
- •2. Элементная база цифровой и аналоговой техники. Логические элементы, триггеры и другие устройства на их основе
- •1 Q
- •3. Основы микропроцессорных устройств: мп и его окружение, порты ввода/вывода
- •4. Цап и ацп
- •4.2.3. Анализ погрешностей определения расхода воздуха, связанных
- •5.1. Программируемый счетчик-таймер 8253/8254 (580ви53, 1810ви54, 1821ви54) (устарело)
- •5.2. Современные средства микроконтроллеров для измерения и генерации временнЫх интервалов
- •5.3. Watch-doGтаймер
- •6. Программирование и отладка м/п систем
- •7. Организация измерений и управления в м/п системах
- •8. Краткая история м/п техники и электронно-управляемых устройств
- •9. Развитие электронно-управляемых устройств
- •10. Датчики
- •11. Исполнительные устройства
- •12. Приложение
- •12.2. Маркировка узлов и блоков отечественная (отраслевая нормаль он 025 215 – 69 Автомобильный подвижный состав. Спецификация типовых деталей электрооборудования)
- •12.3. Obd-2.Pins&codes
- •13. Последовательные интерфейсы rs-232, usb, k-Line, can, lin и (j1850)
- •13.1. Подробности реализации caNсетей в автомобиле
- •14. Диагностика
- •13.1. Диагностика датчика массового расхода воздуха
- •13.2. Диагностика датчика абсолютного давления
- •13.3. Диагностика датчика положения дроссельной заслонки
- •13.4. Диагностика датчика температуры
- •13.5. Диагностика катушки зажигания
- •Литература
- •Содержание
- •Только для евротеХа
7. Организация измерений и управления в м/п системах
(Пример для практического занятия)
Если посадить программиста за компьютер, оснастить компьютер системой разработки программ (редактор текста программ, кросс-компилятор, средства отладки программ и т.д.), то первым вопросом п. будет: а как устроена аппаратная часть контроллера?
Рассмотрим конкретную задачу - спроектировать устройство умножения частоты некоторого сигнала, т.е. исходным будет сигнал произвольно меняющейся частоты, а выходной сигнал должен иметь частоту, скажем в 3 раза большую...
Для решения применим микроконтроллер фирмы ATMEL АТ90S2313.
Основные характеристики этого устройства таковы: имеет 20 выводов, 15 из которых могут быть индивидуально запрограммированы на дискретный ввод или вывод – организованы в 2 порта PB & PD, память программ 2 Кбайта (перепрогр. 1000 раз), оперативная память – 128 байтов, Flash память данных – 128 байта (перепрогр. 100 тыс. раз), 8-разрядный таймер Т0, 16-разрядный таймер Т1, аналоговый компаратор, последовательный порт, система захвата содержимого Т1 при переключении входа ICP или компаратора - (Capture T1), система цифрового сравнения содержимого Т1 и специального регистраOC.
M/к позволяет обслуживать до 10 источников прерываний (INT0, INT1, Capture T1, Compare T1, переполнение таймера T1, переполнение таймера T0, принят байт в послед. порт, регистр передатчика посл. порта пуст, передача посл. порта завершена, аналоговый компаратор сработал).
Номер контакта |
Обозначение |
Комментарий |
1 |
-RESET |
|
2 |
PD0(RxD) |
|
3 |
PD1(TxD) |
|
4 |
XTAL2 |
|
5 |
XTAL1 |
|
6 |
PD2(INT0) |
|
7 |
PD3(INT1) |
|
8, 9 |
PD4, PD5 |
|
10 |
GND |
|
11 |
PD6(ICP) |
|
12 |
PB0(AIN-) |
|
13 |
PB1(AIN+) |
|
14 |
PB2 |
|
15 |
PB3/OC1 |
|
16-19 |
PB4-PB7 |
|
20 |
VCC |
|
Нарисовать временные диаграммы - входной сигнал (PD2), выходной сигнал (PB7)...
Алгоритм. За некоторое время (70 мс) считаем число периодов входного сигнала, определяем длительность входного периода, определяем длительность половины периода выходного сигнала.
// Главная программа (вариант без прерываний)
Init (); // Инициализация – задать, что PB7 – выход (после сброса все PD,PB– входы)
REPEAT:
// анализ входного сигнала, определение частоты ...
если ( PD2 != старому )
{ если ( перепад положительный )
{ счетчик числа периодов вх.сигн. ++;
если ( кончился измерительный интервал )
{ … // расчеты длит. вх. периода,
// выходного (3 16-р. деления) tick_out
}
}
}
/* управление выходом – PB7 - меандр с длительностью полки - tick_out */
// определение счетчика c_tick_out, чтение таймера ....
if ( c_tick_out >= tick_out ) // время вышло!
{
if (PB7 == 1) PB7 = 0; // переключаем выход
elsePB7 = 1;
}
goto REPEAT;
Прохождение всего цикла вычислений и управления составляет весьма непостоянную величину (зависит от выполнения ряда условий) и отличается в 100 раз и более (блок расчетов имеет 3 16-битных деления и на время выполнения не анализируется ни вход и не управляется выход). Напрашивается вывод, что максимальная частота входного и выходного сигнала должна быть ограничена максимальным временем прохождения всей петли расчетов, т.е. мощность м/п расходуется весьма нерационально.
При передаче анализа входного сигнала и управления выходом процедурам прерываний длительные расчеты в главной программе не будут останавливать работу по обслуживанию входа/выхода.
Так вход PD2 будем использовать как INT0, т.е. при возникновении перепада (например, положительного) на нем будет возникать запрос прерывания, а программист должен написать кусочек программы, который эту ситуацию будет обрабатывать:
INT0 ( ) // Обработка входного сигнала – положительный перепад
{
счетчик вх. периодов ++
если ( превышен интервал измерения)
{ читаем таймер, устанавливаем флажок главной программе
о необходимости провести расчеты
}
}
Теперь входной сигнал будет обрабатываться независимо от выполнения главной программы.
А как управлять выходом по прерыванию? Какой из запросов или к какому из запросов прерываний прицепиться?
Принципиальное отличие от первого варианта построения системы: следует загружать в таймер такое число, чтобы длительность впадины и вершины равнялась бы времени счета до переполнения (прерывания). (В первом варианте таймер мог непрерывно считать без перезагрузки от 0 до 255).
Таким образом, при обработке прерывания по переполнению таймера нужно: 1. перезагрузить таймер некоторым числом и 2. переключить выходной порт PB7 из 0 в 1 или наоборот.
В главной программе останутся длительные расчеты с делением, умножением..., разрешенные по флажку. Внутри этого блока вычислений флажок нужно сбросить, чтобы он не повторялся.