Как сделать RC катер с опцией автопилота — часть 1 — МозгоЧины

Радиоуправляемый корабль из подручных материалов — секрет мастера — сделай своими руками

Секрет мастера представляет вам интересную конструкцию для изготовления радиоуправляемого корабля в домашних условиях с применением самодельных гребных винтов и лодочных моторов из неожиданных подручных материалов.

Поделка сделана для игр детей и проведения экспериментов. Может использоваться на тихих незаросших водоемах как маленькая транспортная платформа для фото видео аппаратуры, пусковых установок, прикормки рыбы и для чего-то другого, к чему подскажет вам фантазия.

Для изготовления корпуса самодельного радиоуправляемого корабля подготовлен трафарет из картона. Такая конфигурация корпуса при размещении двигателей по краям позволила сделать радиус циркуляции (поворота) близким к длине корпуса корабля. Контуры трафарета переносятся на кусок плотного пенопласта толщиной 25 мм и вырезаются фигурной ножовкой с мелким зубом или лобзиком. Отсеки питания и лодочные моторы установлены в углубления корпуса вырезанные ножом и прикреплены термоклеем.

Трафарет для изготовления корпуса радиоуправляемого корабля
Трафарет корпуса
Корпус радиоуправляемой модели вырезан из пенопласта
Корпус вырезан из пенопласта
Компоновка оборудования радиоуправляемого корабля
Компоновка оборудования
Вырезание углублений под отсеки питания и лодочные моторы
Вырезание углублений
Размещение двигателя и батарейного отсека радиоуправляемого корабля
Размещение двигателя и отсека
Закрепление лодочного мотора термоклеем
Закрепление лодочного мотора

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

Двигатели ))). Два микромиксера для  изготовления кофе капучино по цене 36 рублей (2020 год) за штуку. Миксеры оснащались гребными винтами из жести. Удлиненный прочный вал миксера позволил отказаться от дейдвуда и опорных подшипников. Подробности изготовления гребных винтов смотрите здесь, а лодочного мотора здесь.

Компоновка и части корабля показаны на фото и видео. Испытания показали хорошую маневренность корабля и дальность радиоуправления до 300 метров (управлять на полной дальности можно только с биноклем :)). Но следует учитывать, что при наличии ветра управление кораблем будет затруднено, для облегчения управления необходимо предусмотреть небольшой киль. Полезная нагрузка при выполнении одного боевого разведывательного задания  — приборы оптико электронной разведки, две камеры прямого и бокового обзора. Смотрите видео.

Вид самодельного радиуправляемого корабля
Готовый корабль
Установка камеры на самодельном радиоуправляемом корабле
К походу готов!
Радиоуправляемый корабль
Радиоуправляемый корабль

Также не забывайте, что защиты от водорослей у корабля нет. Тема самодельных радиоуправляемых кораблей на сайте Секрет Мастера будет продолжена (сломанный РУ автомобиль ждет второй жизни).

Чтобы не пропустить новые публикации не забудьте подписаться на обновления сайта radiocopter.ru, поделиться ссылкой с другом или своим мастером, также приглашаем вас посетить видеопортал Sekretmastera на YouTube и стать его подписчиком.

Шаг 1: видеопрезентация

Небольшое видео обозначит направление этого мозгопроекта:

Шаг 2: прототип 1

Первый катер, то есть прототип 1, был самый простой по исполнению и должен был уметь:

  • считывать GPS-координаты своего положения
  • считывать азимут с компаса
  • управлять сервоприводом руля
  • использовать руль для следования курсу

А так же на нем я тестировал формулы маневрирования для создания действующего автопилота. Основой прототипа 1 был микроконтроллер Arduino Uno, в финальной версии я использовал ATmega328.

Смотрите про коптеры:  Как я потерял дрон DJI | Пикабу

Считывание GPS-координат

На первом прототипе я установил самый дешевый GPS-модуль который смог достать, это UBlox PCI-5. Для его монтажа нужно было лишь припаять четыре провода к задней стороне платы, подсоединить их к Arduino и прикрепить антенну. Для обработки поступающих данных я использовал библиотеку TinyGPS , которая позволила мне получить координаты текущего положения, скорость, направление и много другого!

Считывание азимута

Чтобы получать данные с компаса я использовал HMC5883L, который легко подключается к микроконтроллеру через I2C. Как именно он устанавливается и как с ним работать хорошо описано здесь и здесь.

Управление сервоприводом руля

Контролировать сервопривод руля с помощью Arduino очень легко, но если только вы не используете библиотеку SoftwareSerial, которая нужна для TinyGPS , и которая конфликтует с одним таймеров Arduino! Запущенная SoftwareSerial мешает работе любого сервопривода использующего стандартную библиотеку, и решением данного мозгоконфликта является использование библиотеки PWM Servo library.

Формулы алгоритма автопилотирования

В прототипе 1 я применил несколько функций, которые позднее станут критичными. Эти функции используют формулу Хаверсина для расчета таких параметров как расстояние между двумя точками, направления от одной точки к следующей и реальный азимут по данным компаса. Более подробно об этих формулах в этой статье.

Сборка компонентов

Компоненты первого прототипа я разместил на деревянном каркасе (см. фото), и теперь, зная положение этого каркаса-автопилота и сравнивая с заданным, можно поворачивать руль и сохранять заданный маршрут. Это будет полезно в дальнейшем для навигации по GPS-координатам.

Шаг 3: прототип 2

Довольный результатами первой поделки я решил создать прототип 2 с программными доработками автопилота. Целями для второй самоделки были:

  • плавание по заданным GPS-кооддинатам
  • работа автопилота от аккумулятора
  • тестирование и запись данных автопилота

Конструкция автопилота также претерпела некоторые изменения — была добавлена макетная плата ProtoSheild, на которую я установил сам Arduino и компас. Все компоненты смонтировал на фанерное основание и “упаковал” в пластиковый контейнер.

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

Плавание по заданным GPS-кооддинатам

Код для Arduino я написал таким образом, чтобы он поворачивал руль по направлению к следующей точке заданного маршрута: используя GPS-координаты для вычисления соотношений последующих точек и сравнивая их с компасом, вычисляется поворот руля. Если вычисленное значение правее, на 90 градусов, то руль повернется на 60 градусов.

Все это будет происходить в цикле, примерно так (этот код обобщенный):

while(distanceInMeters(gpslat, gpslong, waypointlat, waypointlong) < 5) {
	int bearing = GetBearing();
	int heading = GetHeading(gpslat, gpslong, waypointlat, waypointlong);	
	bearing = RealBearing(gpslat, gpslong, bearing);
	RudderTurn(RudderAngle(bearing, heading));
}

Пояснение кода таково: если расстояние между катером и следующей точкой более 5 метров, то складывая азимут катера и азимут следующей точки, получается действительный азимут, оба азимута посылаются функции the RudderTurn function, которая вычисляет нужный угол поворота и соответственно поворачивает мозгоруль.

Установка аккумулятора

Запитать Arduino от аккумулятора довольно просто. Для этого на микроконтроллере есть контакт Vin, и на него можно подать до 20В постоянного тока. У меня была литиевая батарея на 12.6В, к которой я припаял разъем и подключил ее к контакту Vin на Arduino.

Смотрите про коптеры:  Передатчик RC-аппаратуры |

Шаг 4: тестирование прототипа 2

Для того чтобы проверить прототип в действии я установил два светодиода, первый из которых будет светиться когда зафиксируется GPS-координата, а второй, когда будет достигнута эта точка.

Испытание прототипа

Пробы своего автопилота я проводил на местном поле. К своему ноутбуку я подключил автопилот и запустил последовательный монитор (часть программного обеспечения Arduino), который записывал GPS-координаты все время следования по заданным точкам. Я пользовался рулем который направлял меня к следующей точке, и я поворачивал, словно это был мозгокатер.

На представленных фото обозначен маршрут тестов. Если я оказывался ближе чем 5 метров к нужной точке, то автопилот переключался и начинал навигацию к следующей точке. В процессе этих тестов код поделки претерпел довольно много незначительных изменений.

Для конвертации последовательного текста в путь Google Earth, я импортировал текст в Excel, сохранив файл и далее следуя указаниям Earthpoint, преобразовывал файл в формат KML.

Шаг 5: первое судно

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

Почти все детали судна, включая палубу, вырезаны из пеноматериала. Для тяги мотор сначала я взял щеточный, но потом заменил его двигателем без щеток с пропеллером 5х3. Этот 9-ти граммовый сервомотор я смонтировал на задней панели, а для проводов идущих к нему в контейнере высверлил отверстие.

Но в конце концов, эта самоделка не отправилась в плавание… Дело в том, что система ESC, которую я планировал использовать сгорела во время инцидента#Electric-Longboard/»> другого мозгопроекта, да еще GPS модуль наотрез отказался работать на поверхности пруда.

