Управление ШИМ-выходом с помощью потенциометра через MATLAB

Узнайте, как регулировать яркость светодиода, подключённого к UNO R3, с помощью MATLAB.

Введение

В этом руководстве мы будем использовать MATLAB для включения внешнего светодиода, а затем для регулировки выходного сигнала с помощью пакета поддержки MATLAB Support Package for Arduino Hardware.

Цели

Цели данного проекта:

  • Управление светодиодом UNO R3 с помощью MATLAB.

  • Управление ШИМ-выходом UNO R3 с помощью MATLAB.

  • Создание регулируемого освещения с использованием потенциометра.

Необходимое оборудование и ПО

Примечание

Требуется действующая лицензия MATLAB. Ваше рабочее место или учебное заведение может иметь подписку. В качестве альтернативы, годовая пробная подписка на MATLAB включена в комплект Arduino Engineering Kit R2.

Почему MATLAB?

MATLAB — это образовательная и промышленная платформа программирования, используемая для анализа данных, выполнения моделирования и проектирования на основе моделей. Благодаря интерактивному взаимодействию с платой Arduino вы можете расширить возможности MATLAB, одновременно получив доступ к широкому спектру математических, инженерных и графических функций. Ознакомьтесь с возможностями MATLAB на веб-сайте MathWorks. В этом руководстве мы установим соединение с MATLAB через USB и Wi-Fi подключение. Для обеспечения связи между программным обеспечением MATLAB на вашем компьютере и платой Arduino необходимо установить MATLAB Support Package for Arduino Hardware (для этого может потребоваться учётная запись MathWorks).

Подключение платы к MATLAB

1. Подключите плату к компьютеру через USB-кабель типа A/B.

USB-подключение к компьютеру

USB-подключение к компьютеру.

2. Откройте MATLAB и выполните команду

arduinosetup()

в командном окне (Command Window).

Настройка Arduino

Настройка Arduino.

3. Появится графический пользовательский интерфейс (GUI), который поможет вам настроить соединение MATLAB-Arduino. Для установки соединения через USB-кабель убедитесь, что выбран переключатель USB, и нажмите Next (Далее).

Выбор типа подключения

Выбор типа подключения.

4. Выберите «UNO» из выпадающего меню, а также соответствующий COM-порт, и нажмите синюю кнопку Program, чтобы загрузить Arduino Server на плату. После этого нажмите Next (Далее).

Программирование Arduino

Программирование Arduino.

5. На этом шаге вы можете просмотреть тип подключения, порт, плату и загруженные библиотеки. Вы также можете нажать Test connection (Тест подключения) для проверки соединения Arduino-MATLAB. Далее вы должны увидеть зелёную галочку, сигнализирующую об успешном подключении, как показано на изображении ниже.

Программирование выполнено успешно

Программирование выполнено успешно.

6. Плата UNO R3 теперь настроена для взаимодействия с MATLAB. Для создания объекта в MATLAB выполните команду a = arduino(). Свойства объекта, включая COM-порт, отображаются, как показано в примере ниже.

Свойства Arduino

Свойства Arduino.

7. Введите команду writeDigitalPin(a, 'D13', 1);. Эта команда аналогична команде digitalWrite(D13, HIGH) в языке программирования Arduino. Это означает, что цифровой пин 13 D13 подключён к встроенному светодиоду, a — это созданный нами объект Arduino, а 1 представляет состояние HIGH (ВКЛ). Попробуйте включать и выключать светодиод несколько раз, меняя 1 на 0 и наоборот.

Предупреждение

В отличие от Arduino IDE, здесь нельзя обращаться к встроенному светодиоду с помощью макроса LED_BUILTIN.

8. Теперь вы можете использовать эту команду для непрерывного мигания светодиода в составе цикла while. Попробуйте ввести приведённый ниже скрипт.

while (1)
      writeDigitalPin(a, 'D13', 0);
      pause(0.5);
      writeDigitalPin(a, 'D13', 1);
      pause(0.5);
end

Схема

На одной макетной плате белый провод-перемычка подаёт 5 вольт на потенциометр. Оранжевый кабель подключён к GND (земля), а серый провод является нашим входом на A0. Пин A0 будет считывать переменное напряжение, поступающее от пина 13 после регулировки через потенциометр.

На правой макетной плате расположена простая схема со светодиодом, состоящая из красного выходного провода от пина 11, резистора и светодиода, подключённого к GND через зелёный провод.

Полная схема подключения

Полная схема подключения.

Важно

Убедитесь, что длинная ножка светодиода (анод) подключена к резистору, а короткая (катод) — к GND.

Программирование платы

1. Установите выход в 1 ранее описанным способом, используя writeDigitalPin(a, 'D13', 1);. Как упоминалось ранее, 1 означает ВКЛ или HIGH и устанавливает цифровой пин 13 D13 на 5 В, позволяя току протекать к светодиоду. Проверьте, действительно ли аналоговый пин 0 A0 считывает регулируемое напряжение, используя readVoltage(a, 'A0'); в цикле, а затем используйте display(Volts) для вывода значения Volts в командном окне (Command Window).

a = arduino();
writeDigitalPin(a, 'D13', 1)
while(1)
  Volts = readVoltage(a, 'A0');
  display(Volts);
  pause(0.5)
end

Значение, присвоенное переменной Volts, должно изменяться при вращении ручки потенциометра.

Отображение напряжения

Отображение напряжения.

2. Установите значение Volts в качестве напряжения на цифровом пине 11 D11 с помощью команды writePWMVoltage(). Эта команда регулируется в диапазоне от 0 до 5 вольт. Она преобразует значение в ШИМ-сигнал на цифровом пине.

a = arduino();
writeDigitalPin(a, 'D13', 1)
while(1)
  Volts = readVoltage(a, 'A0');
  writePWMVoltage(a, 'D11', Volts)
  display(Volts);
  pause(0.5)
end

Устранение неполадок

  • Если код зависает или кажется, что он не работает, попробуйте очистить предыдущие объекты Arduino, привязанные к устройству. Вы можете сделать это, выполнив команду clear <объект>, например clear a очистит объект Arduino.

  • Если вы получаете сообщение Unrecognized function or variable 'arduinosetup', убедитесь, что вы установили MATLAB Support Package for Arduino Hardware.

Заключение

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

Дополнительные идеи

  • Вы также можете использовать аргументы командной строки для загрузки сервера MATLAB на Arduino UNO через команду arduino(). Дополнительную информацию об использовании этой функции смотрите в документации MathWorks.

  • Попробуйте написать код MATLAB, который медленно увеличивает, а затем уменьшает скорость мигания вместо регулировки яркости.

  • Используйте другие датчики и компоненты вместо потенциометра и светодиода, например датчик освещённости.