Вы находитесь на странице: 1из 66

Министерство образования и науки РФ

ФГБОУ ВО «Сибирская государственная автомобильно-дорожная


академия (СибАДИ)»

Кафедра «Тепловые двигатели и автотракторное электрооборудование»

РАЗРАБОТКА АВТОМОБИЛЬНЫХ
ЭЛЕКТРОННЫХ СИСТЕМ НА БАЗЕ ARDUINO:
УПРАВЛЕНИЕ РАБОТОЙ ДВИГАТЕЛЯ
ВНУТРЕННЕГО СГОРАНИЯ

И
Методические указания
АД
Составитель А.А. Зубарев
иб
С

Омск • 2016
Согласно 436-ФЗ от 29.12.2010 «О защите детей от информации,
причиняющей вред их здоровью и развитию» данная продукция
УДК 621.43: 681.31 (075.8) маркировке не подлежит.
ББК 39.33 (32.97)

Рецензенты:
канд. техн. наук, доц. Ю.П. Макушев (СибАДИ);
канд. техн. наук, доц. И.В. Никонов (ОмГТУ)

Работа утверждена редакционно-издательским советом СибАДИ в качестве


методических указаний.

Разработка автомобильных электронных систем на базе ARDUINO : управление


работой двигателя внутреннего сгорания [Электронный ресурс] : методические
указания / сост. А.А. Зубарев. – Электрон. дан. − Омск : СибАДИ, 2016. –

В простой и доступной форме знакомят читателей с платами Arduino, языком


программирования Processing, средой разработки программ Atmel Studio v.7 и Arduino
Software (IDE) версии 1.6.11. Описанные устройства и программы для плат Arduino

И
используются в лекционных демонстрациях и при проведении лабораторных работ.
Имеют интерактивное оглавление в виде закладок.
Предназначены для обучающихся всех форм обучения по направлениям и
АД
специальностям, изучающим электронные системы управления автомобилей и
тракторов, в частности «Системы электроники и автоматики автомобилей и тракторов»,
«Микропроцессорные системы автомобилей и тракторов», «Проектирование
микропроцессорных систем автомобилей и тракторов», «Датчики в системах
управления автомобилей и тракторов» и т.п.
Могут быть использованы в курсовом и дипломном проектировании
иб

автоматических измерительных и управляющих систем различных агрегатов не только


автомобильного назначения.
С

Редактор И.Г. Кузнецова


Техническая подготовка − Т.И. Кукина
Издание первое. Дата подписания к использованию 21.10.2016

Издательско-полиграфический центр СибАДИ. 644080, г. Омск, пр. Мира, 5


РИО ИПЦ СибАДИ. 644080, г. Омск, ул. 2-я Поселковая, 1

© ФГБОУ ВО «СибАДИ», 2016

2
ВВЕДЕНИЕ

Постоянно растущее число автомобилей в нашей стране считается


одной из основных причин загрязнения окружающей среды в крупных
городах и ухудшения экологии в целом. К тому же законодатели нашей
страны не торопятся с принятием законов, ограничивающих эксплуатацию
старых автомобилей, не удовлетворяющих экологическим нормам, – даже
Евро-3. Хотя планируется повысить налоги для водителей,
эксплуатирующих такие автомобили, эти меры не идут ни в какое
сравнение с требованиями законодательства европейских стран,
запрещающих эксплуатацию автомобилей, удовлетворяющих эколо-
гическим требованиям Евро-4, особенно в крупных городах, где требуется
соответствие Евро-5.
Тем не менее тенденция к запрету эксплуатации автомобилей, не
удовлетворяющих экологическим требованиям, имеет место, и она
порождает спрос у автолюбителей и профессионалов на модернизацию

И
системы питания топливом своего автомобиля, для того чтобы она
удовлетворяла экологическим требованиям путем замены старых агрегатов
на новые. Но замена узлов и агрегатов двигателя влечет за собой
АД
необходимость замены электронного блока управления (ЭБУ) двигателем
или хотя бы обновления программного обеспечения ЭБУ.
Необходимость замены ЭБУ возникает и у относительно новых
автомобилей при их поломке. Однако нередко возникают проблемы
нахождения блока нужной марки, его дороговизны, снятия с производства
иб

и отсутствия на рынке и др. Это вызывает необходимость подбора


подходящего блока и модификации его к нужному двигателю, т. е.
требуются изменение программного обеспечения ЭБУ, замена и установка
новых датчиков и других деталей.
С

Постоянно растущий спрос на услуги по ремонту и модернизации


систем электроники вызывает спрос на специалистов в этой области,
имеющих соответствующие теоретические знания и практические навыки.
Для приобретения практических навыков необходимы
соответствующие учебные стенды, на которых можно отрабатывать
различные алгоритмы управления двигателем внутреннего сгорания
(ДВС), предварительно реализовав их программно на компьютере и
записав в память ЭБУ.
На заводах, выпускающих автомобили, и в соответствующих НИИ
для этих целей есть испытательные стенды с реальными ДВС и
специальным оборудованием. Стоимость таких стендов − десятки
миллионов рублей.
Для учебного заведения можно проводить обучение на моделях,
позволяющих реализовать те же функции с использованием аналогичной

3
элементной базы – микроконтроллеров и миниатюрных моделей,
позволяющих исследовать работу блоков управления, разрабатывать и
проверять на них алгоритмы и отлаживать программы для управления
основными процессами, происходящими в работающем ДВС.
В методических указаниях рассматриваются натурные модели, на
которых можно проверить работоспособность электронного блока на базе
программируемых микроконтроллеров и отработать алгоритмы
управления ДВС. Предложены макеты электронных блоков управления
основными процессами, происходящими в работающем ДВС, которые
можно использовать для лекционных демонстраций и лабораторных работ
в любой учебной аудитории без дополнительного оборудования, не
создавая шума и загрязнения воздуха. Они позволяют наглядно изучить и
исследовать процесс дозирования топлива до момента воспламенения его
в цилиндре (доза впрыскиваемого топлива вычисляется по количеству
засасываемого воздуха).
На всех этапах этого процесса нужно обеспечить просмотр сигналов с

И
датчиков и сигналов на схемах формирования импульсов, поступающих на
микроконтроллер, управляющий процессом. Все этапы процесса
сопровождаются программным кодом, написанным в среде разработки
АД
Arduino (или Ардуино).
иб
С

4
1. КРАТКИЕ СВЕДЕНИЯ ОБ АРДУИНО

1.1. Платы Ардуино

Для ускорения разработки устройств на микроконтроллерах


выпускают платы с распаянными на них микросхемами
микроконтроллеров и других вспомогательных компонентов,
обеспечивающих подключение платы к компьютеру, получение нужных
напряжений питания и других. На плате имеются разъемы (линии
штырьков или гнёзд), с помощью которых можно подсоединить датчики,
индикаторы и исполнительные устройства к выводам микроконтроллера. В
настоящее время наиболее популярны платы Ардуино. Схема простейшего
из них Arduino Uno показана на рис. 1. На ней распаяны микроконтроллер
ATMega328, разработанный фирмой Atmel (или в ранних версиях
ATMega8, ATMega16), микросхема преобразователя интерфейса USAT в
USB (FT232R или CH340G), кварцевый резонатор на 16 МГц и другие

И
электронные компоненты. В настоящее время выпускаются десятки видов
плат Ардуино с различными микроконтроллерами и плат с датчиками и
другими устройствами, которые можно присоединить к плате Ардуино, –
АД
шилдов (shield – щит), собрав устройство в виде этажерки.
иб
С

Рис. 1. Принципиальная электрическая схема Arduino Uno

Более подробная информация имеется в Интернете на сайтах и в


книгах [1, 2, 3, 4].

5
1.2. Общие сведения о средах разработки
Для создания программ, которые носят название скетчи, и
программирования плат Ардуино используется среда разработки и отладки
программ (IDE – integrated development environment), которую можно
бесплатно скопировать с сайта сообщества разработчиков www.arduino.cc
(рис. 2).

И
АД
Рис. 2. Стартовое окно программы для разработки программ для Ардуино
иб

Скетч пишется в текстовом редакторе. На рис. 3 на светлом фоне


выведена заготовка для написания программы. Здесь используется язык
Processing, близкий по синтаксису к
языку С. Окно вывода сообщений
С

расположено ниже. Здесь на темном


фоне печатаются сообщения о
результатах компиляции программы,
включающие полные отчеты об
ошибках и другую информацию.

Рис. 3. Окно текстового редактора


для разработки программ для Ардуино

6
Кнопки панели инструментов позволяют проверить и записать
программу, создать, открыть и сохранить скетч, открыть мониторинг
последовательной шины. Дополнительная функциональность может быть
добавлена с помощью библиотек. Существует множество специализи-
рованных библиотек, их можно скачать с сайтов разработчиков.
Обычно библиотеки пишутся так, чтобы упростить решение той или
иной задачи и скрыть от разработчика детали программно-аппаратной
реализации. Программы библиотек пишутся на языке С++.
Среда Arduino IDE поставляется с набором стандартных библиотек:
Serial, EEPROM, SPI, Wire и др.
Atmel Studio 7 – бесплатная интегрированная среда разработки
приложений на микроконтроллерах семейств Atmel SMART и AVR и
Веб-платформы, которую можно скачать с сайта фирмы. Atmel START –
мощный инструмент для создания и настройки встроенных приложений,

И
драйверов и типовых проектов, позволяет разработчикам создавать
собственные программные платформы. Atmel Studio 7 позволяет
АД
использовать скетчи, созданные в Arduino IDE, и конвертировать их в С++
проекты. Также эта среда позволяет разрабатывать и отлаживать
программы на языке Ассемблер для микроконтроллеров AVR [5]
(рис. 4, 5).
иб
С

Рис. 4. Стартовое окно программы Atmel Studio 7

7
И
Рис. 5. Окно Atmel Studio 7, в котором выбирается среда
для разработки программ для Ардуино
АД
иб
С

Рис. 6. Окно программы UnoArduSim

8
Написать программу для Arduino Uno и отладить её в режиме
реального времени может помочь бесплатный симулятор (программа для
моделирования) UnoArduSim [6], который позволяет испытать
разрабатываемое устройство без наличия каких-либо фактических
аппаратных средств. Устройство собирается из виртуальных деталей:
платы Arduino Uno, серводвигателей, цифровых и аналоговых генераторов
формы сигнала, пьезоэлементов, светодиодов, кнопок, резисторов
подтягивания, переменных потенциометров, устройств ввода/вывода с
возможностью подключения устройств с использованием
последовательных интерфейсов (UART, I2C и SPI) с выбираемой
скоростью передачи данных. Поддерживаемые библиотеки: Servo.h,
SoftwareSerial.h, Wire.h, SPI.h и eeprom.h.
Таким образом, имея в наличии только компьютер, можно выполнить
разработку устройства управления на базе Ардуино и проверить его
работу.

И
1.3. Примеры проектов

В IDE – среде разработки программ Ардуино − есть примеры


АД
(образцы). Один из них обычно предлагается начинающим. Этот пример,
который находится в Файл → Образцы → 01.Basics → Blink,
демонстрирует управление светодиодом LED, находящимся на плате и
подключенным к цифровому выводу 13. Новая плата Ардуино
(приобретенная в магазине) запрограммирована этим примером для демонст-
иб

рации её исправности. Итак, пример Blink позволяет мигать светодиодом,


между включением и выключением которого секундная задержка.
Для выдержки паузы между вкл/выкл LED в 1 с использована
функция delay(). В это время контроллер не может выполнять другие
С

команды в функции loop().


Возьмем для примера плату Ардуино «Жук» («Beetle») (рис. 7) и
попробуем перепрограммировать её флеш-память программ.

Светодиод
синего
цвета

Рис. 7. Плата Адруино «Жук»

9
Плату необходимо подключить к компьютеру с помощью кабеля USB,
имеющего один из разъемов микроUSB.
Код исходной программы:
/* Мигание LED
* ------------
* Включает и выключает светодиод (LED), подсоединенный
* к выходу 13, с интервалом в 2 секунды
*/
int ledPin = 13; // LED подсоединен к выводу 13
void setup()
{
pinMode(ledPin, OUTPUT); // устанавливаем вывод 13 как выход
}
void loop()
{
digitalWrite(ledPin, HIGH); // включаем LED

И
delay(1000); // пауза 1 секунда
digitalWrite(ledPin, LOW); // выключаем LED
delay(1000); // пауза 1 секунда
АД
}
Внесем изменение в программу, не изменяя её функциональность:
вместо установки на выводе 13 состояния HIGH, а затем обратно LOW
будем инвертировать текущее значение ledPin. Т.е. если оно было HIGH,
то станет LOW, и наоборот.
иб

Код, реализующий те же функции:


void loop()
{ digitalWrite(ledPin, !digitalRead(ledPin)); // включаем/выключаем LED
delay(1000); // задержка 1 сек.
С

}
Теперь взамен delay() используем функцию millis(). Данная функция
возвращает количество миллисекунд, прошедшее с момента запуска или
сброса (нажатием на кнопку Reset) текущей программы. Функция
переполнится (вернется в нуль) приблизительно через 50 суток работы
программы.
Альтернативной функцией является micros(), которая возвращает
количество микросекунд, прошедшее с момента запуска текущей
программы. Функция переполнится (вернется в нуль) приблизительно
через 70 мин работы программы.
Код:
/* Мигание LED Версия 2
* Включает и выключает светодиод (LED), подсоединенный
* к выходу 13, с интервалом в 2 секунды, используя функцию millis().

10
*/
int ledPin = 13; // LED подсоединен к выводу 13
unsigned long currentTime;
unsigned long loopTime;
void setup()
{
pinMode(ledPin, OUTPUT); // устанавливаем вывод 13 как выход
currentTime = millis(); // считываем время, прошедшее с момента
запуска программы
loopTime = currentTime;
}
void loop()
{
currentTime = millis(); // считываем время, прошедшее с момента запуска
программ
if(currentTime >= (loopTime + 1000)){ // сравниваем текущий таймер с

И
переменной loopTime + 1 секунда
digitalWrite(ledPin, !digitalRead(ledPin)); //включаем/выключаем LED
loopTime = currentTime; // в loopTime записываем новое значение.
АД
}
}

В данном примере мы ввели две дополнительные переменные


currentTime и loopTime. В функции setup() обе переменные имеют одно и
иб

то же значение. В функции loop() переменная currentTime каждый раз


обновляется в цикле. Когда currentTime больше, чем loopTime на
1 с (loopTime + 1000), LED меняет свое состояние, а переменной loopTime
присваивается текущее значение currentTime. Обратите внимание, что при
С

использовании функции millis() и процессор может выполнять другие


операции.

Контрольные вопросы

1. На базе каких микроконтроллеров выпускаются платы Ардуино?


2. Что такое среда разработки? Какие IDE используются для разработки
проектов на базе Ардуино?
3. Какова структура программы (скетча)?
4. Какая команда используется для задания режима работы выводов платы
Ардуино?
5. Какие вы знаете назначения выводов платы Ардуино?
6. В чем преимущество функции millis() перед delay()?

11
2. РЕГИСТРАЦИЯ СИГНАЛОВ С ДАТЧИКОВ,
УПРАВЛЕНИЕ ИНДИКАТОРАМИ

2.1. Управление светофором

Для управления светодиодами светофора (красным, желтым и


зеленым) воспользуемся выводами портов микроконтроллера,
установленного на плате Arduino. Возьмем плату Ардуино-Нано (рис. 8).

И
АД
Рис. 8. Плата Ардуино-Нано
иб

Напишем код, работающий аналогично примеру Blink.


// Глобальные переменные:
int greenLED = 3;
int yellowLED = 5;
С

int redLED = 7;
void setup() {
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
}
void loop() {
digitalWrite(redLED, HIGH); // Включение красного светодиода,
delay(500); // задержка.
digitalWrite(redLED, LOW); // Включение красного светодиода
delay(100);
digitalWrite(yellowLED, HIGH);
delay(500);
digitalWrite(yellowLED, LOW);

12
delay(100);
digitalWrite(greenLED, HIGH);
delay(500);
digitalWrite(greenLED, LOW);
delay(100);
} // Переход в начало функции loop для повторения.

Теперь продемонстрируем применение команд языка С и запись


данных напрямую в порты микроконтроллера, установленного на плате
Arduino. Это быстрее, чем работать с конкретными входами/выходами
платы, так как позволит переключать светодиоды при помощи одной лишь
операции.
У микроконтроллера ATMega328P, установленного на плату Arduino
Nano, имеются 3 порта:
• B (цифровые входы/выходы с 8 по 13);
• C (аналоговые входы А0 –А7);

И
• D (цифровые входы/выходы с 0 по 7).
Каждый порт управляется 3 регистрами. Регистр DDR определяет
направление передачи сигнала: на вывод или ввод. При помощи регистра
АД
PORT можно установить вывод в состояние HIGH или LOW. Регистр PIN
служит для ввода данных, с его помощью можно считать состояние ножек
Arduino, когда они работают на вход.
Для примера будем использовать порт D. Сначала мы должны
установить нужные выводы порта D как цифровые выходы. Биты 3, 5 и 7
иб

регистра DDRB должны быть установлены в 1 для использования их как


выходы (OUTPUT). Биты портов нумеруют с 0 по 7, но не всегда содержат
все 8 выводов.
Пример:
С

DDRD = b10101000; // установить ножки порта D 3, 5 и 7 как выходы,


а остальные – как входы.
Для записи значений в порт D необходимо использовать регистр
PORTD. Зажечь светодиоды можно командой:
PORTD = B10101000;
Теперь рассмотрим операторы сдвига:
Оператор сдвига влево << заставляет все биты сдвигаться влево,
соответственно оператор сдвига вправо >> сдвигает биты вправо.
Пример:
varA = 1; // 00000001
varA = 1 << 0; // 00000001
varA = 1 << 1; // 00000010
varA = 1 << 2; // 00000100

13
В программе нам нужно ввести 2 переменные: первая upDown будет
содержать значение куда двигаться – вверх или вниз, а вторая step − шаг
сдвига.
В функции setup() мы определяем, какие ножки должны работать как
выходы.
В главном цикле программы loop() светодиоды по очереди загораются
вверх путем увеличения переменной step, а когда доходит до самого
верхнего, то переменной upDown присваивается 0 и светодиоды
загораются вниз по очереди.
Код:
/* Светофор из 3 светодиодов */
unsigned char upDown=1; // начинаем с движения вверх
unsigned char step=0; // зажигает светодиоды по очереди
void setup() {
DDRD = B10010100; // устанавливаем биты порта D 3, 5 и 7 как выходы
}

И
void loop() {
if(upDown==1){ // если идем вверх, то
step++;
if(step>=7) upDown=0; // когда достигнут наибольший номер LED, то в след.
АД
цикле идем вниз
}
else {
step--;
if(step==0) upDown=1; // когда достигнут наименьший номер LED, то в след.
иб

цикле идем вверх


}
PORTD = 1 << step; //сдвиг
delay(200); // пауза 0,2 с
С

2.2. Плавное управление яркостью светодиода программно


и с помощью фоторезистора

Рассмотрим пример реализации плавного изменения яркости, в


котором используется плата Arduino Uno (рис. 9). Вместо функции delay()
будем использовать функции таймера millis().
К ножке 9 Arduino Uno подсоединен светодиод через резистор 220 Ом.
Для плавного управления яркостью светодиода мы будем
использовать функцию analogWrite().
Данная функция обеспечивает вывод ШИМ-сигнала на ножку
контроллера. Причем функцию pinMode() предварительно вызывать не
надо. Функция analogWrite(pin,value) содержит 2 параметра: pin – номер
ножки для вывода, value – значение от 0 (выкл.) до 255(вкл.).

14
Код:
/* Пример, показывающий возможности
функции analogWrite() для изменения
яркости свечения светодиода, который
подключен к ножке D9 Arduino Uno:
*/
int brightness = 0; // яркость светодиода
int fadeAmount = 5; // шаг изменения яркости
unsigned long currentTime
unsigned long loopTime
void setup() { Рис. 9. Подключение
pinMode(9, OUTPUT);// устанавливаем 9 светодиода
ногу как выход
currentTime = millis(); loopTime = currentTime;
}
void loop() {

И
currentTime = millis();
if(currentTime >= (loopTime + 20)){
analogWrite(9, brightness); // устанавливаем значение на 9 ножке
АД
brightness = brightness + fadeAmount;// прибавляем шаг изменения
яркости, которая установится в следующем цикле
// если достигли мин. или макс. значения, то идем в обратную сторону:
if (brightness == 0 || brightness == 255) fadeAmount = -fadeAmount ;
loopTime = currentTime;
иб

}
}
Для управления светодиодом будем
использовать фоторезистор (рис. 10). Эту
С

схему можно использовать для управления


источником освещения, который будет
автоматически включаться, когда темно, и
выключаться, когда становится светло.
Сопротивление фоторезистора зависит от
его освещенности. Используя фоторезистор в
связке с обычным резистором 4,7 кОм, мы
получаем делитель напряжения, в котором Рис. 10. Фоторезистор и его
напряжение на фоторезисторе изменяется в подключение
зависимости от уровня освещенности.
Напряжение с делителя подаем на вход АЦП Arduino (аналоговый
вход). Там мы сравниваем полученное значение с заданным нами порогом
и включаем или выключаем светодиод. Когда освещенность
увеличивается, сопротивление фоторезистора падает и соответственно на

15
выходе делителя (и входе АЦП микроконтроллера) напряжение
увеличивается, когда освещенность падает, − все наоборот.
Напряжения 0В и 5В берутся с Arduino. Ножка А0 используется как
вход АЦП.
Если нужно подключать более мощную нагрузку, такую как лампа
накаливания, то ее следует подключать через реле или тиристор.
В коде программы есть закомментированные участки, они служат для
отладки. Можно будет контролировать значение АЦП (от 0 до 1024).
Также можно в коде изменить значение 500 (порог включения и
выключения) на то, которое вы подберете опытным путем, изменяя
освещенность.
Код:
/* фоторезистор*/
int sensorPin = A0; // устанавливаем входной вывод для АЦП
unsigned int sensorValue = 0; // напряжение с фоторезистора
void setup() {

И
pinMode(13, OUTPUT);
Serial.begin(9600); // старт монитора данных (для контроля)
}
АД
void loop() {
sensorValue = analogRead(sensorPin); // считываем напряжение с фоторезистора
if(sensorValue<500) digitalWrite(13, HIGH); // включаем
else digitalWrite(13, LOW); // выключаем
Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024)
Serial.println(""); // перевод строки
иб

delay(500); }

2.3. Блок управления электродвигателем


С

Электродвигатель постоянного тока с независимым возбуждением


(возбуждением от постоянного магнита, расположенного в статоре)
приводит в движение поршень цилиндра макета ДВС, описанного ниже.
Для управления скоростью вращения якоря электродвигателя необходимо
изменять ток через обмотку якоря. Один из способов изменения тока – это
его широтно-импульсная модуляция (ШИМ). Управляющий сигнал с
ШИМ формируется микроконтроллером, находящимся на плате Ардуино.
Выходы контроллера Arduino не могут обеспечить напряжения и токи,
требуемые для управления мощными нагрузками, такими как
электродвигатель. К примеру, в автомобильной технике часто
используются двигатели на 12, 24, 48 В и т.п. А токи, потребляемые,
например, электродвигателями стеклоочистителя, стеклоподъемника и т.п.,
составляют 5 – 10 А.

16
Максимальный ток, который может отдать в нагрузку
микроконтроллер с одного вывода, составляет 40 мА. Поэтому между
микроконтроллером и мощной нагрузкой ставят усилитель мощности на
биполярном или полевом транзисторе, работающем в ключевом режиме.
Широтно-импульсная модуляция позволяет плавно управлять
скоростью вращения. Сигнал ШИМ, вырабатываемый контроллером,
поступает на ключевую схему, собранную на транзисторе, к которой
подключена мощная нагрузка. В нашем случае это электродвигатель.
Пример такой схемы на биполярном транзисторе показан на рис. 11.

И
АД
Рис. 11. Ключевая схема на биполярном транзисторе
иб

Здесь используется мощный ключевой биполярный транзистор,


например КТ630, КТ829 и др., в ключевом режиме. Резистор R1 подбирают
так, чтобы транзистор VT полностью открывался (входил в режим
насыщения), а R2 – чтобы он быстро закрывался. VD – защитный диод, он
С

защищает транзистор от перенапряжения в момент выключения тока через


индуктивную нагрузку (обмотку ротора электродвигателя).
Второй вариант усиления выходного тока и напряжения с выхода
микроконтроллера для управления мощной нагрузкой – использование
MOSFET-транзисторов. Транзистор IRF244 (с изолированным затвором и
индуцированным каналом) N-Channel Power MOSFET фирмы Hyrris
Semiconductor имеет следующие электрические параметры: ток стока
ID = 14 A, напряжение сток-исток VDS = 250 В, сопротивление открытого
канала rDS = 0,34 Ом, пороговое напряжение VGS = 2 – 4 В. Так как
сопротивление цепи затвора велико, мы можем напрямую подсоединить
данный транзистор к выводам Arduino.

17
Рис. 12. Схема регулятора на полевом транзисторе

На схеме (рис. 12) показано подключение электрического двигателя к


MOSFET-транзистору через сглаживающий LC-фильтр нижних частот.

И
Назначение L и C1 – элементы фильтра нижних частот для сглаживания
импульсов напряжения при регулировании, С2 – фильтрация помех
АД
напряжения питания.
иб
С

Рис. 13. Фотография платы с усилителями мощности


и переменными резисторами нагрузки

На рис. 13 приведено фото платы управления электродвигателем с


двумя вариантами электрических схем. Также на ней видны два
проволочных переменных резистора для подключения в цепь якоря
второго электродвигателя, выполняющего роль механической нагрузки.

18
На рис. 14 показаны временные диаграммы напряжений на
электродвигателях при ШИМ.


U1

U2

0 T 2T 3T 4T t
Uвх


τ

0 T 2T

И 3T 4T t
АД
Рис. 14. Временная диаграмма ШИМ

Напряжение U1 (для схемы на рис. 14) – это импульсы длительностью


τ и периодом следования Т. При регулировании изменяется длительность
(ширина) импульсов от нуля до Т. Параметром ШИМ является
иб

коэффициент заполнения импульсов


Кз = τ /Т (1)
или скважность импульсов С = Т /τ .
С

Напряжение U2 на конденсаторе С1 фильтра нижних частот –


волнистая кривая. Величина её пульсаций уменьшается при увеличении
емкости и индуктивности фильтра. Уменьшение пульсаций снижает
потери на вихревые токи и перемагничивание в электродвигателе. Однако
увеличение индуктивности связано с увеличением числа витков, а это
приводит к увеличению их сопротивления и потерям мощности на нем.
Здесь нужен разумный компромисс.
На рис. 15 для этих двух случаев представлены регулировочные
характеристики электродвигателей. Это зависимости числа оборотов n от
момента нагрузки М. Пунктиром обозначена величина момента трения в
подшипниках и щетках электродвигателя МТР.

19
n n
n0 n0

0 МТР
тр М 0 МТР
тр М
а б
Рис. 15. Механические регулировочные характеристики электродвигателей:
а − при использовании схемы на рис.11; б − при использовании схемы на рис. 12

Как известно из курса электропривода, регулировочные


характеристики при импульсном управлении идут из одной точки
(см. рис. 15, а), а при регулировании изменением постоянного напряжения

И
параллельны друг другу. Это обеспечивает большую «жесткость»
характеристик или меньшую зависимость числа оборотов от нагрузки при
малых моментах нагрузки на вал электродвигателя.
АД
Для управления мощностью (и скоростью вращения) электромотора
мы используем ШИМ-выход контроллера (вывод 9). Кроме него для ШИМ
можно также использовать следующие выводы платы Ардуино: D3, D5,
D6, D9, D10, D11.
Для управления шириной импульсов используем переменный
иб

резистор, подключенный крайними выводами к напряжению питания и


«земле», а средним – к А0. При этом переменное напряжение от 0 до 5 В с
этого резистора будет поступать на аналогово-цифровой преобразователь,
который будет превращать его в число в диапазоне от 0 до 1023, а оно
С

будет задавать длительность импульса.


Схема подключения к плате Ардуино показана на рис. 16.

Рис. 16. Схема подключения к Ардуино

20
Резистором R1 (см. рис. 16) изменяется ширина импульсов при
помощи подачи изменяющегося напряжения на аналоговый вход А0 платы
Ардуино. Сигнал ШИМ снимается с цифрового выхода платы D9 и
подается на ключевой полевой транзистор.
Код программы:
// Управление электродвигателем
int rPin = A0; // устанавливаем входную ножку для АЦП
unsigned int rValue = 0; // напряжение с переменного резистора
unsigned int pwmValue = 0;
void setup(){
Serial.begin(9600); // запуск монитора данных (для тестирования)
}
void loop(){
rValue = analogRead(rPin); // считываем значение с переменного
резистора
pwmValue = rValue/4; // делим это значение/4, получаем параметр

И
ШИМ
// или rValue = map(rValue, 0, 1023, 0, 255);
analogWrite(9, pwmValue); // Pin9 – выход ШИМ
АД
//Для вывода на дисплей (монитор) нижеследующие строки:
Serial.print(rValue, DEC); // вывод данных с резистора (0-1024)
Serial.print(" ");
Serial.print(pwmValue, DEC);
Serial.println(""); // перевод строки
иб

delay(200);
}

2.4. Датчики для измерения скорости вращения вала


С

В автомобилях для измерения скорости вращения коленчатого вала


ДВС, валов коробки передач, колес и т.п. используются датчики,
чувствительные к изменению магнитного поля.
По сравнению с оптронами (фотоэлектрическими датчиками),
реагирующими на изменение условий прохождения света между
светодиодом и фотодиодом (фототранзистором), магнитные датчики
имеют преимущество – они не чувствительны к пыли и другим
загрязнениям (грязь, масло и т.п.), неизбежным при эксплуатации
автомобиля.
Принцип измерения состоит в том, что при вращении детали из
ферримагнитного материала (железо, никель, кобальт и их сплавы)
изменяются условия для распространения магнитного поля, создаваемого

21
постоянным магнитом или электромагнитом. Чаще всего используется
изменение величины немагнитного зазора (рис. 17, а, поз.7).
Взаиморасположение элементов магнитной цепи датчика может быть
любым, лишь бы через них проходили силовые линии. В простейшем
случае датчик может регистрировать изменение магнитного поля при
движении магнита мимо него (рис. 17, б).
Эти изменения преобразуются датчиком в электрические импульсы, а
затем электронная схема устройства подсчитывает частоту или период
импульсов и отображает скорость вращения в числовой или другой форме.
Рассмотрим три вида датчиков:
1. Индукционный (см. рис. 17, а).
2. Датчик Холла (см. рис. 17, б).
3. Магниторезистивный.
На рис. 17, а показан индукционный датчик положения коленчатого
вала, расположенный вблизи зубчатого колеса 8, находящегося на
коленчатом валу; при вращении этого колеса его зубья проходят мимо

И
датчика и изменяют магнитное поле, создаваемое магнитом 2 с сердечником 5,
при этом в катушке 6 наводится переменное напряжение, являющееся
сигналом с датчика. Оно поступает в блок регистрации по кабелю 1.
АД
На рис. 17, б показан датчик Холла 1, который реагирует на
изменение магнитного поля при прохождении мимо него магнитных меток
на вращающемся диске. Такой датчик обычно используется для
определения скорости вращения колеса.
иб
С

а б
Рис. 17. Взаиморасположение магнитных датчиков и движущихся элементов
их магнитной цепи в автомобиле

22
Для согласования датчиков с микроконтроллером по амплитуде напря-
жения и выходному сопротивлению между ними устанавливают буферный
каскад усиления. Схемы включения датчиков представлены на рис. 18.

а б в
Рис. 18. Схемы включения датчиков:
а – индукционного; б – датчика Холла; в − магниторезистивного

В качестве усилителей сигналов выбраны операционные усилители

И
общего применение LM358. Эти усилители работают при напряжении
питания от 3 до 30 В, широко используются в цифровой аппаратуре и
имеют низкую цену.
АД
Сигналы с датчиков и на выходах схем усилителей не являются
прямоугольными. Подача их на входы цифровых схем (счетчиков,
таймеров и т.п.) может привести к некорректной их работе. Для получения
прямоугольных импульсов из аналогового выходного сигнала его
необходимо подать на компаратор, имеющий гистерезис, например, на
иб

микросхеме LM393. Эта микросхема используется так же широко, как


LM358. При превышении входного напряжения выше порогового схема
переключается в «1», то есть на её выходе установится напряжение,
близкое к напряжению питания. Если входное напряжение ниже
С

порогового, то на выходе будет напряжение, близкое к нулю.


Схема формирователей импульсов представлена на рис. 19.

Рис. 19. Схема формирователя импульса

23
Сигнал поступает на вход «1» компаратора, сравнивается с
напряжением на движке переменного сопротивления R2, которое называют
пороговым. Если входное напряжение больше порогового, то на выходе
компаратора высокий потенциал «1», если меньше, то низкий «0». С
выхода «1» компаратора импульсы напряжения поступают на вход D-триггера
(микросхема 176ТМ2), собранного по схеме делителя частоты на 2.
Датчики для проведения экспериментов взяты из вентильных
(бесколлекторных двигателей постоянного тока) (рис. 20). Они по габари-
там в десять раз меньше автомобильных, но выдают примерно те же
сигналы.

И
а б в

Рис. 20. Датчики, чувствительные к изменению магнитного поля:


АД
а − индукционный; б − магниторезистивный; в − датчик Холла

Датчики располагаются по периметру махового колеса и при


прохождении мимо них магнитов, встроенных в обод колеса (рис. 21), на
их выходе появляется сигнал.
иб
С

Рис. 21. Размещение датчиков, чувствительных к магнитному полю

24
Контрольные вопросы

1. Как определяется функция в языке программирования (синтаксис)?


2. Как вызывается функция в программе?
3. Какие типы переменных используются в языке программирования?
4. Какова разрядность аналогово-цифрового преобразователя (АЦП) в
микроконтроллерах ATMega?
5. Как работает компаратор напряжения?
6. Каков принцип действия индукционного датчика?
7. Каков принцип действия фоторезистора в схеме делителя напряжения?
8. Каков принцип работы электрической схемы с датчиком Холла (см. рис. 17)?

3. ОПРЕДЕЛЕНИЕ ДОЗЫ ТОПЛИВА

3.1. Кинематическая схема стенда

И
Кинематическая схема стенда представлена на рис. 22. Она состоит из
цилиндра, в котором движется поршень. Он приводится в движение шатуном,
АД
шарнирно соединенным с маховым колесом. Колесо заставляет вращаться
ремень, натянутый на него, и шкивы на осях двух электродвигателей. Один из
электродвигателей является тяговым и заставляет двигаться ремень,
соединенные с ним колесо и вал второго электродвигателя. Этот электро-
двигатель приводит в движение поршень цилиндра и может моделировать
иб

работу сгоревшей в цилиндре топливной смеси, количество которой считается


пропорциональной току через обмотку якоря. Он моделирует сгоревшую в
цилиндре топливную смесь, которая в реальном двигателе подается через
форсунку и дозируется временем её открытого состояния. Аналогично
С

мощность электродвигателя регулируется длительностью импульсов напряже-


ния, подаваемых на обмотку якоря при использовании широтно-импульсной
модуляции (ШИМ).

Рис. 22. Кинематическая схема стенда

