Программное управление цифровыми и аналоговыми сигналами

Хорошевич Павел Александрович

Сегодня рассмотрим:

  • назначение светодиода, резистора и кнопки; их подключение;

  • использование микроконтроллеров;

  • программирование микроконтроллера для создания и чтения цифровых сигналов.

Задача

Светофор

Светофор

Реализовать схему в которой светодиод будет мигать с необходимой периодичностью.

Ток, напряжение и сопротивление. Закон Ома

Светодиод. Прямое подключение к батарее

Светодиод (LED) – светоизлучающий диод.

Ток может проходить по светодиоду только в одном направлении – от анода (+) к катоду (-).

Светодиоды

Светодиоды

Анод и катод

Анод и катод

Через светодиод течёт слишком большой электрический ток.

Сила тока и напряжение

Электрический ток \(I\) – это направленное движение электрически заряженных частиц внутри проводника. Сила тока измеряется в амперах (А).

Напряжение \(U\) представляет из себя разность электрических потенциалов между двумя точками. Напряжение измеряется в вольтах (В).

Ток течёт от точки с более высокой потенциальной энергией к точке с более низкой потенциальной энергией.

Сопротивление

Резистор – это компонент, который уменьшает силу тока в цепи. Сопротивление измеряется в Омах (Ом или \(\Omega\)).

Закон Ома: \[ I=\frac{U}{R} \]

Треугольник Ома

Треугольник Ома

Параллельные и последовательные проводники

Последовательное соединение

Последовательное соединение

\[ I_1=I_2\\ U=U_1+U_2 \]

Параллельное соединение

Параллельное соединение

\[ U_1=U_ 2\\ I=I_1+I_2 \]

Расчёт сопротивления резистора

Падение напряжения на светодиоде – 2 В, максимальный ток – 20 мА (0,02 А).

Напряжение батареи питания – 9 В. Резистор должен снизить ток, проходящий через светодиод.

Светодиод и резистор подключим последовательно. Значит: \[ U_{батарея}=U_{резистор}+U_{LCD} \]

\[ U_{резистор}=U_{батарея}-U_{LCD}= 7\ В \]

В цепи должен быть ток 20 мА. Светодиод и резистор подключены последовательно, значит \[ I_{LCD}=I_{резистор} \]

Используем закон Ома: \[ \begin{align} R &= \frac{U_{батарея} - U_{LCD}}{I_{LCD}} \\ &= \frac{7\ В}{0.02\ A} \\ &= 350\ Ом \end{align} \]

Ближайшее подходящее значение – 390 Ом.

Цветовая маркировка резисторов

Цветовое кодирование резисторов

Цветовое кодирование резисторов

Схема с резистором

Не важно, до или после светодиода располагается резистор.

Тактовая кнопка

Тактовая кнопка

Тактовая кнопка

Схема

Схема

Схема с тактовой кнопкой

Схема с тактовой кнопкой

Прототипирование. Макетная плата

Макетная плата (Breadboard) используется для быстрого прототипирования электрических схем.

Пронумерованные группы из пяти контактов, соединены между собой.

Контактные шины + и соединены на протяжении всей макетной платы.

Принципиальная схема. Обозначения

Обозначения элементов

Обозначения элементов

Микроконтроллеры. Arduino

Микроконтроллер

Микроконтроллер – это микросхема, которая выполняет загруженную в неё программу. Программа может получать информацию от датчиков и управлять внешними устройствами.

Микроконтроллер – это компьютер на одной микросхеме (процессор, оперативная память, постоянная память).

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

Пример такой платы – Arduino.

Arduino

Arduino Uno

Arduino Uno

Arduino Mega

Arduino Mega

Arduino Nano

Arduino Nano

Arduino Uno

Arduino Uno

Задача

Рассчитайте сопротивление резистора, который нужно соединить последовательно со светодиодом. Напряжение на выходе пина 9 – 5 В. Падение напряжения на светодиоде – 2 В. Предельная сила тока через светодиод – 20 мА.

