Интеграл 4/2020

УДК 004.773

DOI 10.24411/2658-3569-2020-10084

ОПИСАНИЕ РАБОТЫ КОНТРОЛЛЕРА “WILD THUMPER» И ПРИМЕР ПРОГРАММЫ УПРАВЛЕНИЯ

DESCRIPTION OF «WILD THUMPER» CONTROLLER OPERATION AND EXAMPLE CONTROL PROGRAM

Крайников Александр Николаевич, Северный арктический федеральный университет им. М.В. Ломоносова, г. Архангельск

Krajnikov A.N., kpahyx@gmail.com

Банников Анатолий Анатольевич,  к.т.н., доцент кафедры автоматики, робототехники и управления техническими системами, Северный арктический федеральный университет им. М.В. Ломоносова, г. Архангельск

Bannikov A.A., a.bannikov@narfu.ru

Аннотация. В статье рассматривается возможности контроллера wild thumper, а также его характеристики, настройка и пример программы управления и библиотек, необходимых для нормального функционирования котроллера.

Summary. The article discusses the capabilities of the wild thumper controller, as well as its characteristics, configuration and an example of a control program and libraries necessary for the normal functioning of the controller.

Ключевые слова: контроллер, ардуино, робототехника, автоматизация, wild thumper.

Keywords: controller, arduino, robotics, automation, wild thumper.

ВНЕШНЕЕ ОПИСАНИЕ ПЛАТЫ

Отладочная плата «Wild Thumper» представляет из себя плату на базе микроконтроллера ATmega168 и включается в себя два интегрированных «H» моста. Данная плата предназначена для управления большими и/или быстрыми мобильными платформами на радио управлении.  

Плата специально разработана для одноименной 4-х и 6-ти колесной платформы. Плата рассчитана на аккумуляторные батареи с напряжением 7.2 вольта, но также может использоваться при напряжении до 18 вольт, однако это приведет к снижению максимальной выходной мощности 5 вольтового регулятора, установленного на плате. В случае сильного нагрева следует установить вентилятор, которые крепится к радиатору, установленному с обратной стороны платы. Вид платы сверху, с обозначением всех элементов можно наблюдать на рисунке 1.

Как можно заметить, плата оснащена двумя съёмными предохранителями на 15 А, по одному на каждый H мост.

Так же на плате отдельно выведены 7 цифровых входов/выходов и для каждого цифрового входов /выхода предусмотрен пин GND (Земля, 0 В) и пин VCC (плюс напряжения, +5 В, 5 А), а также цифровой пин ввода/вывода. Данные пины предназначены для управления сервоприводами. Для пинов VCC подключен регулятор напряжение LM1084 (Стабилизаторы напряжения с LDO (малым падением напряжения вход/выход)), что позволяет питать несколько малых или средних сервоприводов напрямую от платы.

Мы можем наблюдать на плате два регулятора VR1 и VR2. Они предназначены для калибровки датчиков тока. Алгоритм их калибровки будет описан ниже.

Так же мы можем наблюдать гребенку контактов для аналоговых входов/выходов. К ним добавлены контакты D0 и D1, к которым подключен UART интерфейс. К контактам A4 и A5 подключен интерфейс I2C.

Между цифровыми и аналоговыми выходами установлен порт питания для программирования/тестирования и зарядки. Данный порт предназначен для батарей SLA, NiCd и NiMh и оснащен двухамперным регулятором тока, которым может управлять микроконтроллер.

C другой стороны платы мы может наблюдать клеммы для подключения аккумулятора и вывода напряжения.

Между данными клеммами и гребенкой аналоговых пинов установлен USB и ISP интерфейс для передачи и приема информации от компьютера или программатора.

С обратной стороны платы мы может наблюдать радиатор, который позволяет установить 40-мм вентилятор. Радиатор можно наблюдать на рисунке 2.

Вы можете наблюдать размеры данной платы рисунке 3.

FET «H» МОСТЫ

На плате «Wild Thumper» используются полевые транзисторы, они же FET(Field Effect Transistor). Полевые транзисторы более эффективны, чем обычные транзисторы, так как могут иметь очень низкое сопротивление, составляющее всего несколько сотых ом, в «включенном» состоянии. Это позволяет им справляться с большими токами, не перегреваясь. «H» мост состоит из 4-х полевых транзисторов, которые управляют двигателями. Название “«H» мост” произошло из-за того, что на схематической диаграмме двигатель и транзисторы образуют схему «H».