25
Второй электродвигатель играет роль механической нагрузки,
возникающей в результате его электродинамического торможения. Эта
нагрузка будет регулироваться изменением омического сопротивления в
цепи его якоря.
К цилиндру прикручены два патрубка с впускным и выпускным
клапанами. Они открываются (пропускают воздух) при наличии разницы
давлений внутри цилиндра и снаружи его.
Фотографии стенда (модели ДВС) показаны на рис. 23.
Все устройства смонтированы на общее металлическое основание
(подставку). Кроме этого на фотографиях видны элементы крепления
датчиков скорости (датчика Холла и магниторезистивного), а на ободе
колеса имеются красные метки, которые показывают места, где
вмонтированы магниты.

И
АД
а
иб
С

б
Рис. 23. Фотографии механической части стенда: а − вид сбоку; б − вид сверху

26
3.2. Измерения скорости вращения махового колеса

Для измерения скорости (частоты) вращения используют 2 способа:


подсчитывают, сколько оборотов сделает вал за единицу времени (секунду
или минуту), или определяют время одного оборота (период вращения).
Частота и период связаны обратно пропорционально.
На маховом колесе вала находятся 2 магнитные матки, то есть за один
оборот вала с магнитного датчика поступают 2 импульса на компаратор, а
затем на делитель на 2. Их временные диаграммы показаны на рис. 24. Для
измерения периода вращения вала можно также использовать два способа:
1) измерить период импульсов с датчика после компаратора и умножить
его на 2; 2) измерить длительность импульса Т после делителя на 2 и также
умножить на 2. Время одного оборота равно 2Т.

И
U
АД
T 2T 4T t
0
а
U
иб

0 2T t
4T
б
С

Рис. 24. Временные диаграммы сигналов: а − с датчика; б − с выхода делителя на 2

Программно проще реализовать измерение длительности импульса.


Для этого используется одна команда pulseIn(10, HIGH), где 10 – это номер
штырька платы Ардуино, на который подаются импульсы, а HIGH
определяет, что измеряется длительность импульса, а не паузы. Если
нужно измерять длительность паузы, то вместо HIGH записывается LOW.
Для импульсов после делителя на 2 длительности импульсов и паузы
равны. Схемы компаратора и делителя на 2 реализованы на плате,
представленной на рис. 25, где обозначены контакты для подключения
датчиков и выводов платы Ардуино.

27
Рис. 25. Платы усилителей и компаратора с делителем на 2

Программный код, реализующий измерение длительности импульсов

И
с датчика, представлен ниже. Для управления скоростью вращения, так же,
как и в предыдущем примере, используется переменный резистор,
напряжение с которого поступает на АЦП.
АД
Код:
//** Измерение скорости вращения
int rPin = A0; // устанавливаем входной штырек для АЦП
unsigned int rValue = 0; // цифровое значение напряжения с переменного
резистора
иб

unsigned long time_us=0; // длительность периода импульсов


void setup(){
Serial.begin(9600); // старт последовательного вывода данных (для
тестирования)
С

}
void loop(){
rValue = analogRead(rPin); // считываем значение с переменного
резистора
rValue = //масштабируем
analogWrite(9, rValue); // Pin9 - выход ШИМ
time_us=pulseIn(10, HIGH); // Pin10 - вход изм. длительности импульса
//Для отладки нижеследующие строки
Serial.print(rValue, DEC); // вывод данных ШИМ
Serial.print(" ");
Serial.println(time_us); //длительность импульса
delay(200);
}

28
Здесь беззнаковая целая переменная rValue содержит число от 0 до
1023, она предназначена для хранения напряжения с переменного
резистора R1. Функция map(rValue, 0, 1023, 0, 255) преобразует диапазон
изменения этой переменной в диапазон 0 – 255, в котором изменяется
ширина импульсов ШИМ. При этом коэффициент заполнения импульсов
меняется от 0 до 1.
Беззнаковая длинная целая переменная time_us используется для
хранения длительности импульса, которая измеряется при помощи
функции pulseIn(10, HIGH). Для этого выходы 2 или 3 (рис. 26)
подключаются к цифровому входу D10 на плате Ардуино.
Второй вариант измерения периода вращения – с использованием
прерывания по цифровому входу. У Ардуино есть несколько входов для
внешних прерываний:
interrupt 0 – D3;
interrupt 1 – D2;
interrupt 2 – D0;

И
interrupt 3 – D1.
Входы для подключения сигналов, вызывающие эти прерывания,
показаны на плате Ардуино на рис. 26. Мы выбрали прерывание interrupt 0
АД
и должны подключить к D3 выход «1» с платы усилителей (см. рис. 25).
иб
С

Рис. 26. Плата с Ардуино. Входы для внешних прерываний

29
Для измерения периода следования импульсов будем использовать
прерывание «0» при возникновении события появления нарастающего
фронта импульса на штырьке платы D3.
Программный код для этого случая приведен ниже:
//** Измерение скорости вращения
int rPin = A0; // устанавливаем входной штырек для АЦП
unsigned int rValue = 0; // цифровое значение напряжения с переменного
резистора
volatile unsigned long time_ms=0; // длительность периода импульсов
volatile unsigned long time; // новое время
volatile unsigned long otime; //старое время
void setup(){
Serial.begin(9600); // старт последовательного вывода данных
attachInterrupt(0, blink, RISING); // прерывание на цифровом входе 3 по
нарастающему фронту
}

И
void loop(){
rValue = analogRead(rPin); // считываем значение с переменного
резистора
АД
rValue = map(rValue, 0, 1023, 0, 255); //масштабируем
analogWrite(9, rValue); // Pin9 - выход ШИМ
//Для отладки нижеследующие строки:
Serial.print(rValue, DEC); // вывод данных ШИМ
Serial.print(" ");
иб

Serial.println(time_ms); //длительность импульса


delay(200);
}
void blink() // Внутри функции значения, возвращаемые millis(), не
С

изменяются
{
time = millis();
time_ms = time - otime;
otime = time;
}
Или:
unsigned long blink()
{
time = millis();
time_ms = time - otime;
otime = time;
return time_ms;
}

30
3.3. Датчик давления (разряжения) газа

Датчик давления газа устанавливают во впускной коллектор


двигателя внутреннего сгорания между дроссельной заслонкой и
впускными клапанами цилиндра двигателя, например, в автомобиле
«Ситроен». В СибАДИ в учебной лаборатории 2-160 имеется стенд,
моделирующий работу такого бензинового двигателя.
Сигналы датчика давления используются в системе управления
подачей топлива для определения дозы бензина, впрыскиваемого в
цилиндр за один такт. Расход бензина при работе ДВС должен точно
соответствовать расходу воздуха для обеспечения экологических
требований.
Расход воздуха определяется измерением параметров его потока во
впускном коллекторе, характеризующих скорость движения потока или
величину разряжения воздуха во впускном коллекторе между клапаном и
дроссельной заслонкой. Для рассмотренного стенда будем использовать

И
третий способ измерения расхода воздуха – измерение коэффициента
наполнения цилиндра.
Расхода воздуха по величине разряжения определяется с помощью
АД
дроссельных устройств − диафрагмы, сопла, трубки Вентури (рис. 27), а
также насадки со свободным входом, так называемой коноидальной
насадки [8]. Для измерения перепада давления применяют
дифференциальные манометры.
Связь между перепадом давлений на дроссельном устройстве и
иб

расходом воздуха определяется из уравнения неразрывности и уравнения


Бернулли:
Gв = 0,004μd2√Δp•ρв , (2)
С

где Gв − часовой расход воздуха; μ − коэффициент расхода дроссельного


устройства; d − диаметр отверстия (сужения) дроссельного устройства;
Δр − перепад давления на дроссельном устройстве; ρв – плотность воздуха.
Расход воздуха определяется в этом случае по перепаду давления до
и после сужения дроссельного устройства.
Как видно из формулы, расход воздуха пропорционален корню
квадратному из разности давлений до и после дросселя. В нашем случае он
пропорционален квадратному корню разности между атмосферным
давлением и давлением во впускном коллекторе между дроссельной
заслонкой и впускным клапаном, где установлен датчик.
Кроме того, доза топлива будет нелинейно зависеть от величины
открытия дроссельной заслонки. Следовательно, для определения дозы
топлива следует использовать датчик положения дроссельной заслонки.

31
И
АД
а
иб
С

Рис. 27. Варианты схем дроссельных устройств:


а – с диафрагмой и распределением давления при протекании
потока газа через диафрагму; б – с соплом; в – трубка Вентури

32
Для автомобильной промышленности выпускают большое разнооб-
разие датчиков давления воздуха. По каталогу немецкой фирмы Bosch
датчики давления имеют диапазон измерения давлений Р1 = 10 – 50 кПа;
Р2 = 115 – 300 кПа. Выходное напряжение от 0,3 до 4,8 В.
На рис. 28 представлен один из выпускаемых фирмой Bosch датчиков
и его выходная характеристика.

И
АД
Рис. 28. Датчик давления и его выходная характеристика

Для определения дозы топлива в ДВС чаще используют


иб

анемометрический датчик массового расхода воздуха, но он стóит


значительно дороже и имеет большие габариты. Поэтому в тех случаях,
где это возможно, ставят датчик давления газа.
Мы используем датчик давления MPX4115AP CASE 867B-04 серии
С

MPX4115 фирмы Freescale Semiconductor (рис. 29).

Рис. 29. Датчик давления газа и его схема

33
Этот датчик имеет малые габаритные размеры 30х30х8 мм, линейную
выходную характеристику. Он является интегрированным, то есть в
корпусе с чувствительным элементом расположена интегральная микро-
схема, обеспечивающая выходное напряжение, согласованное с входом
микроконтроллера, термокомпенсацию и линейность характеристик.
Основные технические характеристики датчика:
Термокомпенсация в диапазоне 0 – 85 оС.
Диапазон измерения давления 15 – 115 кПа.
Максимальная ошибка измерений 1,5%.
Максимальное давление 400 кПа.
Диапазон измерения выходного напряжения 0,2 – 4,8 В.
Чувствительность 46 мВ/кПа.
Напряжение питания 5,1 В, ток 7 мА.
На рис. 30 представлена зависимость напряжения на выходе датчика
от давления газа.

И
АД
иб
С

Рис. 30. Выходная характеристика


датчика MPX4115AP

Атмосферное давление, как известно, примерно 100 кПа, а


минимальная величина давления в цилиндре − около 30 кПа. Она
обусловлена натеканием воздуха в цилиндр при закрытых клапанах через
щель между поршнем и цилиндром. Это особенно проявляется на низких
оборотах.
Следовательно, напряжение на выходе датчика будет меняться в
пределах 0,1 – 4 В. Это соответствует динамическому диапазону АЦП
встроенного в Ардуино и позволяет подключить датчик непосредственно к
аналоговому входу на плате Ардуино.

34
3.4. Измерение коэффициента наполнения цилиндра

По массе всасываемого в цилиндр ДВС воздуха дозируется топливо.


Для косвенного измерения массового расхода воздуха (пошедшего через
впускной клапан цилиндра ДВС) используют два способа: регистрируют
скорость прохождения воздуха через входной коллектор, используя
анемометрический датчик; измеряют давление в нем, используя датчик
давления. Причем датчик давления устанавливают в области разряжения
между дроссельной заслонкой и впускным клапаном.
На рис. 31, 32 показаны дроссели с различным диаметром отверстия,
которые используются в учебном процессе для экспериментов.

И
АД
иб

Рис. 31. Дроссели с различным диаметром отверстий


С

а б

Рис. 32. Дроссели, установленные на макет: а − дроссель с постоянным диаметром;


б − дроссель с изменяемым сечением отверстия

35
На рис. 33 показана кривая изменения давления во впускном
коллекторе после дроссельной заслонки от времени за один цикл движения
поршня в цилиндре макета.

И
АД
Рис. 33. Разбиение площади над кривой графика
функции давления на n участков

Если эту кривую разбить на временные участки Δt, то,


