Программируемый контроллер ВЕРТОР МЕГА
1. Назначение устройства
Программируемый контроллер ВЕРТОР МЕГА ПЭМ10.9194 (Рис. 1.1) является одним из ключевых элементов системы управляющей электроники «Эвольвектор ВЕРТОР» (далее ВЕРТОР). Он предназначен для создания систем управления старших моделей робототехнических конструкторов «Эвольвектор», оснащенных приводами высокой мощности и потребляющих большое количество электроэнергии. Контроллер рассчитан на применение совместно с электронными модулями, входящими в систему ВЕРТОР (подробная информация о системе представлена в соответствующем разделе сайте https://academy.evolvector.ru).
Рис. 1.1
2. Конструкция контроллера и назначение выводов (контактов)
Контроллер выполнен в виде печатной платы, которая оснащена следующими элементами:
- разъемами типа XH-2.54-4P для подключения совместимых электронных модулей (группа разъемов №1, 2, 5);
- разъемами питания под штекер размером 2,1х5,5 для подачи электроэнергии от заряжаемого модуля;
- клеммниками для подсоединения электрических двигателей, соответствующих требованиям номинального напряжения и мощности;
- штыревыми контактами для подключения стандартных RC серводвигателей;
- разъемами типа XH-2.54-4P для подключения устройств, работающих по последовательному протоколу UART (группа разъемов №3);
- разъемами типа XH-2.54-4P для подключения устройств, работающих по протоколу I2C (группа разъемов №4);
- регулятором напряжения питания моторов;
- разъемом USB тип В для подключения контроллера к персональному компьютеру и загрузки в него программ управления (скетчей);
- выключателем питания для клеммников электродвигателей и контактов сервоприводов;
- разъемом для подключения вентилятора, являющегося элементом системы охлаждения нагревающихся частей платы контроллера;
- регулятором скорости вращения вентилятора;
- кнопкой принудительной перезагрузки контроллера в случае его сбоя или некорректной работы;
- bluetooth модулем, подключенным к выводам управляющего микроконтроллера и позволяющим как загружать скетчи в контроллер через bluetooth соединение, так и выполнять дистанционное управление контроллером с помощью мобильного приложения.
Перечисленные элементы представлены на рисунке 2.1.
Рис. 2.1
На рисунке 2.2 представлен внешний вид контроллера с указанием габаритных размеров, а также расположение и размеры крепежных отверстий.
Рис. 2.2
Расположение и форма крепежных отверстий на плате контроллера совместимы с таковыми на модуль питания 6-тью аккумуляторами типа 18650, что дает возможность крепить эти устройства с помощью стоек одно над другим. Помимо этого, по расстоянию между крепежными отверстиями (кратно 8 мм) контроллер совместим с конструкторами Эвольвектор, LEGO, MakeBlock, и может прикручиваться к их деталям с помощью стоек.
Смонтированные на контроллере четырехконтактные разъемы типа XH-2.54-4P промаркированы и объединены в группы, исходя из функциональных особенностей подключаемых к ним модулей. Благодаря имеющимся разъемам предусмотрена возможность подключения сразу до 20-ти электронных модулей системы электроники ВЕРТОР. Общей чертой всех разъемов является наличие выводов питания (VCC) и «земли» (GND), которые расположены по краям разъема. В части же сигнальных контактов, размещенных в центре разъема, существуют отличия.
Группы разъемов №1 и №2 являются разъемами общего назначения и размещены по боковым сторонам платы. У части из них присутствует один цифровой (промаркирован просто числовым номером) и один аналоговый (промаркирован буквой А с номером) контакты.
К разъемам с аналоговым пином возможно подключение датчиков, выдающих аналоговый сигнал. Один разъем из 2-й группы имеет 2 цифровых контакта — к такому возможно подключение исключительно цифровых модулей.
Цифровые контакты, перед номером которых стоит знак тильда («~»), поддерживают широтно-импульсную модуляцию, то есть на них может быть сформирован псевдо аналоговый выходной сигнал.
Также имеется группа разъемов №3, которая предназначена для подключения устройств, работающих по последовательному интерфейсу передачи данных UART.
К группе №4 относятся разъемы, позволяющие подключать модули, работающие по интерфейсу I2C. А группа разъемов №5 включает в себя дополнительные разъемы, которые можно использовать для подключения энкодеров мотор-редукторов или дополнительных датчиков или устройств.
Штыревые разъемы с маркировкой S0...S11 предназначены для подключения до 12-ти стандартных RC серводвигателей с суммарным токопотреблением не более 5 А. С аналогичной общей токовой нагрузкой возможно подключение до 6-ти обычных коллекторных моторов к клеммникам (контакты промаркированы М1...М6).
3. Принципы работы с контроллером
3.1 Подсистема питания и ее охлаждение
Контроллер ВЕРТОР МЕГА представляет собой плату, которая является основой для создания систем управления роботами, оснащенных большим количеством датчиков и приводов различного типа. Проще говоря, это контроллер, на базе которого возможно конструирование манипуляционных и мобильно-манипуляционных роботов в рамках образовательных проектов.
Плата наделена мощной подсистемой питания для подключаемых устройств. Для питания серводвигателей доступно токопотребление до 5 А. Аналогичная величина потребляемого тока допустима и для мотор-редукторов. То есть суммарное токопотребление приводов робота может достигать 10 А.
Это приводит к существенному тепловыделению на преобразователях напряжения, расположенных на плате, поэтому возникает необходимость в их дополнительном охлаждении. Оно реализуется с помощью установленного на нагревающиеся элементы радиатора и размещенного на нем вентилятора. В базовой поставке контроллера радиатор уже закреплен на плате, а вентилятор находится в коробке с контроллером отдельно, исходя из условий упаковки и транспортировки. Поэтому, прежде чем приступить к работе с контроллером, требуется установить вентилятор на радиатор и подключить его к контроллеру (Рис. 3.1).
В целях энергосбережения на плате выполнено автоматическое управление вентилятором. Плата оснащена датчиком температуры и вентилятор включается только тогда, когда температура нагревающихся элементов достигает порогового значения.
Рис. 3.1
3.2 Подключение контроллера к компьютеру по USB
Контроллер построен на основе платформы Arduino Mega. Поэтому в базовом варианте его программирование осуществляется через среду разработки Arduino IDE. В ней создается программа (скетч) на любом персональном компьютере (далее ПК) с установленной операционной системой (далее ОС) Windows или Linux. После создания скетча контроллер подключается к данному компьютеру и в него загружается написанная программа. Дополнительные программаторы для программирования контроллера не требуются.
Подключение контроллера к ПК возможно двумя способами: с помощью обычного USB кабеля и посредством сопряжения по Bluetooth каналу. Подключение контроллера к компьютеру по USB выполняется с помощью кабеля «USB – USB тип B».
Если на компьютере установлена ОС Windows, то после подключения контроллера операционная система в автоматическом режиме должна обнаружить контроллер и также автоматически установить необходимое программное обеспечение (драйвер com-порта usb-контроллера CH340). На это может потребоваться некоторое время (до 10-15 минут), поэтому не стоит торопиться сразу после первого подсоединения контроллера что-то в него загружать.
Если этого не произошло и драйвер автоматически по каким-либо причинам так и не установился, то его потребуется установить в ОС вручную.
Для этого зайдите в диспетчер устройств и отыщите в списке оборудование USB2.0-Serial с восклицательным знаком (Рис. 3.2).
Рис. 3.2
Обновите драйвер, кликнув по данному пункту правой кнопкой мыши, и выбрав пункт «Обновить драйвер». Далее укажите в одном из диалоговых окон путь к папке с файлами драйвера для USB контроллера CH340 (Рис. 3.3).
Рис. 3.3
В результате, после установки драйвера в диспетчере устройств появится порт USB-SERIAL CH340, сразу после которого в скобках указывается номер СОМ порта, который ему автоматически присваивается при установке (Рис. 3.4).
Рис. 3.4
Именно данный порт надо указывать в Arduino IDE при настройке соединения контроллера с компьютером (Рис. 3.6). Однако, предварительно в среде разработки требуется выбрать саму плату контроллера (Рис. 3.5).
Рис. 3.5
Рис. 3.6
После выполнения указанных настроек контроллер полностью готов к загрузке скетчей.
Если же контроллер подключается к компьютеру с ОС Linux, то все гораздо проще. Все, что необходимо установить для работы — инсталлировать саму Arduino IDE (делается это путем ввода в терминал команды sudo apt-get install arduino) и выполнить простые настройки. Они сводятся к такому же выбору платы и выбору порта, который здесь имеет несколько иной вид (Рис. 3.7).
Рис. 3.7
3.3 Подключение контроллера к компьютеру по Bluetooth и простая передача данных
Контроллер оснащен встроенным bluetooth модулем JDY 30. Это делает возможным как загрузку скетчей в контроллер в беспроводном режиме после предварительного сопряжения, так и дистанционное управление моделями, собранными на основе контроллера.
Данный модуль может работать в следующих режимах:
1. Режим поиска устройств и сопряжение с ними, после чего свободно выполняется передача данных между устройствами;
2. Режим передачи данных между модулем и сопряженным устройством. В этом случае модуль способен работать только в качестве подчиненного устройства (slave). В этом случае модуль способен только принимать и передавать данные управляющему устройству, с которым он сопряжен. Например, данный режим используется при подключении модуля к смартфону.
3. Режим программирования. Данный режим позволяет изменять всевозможные настройки модуля: запрашивать и менять его имя, адрес, скорость передачи данных, выполнять изменение кода доступа к модулю, а также менять другие параметры работы. Для определения того, в каком режиме работает модуль, существует система индикации с помощью индикаторного светодиода STATE, находящегося на поверхности платы:
1. Светодиод мигает с частотой 1 Гц — модуль в режиме программирования или поиска устройств;
2. Светодиод не мигает — модуль сопряжен с другим bluetooth устройством.
Смонтированный на плате bluetooth модуль работает в режиме Slave. Это значит, что то устройство, к которому выполняется подключение (ПК, смартфон), будет являться управляющим. Для подключения модуля к такому устройству необходимо подать питание на модуль (например, подключить его ко включенному контроллеру) и произвести на нем поиск bluetooth модуля (Рис. 3.8 а). После этого выбрать найденный модуль из списка и ввести пин-код доступа, состоящий из 4-х цифр (Рис. 3.8 б). По умолчанию это 1234 (Рис. 3.8 в). В результате устройство и модуль будут сопряжены.
Рис. 3.8
После сопряжения устройства могут беспрепятственно обмениваться данными. Для этого в контроллер необходимо загрузить скетч, содержащий команды по чтению данных, получаемых от сопряженного с модулем устройства. Пример такого скетча приведен ниже:
Здесь показано, как переменной temp присваиваются символьные данные, которые поступили от управляющего устройства на контроллер через bluetooth модуль.
3.4 Продвинутая настройка Bluetooth модуля на контроллере (его программирование)
Программирование модуля Bluetooth на контроллере выполняется с помощью так называемых АТ-команд. Для этого необходимо загрузить в контроллер представленный выше скетч, открыть монитор порта (Рис. 3.9) и выставить его настройки в соответствии с рисунком 3.10 (добавление в конце строки символа возврата каретки в начало строки и перевода ее на новую строку /r/n (пункт NL&CR), выбирается скорость 115200 бод). Далее необходимо вводить AT команды в строку монитора порта, а ответы модуля будут печататься в его главном окне.
Рис. 3.9
Рис. 3.10
Принцип программирования bluetooth модуля сводится к вводу АТ-команд и получению ответа от модуля.
Ответ - это либо запрашиваемая информация, либо подтверждение о том, что команда выполнена успешно, если она направлена на изменение какого-нибудь параметра. Ниже в таблице приведены в общем виде основные АТ-команды, которые могут потребоваться для настройки модуля при выполнении образовательных проектов. Набирать все их символы надо именно так, как указано в таблице. Помимо самих команд указаны ответы модуля на них и пояснения, что они означают.
Команда | Ответ модуля | Примечание |
AT | OK | Тестовая команда для проверки установки соединения с модулем |
AT+RESET | ОК | Команда перезагрузки модуля |
AT+VERSION | +VERSION=ВЕРСИЯ OK |
Запрос версии прошивки модуля. Модуль возвращает версию загруженной прошивки. |
AT+LADDR | +LADDR=АДРЕС OK |
Запрос адреса модуля. |
AT+LADDRАДРЕС | OK | Установка адреса модуля. |
AT+NAME | +NAME=ИМЯ OK |
Запрос имени модуля. |
AT+NAMEИМЯ | ОК | Команда установки имени модуля |
AT+PIN | +PIN=КОД OK |
Запрос кода доступа, который необходимо ввести при сопряжении с другими устройствами |
AT+PINКОД | OK | Команда установки кода доступа |
AT+BAUD | +BAUD=СКОРОСТЬ | Запрос скорости передачи/приема данных моду лем (бод). 1-1200 2-2400 3-4800 4-9600 5-19200 6-38400 7-57600 8-115200 9-230400 A-460800 B-921600 C-1382400 |
3.5 Загрузка программ в контроллер по Bluetooth
Для загрузки скетчей в контроллер Вертор Мега через bluetooth модуль необходимо проделать следующие шаги:
1. Убедиться, что на используемом компьютере есть bluetooth передатчик. Он может быть как встроенным, так и подключаться к компьютеру в виде адаптера;
2. Выполнить сопряжение bluetooth модуля контроллера и bluetooth модуля компьютера с помощью стандартных средств настройки;
3. Определить номера двух COM портов, которые были созданы операционной системой компьютера для обмена данными с подключенным bluetooth устройством. Сделать это можно с помощью диспетчера устройств (на рисунке 3.11 приведен пример выделения COM портов 5 и 6 для обмена данными с bluetooth модулем контроллера);
Рис. 3.11
4. В файле boards.txt, находящемся в папке с вашей Arduino IDE (например по пути C:\Program Files (x86)\ Arduino\hardware\arduino\avr) найти область с настройками контроллера Вертор Мега (Рис. 3.12) и вставить строку mega.upload.disable_flushing=true (Рис. 3.13).
Рис. 3.12
Рис. 3.13
5. При загрузке скетча в контроллер, выбрать соответствующий COM порт (подобрать из двух доступных экспериментально при необходимости) и выполнить загрузку, по завершении которой в статусной строке среды Arduino IDE должно быть указано, что загрузка завершена.
3.6 Особенности управления портами
На плате контроллера напротив каждого разъема нанесена маркировка контактов, используемых в данном разъеме. Она соответствует именам пинов микросхемы микроконтроллера, используемого на плате. Поэтому их можно указывать напрямую при подаче сигналов на контакты или чтения сигналов с пинов посредством использования стандартных операторов digitalwrite(), analogwrite(), или digitalread(), analogread().
Однако на контроллере также присутствуют разъемы, к контактам которых можно обратиться только используя специальные имена или библиотеку. Это разъемы из групп PK PJ. Ниже приведена таблица с информацией по именам, которые необходимо использовать в Arduino IDE для работы с контактами PK0-PK7.
Маркировка вывода | Обращение к выводу в скетче |
PK0 | А8 |
PK1 | А9 |
PK2 | А10 |
PK3 | А11 |
PK4 | А12 |
PK5 | А13 |
PK6 | А14 |
PK7 | А15 |
А вот для работы с разъемами порта PJ необходимо применять специально созданную для этих целей библиотеку «MEGAIO».
В качестве примера использования данной библиотеки ниже приведен скетч, в котором реализован алгоритм изменения уровня напряжения на пине PJ6 два раза в секунду и вывод значения сигнала на пине PJ4 в последовательный порт один раз в секунду. Обратите внимание, что для подачи сигналов или их чтения применяются свои библиотечные операторы с двойным двоеточием.
Функционал контроллера по управлению двигателями реализуется с помощью следующего набора библиотек:
Рис. 3.14
Для возможности использования в скетчах их необходимо скачать с сайта Академии Эвольвектор и поместить в папку libraries, находящуюся в директории с установленной средой программирования Arduino IDE.
Если в процессе перемещения библиотек в указанную папку будет выдано предупреждение, содержащее сообщение о том, что такие файлы и папки уже содержатся по указанному пути, то необходимо выполнить их замену.
После размещения библиотек необходимо проверить корректность их установки. Для этого следует выполнить запуск Arduino IDE, нажать левой кнопкой мыши по пункту «Скетч», после чего выбрать пункт меню «Подключить библиотеку» и если в выпавшем списке содержатся только что загруженные библиотеки (Рис. 3.14), то библиотеки размещены верно.
Порядок использования указанных библиотек сводится к следующим действиям:
1. В начале скетча производится подключение файлов библиотек.
2. Выполняется инициализация каналов передачи данных и объектов, управление которыми будет осуществляться с помощью библиотек.
3. В «теле» скетча вызываются конкретные библиотечные функции, через которые выполняется управление подключенными к контроллеру двигателями или сервомоторами.
С командами, которые обеспечивают выполнение указанных действий, можно ознакомиться с помощью примера скетча example_DCMotor, находящегося в скачанном архиве в папке Sketches. В этом примере продемонстрировано управление ДПТ.
Для инициализации мотора используется функция new DCMotor (a, b, c, d), где:
a - номер подключенного мотора (если мотор подключен к выводам мотора M1, то в качестве этого аргумента необходимо записать 1, если M2- – 2, M3 – 3, M4 – 4, M5 – 5, M6 – 6);
b - передаточное число редуктора (если энкодер установлен на выходном валу мотора или не используется в этом проекте, то передаточное число равно 1);
c - полярность подключения двигателя, которая необходима, когда требуется поменять направление вращения вала двигателя без переподключения проводов двигателя к клеммной колодке (принимает значения true или false);
d - число, которое характеризует степень инерционности вращающихся деталей двигателя или колесной модели в целом (принимает значение от 0 до 255).
Для управления мотором используются функции:
Если в проекте необходимо выполнять точное позиционирование вала мотора, то необходимо применять энкодер. Пример работы с мотором, на валу которого установлен энкодер, находится в папке example_ DCMotor_with_Encoder. При выборе разъема, к которому будет осуществляеться подключение энкодера, обратите особое внимание на то, что нельзя выбирать разъемы с линиями порта PJ, так как работа с ними (чтение и передача данных) может быть осуществлена только с помощью специальной библиотеки, описанной в пункте 3.6
Частично процесс инициализации такого мотора и используемые для его управления функции похожи на описанные выше.
Для инициализации двигателя используется функция new DCMotor (a, b, c, d), назначение аргументов которой точно такое же, как в предыдущем примере:
Инициализация оптического энкодера производится с помощью функции new OpticalTickEncoder(a, b), где:
a – номер пина контроллера, к которому подключен вывод D0 оптического энкодера;
b – количество секторов на стороне черно белого диска, повернутой к чувствительному элементу оптического энкодера.
Инициализация магнитного энкодера (датчик Холла) производится с помощью функции new HallTickEncoder(а, b, c), где:
a - первый номер пина контроллера, к которому подключен вывод магнитного энкодера;
b - второй номер пина контроллера, к которому подключен вывод магнитного энкодера;
с - количество импульсов на выводе энкодера за один оборот вала мотора.
Для управления мотором используются функции:
Более полно познакомиться с документацией можно скачав ее в пдф формате.
Написать отзыв
Ваше Имя:Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.
Оценка: Плохо Хорошо
Введите код, указанный на картинке: