Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 327; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.137.164 (0.007 с.) |