воспользовавшись формулой (3), можно вычислить расход воздуха за
иб

цикл, взяв интеграл по времени и вычислив площадь замененного участка


над кривой (см. рис. 33), корень квадратный и умножив на
соответствующий коэффициент.
С

Gвцикл = K , (3)

или

Gвцикл = K , (4)

где K = 0,004μ√ρв – постоянный коэффициент; ΔР – разница между


давлением во впускном коллекторе и атмосферным по абсолютной
величине; di – диаметр дросселя, который может изменяться; если он не
изменяется, то его можно включить в постоянный коэффициент K;
Δt измеряется в часах.
В случае, если Δt постоянно (не изменяется со временем), то форму-
лу (4) можно записать в виде

36
Gвцикл = K’ • , (5)
где K’ = К Δt.
Вычисление расхода воздуха по формуле (5) можно сделать
программно. При этом контроллеры Адруино позволяют получить число
отсчетов за цикл n около 1000, т. е. обеспечить очень высокую точность.
Теоретические зависимости между массой засосанного воздуха (или
коэффициентом наполнения цилиндра) и этими давлениями и скоростями
довольно сложны, но нам требуются относительные диапазоны изменения
параметра, пропорционального массе засосанного воздуха, который мы
перенесем на диапазон изменения параметра, регулирующего массу
впрыскиваемого топлива (например, функцией map()). В случае учета
нелинейности нам потребуются корректирующие коэффициенты, а также
коэффициенты, учитывающие влияние внешних факторов (температуры,
атмосферного давления и т.п.). Эти коэффициенты могут быть заданы
аналитически или в виде таблиц, сохраняемых в EEPROM контроллера.
На рис. 34 показаны упрощенные кривые зависимости величины

И
сигнала с датчика давления от времени (убраны помехи и колебания
давления из-за турбулентности, амплитуда которых около 0,5 В) при
АД
изменении скорости вращения и положения дроссельной заслонки.
иб
С

Рис. 34. Сигналы на входе (с датчика давления) и выходе компаратора

При этом клапан открывается и закрывается при минимальной


разности давлений в цилиндре и атмосфере, то есть закрывается после
прохождения поршнем нижней мертвой точки и движения поршня к
верхней мертвой точке.

37
Схема электрическая принципиальная для превращения сигналов с
датчика давления в прямоугольные импульсы представлена на рис. 35. По
этим импульсам можно точно определить моменты времени открывания и
закрывания клапанов.

Рис. 35. Схема компаратора


для получения прямоугольных импульсов

И
Датчик и плата компаратора устанавливаются на входном патрубке
цилиндра (рис. 36), обеспечивая тем самым минимальный объем воздуха в
АД
патрубке между дросселем и впускным клапаном цилиндра.
иб
С

Рис. 36. Датчик давления с платой компаратора,


установленный на макете ДВС

Нам для регулирования подачи топлива не обязательно нужно знать


массу всасываемого воздуха, измеренную в единицах массы. Достаточно
знать относительные изменения массы воздуха в цилиндрах, которые

38
задаются коэффициентом наполнения цилиндра. По определению, этот
коэффициент определяется следующим образом:
Совершенство процесса наполнения оценивается коэффициентом
наполнения ηV, равным отношению количества свежего заряда,
находящегося в цилиндре, к началу действительного сжатия, то есть к
моменту закрытия органов газообмена, к тому количеству свежего заряда,
которое могло бы заполнить рабочий объем цилиндра при условиях на
впуске [7].

ηV = Gk.cж = , (6)
Vh ρk

где Gk.сж – массовое количество свежего заряда, находящееся в цилиндре к


началу сжатия, кг; Vk – объем, занимаемый свежим зарядом и приведенный
к условиям на впуске (ρk и Tk), м3.
Объемы Vk и Vh отмечены на рис. 37.

И
АД
иб

Рис. 37. Полный Vh всасываемый Vk объемы цилиндра

Если ηV =1, то в цилиндр при работе ДВС попадает ровно столько


С

воздуха, сколько бы уместилось в объеме, равном этому цилиндру при


данном атмосферном давлении и температуре.
Предположим, что клапаны цилиндра безынерционны и не
испытывают трения. Тогда они будут переключаться из закрытого
состояния в открытое и наоборот при атмосферном давлении с двух сторон
клапана. Моменты переключения клапанов при вращении маховика и
возвратно-поступательном движении поршня совпадают с моментами
появления фронтов импульсов на выходе «1» компаратора (см. рис. 35 и
рис. 39). Зная время в моменты переключения клапанов и время
прохождения нижней (или верхней) мертвой точки, можно точно
вычислить коэффициент наполнения цилиндра для нашей модели. В
верхней мертвой точке начинается всасывание воздуха в цилиндр и эти
моменты совпадают со спадающими фронтом импульсов Uвых1 на рис. 39.

39
Для определения моментов прохождения нижней мертвой точки
установлена кнопка и собрана схема (рис. 38). Достигая нижней мертвой
точки, поршень замыкает кнопку SW1.
Это соответствует нарастающему фронту импульсов на выходе Uвых2
(см. рис. 38).
Зная перечисленные моменты времени, коэффициент наполнения
цилиндра можно определить как

ηV = Vk/Vh = 0,5 (1 – сos a); (7)


если угол а в градусах, то
a = 180(1 – ΔT1/T) = 180ΔT2/T, (8)
если в радианах –
a = π(1 – ΔT1/T) = πΔT2/T, (9)

где a – угол, показанный на рис. 37, соответствующий переключению


впускного клапана; T – половина периода вращения (поворот на 180о или

И
на π рад).
T = ΔT1 + ΔT2; ηV = 1 при ΔT1 = 0 или ΔT2 = Т.
АД
иб
С

Рис. 38. Кнопка и схема для регистрации нижней мертвой точки

Окончательно формула для вычисления коэффициента наполнения


цилиндра имеет вид
ηV = Vk/Vh = 0,5 (1 – сos (πΔT2/T)). (10)

40
И
АД
Рис. 39. Временные диаграммы напряжений

Ниже приведен код программы, в которой определяются скорость


вращения маховика и коэффициент наполнения цилиндра по длительности
импульсов в последовательностях импульсов с выходов 1 и 2, показанных
на рис. 37 при постоянном диаметре дросселя.
иб

Код:
//** Измерение коэффициента наполнения цилиндра
/* Используемые штырьки:
А0 – вход с переменного резистора,
С

А1 – вход от датчика давления,


D2 – с выхода компаратора (выход 1, см. рис. 35)
D3 – с выхода RS-триггера (выход 2, см. рис. 38).
D9 – выход ШИМ
D10 – с выхода делителя на 2
*/
int rPin = A0; // входной штырек для переменного резистора
int deltaT1; // длительность импульса
int deltaT2; ; //………..
int hpT;
double knc; //коэффициент наполнения цилиндра
float pi; //число пи
int cycleT; // время одного цикла хода цилиндра
float speedR;

41
unsigned int rValue = 0; // цифровое значение напряжения с переменного
резистора
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
Serial.begin(9600); // старт последовательного вывода данных
pi= 3,14;
}
void loop() {
rValue = analogRead(rPin); // считываем значение с переменного
резистора
rValue = map(rValue, 0, 1023, 0, 255); //масштабируем
analogWrite(9, rValue); // Pin9 - выход ШИМ
cycleT = pulseIn(10, HIGH); // Pin10 – с выхода делителя на 2 (см. рис. 25)
deltaT1 =pulseIn(2, HIGH);
deltaT2 =pulseIn(3, HIGH);

И
hpT = deltaT1+deltaT2;
if(cycleT < 3*hpT)
{
АД
Serial.print("Error!!!");
}
else
{
knc = (1-cos(pi* deltaT2 / hpT))/2;
иб

}
speedR = 60000 / cycleT;
//Вывод на монитор
Serial.print("Speed = "); // скорость вращения
С

Serial.print(speedR);
Serial.print(", Koef.nap.cil = ");
Serial.println(knc); //коэффициент наполнения цилиндра
delay(100);
}

Данная программа выводит на экран дисплея две колонки: в первой −


скорость вращения, во второй − коэффициент наполнения цилиндра. Это
позволяет зарегистрировать зависимость коэффициента наполнения
цилиндра от скорости вращения коленвала ДВС при различных диаметрах
дросселя (см. рис. 31), т. е. получить семейство механических
характеристик для данного макета без нагрузки (на холостом ходу).

42
3.5. Система управления скоростью с помощью дроссельной заслонки
Водитель осуществляет плавное управление скоростью движения
автомобиля (мощностью двигателя) нажатием на педаль газа или
отпусканием её. При этом поворачивается дроссельная заслонка и
изменяется количество воздуха, поступающего в цилиндры ДВС.
Электронный блок управления по сигналам с датчиков расхода воздуха,
положения дроссельной заслонки, скорости вращения коленчатого вала,
температуры воздуха и охлаждающей жидкости оценивает количество
поступившего в цилиндры кислорода и определяет дозу топлива, которую
нужно впрыснуть через форсунки, задавая время, в течение которого они
должны быть открыты.
Процесс, аналогичный описанному процессу управления скоростью,
на нашей модели можно осуществить следующим образом:
С помощью резистора, который использовался для регулирования
скорости вращения электродвигателя, устанавливаем минимальные
обороты «холостого хода». При этом получаем начальную величину

И
параметра ШИМ сигнала, подаваемого на электродвигатель, вращающий
маховик, приводящий в движение поршень.
АД
Изменением площади отверстия дросселя поворотом винта (см. рис.
32, б) регулируем подачу воздуха в цилиндр. Его относительное
количество оценивается за один цикл по формуле (5) или по формуле (7).
Причем по формуле (5) можно рассчитать подачу воздуха, если известна
функция зависимости площади сечения отверстия дросселя от сигнала с
иб

датчика положения дроссельной заслонки.


Пропорционально рассчитанной величине коэффициента наполнения
цилиндра увеличиваем параметр ШИМ сигнала, подаваемого на
электродвигатель. Для этого складываем начальное значение параметра
ШИМ с рассчитанной величиной, пропорциональной расходу воздуха, т. е.
С

размером дроссельного отверстия мы будем управлять скоростью


вращения вала двигателя, изменяя длительность импульсов в сигнале
ШИМ, что аналогично изменению длительности импульсов, подаваемых
на форсунки ДВС.
Момент начала впрыска топлива в инжекторных ДВС определяется
датчиком фаз. Так как в рассмотренной модели ДВС нет распредвала,
работа датчика фаз моделируется включением светодиода после закрытия
впускного клапана – по нарастающему фронту импульсов с выхода 2.
Схема действия фазового впрыска заключается в передаче импульса с
датчика фаз на электронную систему управления двигателем (ЭСУД),
которая распределяет подачу топлива и дает команду для форсунки на
впрыск бензина во впускной коллектор на впускной клапан
(многоточечный впрыск) или в цилиндр (прямой впрыск топлива) перед
тем как он будет открыт. После открытия клапана в цилиндр всасывается

43
воздух, который быстро смешивается с топливом, образуя
топливовоздушную смесь [7, 8].

Рис. 40. Датчик фаз

И
В себе датчик содержит два элемента: чувствительный и вторичный
(рис. 40). Принцип работы чувствительного элемента очень напоминает то,
как работает датчик Холла, он также реагирует на изменение магнитного
АД
поля. Что касается вторичного элемента, то он включает в себя выходной
каскад, операционный усилитель и мостовую схему. Выходной каскад
сделан по типу открытого коллектора. Датчик фаз выполняет такую
работу, как определение такта для цилиндра номер 1, с помощью
распределительного вала определяет, какой клапан отрыт и какая фаза
иб

газораспределения в данный момент времени.


Расположение датчиков, по которым определяются доза топлива и
угол опережения зажигания (ОЗ), показано на рис. 41.
С

Рис. 41. Схема расположения датчиков

44
На рис. 42 показана схема системы управления Мотроник
(DI-Motronic-Systems) для безнаддувного ДВС со свободным впуском,
λ = 1 [9].
На ней цифрами обозначены устройства и датчики, перечисленные
ниже. В скобках даются соответствующие термины на немецком языке, так
как дается ссылка на книгу немецкого издания:
1. Бачок с активированным углем (Aktivkohlebehalter).
2. Термоанемометрический плёночный расходомер (массы) воздуха (Heiß-
film Luftmassenmesser).
3. Дросселирующее устройство (Drosselvorrichtung (EGAS)).
4. Клапан вентиляции топливного бака (Tankentluftungsventil).
5. Датчик давления во впускном коллекторе (Saugrohrdruck-sensor).
6. Датчик нагрузки при движении (Ladungs bewegungs klappe).
7. Насос высокого давления (Hochdruckpumpe).
8. Клапанная форсунка высокого давления (Rail mit Hochdruck-Einsprit-
zventil).

И
9. Регулятор кулачковый [распределительный вал] (Nockenwellen verstel-
ler).
10. Катушка зажигания, свеча зажигания (Zündspule mit Zündkerze).
АД
11. Датчик фаз (Nockenwellen Phasen sensor).
12. Датчик кислорода (Lambda-Sonde (LSU)).
13. Блок управления Motronic (Motronic Steuergerat).
14. Клапан рециркуляции ОГ (Abgasruckfuhrventil).
15. Датчик частоты вращения (Drehzahlsensor).
иб

16. Датчик детонации (Klopfsensor).


17. Датчик температуры двигателя (Motortemperatur sensor).
18. Каталитический нейтрализатор ОГ (дополнительный) в режиме пуска и
прогрева двигателя (устанавливается вблизи двигателя) (Vorkatalysator).
С

19. Лямда-зонд (Lambda-Sonde).


20. Головной катализатор (Hauptkatalysator).
21. CAN-интерфейс (CAN-Schnittstelle).
22. Лампа диагностики (Diagnose Lampe).
23. Диагностический разъем (Diagnoseschnitt stele).
24. Интерфейс имобилайзера блокирования руля и доступа (Schnittstelle
zum Immobilizer Steuer gerat (Wegfahr-sperre)).
25. Модуль педали акселератора (Fahrpedalmodul).
26. Бензобак (Kraftstoffbehalter).
27. Модуль уровня топлива и топливный насос (Kraftstoff forder modul mit
Elelktro-kraftstoffpumpe).

Эта схема используется в большинстве автомашин немецкого


производства.

45
И
АД
иб
С

Рис. 42. Схема системы управления ДВС Мотроник

46
Диапазон времени открывания форсунок показан на рис. 43.

И
АД
иб

Рис. 43. Диапазон времени открытия форсунок


для двигателей с прямым впрыском топлива (BDE)
и впрыском во впускной коллектор
С

Программный код, реализующий управление скоростью вращения с


помощью дроссельной заслонки, представлен ниже:
//** Управление скоростью вращения с помощью дроссельной заслонки.
/* Используемые штырьки:
А0 – вход с переменного резистора,
А1 – вход от датчика давления,
D2 – с выхода компаратора (выход 1, см. рис. 35)
D3 – с выхода RS-триггера (выход 2, см. рис. 38).
D9 – выход ШИМ
D10 – с выхода делителя на 2
*/
int rPin = A0; // входной штырек для переменного резистора
int deltaT1; // длительность импульса
int deltaT2; ; //………..

47
int hpT;
double knc; //коэффициент наполнения цилиндра
float pi; //число пи
int cycleT; // время одного цикла хода цилиндра.
float speedR;
unsigned int rValue = 0; // цифровое значение напряжения с переменного
резистора
int val;
int valknc;
void setup(){
pinMode(2, INPUT);
pinMode(3, INPUT);
Serial.begin(9600); // старт последовательного вывода данных
pi= 3,14;
}
void loop(){

И
rValue = analogRead(rPin); // считываем значение с переменного
резистора
rValue = map(rValue, 0, 1023, 0,100); //холостой ход
АД
val = rValue+valknc;
analogWrite(9, val); // Pin9 - выход ШИМ
cycleT = pulseIn(10, HIGH); // Pin10 – с выхода делителя на 2 (см. рис. 25)
deltaT1 =pulseIn(2, HIGH);
deltaT2 =pulseIn(3, HIGH);
иб

hpT = deltaT1+deltaT2;
if(cycleT < 3*hpT)
{
Serial.print("Error!!!");
С

}
else
{
knc = (1-cos(pi* deltaT2 / hpT))/2;
}
valknc =knc*200; // добавка «газа»
speedR = 60000 / cycleT; // скорость вращения
//Вывод на монитор
Serial.print("Speed = ");
Serial.print(speedR);
Serial.print(", Koef.nap.cil = ");
Serial.println(knc); //коэффициент наполнения цилиндра
delay(100);
}

48
Контрольные вопросы
1. Зачем необходимо точно дозировать топливо?
2. Какие имеются способы определения количества воздуха, засосанного в
цилиндр?
3. Что такое коэффициент наполнения цилиндра?
4. Как определить коэффициент наполнения цилиндра, зная моменты
открытия и закрытия клапанов на макете ДВС?
5. Как измеряется расход воздуха при помощи датчика массового расхода
воздуха?
6. Как измеряется расход воздуха с помощью датчика давления?
7. Каков принцип работы системы подачи топлива в ДВС с коррекцией по
датчику кислорода?
8. Зачем используются два датчика кислорода?
9. Зачем нужен датчик фаз?

4. СХЕМА ЭЛЕКТРИЧЕСКАЯ СТРУКТУРНАЯ

И
Схема электрическая структурная состоит из ряда блоков, которые
выполнены на отдельных платах. Все блоки собираются при помощи
АД
соединительных проводников с разъемами в единую систему управления
дозированием топлива, которая задает время открытия форсунки (рис. 44).

Датчик скорости Датчик давления во Датчик


иб

вращения впускном коллекторе фаз

Схема формирования Схема формирования Блок


импульса импульса питания
С

Управление
электродви- D10 A1 D11 Силовой блок
гателем А0 Плата Ардуино D9 электородвигате-
(холостой ля тяги (ШИМ) и
ход) Порт в/в D8
электродвигатель
нагрузки
Индикатор
впрыска

Рис. 44. Структурная схема системы дозирования топлива

49
Пропорционально величине этого времени изменяется длительность
импульсов ШИМ, подаваемых на электродвигатель, приводящий в
движение поршень цилиндра. Это электродвигатель тяги, моделирующий
увеличение мощности ДВС при увеличении дозы топлива, подаваемой в
цилиндры.
Для начала процесса моделирования работы ДВС необходимо
установить дроссельное устройство с минимальным диаметром отверстия.
Затем при помощи переменного резистора, управляющего шириной
импульсов ШИМ, задать начальную длительность импульсов ШИМ –
начальные обороты двигателя – обороты холостого хода, при которых
двигатель устойчиво работает с минимальной частотой вращения (без
рывков и остановок). Нужно записать эту начальную скорость вращения
маховика. Затем заменить дроссельное устройство – поставить дроссель с
большим диаметром. Зарегистрировать увеличение скорости вращения
маховика. Проделать это со всеми дросселями, демонстрируя тем самым,
как изменяются параметры при управлении ДВС с помощью педали газа.

И
5. СХЕМА ЭЛЕКТРИЧЕСКАЯ ПРИНЦИПИАЛЬНАЯ

На схеме электрической принципиальной (рис. 45) показаны датчики,


АД
необходимые для вычисления дозы топлива во время впрыска через
форсунку и момента впрыска: датчик Холла (DH), датчик давления во
впускном коллекторе и датчик фаз (SW1). Сигналы с датчика Холла
усиливаются (DA1) и через схему формирования импульсов (DA2-1 DD1)
подаются на модуль Ардуино, который определяет скорость вращения
иб

маховика.
С

Рис. 45. Электрическая принципиальная схема стенда

50
С датчика давления (DA3) на Ардуино поступает аналоговый сигнал,
затем он преобразуется в импульсы компаратором (DA2-2).
Скорость вращения электродвигателя М1 задается переменным
резистором R17. Механическая нагрузка изменяется резистором R18,
включенным в цепь якоря электродвигателя М2.

6. СИСТЕМА УПРАВЛЕНИЯ ЗАЖИГАНИЕМ

В бензиновых двигателях внутреннего сгорания (ДВС) от установки


угла опережения зажигания (ОЗ) во многом зависит эффективность
преобразования энергии топливно-воздушной смеси, сгорающей в
цилиндре двигателя, в механическую энергию. Также от установки угла ОЗ
зависит вероятность возникновения детонации, которая уменьшает
долговечность и надежность двигателя.
Увеличение частоты вращения коленчатого вала приводит к росту
турбулизации заряда, что влечет за собой увеличение скорости

И
распространения пламени и уменьшение вероятности возникновения
детонации. С увеличением частоты вращения коленчатого вала увели-
чивается содержание остаточных газов в рабочей смеси, что снижает
АД
интенсивность предпламенных процессов и приводит к снижению
детонации.
Уменьшение нагрузки сопровождается прикрытием дроссельной
заслонки, вследствие чего давление и температура заряда в конце процесса
сжатия снижаются, а коэффициент остаточных газов увеличивается. Кроме
иб

этого, уменьшается количество вводимой горючей смеси, а значит, и


выделяемая теплота, вследствие чего снижается давление в цилиндре.
Поэтому уменьшение нагрузки приводит к снижению детонации, и
наоборот.
С

Увеличение угла ОЗ приводит к более раннему тепловыделению


относительно прихода поршня в ВМТ. В результате резко повышается
давление, что способствует возрастанию степени сжатия смеси перед
фронтом пламени и вызывает появление очагов самовоспламенения.
Поэтому при больших углах опережения склонность к детонации
возрастает, и наоборот. С другой стороны, при малых углах ОЗ топливная
смесь может самовоспламениться до возникновения искры из-за
повышения давления и температуры в цилиндре при подходе поршня к
верхней мертвой точке, как это происходит в дизельных двигателях.
Таким образом, поддержание оптимальной работы ДВС во всех
режимах его работы во многом зависит от управления углом ОЗ.
Установить угол ОЗ, соответствующий оптимальной работе двигателя
в различных режимах работы, можно с использованием индикаторной
диаграммы.

51
6.1. Индикаторная диаграмма

Индикаторная диаграмма (ИД) – графическое изображение изменения


давления газа в цилиндре поршневой машины в зависимости от положения
поршня или объема цилиндра под поршнем (рис. 46). ИД снимается
обычно с помощью индикатора давления (рис. 47) при работающем ДВС.
По оси абсцисс откладывается объём, занимаемый газами в цилиндре,
а по оси ординат − давление. Каждая точка на ИД показывает давление в
цилиндре двигателя при данном объёме, т. е. при данном положении
поршня (точка r соответствует началу впуска; точка а − началу сжатия;
точка с − концу сжатия; точка z − началу расширения; точка b − концу
расширения).

И
АД
иб
С

Рис. 46. Индикаторная диаграмма ДВС

ИД даёт представление о значении работы, производимой двигателем


внутреннего сгорания, и мощности. Рабочее тело совершает полезную
работу только в течение рабочего хода. Поэтому для определения полезной
работы необходимо из площади, ограниченной кривой расширения zb,
вычесть площадь, ограниченную кривой сжатия ac. Различают
теоретическую и действительную ИД. Теоретическая строится по данным
теплового расчёта и характеризует теоретический цикл; действительная
ИД снимается с работающей машины при помощи датчиков и
характеризует действительный цикл (см. рис. 46).

52
Теоретическая (пунктир) и действительная (сплошные линии)
индикаторные диаграммы 4-тактного карбюраторного двигателя: ra −
линия впуска; ac − линия сжатия; cz − линия сгорания; zb − линия
расширения; br − линия выпуска; P − давление; V − объём.
Снимая ИД при различных углах ОЗ, можно установить оптимальный
режим работы ДВС. ИМ данного двигателя различна на разных режимах
его работы. Зависимость ИМ от частоты вращения называется скоростной
характеристикой. Чтобы построить скоростную характеристику ИМ,
снимают индикаторные диаграммы на различных частотах вращения.
Датчик давления устанавливается на свече зажигания (рис. 47), что
обеспечивает одновременное создание искры и измерение быстропере-
менного давления в камере сгорания двигателей. Датчик давления работает
с усилителем сигнала.

И
АД
иб

Рис. 47. Датчик-свеча ДПС 016 (СДАИ.406231.011 ТУ)


С

Определить зависимости угла ОЗ от многих факторов, на него


влияющих, можно путем длительных и затратных испытаний на
испытательных стендах с ДВС и нагрузочным генератором.
Математическое моделирование, корректно отображающее процессы в
системе зажигания, на данном этапе для нас не представляется
возможным.
Из вышесказанного ясно, что наиболее подходящий вариант
разработки и изучения алгоритмов работы блока управления зажиганием –
это использование натурной модели, имитирующей работу ДВС с
моделированием процессов, происходящих в реальном двигателе.
Угол ОЗ вычисляется по показаниям датчиков. Расположение
основных датчиков показано на рис. 40.
В качестве датчиков скорости в автомобилях используются
индукционные датчики, работающие на основе изменения магнитного

53
поля при изменении немагнитного зазора (см. рис. 17), а также датчики
Холла, реагирующие на величину магнитного поля, в которое они
помещены. При прохождении мимо датчика магнита на выходе появляется
напряжение.

6.2. Датчик абсолютного давления во впускном коллекторе

Датчик устанавливается между дроссельной заслонкой и впускным


клапаном. Он передает аналоговый сигнал, пропорциональный
абсолютному давлению, его функции в регулировании угла ОЗ
аналогичны вакуум-корректору в контактных системах зажигания с
распределителем.
В датчике установлен электронный блок, усиливающий выходной
сигнал. Чувствительный элемент датчика – кремниевый диафрагменного
типа.
Датчик, именуемый МАП-сенсором (Manifold Absolute Pressure sensor

И
– MAP-sensor), применяется во всех системах управления двигателем, где
не используется термоанемометрический датчик массового расхода
воздуха.
АД
Расположение датчика давления и платы сопряжения показано на
рис. 48.
иб
С

Рис. 48. Стенд с датчиком давления и платой сопряжения


На автомобилях, оборудованных турбинами, датчик абсолютного
давления в коллекторе устанавливается в любом случае, независимо от
того, есть ли расходомер воздуха или нет. На двигателях с турбонаддувом
МАП-сенсор измеряет и регулирует еще и избыточное давление,
нагнетаемое турбиной.

54
6.3. Датчик детонации

Датчик детонации реагирует на событие появления детонации в


цилиндре ДВС. Реакцией на это событие должно быть увеличение угла ОЗ
на несколько градусов, а затем постепенное возвращение в исходное
состояние. Обычно управление углом ОЗ заключается в балансировании на
грани детонации.
Датчик (рис. 49) содержит пьезоэлемент 1, который при детонации
сжимается силой F, возникающей за счет движения стенки цилиндра,
между ней и кольцеобразной шайбой 2, стремящейся оставаться в покое за
счет инерции массы. При этом на электродах пьезоэлемента появляется
переменное напряжение, которое передается на выводы датчика;
амплитуда этого напряжения пропорциональна силе удара,
сопровождающего детонацию.
Датчик крепится к блоку цилиндров болтом 4, неподвижно закрепляя
на нем корпус датчика. Резиновая прокладка 3 обеспечивает подвижность

И
кольцу 2 за счет своей деформации.
АД
иб
С

Рис. 49. Датчик детонации: внешний вид и крепление

Датчик детонации мы моделируем пьезоэлементом, щелчок по


которому моделирует детонацию в цилиндре ДВС.
В качестве модели датчика детонации взят пьезоизлучатель, в
котором имеется пьезоэлемент (рис. 50, а), как в штатном датчике. При
щелчке по нему он также вырабатывает затухающие колебания
напряжения, амплитуда которых может достигать нескольких вольт.
Для подачи сигнала о наличии детонации на контроллер Ардуино
нужно его преобразовать в одиночный импульс напряжением около 5 В.
Схема формирования импульса показана на рис. 50, б.

55
а б

Рис. 50. Модель датчика детонации и схема его подключения

Сигнал с датчика ограничивается диодами VD и VD2 так, чтобы его

И
размах не превышал напряжения питания 5 В. Затем этот сигнал подается
на ждущий мультивибратор, собранный на логических элементах 2 «И»
(DD1.1 – DD1.3), затем через инвертор DD1.4 поступает на выход.
АД
На выходе Вых2 формируется одиночный импульс положительной
полярности. Длительность импульса регулируется переменным
сопротивлением R3. Она должна превышать длительность затухающих
колебаний с датчика. Этот импульс зажигает светодиод VD3,
сигнализирующий о появлении детонации.
иб

6.4. Схема электрическая структурная

Схема электрическая структурная состоит их ряда блоков (рис. 51),


С

которые выполнены на отдельных платах. Все блоки собираются при


помощи соединительных проводников с разъемами в единую систему
управления зажиганием. Схема электрическая структурная отличается от
схемы рис. 44 наличием датчика детонации и схемы формирования
импульса, зажигающей светодиод.
Кроме того, имеется светодиод, моделирующий искру, зажигающую
топливно-воздушную смесь в цилиндре ДВС.
Влияние детонации на работу двигателя моделируется снижением его
мощности на определенный промежуток времени, который задается
произвольно и может регулироваться программно.
Схема управления выполнена на плате Arduino. Для обеспечения
взаимодействия с пользователем схема управления соединена через
интерфейс USB с ноутбуком, на экране которого отображаются в
графическом и цифровом видах происходящие события и процессы.

56
Результаты моделирования могут быть сохранены в файле на флеш-
карту и распечатаны на принтере.

Датчик скорости Датчик давления во Датчик


вращения впускном коллекторе детонации

Схема формирования Схема формирования Блок


импульса импульса. Светодиод питания

D10 A1 D11 Силовой блок


Управление А0 Плата Ардуино D9 электородвигате-
электродви- Порт в/в D8 ля тяги (ШИМ) и
гателем электродвигатель
нагрузки
Индикатор

И искры
АД
Рис. 51. Структурная схема модели системы зажигания

6.5. Схема электрическая принципиальная


иб

Принципиальная схема рис. 52 разделена на части, размещенные на


трех платах, соединённых проводниками при помощи разъемов.
С датчика Холла (DH) сигнал поступает на вход операционного
С

усилителя LM358 (DА1), для того чтобы усилить сигнал. Затем он


поступает на вход компаратора LM393 (DА2) и сравнивается с пороговым
напряжением, которое устанавливается переменным резистором R14. Если
напряжение с выхода усилителя меньше порогового, то напряжение на
выходе компаратора ноль, если больше порогового, то 5 В (логическая
единица), т. е. аналоговый сигнал превращается в цифровой. Затем им-
пульсы поступают на делитель частоты импульсов на 2 (DD2). Это сделано
для того, чтобы частота импульсов равнялась частоте вращения колеса.
Затем поделенные на 2 импульсы подаются на цифровой вход модуля
Ардуино, который по этому сигналу определяет скорость вращения маховика.
С датчика давления во впускном коллекторе сигнал подается на
аналоговый вход модуля Ардуино для измерения величины аналогового
сигнала с выхода датчика. Этот же сигнал проходит через схему
формирования импульсов, собранную на компараторе (DA2-2).

57
Преобразованный в импульсы компаратором сигнал поступает на
цифровой вход Ардуино.

И
АД
иб

Рис. 52. Схема электрическая принципиальная блока регулирования

На выходе датчика детонации появляются затухающие колебания,


если по нему щелкнуть пальцем или легко ударить каким-либо предметом.
С

Эти колебания преобразуются в одиночный импульс схемой ждущего


мультивибратора, собранного на логических элементах цифровой
микросхемы DD3. Длительность импульса ждущего мультивибратора
настраивается переменным резистором R20 и она должна быть больше
длительности затухающих колебаний датчика детонации.
Скорость вращения электродвигателя М1 задается переменным
резистором R17. Пропорционально напряжению на этом резисторе модуль
Ардуино программно задает параметры широтно-модулированного
сигнала, поступающего на выход, к которому присоединен затвор полевого
транзистора, управляющего током через электродвигатель М1.
Механическая нагрузка изменяется резистором R18, включенным в
цепь якоря электродвигателя М2. Таким способом осуществляется
электродинамическое торможение.

58
6.6. Алгоритм программы

Специалисту по электронным системам управления ДВС необходимо


четко представлять работу блока, задающего угол опережения зажигания
(УОЗ) при ремонте ЭБУ, связанном с заменой деталей или блока в целом,
особенно при замене ЭБУ на другую модель с последующей настройкой
параметров системы управления ДВС (чип-тюнингом). В более сложных
случаях может понадобиться изменение алгоритма работы системы (самой
программы ЭБУ), что потребует замену микроконтроллера, так как
программа в микроконтроллере обычно защищена от изменения (записи) и
чтения.
Отработка алгоритмов работы систем ДСВ производится на
предприятиях автопрома в специально предназначенных для этого
лабораториях на специальных обкаточно-тормозных стендах стоимостью
десятки миллионов рублей.
Программы для электронных блоков управления отлаживаются и

И
обкатываются при работающем ДВС на всех режимах в течение
длительного времени. При этом ищутся алгоритмы управления УОЗ,
обеспечивающие выполнение экологических требований по вредным
АД
выбросам и экономию топлива. Фактически работа на богатой или бедной
топливовоздушной смеси не допускается. Состав смеси для норм
токсичности Евро-3 и Евро-4, которые хотят ввести в России, должен быть
в пределах 0,99−1,01, т. е. с допуском ±1% на всех стационарных режимах
работы двигателя. Допускается кратковременное отклонение от этих
иб

значений на переходных режимах работы двигателя. Это достигается


только при использовании электронной системы управления двигателем с
впрыском топлива.
На процесс воспламенения топливовоздушной смеси влияет величина
С

времени накопления энергии в катушке зажигания, которая может быть


как одинаковой, так и различной для бензина и газового топлива. При
работе на газовом топливе момент начала зажигания наступает раньше,
чем при работе на бензине. В этом случае необходимо раньше начинать
накопление энергии в катушке зажигания.
Скорость горения зависит от химического состава топлива (в част-
ности, от содержания молекул водорода), который увеличивает число
активных центров в начале процесса окисления.
При одинаковом химическом составе топлива на скорость горения
будет оказывать влияние и размер его молекул. Чем меньше молекула, тем
меньше энергии необходимо на ее разложение с последующим окислением
атомов водорода и углерода, а также тем проще доступ радикалов и
молекул кислорода к атомам углерода. Кроме этого, скорость горения
зависит также и от качества приготовления смеси – от однородности

59
топливовоздушной смеси, от степени турбулизации потока в камере
сгорания ДВС и других параметров. Математические модели процессов,
происходящих при горении топлив, требуют значительного машинного
времени для расчета параметров и неприемлемы для современных
электронных блоков управления двигателем внутреннего сгорания, так как
требуют применения мощных процессоров, что приведет к значительному
удорожанию ЭБУ. Поэтому используется более простой алгоритм,
определяющий УОЗ топливной смеси по таблицам, записанным в
микросхему постоянного запоминающего устройства, находящуюся
внутри ЭБУ. Эти таблицы заполняются при испытаниях двигателей на
заводе-изготовителе.
Угол опережения зажигания для конкретного двигателя внутреннего
сгорания (ДВС) и вида топлива обычно определяется следующими путями:
1. Длительными стендовыми испытаниями по определению угла
опережения зажигания на всех режимах его работы как на стационарных,
так и на переходных режимах при поставленных начальных условиях.

