4.04.2. Лабораторная работа №4.4.2.md
Аналоговое управление мотором
Тема работы
В параграфе про ШИМ мы уже управляли скоростью вентилятора, но делали это с помощью быстрых цифровых импульсов. Теперь, когда мы освоили ЦАП, давайте попробуем управлять мотором с помощью настоящего, плавного аналогового напряжения. В этой лабораторной работе мы подключим вентилятор через MOSFET-транзистор и будем регулировать его скорость, изменяя напряжение на выходе ЦАП.
Цель
- Научиться управлять мощной нагрузкой с помощью ЦАП и транзистора.
- На практике сравнить аналоговое управление с ШИМ-управлением.
- Понять, как плавное изменение напряжения влияет на работу мотора.
Оборудование и материалы
- Отладочная плата
Рудирон
. - Макетная плата и модуль питания.
- Аккумуляторная батарея 9В.
- Вентилятор.
- 1
N-канальный MOSFET
. - Соединительные провода.
- USB-кабель для подключения
Рудирона
. - Компьютер с
Arduino IDE
.
Ход работы
-
Зачем транзистор, если есть ЦАП?
Выход ЦАП на пине 27, как и любой другой пин микроконтроллера, является слаботочным. Он может выдавать нужное нам напряжение, но не может обеспечить достаточную силу тока для вращения мотора. Если подключить вентилятор напрямую, он либо не сдвинется с места, либо, что хуже, повредит пин микроконтроллера.
Транзистор в этой схеме работает как усилитель мощности. Слабый, но точный сигнал с ЦАП подаётся на затвор MOSFET, а тот, в свою очередь, управляет мощным потоком тока от внешнего источника питания к вентилятору.
Таким образом, мы получаем лучшее от двух миров: точное аналоговое управление от
Рудирона
и мощность от внешнего источника. -
Сборка схемы
Схема очень похожа на ту, что мы использовали для управления вентилятором через ШИМ, но управляющий сигнал мы возьмём с пина ЦАП.
- Подготовьте питание. Используйте внешний источник 5В от модуля питания для вентилятора. Соедините земли (
GND
)Рудирона
и модуля питания. - Подключите вентилятор:
- Красный провод (
+
) вентилятора — к шине 5V на макетной плате. - Чёрный провод (
−
) вентилятора — к выводу Сток (Drain)MOSFET
.
- Красный провод (
- Подключите MOSFET:
- Исток (Source) — к шине GND.
- Затвор (Gate) — к пину 27
Рудирона
(выход ЦАП).
- Подготовьте питание. Используйте внешний источник 5В от модуля питания для вентилятора. Соедините земли (
-
Написание и загрузка кода
- Установите перемычку
PRG | RUN
в положениеPRG
. -
В
Arduino IDE
введите следующий код:// Подключаем библиотеку для прямого управления ЦАП #include "rudiron/dac.h" void setup() { // pinMode для ЦАП не нужен } void loop() { // Плавно увеличиваем напряжение на выходе ЦАП // Перебираем значения от 0 до 4095 for (int value = 0; value <= 4095; value += 20) { // Устанавливаем напряжение на выходе ЦАП Rudiron::DAC::getDAC2().write_pin_single(Rudiron::PORT_PIN_E0, value); delay(20); // Небольшая пауза для плавности } // Плавно уменьшаем напряжение for (int value = 4095; value >= 0; value -= 20) { Rudiron::DAC::getDAC2().write_pin_single(Rudiron::PORT_PIN_E0, value); delay(20); } }
- Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы
Сразу после загрузки вентилятор начнёт плавно раскручиваться до максимальной скорости, а затем так же плавно останавливаться. Обратите внимание на звук мотора — он должен быть ровным, без высокочастотного писка, который иногда сопровождает работу с ШИМ.
Результаты
Вы успешно создали систему аналогового управления скоростью мотора. Вы на практике увидели, как с помощью ЦАП и транзистора можно плавно и точно регулировать мощность, подаваемую на нагрузку.
Анализ результатов
Rudiron::DAC::getDAC2()...
. Эта команда напрямую устанавливает на пине 27 аналоговое напряжение, пропорциональное переданному значению (от 0 до 4095).for (int value = ...)
. Циклыfor
плавно изменяют это значение, заставляя напряжение на затворе MOSFET расти и падать.- MOSFET. Транзистор реагирует на это плавное изменение напряжения и пропорционально открывает канал для тока, идущего на вентилятор. В отличие от ШИМ, где транзистор работал как очень быстрый ключ (полностью открыт/полностью закрыт), здесь он работает в линейном режиме, как регулируемый кран.
Примечание для любознательных. Если ваш
MOSFET
не полностью открывается от 3.3В, вы можете заметить, что вентилятор вращается не на полную мощность. В этом случае можно использовать приём из лабораторной работы 4.2.3 - «подтянуть» затвор к 5В через резистор 10 кОм. Это позволит получить более высокое управляющее напряжение на затворе и сильнее открыть транзистор.
Выводы
В этой лабораторной работе вы освоили один из самых «чистых» способов управления мощностью — с помощью ЦАП. Такое управление обеспечивает более плавную и тихую работу моторов и используется там, где важна высокая точность и отсутствие импульсных помех, характерных для ШИМ.
Вопросы для самопроверки
- Почему в этой схеме необходим транзистор?
- В каком режиме в этой схеме работает MOSFET: в ключевом или линейном?
- Чем отличается управление мотором через ЦАП от управления через ШИМ?
- В коде мы изменяем значение
value
с шагом20
. Что произойдёт, если изменить шаг на1
? А на100
? - Как изменить код, чтобы вентилятор постоянно работал на 25% от максимальной скорости? (Подсказка: 25% от 4095 — это примерно 1024).
Вы научились генерировать и применять настоящие аналоговые сигналы! В следующем параграфе мы немного отдохнём от аналоговой темы и вернёмся к цифровым сигналам, чтобы научить Рудирон
издавать звуки и измерять временные интервалы.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home