Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управление портами вывода микроконтроллера с помощью шим – модуляцииСодержание книги
Поиск на нашем сайте Цель работы Произвести программирование лабораторного стенда АРД-1, научиться управлять портами вывода микроконтроллера.
Теоретическая справка В данном примере используется широтно-импульсная модуляция (ШИМ). Микроконтроллеры обычно не могут выдавать произвольное напряжение. Они могут выдать либо напряжение питания (например, 5 В), либо землю (т.е. 0 В). Но уровнем напряжения управляется многое: например, яркость светодиода или скорость вращения мотора. Для симуляции неполного напряжения используется ШИМ (Широтно-Импульсная Модуляция, англ. Pulse Width Modulation или просто PWM).
Рис. 63 Широтно-импульсная модуляция ШИМ Выход микроконтроллера переключается между землёй и напряжением питания (Vcc) тысячу раз в секунду. Иначе говоря, имеет частоту тысячу герц. Глаз не замечает мерцания более 50 Гц, поэтому кажется, что светодиод не мерцает, а горит в полсилы. Аналогично, разогнанный мотор не может остановить вал за миллисекунды, поэтому ШИМ-сигнал заставит вращаться его в неполную силу. Отношение полного периода к времени включения называют скважностью (англ. duty cycle). На рисунке 2.2. - несколько примеров, когда напряжение питания Vcc равно 5 вольтам.
Рис. 64 ШИМ при напряжении питания Vcc равным 5 вольтам.
Ход работы Для начала нужно выбрать необходимые элементы - осциллограф, светодиод, резистор, макетную плату и Arduino Uno в библиотеке компонентов.
Рис.65 - Выбор компонента
Рис.66 - Выбор компонента
Рис.67 - Выбор компонента
Рис.68 - Выбор компонента
Соберем схему в соответствии с рисунком 65, подключим осциллограф для отображения ШИМ сигнала и запустим подадим схему.
Рис. 69 - ШИМ при напряжении питания Vcc равным 2.5 вольтам
Пример программного кода для светодиода с нарастающей яркостью:
#define LED_PIN 1
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); // задержка 250 миллисекунд delay(250); }
Идентификаторы переменных, констант, функций (в этом примере идентификатор LED_PIN) являются одним словом (т.е. нельзя создать идентификатор LED PIN). Идентификаторы могут состоять из латинских букв, цифр и символов подчеркивания _. При этом идентификатор не может начинаться с цифры. Например: PRINT // верно PRINT_3D // верно MY_PRINT_3D // верно _PRINT_3D // верно 3D_PRINT // ошибка ПЕЧАТЬ_3Д // ошибка PRINT:3D // ошибка Регистр букв в идентификаторе имеет значение. Т.е. LED_PIN, LED_pin и led_pin с точки зрения компилятора — различные идентификаторы. Идентификаторы, создаваемые пользователем, не должны совпадать с предопределенными идентификаторами и стандартными конструкциями языка; если среда разработки подсветила введенный идентификтор каким-либо цветом, необходимо заменить его на другой. Директива #define просто говорит компилятору заменить все вхождения заданного идентификатора на значение, заданное после пробела (здесь 1), эти директивы помещают в начало кода. В конце данной директивы точка с запятой; не допустима. Названия идентификаторов всегда нужно делать осмысленными, чтобы при возвращении к ранее написанному коду было ясно, зачем нужен каждый из них. Также полезно снабжать код программы комментариями, которые начинаются с двух прямых слешей // и многострочные, заключённые между /* */, // однострочный комментарий следует после двойного слеша до конца строки, /* многострочный комментарий помещается между парой слеш-звездочка и звездочка-слеш */. Комментарии игнорируются компилятором, зато полезны при чтении давно написанного, а особенно чужого, кода. Функция analogWrite (pin, value) не возвращает никакого значения и принимает два параметра: o pin — номер порта, на который поступает сигнал o value — значение скважности ШИМ, которое поступает на порт. Он может принимать целочисленное значение от 0 до 255, где 0 — это 0%, а 255 — это 100%. Задания к лабораторной работе
|
||||||||||||||
|
Последнее изменение этой страницы: 2021-05-27; просмотров: 411; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.006 с.) |