И
Этими условиями могут быть максимальные значения крутящего момента
и мощности двигателя или минимальный расход топлива с учетом
отсутствия детонации на всех режимах работы ДВС. Обычно
АД
определяются обе эти характеристики и используются в зависимости от
условий движения, нагрузки автомобиля и манеры езды конкретного
водителя.
2. Для первого приближения углы опережения зажигания могут быть
взяты с аналога данного ДВС с последующей коррекцией в процессе
иб

доводочных работ.
3. Углы опережения зажигания могут быть определены также
расчетным путем, если известна скорость горения топливовоздушной
смеси в различных условиях, которые реализуются на конкретном ДВС.
С

Угол опережения зажигания – это функция многих параметров. Мы


учтем основные параметры, которые оказывают на него максимальное
воздействие, и не станем учитывать остальные, влияние которых
незначительно.
УOЗ = f (α; T; P; Wгор; n; Gв; V и т.д.) , (10)
где α – состав смеси; T – температура топливной смеси перед началом
воспламенения, зависит от начальной температуры всасываемой
топливной смеси, а также от степени ее сжатия и температуры стенок
цилиндров, т. е. от температуры двигателя; Р – давление топливной смеси
перед началом воспламенения и в процессе горения, изменяется с
течением времени, т. е. Р = f(t); Wгор – скорость горения топливовоздушной
смеси; n – частота вращения коленчатого вала (КВ) двигателя; Gв – расход
воздуха; V – объем камеры сгорания, м3 (для расчета примем 0,0004 м3).

60
В научных статьях, где рассматриваются эти теоретические вопросы,
формулы для вычисления УОЗ и других параметров имеют общий вид. Их
невозможно вставить в алгоритм программы для вычисления численных
значений величин.
Этот путь достаточно сложен, так как нет полной теории определения
скорости горения в различных условиях, поэтому в данном случае
требуются соответствующая проверка и корректировка углов опережения
зажигания в процессе испытаний ДВС.
4. Пересчетом угла опережения зажигания, полученного при
проведении испытаний, с одного вида топлива на другое в зависимости от
скорости их сгорания в воздушной среде при различных составах смеси,
температурах и давлениях с последующей корректировкой при
доводочных работах.
Как видно, все эти варианты требуют проведения дополнительных
специальных испытаний.
Разработанная нами модель ДВС имеет все необходимые датчики, а в

И
качестве электронного блока управления (ЭБУ) для обработки сигналов с
датчиков и управления исполнительными механизмами служит контроллер
Ардуино. Через него система подключается к ноутбуку.
АД
Основное достоинство разработанной модели и системы управления в
том, что они позволяют сравнить несколько вариантов вычисления угла
опережения зажигания в различных режимах работы (при изменении
скорости, нагрузки) и отработать алгоритмы и программы управления в
учебной аудитории.
иб

Для решения этой задачи нужно определить алгоритм вычисления


УОЗ в зависимости от числа оборотов коленчатого вала двигателя,
нагрузки на него и наличия детонации топлива (октанового числа бензина),
т. е. по аналогии с механической системой управления УОЗ в
С

распределителе системы зажигания, которая рассматривается в любом


учебнике по электрооборудованию автомобилей. Отличие будет состоять в
том, что величина коррекции УОЗ, вносимая вакуум-корректором, будет
зависеть от частоты вращения вала ДВС: при увеличении частоты
вращения она будет уменьшаться.
Алгоритм уменьшения угла опережения зажигания, вносимого
вакуум-корректором с ростом частоты вращения двигателя, можно
пояснить графически (рис. 53). При вычислении изменения УОЗ,
вносимого вакуум-корректором, нужно умножать её на К, а затем
добавлять к суммарному УОЗ.
На графике видно, что до 2000 об/мин вакуум-корректор вносит
коррекцию на заданную величину угла, пропорциональную увеличению
мощности. Далее величина вносимого угла опережения начинает линейно
стремиться к нулю таким образом, что при 3500 об/мин величина

61
вносимого угла составит половину от выставленного, а при 5000 об/мин и
на более высоких частотах вращения корректор перестаёт вносить
коррекцию и выходной УОЗ остается без изменений.

0,5

0 2000 4000 6000 n,об/мин

Рис. 53. Изменение коэффициента влияния вакуум-коррекции на УОЗ

На основе практических рекомендаций и теоретических выводов алгорит-


ма программы (рис. 54), управляющей УОЗ, заложим следующие зависимости:

И
1. Начальное значение УОЗ = 10−12о – режим холостого хода.
2. При увеличении скорости вращения маховика от оборотов
АД
холостого хода до максимальных УОЗ увеличивается линейно на 20о. При
этом используются сигналы с датчика скорости.
3. При увеличении механической нагрузки на ДВС (увеличении
мощности) и нажатии на педаль газа (увеличении размеров отверстия
дросселя) УОЗ увеличивается на 0 – 20о пропорционально уменьшению
иб

разряжения во впускном коллекторе. Используются сигналы с датчика


давления во впускном коллекторе.
Причем величина, на которую производится увеличение УОЗ, умно-
жается на коэффициент, зависящий от скорости вращения (см. рис. 53).
С

4. При возникновении события «детонации» (вызывается легким


ударом по датчику детонации) происходит прерывание программы, при
котором обработчик прерывания скачкообразно увеличивает УОЗ на 5о, с
последующим уменьшением его на 1° через каждые 10 циклов.
Упрощенный алгоритм программы для микроконтроллера модуля
Ардуино представлен на рис. 54. Он меняется в процессе обучения.
После объявления глобальных переменных и инициализации
устройств в секции setup() попадаем в главный цикл loop(), ждем верхнюю
мертвую точку (ВМТ), запоминаем время ВМТ, ждем нижнюю мертвую
точку (НМТ), заодно в цикле измеряем давление и определяем:
минимальное или среднее. Запоминаем время НМТ, отнимаем от него
время ВМТ, определяем длительность половины оборота, вычисляем
скорость вращения, длительность поворота на 1°, коррекцию УОЗ по
скорости, коррекцию по нагрузке (давлению во впускном коллекторе) в
зависимости от скорости.

62
Начало Прерывание от
детонации
Объявление глобальных
переменных
УОЗ =+5
Секция set()
Настройка:
1.Последовательного порта Количество циклов.
2.Внешних прерываний Счетчик циклов вкл.
3.Портов ввода/вывода

Возврат
Цикл Прерывание от
Loop() детонации

Регистрация импульсов с
датчиков скорости и давл.

Проходит
ВМТ ?
Нет

И
АД
Да

Измерение давления.
Определение минимума Р
иб

Нет
Проходит
НМТ ?
С

Да

Вычисление УОЗ

Счетчик после Нет


прерывания=0?
c=0?
Вычисление момента
зажигания, индикация
Да

Уменьшение УОЗ на 1О

Рис. 54. Упрощенный алгоритм программы для управления УОЗ

63
Если было прерывание, уменьшаем счетчик циклов и УОЗ. Определяем
время подачи искры, включаем светодиод индикации детонации,
возвращаемся в начало цикла loop().
Один из вариантов программного кода управления УОЗ для
контроллера Ардуино представлен ниже.

6.7. Программный код управления УОЗ с комментариями

unsigned int uoz = 10; // устанавливаем глобальные переменные:


unsigned int speed = 0; //угол опережения зажигания, скорость и
unsigned int presure = 0; //давление
int rPin = A0; // устанавливаем входной штырек для АЦП
unsigned int rValue = 0; // значение напряжения с переменного резистора
volatile int compar = 0; // величина на выходе компаратора - вывод 2
volatile int n = 0; // число измерений
volatile unsigned int pValue = 0; // цифровое значение напряжения с датчика

И
давления
volatile unsigned long mAir; // сумма значений давления воздуха → масса
воздуха
АД
volatile unsigned int kFiil;
void setup(){
pinMode(2, INPUT);
pinMode(3, INPUT);
Serial.begin(9600); // старт последовательного вывода данных (для
иб

тестирования)
attachInterrupt(0, blink, RISING); // прерывание на цифровом входе 2 (по
спадающему фронту FALLING)
attachInterrupt(1, blank, RISING);
С

}
void loop(){
n = 0;
delay(200);
rValue = analogRead(rPin); // считываем значение с переменного
резистора
rValue = map(rValue, 0, 1023, 0, 255); //масштабируем
analogWrite(3, rValue); // Pin3 - выход ШИМ
//Вывод на монитор
Serial.print(a, DEC); // число измерений
Serial.print(" mAir= ");
Serial.println(mAir/1024); //масса воздуха
mAir=0;
}

64
void blink() // Внутри функции значения, возвращаемые millis(), не
изменяются, delay()не работает,Serial.println(); нельзя!!!
{
compar = LOW;
while(compar == LOW){
pValue = analogRead(A1);
compar = digitalRead(2);
for (int i=0; 100; i++) {
}
pValue = pValue/16;
mAir += pValue;
a++;
}
void blank() //
{
time = millis();

И
time_ms = time - otime;
otime = time;
return time_ms;
АД
}
if(speed > 5000) // если скорость вращения больше 5000, то
k = 0; // не учитываем изменение мощности
if(speed > 2000) // если скорость вращения больше 2000,
k = 1- (speed -2000)/3000; // вычисляем коэффициент влияния изменения
иб

мощности
}
float getHeading(){
float heading = atan2(scaled.YAxis, scaled.XAxis); // высчитываем
С

направление, корректируем значения с учетом знаков


if(heading < 0) heading += 2*PI;
if(heading > 2*PI) heading -= 2*PI;
return heading * RAD_TO_DEG; // переводим в градусы
}
}
Следует иметь в виду, что приведенные в методических указаниях
электрические схемы, алгоритмы и коды программ использовались для
модели поршневой машины, описанной с целью обучения разработке
устройств на базе микроконтроллеров. Копирование их в курсовые и
дипломные проекты не будет поощряться преподавателем. Студентам
нужно предлагать свои схемы и код.

65
Контрольные вопросы

1. От каких величин, связанных с работой ДВС, зависит УОЗ?


2. Каковы причины возникновения детонации в ДВС?
3. Как работает датчик детонации?
4. Какие параметры ДВС изменяются при изменении УОЗ?
5. Как зависит УОЗ от скорости вращения коленчатого вала ДВС?
6. Как зависит УОЗ от мощности (механической нагрузки) ДВС?
7. Как работает модуль зажигания?
8. Что такое индикаторная диаграмма ДВС?

Библиографический список

1. Блум, Джереми. Изучаем Arduino: инструменты и методы


технического волшебства / Джереми Блум ; пер. с англ. − СПб. : БХВ-

И
Петербург, 2015. − 336 с.
2. Карвинен, Теро. Делаем сенсоры: проекты сенсорных устройств на
базе Arduino и Raspberry Pi / Теро Карвинен, Киммо Карвинен, Вилле
АД
Валтокари ; пер. с англ. − М. : ООО «И.Д. Вильямс», 2015. − 432 с.
3. Петин, В.А. Проекты с использованием контроллера Arduino /
В.А. Петин. − СПб. : БХВ-Петербург, 2014. − 400 с.
4. Соммер, У. Программирование микроконтроллерных плат
Arduino/Freeduino / У. Соммер. − СПб. : БХВ-Петербург, 2012.− 256 с.
иб

5. Зубарев, А.А. Ассемблер для микроконтроллеров AVR : учебное


пособие / А.А. Зубарев. – Омск : СибАДИ, 2007. – 112 с.
6. Испытания автомобильных двигателей. Ч. 1. Характеристики
автомобильных двигателей. Стендовые испытания дизелей : методические
С

указания / сост. С.М. Гергенов. – Улан-Удэ : Изд-во ВСГТУ, 2002.


7. Системы управления бензиновыми двигателями : пер. с нем. – М. :
«За рулем», 2005. − 432 с.
8. Уве, Рокош. Бортовая диагностика / Рокош Уве ; пер. с нем. − М. :
«За рулем», 2013. – 224 с.
9. Konrad Reif (Hrsg.) Bosch Autoelektrik und Autoelektronik Bordnetze,
Sensoren und elektronische Systeme.- Vieweg+Teubner Verlag |Springer
Fachmedien Wiesbaden, GmbH, 2011.

66