Модель контроллера поезда Arduino 2-в-1: 4 шага
Модель контроллера поезда Arduino 2-в-1: 4 шага
Anonim
Модель контроллера поезда Arduino 2-в-1
Модель контроллера поезда Arduino 2-в-1

Сорок лет назад я разработал модель дроссельной заслонки поезда на базе операционного усилителя для пары друзей, а затем, около четырех лет назад, я воссоздал ее с помощью микроконтроллера PIC. Этот проект Arduino воссоздает версию PIC, но также добавляет возможность использовать соединение Bluetooth вместо ручных переключателей для управления дроссельной заслонкой, тормозом и направлением. Хотя конструкция, которую я представляю здесь, предназначена для модели железнодорожного двигателя на 12 В, ее можно легко модифицировать для множества других приложений управления двигателями постоянного тока.

Шаг 1: широтно-импульсная модуляция (ШИМ)

Широтно-импульсная модуляция (ШИМ)
Широтно-импульсная модуляция (ШИМ)

Для тех из вас, кто не знаком с ШИМ, это не так страшно, как кажется. Все, что на самом деле означает для нашего простого приложения для управления двигателем, - это то, что мы генерируем прямоугольную волну некоторой частоты, а затем меняем рабочий цикл. Рабочий цикл определяется как отношение времени, в течение которого выходной сигнал является высоким по сравнению с периодом сигнала. Вы можете видеть это довольно четко на диаграмме выше с верхней формой волны при рабочем цикле 10%, средним сигналом при рабочем цикле 50% и нижним сигналом при рабочем цикле 90%. Пунктирная линия, наложенная на каждую форму волны, представляет эквивалентное напряжение постоянного тока, воспринимаемое двигателем. Учитывая, что в Arduino встроена возможность ШИМ, создать этот тип управления двигателем постоянного тока действительно довольно просто. Еще одно преимущество использования ШИМ заключается в том, что он помогает предотвратить скачкообразный запуск двигателя, который может произойти при использовании прямого постоянного тока. Одним из недостатков ШИМ является то, что иногда от двигателя слышен шум на частоте ШИМ.

Шаг 2: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

На первом рисунке показаны соединения Arduino для переключателей и модуля драйвера двигателя LM298. Внутри Arduino есть слабые подтягивающие резисторы, поэтому для переключателей не требуются подтягивающие резисторы. Переключатель направления представляет собой простой переключатель SPST (однополюсный однопозиционный). Переключатели дроссельной заслонки и тормоза показаны как нормально разомкнутые кнопки с мгновенным контактом.

На втором рисунке показаны соединения Arduino для модуля Bluetooth и модуля драйвера двигателя LM298. Выход Bluetooth TXD подключается непосредственно к последовательному входу Arduino RX.

Третье изображение - двойной H-мостовой модуль L298N. Модуль LM298 имеет встроенный регулятор на 5 В, который включается перемычкой. Нам нужно +5 вольт для Arduino и Bluetooth, но мы хотим +12 вольт для привода двигателя. В этом случае мы подаем +12 В на вход «+ 12V power» L298N и оставим перемычку «5V enable» на месте. Это позволяет 5-вольтовому регулятору выводить сигнал на соединение «+5 питания» на модуле. Подключите это к Arduino и Bluetooth. Не забудьте подключить заземляющие провода для входа +12 и выхода +5 к модулю power GND.

Мы хотим, чтобы выходное напряжение двигателя изменялось в зависимости от ШИМ, генерируемого Arduino, а не просто включенным или полностью выключенным. Для этого мы снимаем перемычки с «ENA» и «ENB» и подключаем наш выход Arduino PWM к «ENA» на модуле. Имейте в виду, что фактический вывод включения - ближайший к краю платы (рядом со «входными» выводами). Задний контакт для каждого включения составляет +5 вольт, поэтому мы хотим убедиться, что мы не подключаемся к нему.

Контакты «IN1» и «IN2» на модуле подключены к соответствующим контактам Arduino. Эти контакты управляют направлением двигателя, и, да, есть веская причина позволить Arduino управлять ими вместо простого подключения переключателя к модулю. Мы увидим почему в обсуждении программного обеспечения.

Шаг 3: модуль Bluetooth

Модуль Bluetooth
Модуль Bluetooth

Показанное здесь изображение типично для доступных модулей Bluetooth. При поиске того, что купить, вы можете выполнить поиск по терминам «HC-05» и HC-06 ». Различия между ними заключаются в прошивке и обычно в количестве контактов на плате. На изображении выше показан модуль HC-06 с упрощенной прошивкой, которая позволяет выполнять только самую базовую настройку. Он также настроен только как «ведомое» устройство Bluetooth. Проще говоря, это означает, что он может реагировать только на команды от «ведущего» устройства и не может выдавать команды самостоятельно. Модуль HC-05 имеет больше возможностей конфигурации и может быть установлен как «ведущее» или «ведомое» устройство. HC-05 обычно имеет шесть контактов вместо четырех, показанных выше для HC-06. Пин-код состояния на самом деле не важен, но пин-код ключа (иногда называемый другими именами, например, «EN») необходим, если вы хотите выполнить какую-либо настройку. Как правило, модули не нуждаются в какой-либо настройке, если вы согласны со скоростью передачи по умолчанию 9600 и не хотите давать конкретное имя для модуля. У меня есть несколько проектов, в которых я их использую, поэтому я люблю называть их соответствующим образом.

Для настройки модулей Bluetooth необходимо либо купить, либо создать интерфейс для последовательного порта RS-232 или для порта USB. Я не буду рассказывать, как его создать, в этой публикации, но вы сможете найти информацию в Интернете. Или просто купите интерфейс. Команды конфигурации используют команды AT, вроде тех, что использовались в старину с телефонными модемами. Я прикрепил сюда руководство пользователя, которое включает AT-команды для каждого типа модуля. Следует отметить, что HC-06 требует наличия команд ЗАПИСНЫМИ буквами, а строка команды должна быть заполнена в течение 1 секунды. Это означает, что некоторые из более длинных строк для таких вещей, как изменение скорости передачи, необходимо будет вырезать и вставить в вашу программу терминала, или вам нужно будет настроить текстовые файлы для отправки. ЗАПИСЬ требуется только в том случае, если вы пытаетесь отправить команды конфигурации. Обычный режим связи может принимать любые 8-битные данные.

Шаг 4: Программное обеспечение

Программное обеспечение довольно простое как для версии с ручным управлением, так и для версии Bluetooth. Чтобы выбрать версию Bluetooth, просто раскомментируйте оператор «#define BT_Ctrl».

Когда я писал код PIC, я экспериментировал с частотой ШИМ и в конце концов остановился на 500 Гц. Я обнаружил, что если частота была слишком высокой, то модуль LM298N не мог достаточно быстро реагировать на импульсы. Это означало, что выходное напряжение не было линейным и могло иметь большие скачки. В Arduino встроены команды ШИМ, но они позволяют изменять только рабочий цикл, а не частоту. К счастью, частота составляет около 490 Гц, что достаточно близко к 500 Гц, которые я использовал на PIC.

Одной из «особенностей» дросселей поездов является ощущение импульса для ускорения и торможения, имитирующего работу реального поезда. Для этого в цикл для ручной версии программного обеспечения вставляется простая временная задержка. При указанном значении требуется приблизительно 13 секунд для перехода от 0 до 12 вольт или от 12 вольт обратно к нулю. Задержку можно легко изменить на большее или меньшее время. Единственный случай, когда импульс не действует, - это изменение направления. В целях защиты рабочий цикл ШИМ сразу устанавливается на 0% при каждом изменении этого переключателя. Это, по сути, делает переключатель направления также одновременно аварийным тормозом.

Чтобы обеспечить немедленную обработку переключателя направления, я поместил его код в обработчик прерывания. Это также позволяет нам использовать функцию «прерывание при изменении», поэтому не имеет значения, происходит ли изменение от низкого к высокому или от высокого к низкому.

Версия программного обеспечения для Bluetooth использует однобуквенные команды для запуска функций вперед, назад, торможения и газа. Фактически полученные команды заменяют ручные переключатели, но вызывают те же ответы. Приложение, которое я использую для управления Bluetooth, от Next Prototypes называется «Последовательный контроллер Bluetooth». Он позволяет настраивать виртуальную клавиатуру и устанавливать собственные командные строки и имена для каждой клавиши. Это также позволяет вам установить частоту повторения, поэтому я установил кнопки тормоза и газа на 50 мс, чтобы дать примерно 14 секунд импульса. Я отключил функцию повтора для кнопок Вперед и Назад.

Вот и все для этого поста. Ознакомьтесь с другими моими инструкциями. Если вас интересуют проекты микроконтроллеров PIC, посетите мой сайт www.boomerrules.wordpress.com.