Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование микроконтроллера Arduino в информационно-управляющих системах. Учебное пособие
.pdf
Результат работы скетча:
1. Старт игры. Подсвечивание светодиода – индикатора таймера.
2. Ожидание случайного промежутка времени от 5 до 15 секунд.
3. Звуковой сигнал. Отключение светодиода – индикатора таймера.
4. Считывание нажатия кнопки.
5. Звуковой сигнал.
6. Определение победителя и подсвечивание соответствующего светодиода.
7. Ожидание перезапуска игры (уход в бесконечный цикл while(1);
5.10.3 Практическое задание
Соберите игру «Кто быстрее» и расширьте ее функционал указанным
способом.
Вариант 1: Сделайте вариант игры для 4 игроков. При необходимости,
используйте вторую макетную плату из другого комплекта «Матрешка Z».
Вариант 2: Подключите LCD дисплей. Выводе на дисплей имя победителя.
Вариант 3: В программе примера есть «баг» - если кнопка будет нажата до
звукового сигнала, игрок заведомо победит. Исправьте этот недочет в коде
программы любым из способов.
91

6. Специализированные лабораторные работы
6.1 Лабораторная работа №11 «Датчик концентрации горючих и угарного
газов MQ9. Автономная сигнализация»
Цель работы: научиться работать с датчиком угарного газа, метана,
природного газа, сжиженного углеводородного газа (LPG), изобутана и (n)бутана.
6.1.1 Краткие теоретические сведения
Универсальный датчик MQ-9 (рисунок 45) определяет концентрацию
угарного газа, а также горючих газов, таких, как метан, природный газ, сжиженный
углеводородный газ (LPG), изобутан и (n)бутан. Его сфера применения очень
широка. На базе Arduino возможно, например, собрать автономную сигнализацию
для определения утечки одного из вышеперечисленных веществ, что и будет
рассмотрено в данной лабораторной работе.
Рисунок 45 – Датчик газа MQ9 компании «Амперка» [2]

Датчик построен на базе полупроводникового газоанализатора MQ-9. На
логический выход датчик выдает аналоговый сигнал, пропорциональный
содержанию определенного газа в окружающей среде. В газоанализатор встроен
нагревательный элемент, который необходим для химической реакции.
Предусмотрена возможность контроля нагревательного элемента сенсора через
отдельную группу контактов. Также возможно программно включать и выключать
нагреватель, что значительно продлит время автономной работы устройства.
В общем случае датчик подключается двумя трехпроводными шлейфами. По
первому осуществляется питание датчика и снятие показаний сенсора, по второму -
подается напряжение на нагревательный элемент сенсора. Если нет необходимости
в ручном управлении нагревателем, можно оставьте только первый шлейф, а
питание на нагреватель подавать отдельно или с помощью другого источника
питания.
Диапазон измерений:
угарный газ: 20–2000 ppm;
метан: 500–10000 ppm;
сжиженные углеводородные газы: 500–10000 ppm;
Характеристики:
напряжение питания нагревателя: 5 В;
напряжение питания датчика: 3,3–5 В;
потребляемый ток: 150 мА;
габариты: 25,4×25,4 мм [2].
Для работы с датчиком необходима специальная библиотека,
предоставляемая производителем и доступная по ссылке:
https://github.com/amperka/TroykaMQ
Датчик совместим с макетной платой. Схема расположения контактов на
датчике приведена на рисунке 46.
93

Рисунок 46 – схема расположения контактов на датчике MQ9 [2]
Контакты подключения шлейфов:
1 группа:
1. Сигнальный (S) — Выходной сигнал сенсора. Подключается к
аналоговому пину микроконтроллера.
2. Питание (V) — Питание датчика. Подключается к пину +5В.
3. Земля (G) — Подключается к пину GND.
2 группа:
1. Сигнальный (E) — Управление питанием нагревателя. Подключается к
цифровому пину платы Arduino.
2. Питание (H) — Питание нагревателя. Подключается к пину +5В.
3. Земля (G) — Подключается к пину GND. [2]
6.1.2 Пример
Подключите контакты датчика MQ9 к плате Arduino: контакты V и H к пину
+5В, контакты G – к пину GND, контакт S – к пину А0, контакт E – к пину 11.
94

Код скетча:
// подключение библиотеки от компании Амперка для работы с датчиком
#include <TroykaMQ.h>
// пин, к которому подключен датчик
#define PIN_MQ9 A0
// пин, к которому подключен нагреватель датчика
#define PIN_MQ9_HEATER 11
// создание объекта для работы с датчиком
// и указание номера пина выходного сигнала и нагревателя
MQ9 mq9(PIN_MQ9, PIN_MQ9_HEATER);
void setup()
{
// открываем последовательный порт (см. соответствующий раздел
краткого справочника языка Wiring и предыдущие лабораторные работы для
повторения знаний о последовательные передачи данных в Arduino)
Serial.begin(9600);
// запускаем цикл
// в течении 60 секунд на нагревательный элемент подаётся 5 вольт
// в течении 90 секунд — 1,5 вольта
mq9.cycleHeat();
}
void loop()
{
// когда датчик нагрелся, но еще не откалиброван
if (!mq9.isCalibrated() && mq9.atHeatCycleEnd()) {
// выполняем калибровку датчика на чистом воздухе
mq9.calibrate();
// выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
Serial.print("Ro = ");
95

Serial.println(mq9.getRo());
// запускаем цикл
mq9.cycleHeat();
}
// если датчик нагрелся и калибровка была совершена успешно
if (mq9.isCalibrated() && mq9.atHeatCycleEnd()) {
// выводим отношения текущего сопротивление датчика
// к сопротивлению датчика в чистом воздухе (Rs/Ro)
Serial.print("Ratio: ");
Serial.print(mq9.readRatio());
// выводим значения газов в ppm
Serial.print(" LPG: ");
Serial.print(mq9.readLPG());
Serial.print(" ppm ");
Serial.print(" Methane: ");
Serial.print(mq9.readMethane());
Serial.print(" ppm ");
Serial.print(" CarbonMonoxide: ");
Serial.print(mq9.readCarbonMonoxide());
Serial.println(" ppm ");
delay(100);
// запускаем цикл
mq9.cycleHeat();
}
}
6.1.3 Практическое задание
Соберите электрическую схему с датчиком MQ9.
96

Вариант 1: К плате подключается пьезо-динамик. Задайте небольшое
пороговое значение для угарного газа. При достижении этого значения срабатывает
звуковой сигнал. Сделайте вашу сигнализацию автономной: используйте батарейку
Крона и наклемники для питания устройства.
Вариант 2: К плате подключается LCD дисплей. На экран выводится
информация о процентном содержании горючих и угарного газов в воздухе.
Сделайте вашу сигнализацию автономной: используйте батарейку Крона и
наклемники для питания устройства.
6.2 Лабораторная работа №12 «Датчик уровня шума. Шумомер на базе
Arduino»
Цель работы: научиться работать с датчиком уровня шума. Сделать
простейший шумомер на базе Arduino.
6.2.1 Краткие теоретические сведения
Датчик шума (рисукок 47) от компании Амперка возвращает аналоговый
сигнал в диапазоне 0-1023 (0–5 В). Выходное напряжение пропорционально средней
шумности за последние несколько сотен миллисекунд. Для регулировки
чувствительности на датчике предусмотрен триммер.
97

Рисунок 7 – Датчик шума компании «Амперка» [2]
Контакты датчика подключаются следующим образом (рисунок 48):
1. Vсс питание. Подключается к пину +5В.
2. Земля (GND). Подключается к пину GND.
3. Сигнальный (S). Подключается к аналоговому пину платы.
Рисунок 48 – схема расположения контактов на датчике шума [2]
98

6.2.2 Пример
Датчик подключен к плате Arduino. Пин Vcc – к пину +5в, пин датчика GND –
к пину Arduino GND, пин S – к аналоговому пину А5.
Код скетча:
#define LED_PIN 13 // Встроенный светодиод Arduino
#define LOUDNESS_SENSOR_PIN A5 // Датчик шума подключается к пину А5
#define TRESHOLD 400 // Установка порога срабатывания
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Считаем текущий уровень шума
int loudness = analogRead(LOUDNESS_SENSOR_PIN);
// Если громкость выше пороговой..
if (loudness > TRESHOLD)
// включаем светодиод,
digitalWrite(LED_PIN, HIGH);
else
// если нет - погасим
digitalWrite(LED_PIN, LOW);
}
6.2.3 Практическое задание
Соберите электрическую схему с датчиком шума.
99

Вариант 1: Используйте 3 светодиода для обозначения 3 порогов уровня
шума. Когда уровень шума поднимается выше очередного порога, загорается
дополнительный светодиод (1 светодиод – низкий уровень шума, 2 – средний, 3 –
высокий).
Вариант 2: К плате подключается LCD дисплей. На экран выводится
информация о текущем уровне шума. Используйте батарейку Крона и наклемники,
чтобы сделать устройство автономным.
6.3 Лабораторная работа №13 «Датчик водорода MQ8. Прибор
измерения содержания водорода в воздухе с аналоговым указателем»
Цель работы: научиться работать с датчиком водорода, использовать
механику (сервопривод) для наглядного представления информации.
6.3.1 Краткие теоретические сведения
Датчик водорода компании Амперка (рисунок 49) построен на базе
полупроводникового газоанализатора MQ-8. Устройство возвращает выдаёт
аналоговый сигнал, пропорциональный содержанию водорода. В газоанализатор
встроен нагревательный элемент, который необходим для химической реакции.
Предусмотрена возможность контроля нагревательного элемента сенсора через
отдельную группу контактов.
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