Для управления двигателем, «H» мост генерирует ШИМ-сигнал (Широко-импульсная модуляция) высокой частоты. Стандартные частоты ШИМ, используемые системой Arduino, составляют 488 Гц и 976 Гц, ориентировочно. Однако пользователи могут изменить частоту и установить ее выше 20 кГц, чтобы уменьшить шум двигателя. Следует отметить, что более высокие частоты увеличивают индуктивное сопротивление обмоток двигателя, что ограничивает потребление тока двигателями. Это приводит к потере крутящего момента. Изменение частоты не рекомендуется, так как ошибка в настройках может привести к частоте выше предела в 24 кГц, что может повредить «H» мост. Частота 24 кГц является максимальной для данного «H» моста.

Следует отдельно отметить, что некоторые функции и библиотеки могут использовать те же таймеры, что и «H» мост. Это может привести к некорректной работе «H» моста. Использование сервоприводов никак не повлияет на «H» мост, если вы инициализируете менее 12 сервоприводов.

ДАТЧИКИ ТОКА

Описание:

Плата «Wild Thumper» оснащена датчиками тока, проходящего через двигатели, это позволяет управлять остановкой двигателей. Как уже написано выше, для дополнительной защиты установлены предохранители. В случае если предохранитель перегорел или не установлен, загорается красный светодиод напротив данного держателя предохранителя.

Калибровка:

Для калибровки датчиков тока потребуется мультиметр с диапазоном 10 А и стабильной нагрузкой в цепочке, такой как лампочка от автомобиля или резистор высокой мощности, например, 10 Ом, 5 Вт или выше. Схему подключения мультиметра можно наблюдать на рисунке 4.

Подключите контроллер к батарее с помощью соответствующих контактов и к компьютеру с помощью USB-кабеля. Загрузите и запустите программу «Wild_Thumper_Controller.pde». Расширение PDE используется для хранения программ Processing и запускает их при помощи встроенного одноименного интерфейса программирования. Так же это расширение использовалось в устаревших версиях Arduino IDE, но и самые новые релизы программы могут открыть скетч такого формата.

Нажмите на значок «Serial Monitor» и установите скорость передачи 9600. Вы увидите нагрузку, измеряемую процессором.

Если вы удалите предохранители, то вы увидите, что текущие показания превысят 700. Это максимально возможное значение.

Замените предохранители и отрегулируйте VR1 или VR2 в зависимости от того, какую мощность двигателя вы калибруете.

Пример:

Ваш мультиметр подключен к левому двигателю и показывает 940 мА. Вы настраиваете VR1 (соответственно VR1 используется для левого двигателя, а VR2 – для правого) до тех пор, пока в мониторе последовательного порта не отобразиться число 47.

Теперь левый двигатель откалиброван с разрешением примерно 20 мА (47×20 мА = 940 мА).

Ваши двигатели имеют ток остановки 12А. Таким образом ток 11А – максимально безопасный.

Установите «Leftmaxamps» в библиотеке «Constants.h» (описание данной библиотеки представлено ниже) на 550 (11000 мА / 20 мА).

Установите «время перегрузки» на количество мс, необходимое для повторного запуска двигателя после возникновения перегрузки (Перегрузка означает, что через мотор проходит сила тока большая, чем установленный безопасный предел. По умолчанию установлено значение 100 мс (1/10 секунды). То есть это то время, на которые отключатся двигатели, если сила тока выйдет из безопасного предела.

Теперь, как только ваш двигатель потребляет больше 11 А, контроллер отключит питание на время перегрузки. Это защищает ваш предохранитель и двигатель.

ЭЛЕКТРОННОЕ ТОРМОЖЕНИЕ

Одним из преимуществ данного контроллера перед многими другими является то, что он имеет электронное торможение (только для щеточных двигателей постоянного тока). Для небольших и легких роботов эта функция обычно не требуется. Для больших / тяжелых роботов или очень быстрых, электронное торможение является обязательным во избежание столкновений. При нормальных условиях, когда вы отключаете питание двигателя, его ротор продолжает вращаться из-за импульса движущихся частей и самого робота. В этот момент двигатель ведет себя как генератор и вырабатывает напряжение в обратном направлении. Когда вы закорачиваете клеммы двигателя вместе, через ротор протекает сильный ток, создавая «обратную ЭДС», эффективно пытаясь вращать ротор в противоположном направлении.

Чем быстрее вращается ротор, тем больше эффект торможения. Контроллер использует ШИМ, чтобы контролировать, насколько сильно двигатель тормозит. Это полезно, когда вы хотите, чтобы ваш робот остановился плавно, а не резко, что может привезти к переворачиванию.

ЗАРЯДНОЕ УСТРОЙСТВО

Как было сказано ранее, плата «Wild Thumper» имеет возможность заряжать аккумулятор, подключенный к плате.

Плата так же имеет возможность измерять напряжение аккумуляторов и переключаться между быстрой зарядкой (максимум 2 А) и режимом ожидания (примерно 50 мА). Это позволяет контроллеру заряжать герметичные свинцово-кислотные (SLA), а также никель-металлогидридные (NiMh) и более старые никель-кадмиевые (NiCd) аккумуляторы, однако зарядка литий-полимерных (LiPo) аккумуляторов может привести к возгоранию. Будьте осторожны

В примере кода (который описан ниже) процессор отключает двигатели, если напряжение батареи становится слишком низким, и ожидает, пока уровень батареи поднимется выше номинального напряжения батареи.

Например, если мы используем никель-металлогидридный аккумулятор 7,2 В то, когда напряжение становится ниже 6 В (следует учитывать, что регулятор LDO может быть ненадежным ниже 5,5 В), контроллер отключает двигатели. Затем программное обеспечение активирует цепь зарядки и ожидает повышения напряжения аккумулятора выше 7,2 В, указывая на то, что к разъему для зарядки подано питание постоянного тока. Далее контроллер отслеживает изменение напряжения батареи. Если напряжение достигает максимума (не увеличивается через 15 минут), предполагается, что аккумулятор заряжен, и контроллер переключает цепь зарядки в режим ожидания.

Эта функция требует, чтобы вход постоянного тока был на 3–6 В выше напряжения заряжаемой батареи. Источник постоянного тока должен быть рассчитан на силу ток не менее 2А. Если ваше зарядное напряжение более чем на 4 В выше номинального напряжения аккумулятора, то на радиатор следует установить небольшой вентилятор.

Можно использовать блок питания, подобный представленному на рисунке 5.

Рекомендуемые батареи и напряжения представлены в таблице 1.

ПОРТЫ ВВОДА/ВЫВОДА

ПРИМЕЧАНИЕ. Как уже было описано ранее, контроллер имеет несколько гребенок портов ввода/вывода. Они оканчиваются 3-контактными разъемами с VСС (5 В) в центре и GND (0 В), как контакт, ближайший к краю платы. Некоторые датчики или исполнительные органы могут иметь 3-контактный разъем с контактами питания в другом порядке. Убедитесь, что VCC является центральным контактом, чтобы предотвратить повреждение вашего датчика или исполнительного органа.

Следует отметить, что данные контакты могут использоваться в качестве цифровых входов или выходов. A1 — A5 — это цифровые пины ввода-вывода от D15 до D19. Если вывод сконфигурирован как вход (настройка по умолчанию при включении питания), то запись логической «1» на этот вывод активирует внутренний подтягивающий резистор 20К. Это может быть полезно при подключении простых переключателей. Логический «0» отключит его, сделав этот вход высоким импедансом (разомкнутая цепь). D9 и D10 могут использоваться для выходов ШИМ, если функция Servo() не используется.

ПРОГРАММИРОВАНИЕ

Пример кода был написан с использованием Arduino IDE, а программа загружена загрузчиком Arduino. При использовании IDE Arduino для программирования контроллера выберите Arduino Nano с микроконтроллером ATmega168 в качестве типа вашей платы.

Программа «Wild_Thumper_Controller» содержит основную программу. Это можно изменить в соответствии с вашими потребностями.

Программа (библиотека) «Constants.h» содержит такие константные значения, как режим связи, скорость передачи данных, минимальное напряжение аккумулятора, максимально допустимое потребление тока и так далее.

Программа (библиотека) «I / Opins.h» сообщает программе, какой из выводов ввода / вывода процессора используется для какой функции. Также данная библиотека используется для упрощенного обращения к конкретным пинам в коде программы. Будьте внимательны при изменении содержимого этой вкладки, так как многие функции «встроены» в печатную плату.

УПРАВЛЕНИЕ С ПОМОЩЬЮ RC ПРИЕМНИКА

Настройки по умолчанию в примере кода позволяют управлять контроллером с помощью стандартного приемника RC. В этом режиме ширина импульсов от приемника измеряется и преобразуется в скорость и направление для двух двигателей. Контакты по умолчанию для режима RC: D0 и D1. Так как это также контакты последовательной связи, используемые для программирования. Вы должны отсоединить кабели, подключенные к этим контактам, при загрузке новой программы или использовании последовательного порта для диагностики. Если у вас есть запасные выводы ввода / вывода, вы можете переопределить «RCleft» и «RCright» на вкладке «IOpins.h» примера кода. Другие сервоприводы могут быть подключены непосредственно к радиоприемнику для создания полностью радиоуправляемого робота.

Другие режимы работы включают работу в качестве автономного устройства, обработку данных датчика и управление вашим роботом автономно или подчиненным другому процессору, напрямую или по беспроводной связи. Эти режимы можно выбрать на вкладке «Constants.h» примера кода, изменив значение «Cmode». Вы также можете выбрать скорость передачи для последовательной связи, если выбран этот режим.

Связь I2C также поддерживается в аппаратном обеспечении с использованием A4 и A5, но пользователь сам может написать свой код. Для связи I2C требуются подтягивающие резисторы. Внутренние подтягивающие резисторы 20K можно включить с помощью команды digitalWrite (), чтобы записать логические значения от 1 до D18 и D19 (A4 и A5), в то время как они настроены как входы (вход является настройкой по умолчанию при включении питания).

Скетч и библиотеки

Для работы с платой потребуется подключение 3-х библиотек, а именно: «Servo.h», «IOpins.h», «Constants.h».

Библиотека «Servo.h» используется, для инициализации и управление сервоприводами.

Следует отметить, что при подключении по UART, будут доступные следующие последовательные команды:

  • «FL» очищает буфер. Это происходит автоматически при включении питания и при получении неверной команды.
  • «AN» запрашивает аналоговые данные. Будет отправлено 10 байтов, MSB и LSB аналоговых входов 1-5.
  • «SV», за которым следуют MSB и LSB из 7 позиций сервопривода в США. Должно быть отправлено 14 байтов.
  • «HB», за которым следуют 4 байта данных, задает режим (0-2) и мощность (0-255) каждого моста «H».

Так же потребудется скетч (программа) для управления контроллером. С шаблоном этого скетча и необходимыми библиотеками вы можете ознакомиться по ссылке на репозиторий github (пункт номер 3 в списке литературы). За исключением библиотеки Servo.h, так как она устанавливается в комплекте с средой Arduino IDE.

СПИСОК ЛИТЕРАТУРЫ

  1. Wild Thumper Robot Controller– [Электронный ресурс] – Режим доступа URL: https://robosavvy.com/RoboSavvyPages/Dagu/Wild%20Thumper%20Controller%20Instructions.pdf;
  2. Understanding the Wild Thumper controller – [Электронный ресурс] – Режим доступа URL: https://sites.google.com/site/daguproducts/home/tutorials/understanding-wild-thumper;
  3. Программы управления и библиотеки для платы Wild Thumper – [Электронный ресурс] – Режим доступа https://github.com/incubus-ank/Wild_Thumper;
  4. Схема Wild Thumper – [Электронный ресурс] – Режим доступа URL: https://vk.com/doc152485617_566284654?hash=a411541fbea9220cb4&dl=f744a03b73aaa62c86;
  5. Программирование Arduino– [Электронный ресурс] – Режим доступа https://all-arduino.ru/programmirovanie-arduino/
  6. DATASHEET ATmega88/ATmega168– [Электронный ресурс] – Режим доступа: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-9365-Automotive-Microcontrollers-ATmega88-ATmega168_Datasheet.pdf

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *