Similar presentations:
Широтно-импульсная модуляция. Урок 3
1.
УРОК №3ссылка на видео
2.
Широтно-импульсная модуляцияВывод №1
Микроконтроллеры обычно не могут
выдавать произвольное напряжение. Они
могут выдать либо напряжение питания
(например, 5 В), либо землю (т.е. 0 В)
3.
Широтно-импульсная модуляцияВывод №2
Уровнем напряжения управляется многое:
например, яркость светодиода или скорость
вращения мотора. Для симуляции неполного
напряжения используется ШИМ (ШиротноИмпульсная Модуляция
4.
Скважность■ Отношение полного периода ко времени
включения
Рассмотрим
несколько
сценариев
при
напряжении питания Vcc равным 5 вольтам.
5.
Скважность■ 50% — эквивалент 2,5 В
6.
Скважность■ 10% — эквивалент 0,5 В
7.
Скважность■ 90% — эквивалент 4,5 В
8.
Эксперимент 2. Маячок снарастающей яркостью
Цель: Светодиод должен увеличивать яркость
Детали, которые нужны для выполнения ПР «Маячок с нарастающей яркостью»:
1 плата Arduino Uno
1 беспаечная макетная плата
1 светодиод
1 резистор номиналом 220 Ом
2 провода «папа-папа»
9.
Принципиальная схема10.
Схема на макетке11.
// даём разумное имя для пина №9 со светодиодом// (англ. Light Emitting Diode или просто «LED»)
// Так нам не нужно постоянно вспоминать куда он подключён
#define LED_PIN 9
void setup()
{
// настраиваем пин со светодиодом в режим выхода,
// как и раньше
pinMode(LED_PIN, OUTPUT);
}
Скетч
void loop()
{
// выдаём неполное напряжение на светодиод
// (он же ШИМ-сигнал, он же PWM-сигнал).
// Микроконтроллер переводит число от 0 до 255 к напряжению
// от 0 до 5 В. Например, 85 — это 1/3 от 255,
// т.е. 1/3 от 5 В, т.е. 1,66 В.
analogWrite(LED_PIN, 85);
// держим такую яркость 250 миллисекунд
delay(250);
// выдаём 170, т.е. 2/3 от 255, или иными словами — 3,33 В.
// Больше напряжение — выше яркость!
analogWrite(LED_PIN, 170);
delay(250);
// все 5 В — полный накал!
analogWrite(LED_PIN, 255);
// ждём ещё немного перед тем, как начать всё заново
delay(250);
}
12.
Задания для самостоятельного решения■ Отключите питание, отключите светодиод от 9-го порта и подключите к 11-му.
Измените программу так, чтобы схема снова заработала
■ Измените код программы так, чтобы в течение секунды на светодиод
последовательно подавалось усреднённое напряжение 0, 1, 2, 3, 4, 5 В
13.
// даём разумное имя для пина №9 со светодиодом// (англ. Light Emitting Diode или просто «LED»)
// Так нам не нужно постоянно вспоминать куда он подключён
#define LED_PIN 11
void setup()
{
// настраиваем пин со светодиодом в режим выхода,
// как и раньше
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
// выдаём неполное напряжение на светодиод
// (он же ШИМ-сигнал, он же PWM-сигнал).
// Микроконтроллер переводит число от 0 до 255 к напряжению
// от 0 до 5 В. Например, 85 — это 1/3 от 255,
// т.е. 1/3 от 5 В, т.е. 1,66 В.
analogWrite(LED_PIN, 85);
// держим такую яркость 250 миллисекунд
delay(250);
// выдаём 170, т.е. 2/3 от 255, или иными словами — 3,33 В.
// Больше напряжение — выше яркость!
analogWrite(LED_PIN, 170);
delay(250);
// все 5 В — полный накал!
analogWrite(LED_PIN, 255);
// ждём ещё немного перед тем, как начать всё заново
delay(250);
}
14.
// даём разумное имя для пина №9 со светодиодом// (англ. Light Emitting Diode или просто «LED»)
// Так нам не нужно постоянно вспоминать куда он подключён
#define LED_PIN 9
void setup()
{
// настраиваем пин со светодиодом в режим выхода,
// как и раньше
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
analogWrite(LED_PIN, 0);
delay(250);
analogWrite(LED_PIN, 51);
delay(250);
analogWrite(LED_PIN, 102);
delay(250);
analogWrite(LED_PIN, 153);
delay(250);
analogWrite(LED_PIN, 204);
delay(250);
analogWrite(LED_PIN, 255);
delay(250);
}