Шаг 6: модифицированный катер

А теперь снова вернемся к чертежам катера! На известном онлайн-ресурсе я купил новый катер. В комплект к нему входили никель-металл-гидридный (Ni-MH) аккумулятор на 7.4В, зарядное устройство, передатчик и плата приемника. С передатчиком возникли небольшие проблемы — нужно было найти 12 батареек АА, и я остался разочарованным не работающим катером. Но, для проекта это не критично и я продолжил.

Я выпаял два Н-канальных MOSFET-транзистора из цепи приемника, они пригодятся позднее. После этого обрезал все провода и загерметизировал горячим клеем все щели и трещинки, которые нашел в корпусе катера.

Два двигателя катера имели сложную систему охлаждения — очень шумный пропеллер, который нагнетал воздух на двигатели, еще на моторах стояли шунтирующие конденсаторы, и оба этих момента работали в мою пользу. А вот для маленького переключателя на верхней стороне мозгокатера я не нашел более достойного применения.

Далее встал вопрос безопасного размещения прототипа и для его решения я использовал небольшую досочку к низу которой, в районе двигателей, приклеил деревянную палочку, а еще к доске и к корпусу катера приклеил застежку-липучку, удерживающей силы которой хватит для “спасения” автопилота при переворачивании катера.

Смотрите про коптеры:  Делаем простой кораблик с моторчиком

Шаг 7: прототип 3

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

  • увеличение скорости реакции автопилота
  • добавление контроллеров моторов
  • программирование совместной работы двигателей
  • установка приемника

Увеличение скорости реакции

Единственный минус библиотеки TinyGPS это медленность. Проблема в том, что Arduino Uno не может выполнять две вещи одновременно (в принципе может, на деле — нет). Простым решением может стать еще один микроконтроллер Arduino, который с помощью библиотеки TinyGPS будет обрабатывать данные GPS, а затем отправлять параметры на первый микроконтроллер автопилота. Но у меня не было еще одного Arduino.

Arduino Uno это, по существу, чип ATmega328 и еще несколько дополнительных компонентов. Зная это можно создать свой собственный Arduino на макетной плате. И для этого есть хорошее мозгоруководство.

К собранному самостоятельно Arduino, так же как и “старый” модуль, я подключил новый GPS-модуль Ublox NEO-6M. Для программинга самодельного Arduino использовал библиотеку Bill Porter’s Easy Transfer library, а “связал” оба микроконтроллера одиночным проводом, то есть односторонним последовательным соединением. Этот самодельный Arduino повысил скорость реакции автопилота с 4 Гц до 50 Гц!

Добавление контроллеров двигателей

Мне очень понравилась плата ProtoSheild для Arduino Uno, которую я использовал, но оказалось, что она не имеет достаточного пространства для крепления двух контроллеров двигателей. Поэтому я убрал эту мини-плату, и поставил другую, больших размеров.

Электроцепь контроллеров двигателей проста: МОП-транзистор (MOSFET), с помощью ШИМ, контролирует среднее напряжение, идущее к двигателю. Резистор 1кОм ограничивает силу тока чтобы не перегорел Arduino, а резистор 10кОм удерживает MOSFET закрытым, когда отсутствует входящий сигнал.

Программирование взаимодействия моторов

У данного катера отсутствует штурвал, то есть руль, и вместо него для управления используется два мотора. Их то я и решил задействовать, а не устанавливать сервомотор для управления. Контроллеры моторов я уже собрал, осталось только запрограммировать Arduino для управления этими контроллерами.

Программирование я начал с написания макета программы в начал с Visual Studio. По мере написания я отладил код, и в конце концов добился взаимодействия двигателей. Оставалось только переделать код с VS на Arduino, но это не трудно, так как языки C # и C очень близки.

Установка приемника радиоуправления

На прототип я смонтировал приемник ДУ для ручного управления самоделкой. Это тоже довольно просто сделать, нужно лишь считывать входящие значения функцией pulseIn и “научить” реагировать автопилот на эти значения.

Испытание прототипа

Прототип автопилота я установил внутри катера, подключил двигатели к контроллерам и запрограммировал маршрут плавания по местном пруду. После прохождения трех точек, поделка перестала работать и “сгасла”. Оказалось, что высокое напряжение от аккумулятора (12 В) “спалило” регуляторы напряжения 5 В.

Продолжение следует…

( Специально для МозгоЧинов #Boat-Autopilot

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

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

Adblock
detector