4.04.2. Лабораторная работа №4.4.2.md


Аналоговое управление мотором

Тема работы

В параграфе про ШИМ мы уже управляли скоростью вентилятора, но делали это с помощью быстрых цифровых импульсов. Теперь, когда мы освоили ЦАП, давайте попробуем управлять мотором с помощью настоящего, плавного аналогового напряжения. В этой лабораторной работе мы подключим вентилятор через MOSFET-транзистор и будем регулировать его скорость, изменяя напряжение на выходе ЦАП.

Цель

  • Научиться управлять мощной нагрузкой с помощью ЦАП и транзистора.
  • На практике сравнить аналоговое управление с ШИМ-управлением.
  • Понять, как плавное изменение напряжения влияет на работу мотора.

Оборудование и материалы

  • Отладочная плата Рудирон.
  • Макетная плата и модуль питания.
  • Аккумуляторная батарея 9В.
  • Вентилятор.
  • 1 N-канальный MOSFET.
  • Соединительные провода.
  • USB-кабель для подключения Рудирона.
  • Компьютер с Arduino IDE.

Ход работы

  1. Зачем транзистор, если есть ЦАП?

    Выход ЦАП на пине 27, как и любой другой пин микроконтроллера, является слаботочным. Он может выдавать нужное нам напряжение, но не может обеспечить достаточную силу тока для вращения мотора. Если подключить вентилятор напрямую, он либо не сдвинется с места, либо, что хуже, повредит пин микроконтроллера.

    Транзистор в этой схеме работает как усилитель мощности. Слабый, но точный сигнал с ЦАП подаётся на затвор MOSFET, а тот, в свою очередь, управляет мощным потоком тока от внешнего источника питания к вентилятору.

    Таким образом, мы получаем лучшее от двух миров: точное аналоговое управление от Рудирона и мощность от внешнего источника.

  2. Сборка схемы

    Схема очень похожа на ту, что мы использовали для управления вентилятором через ШИМ, но управляющий сигнал мы возьмём с пина ЦАП.

    • Подготовьте питание. Используйте внешний источник 5В от модуля питания для вентилятора. Соедините земли (GND) Рудирона и модуля питания.
    • Подключите вентилятор:
      • Красный провод (+) вентилятора — к шине 5V на макетной плате.
      • Чёрный провод () вентилятора — к выводу Сток (Drain) MOSFET.
    • Подключите MOSFET:
      • Исток (Source) — к шине GND.
      • Затвор (Gate) — к пину 27 Рудирона (выход ЦАП).
  3. Написание и загрузка кода

    • Установите перемычку 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», чтобы загрузить код на плату.
  4. Проверка работы

    Сразу после загрузки вентилятор начнёт плавно раскручиваться до максимальной скорости, а затем так же плавно останавливаться. Обратите внимание на звук мотора — он должен быть ровным, без высокочастотного писка, который иногда сопровождает работу с ШИМ.

Результаты

Вы успешно создали систему аналогового управления скоростью мотора. Вы на практике увидели, как с помощью ЦАП и транзистора можно плавно и точно регулировать мощность, подаваемую на нагрузку.

Анализ результатов

  • Rudiron::DAC::getDAC2().... Эта команда напрямую устанавливает на пине 27 аналоговое напряжение, пропорциональное переданному значению (от 0 до 4095).
  • for (int value = ...). Циклы for плавно изменяют это значение, заставляя напряжение на затворе MOSFET расти и падать.
  • MOSFET. Транзистор реагирует на это плавное изменение напряжения и пропорционально открывает канал для тока, идущего на вентилятор. В отличие от ШИМ, где транзистор работал как очень быстрый ключ (полностью открыт/полностью закрыт), здесь он работает в линейном режиме, как регулируемый кран.

Примечание для любознательных. Если ваш MOSFET не полностью открывается от 3.3В, вы можете заметить, что вентилятор вращается не на полную мощность. В этом случае можно использовать приём из лабораторной работы 4.2.3 - «подтянуть» затвор к 5В через резистор 10 кОм. Это позволит получить более высокое управляющее напряжение на затворе и сильнее открыть транзистор.

Выводы

В этой лабораторной работе вы освоили один из самых «чистых» способов управления мощностью — с помощью ЦАП. Такое управление обеспечивает более плавную и тихую работу моторов и используется там, где важна высокая точность и отсутствие импульсных помех, характерных для ШИМ.

Вопросы для самопроверки

  1. Почему в этой схеме необходим транзистор?
  2. В каком режиме в этой схеме работает MOSFET: в ключевом или линейном?
  3. Чем отличается управление мотором через ЦАП от управления через ШИМ?
  4. В коде мы изменяем значение value с шагом 20. Что произойдёт, если изменить шаг на 1? А на 100?
  5. Как изменить код, чтобы вентилятор постоянно работал на 25% от максимальной скорости? (Подсказка: 25% от 4095 — это примерно 1024).

Вы научились генерировать и применять настоящие аналоговые сигналы! В следующем параграфе мы немного отдохнём от аналоговой темы и вернёмся к цифровым сигналам, чтобы научить Рудирон издавать звуки и измерять временные интервалы.