Ответ: \[ R=\frac{5\ В - 2\ В}{20\ мА}=\frac{3\ В}{0.02\ А}=150\ Ом \]

Программирование микроконтроллеров. Управление цифровыми сигналами

Среда разработки Arduino IDE (язык C++)

Arduino IDE

Arduino IDE

RobboScratch (визуализированный язык)

RobboScratch

RobboScratch

Скетч. Два основных компонента

Скетч обязательно должен содержать две функции: setup() и loop():

void setup() {
  // выполняется один раз
}
void loop() {
  // повторяется многократно
}

Входной и выходной сигнал

Цифровые пины (0 – 13) Arduino могут работать на вход и на выход.

Для выбора режима работы используется функция pinMode(номер_пина, режим)

Режим работы задаётся двумя константами:

  • INPUT – пин работает на вход;

  • OUTPUT – пин работает на выход.

По умолчанию все пины Arduino настроены на вход.

Выходной цифровой сигнал

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

digitalWrite(пин, состояние)

Состояние пина задаётся двумя константами:

  • HIGH – на выходе пина 5 В;

  • LOW – на выходе пина 0 В.

Готовый скетч

void setup()
{
  pinMode(9, OUTPUT);     // настраиваем пин на выход
}
void loop()
{
  digitalWrite(9, HIGH);  // на выходе пина 9 ставим напряжение 5 В
  delay(1000);            // пауза на 1000 мс (1 с)
  digitalWrite(9, LOW);   // на выходе пина 9 ставим напряжение 0 В
  delay(1000);            // пауза на 1000 мс (1 с)
}

Модель проекта

Модель проекта

Чтение цифрового сигнала

Схема с тактовой кнопкой

Для чтения значения с цифрового пина используется функция

digitalRead(номер_пина)

Функция возвращает целое число 0 (LOW) или 1 (HIGH).

Стягивающий и подтягивающий резисторы

Если кнопка не нажата, то значение на пине 7 не определено.

В схеме с кнопкой нужно использовать стягивающий (к земле) или подтягивающий (к питанию) резисторы.

Итоги

  • Для правильного проектирования схемы нужно учитывать характеристики компонентов – максимальный допустимый ток, сопротивление, падение напряжения.

  • Чтобы ограничить ток в цепи, используется резистор .

  • Для прототипирования электрических цепей удобно использовать макетную плату .

  • С помощью микроконтроллера можно управлять цифровыми сигналами – выходными и входными.

Вопрос? Вопрос. Вопрос!

  1. Какой закон отражает взаимосвязь между силой тока, напряжением и сопротивлением?
  2. Какие две функции обязательно должны быть в Arduino-скетче? Какая из них запускается один раз? запускается многократно ?
  3. С помощью какой функции задаётся режим работы пина на Arduino (вход или выход)?
  4. Какая функция меняет напряжение на выходе цифрового пина Arduino? получает входной цифровой сигнал?
  5. Для чего последовательно с кнопкой подключается резистор?

Обработка аналоговых сигналов

Рассмотрим:

  • виды и особенности использования датчиков;
  • чем аналоговый сигнал отличается от цифрового и как один преобразуется в другой;
  • как с помощью Arduino измерить напряжение;
  • как использовать Arduino для изменения яркости светодиода и управления сервоприводом.

Задача

Умная лампа

Умная лампа

Реализовать схему в которой включение и выключение светодиода будет зависеть от освещённости в комнате.

Измерительные устройства - датчики

Измерительные устройства. Фоторезистор

Сопротивление некоторых материалов зависит от внешних условий: температуры, освещённости, давления и др.

Фоторезистор – компонент, сопротивление которого зависит от уровня освещённости.

Фоторезистор

Фоторезистор

Графическое обозначение фоторезистора

Графическое обозначение фоторезистора

Делитель напряжения

В последовательном соединении \(I=I_1=I_2\) а \(U=U_1+U_2\).

Общее сопротивление: \[ R=R_1+R_2 \]

Значит: \[ \frac{U}{R_1+R_2}=\frac{U_2}{R_2} \]

Напряжение на втором резисторе1: \[ U_2=U\cdot\frac{R_2}{R_1+R_2} \]

Потенциометр

Делитель напряжения реализован отдельным компонентом под названием потенциометр.

Подключив контакт A к 5 В, контакт B к земле а контакт C к вольтметру получим делитель напряжения с ручной регулировкой2.

Эта схема подключения подходит для многих аналоговых датчиков.

Обозначение

Обозначение

Потенциометр

Потенциометр

Аналоговые и цифровые сигналы

Различие сигналов

Значение напряжения на датчике будет аналоговым – непрерывной величиной. Микроконтроллер может обрабатывать только цифровые данные – 0 или 1.

Аналоговый сигнал

Аналоговый сигнал

Цифровой сигнал

Цифровой сигнал

Преобразование сигналов. АЦП

Для преобразования аналогового сигнала в цифровой используется аналогово-цифровой преобразователь (АЦП).

АЦП характеризуется разрядностью: на выходе будет двоичное число с этим числом разрядов.

Чем больше разрядов, тем больше разных двоичных чисел можно записать.

С помощью 3-х разрядов можно записать \(2^3=8\) двоичных чисел (000, 001, 010 и т.д.)

Чтение аналогового сигнала с помощью Arduino

Пины с A0 по A5 на Arduino служат для чтения аналоговых сигналов.

analogRead(пин);

Разрядность АЦП Arduino UNO – 10 бит.

Функция возвращает значения от 0 до 1023.

Итоговая схема

Итоговая программа

int lt;                     // уровень освещённости

void setup()
{
  pinMode(9, OUTPUT);       // пин со светодиодом на выход
}

void loop()
{
  lt = analogRead(A0);      // показания фоторезистора с пина A0
  if (lt < 512) {           // если темно...
    digitalWrite(9, HIGH);  // включить светодиод на пине 9
  } else {                  // иначе...
    digitalWrite(9, LOW);   // выключить светодиод
  }
}

Симуляция проекта в TinkerCad

Симуляция проекта в TinkerCad

Создание аналогового сигнала

Широтно-импульсная модуляция (ШИМ)

С помощью ШИМ можно имитировать изменение напряжения на цифровом выходе.

Основная характеристика ШИМ-сигнала - коэффициент заполнения (D).

ШИМ-сигналы в Arduino

ШИМ-сигнал на Arduino могут генерировать пины с символом ~ (тильда).

Для генерации ШИМ-сигнала используется функция

analogWrite(пин, коэфф.);

Значение коэффициента указывается в диапазоне от 0 до 255.

analogWrite(3, 0);
analogWrite(11, 127);
analogWrite(9, 255);

\[ U_{ср}=\frac{D}{255}\cdot 5\ В \]

Исполнительные устройства. Серводвигатель

Назначение и устройство серводвигателя

Устройство сервопривода

Устройство сервопривода

Управление серводвигателем с помощью ШИМ

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

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

Нет необходимости самостоятельно отправлять импульсы нужной длины – для этого существуют готовые библиотеки .

Итоги

  • Некоторые датчики созданы на основе материалов, которые меняют своё сопротивление.

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

  • Измеренное напряжение – аналоговый сигнал. Его нужно преобразовать в цифровой.

  • Arduino может считывать аналоговые сигналы, но не может их создавать.

  • Для имитации изменения напряжения используется ШИМ-сигнал.

Arduino-функции

Основные функции

Основные функции

Вопрос? Вопрос. Вопрос!

  1. Какой компонент меняет своё сопротивление под действием света?
  2. Как называется компонент, который реализует делитель напряжения в одном корпусе?
  3. Расшифруйте аббревиатуру АЦП. От чего зависит точность преобразования?
  4. С помощью какой функции можно прочитать значение с аналогового пина Arduino?
  5. С помощью какой функции можно сгенерировать ШИМ-сигнал на Arduino?
  6. Правда ли, что любой цифровой пин Arduino может сгенерировать ШИМ-сигнал?

Сноски

  1. Симуляция делителя напряжения

  2. Симулятор работы потенциометра