- Двигатель постоянного тока без сердечника для радиоуправляемых машин
- Необходимые материалы
- Радиочастотный джойстик для радиоуправляемой машины с использованием Arduino
- Схема автомобиля с радиоуправлением Arduino
- Изготовление печатной платы для радиоуправляемой машины Arduino
- Сборка печатной платы
- Колеса для 3D-печати и крепление двигателя
- Программирование Arduino
- Работа Arduino RC Car
С радиоуправляемыми машинами всегда весело играть, я лично большой поклонник этих машин с дистанционным управлением и много играл (до сих пор играю) с ними. Большинство этих автомобилей сегодня обеспечивают огромный крутящий момент для работы на пересеченной местности, но есть кое-что, что всегда отставало, это скорость !!.. Итак, в этом проекте мы построим совершенно другой тип радиоуправляемой машины с использованием Arduino, основной Цель этого автомобиля - достичь максимальной скорости, поэтому я решил попробовать двигатель постоянного тока без сердечника для радиоуправляемого автомобиля. Эти двигатели обычно используются в дронах и рассчитаны на 39000 об / мин. чего должно быть более чем достаточно, чтобы утолить жажду скорости. Автомобиль будет питаться от небольшой литиевой батареи и может управляться дистанционно с помощью RF-модуля nRF24L01. В качестве альтернативы, если вы ищете что-то простое, вы также можете проверить эти проекты Simple RF Robot и Raspberry Pi Bluetooth Car.
Двигатель постоянного тока без сердечника для радиоуправляемых машин
Двигатель постоянного тока без сердечника, который используется в этом проекте, показан на рисунке ниже. Вы можете легко их найти, поскольку они широко используются в мини-дронах. Просто поищите двигатель без сердечника с магнитным микромагнитным сердечником 8520, и вы их найдете.
Теперь у использования двигателей постоянного тока для радиоуправляемой машины есть определенные недостатки. Во-первых, они обеспечивают очень низкий пусковой крутящий момент, поэтому наша радиоуправляемая машина должна быть как можно более легкой. Вот почему я решил собрать всю машину на печатной плате с использованием компонентов SMD и максимально уменьшить размер платы. Вторая проблема - его высокая скорость, 39000 об / мин (об / мин вала) трудно обрабатывать, поэтому нам нужна схема управления скоростью на стороне Arduino, которую мы построили с использованием MOSFET. В-третьих, эти двигатели будут питаться от одной литий-полимерной батареи с рабочим напряжением от 3,6 до 4,2 В, поэтому мы должны спроектировать нашу схему для работы от 3,3 В. Вот почему мы использовали 3,3 В Arduino Pro mini.как мозг нашей радиоуправляемой машины. Разобравшись с этими проблемами, давайте посмотрим на материалы, необходимые для создания этого проекта.
Необходимые материалы
- 3,3 В Arduino Pro Mini
- Ардуино Нано
- NRF24L01 - 2шт.
- Модуль джойстика
- SI2302 МОП-транзистор
- 1N5819 Диод
- Двигатели BLDC без сердечника
- AMS1117-3,3 В
- Литий-полимерный аккумулятор
- Резисторы, конденсаторы,
- Соединительные провода
Радиочастотный джойстик для радиоуправляемой машины с использованием Arduino
Как упоминалось ранее, радиоуправляемым автомобилем можно будет управлять дистанционно с помощью радиочастотного джойстика. Этот джойстик также будет построен с использованием Arduino вместе с RF-модулем nRF24L01, мы также использовали модуль Joystick для управления нашим RC в требуемом направлении. Если вы совершенно не знакомы с этими двумя модулями, вы можете прочитать статьи «Интерфейс Arduino с nRF24L01» и «Интерфейс джойстика с Arduino», чтобы узнать, как они работают и как их использовать. Чтобы собрать дистанционный радиочастотный джойстик Arduino, вы можете следовать приведенной ниже схеме.
Схема радиочастотного джойстика может получать питание через порт USB на плате nano. Модуль nRF24L01 работает только от 3,3 В, поэтому мы использовали вывод 3,3 В на Arduino. Я построил схему на макетной плате, и она выглядит так, как показано ниже, вы также можете создать для этого печатную плату, если это необходимо.
Код Arduino для схемы радиочастотного джойстика довольно прост: нам нужно прочитать значение X и значение Y с нашего джойстика и отправить их в RC-машину через nRF24L01. Полную программу для этой схемы можно найти внизу этой страницы. Мы не будем вдаваться в объяснение этого, поскольку мы уже обсуждали это в ссылке на интерфейсный проект, опубликованной выше.
Схема автомобиля с радиоуправлением Arduino
Полная принципиальная схема нашего автомобиля Arduino с дистанционным управлением показана ниже. На принципиальной схеме также есть возможность добавить в нашу машину два ИК-модуля TCRT5000. Это было запланировано для того, чтобы наша радиоуправляемая машина могла работать как следящий за линией робот, чтобы он мог работать самостоятельно, без внешнего управления. Однако ради этого проекта мы не будем концентрироваться на нем, следите за обновлениями для другого руководства по проекту, в котором мы попробуем создать «самого быстрого робота-следящего за линией». Я объединил обе схемы на одной печатной плате для простоты сборки, вы можете игнорировать ИК-датчик и секцию операционного усилителя для этого проекта.
Взаимодействие с другими людьмиАвтомобиль RC будет питаться от Lipo Battery, подключенного к клемме P1. AMS117-3.3V используется для регулирования 3.3V для нашего NRF24L01 и нашей про-мини-плату. Мы также можем подключить плату Arduino непосредственно к необработанному выводу, но встроенный регулятор напряжения 3,3 В на pro mini не сможет обеспечить достаточный ток для наших радиочастотных модулей, поэтому мы использовали внешний стабилизатор напряжения.
Для управления нашими двумя двигателями BLDC мы использовали два полевых МОП-транзистора SI2302. Важно убедиться, что на эти полевые МОП-транзисторы можно подавать напряжение 3,3 В. Если вы не можете найти точно такой же номер детали, вы можете поискать эквивалентные полевые МОП-транзисторы с указанными ниже характеристиками передачи
Двигатели могут потреблять пиковый ток до 7 А (при непрерывном испытании - 3 А с нагрузкой), следовательно, ток стока полевого МОП-транзистора должен составлять 7 А или более, и он должен полностью включиться при 3,3 В. Как вы можете видеть здесь, выбранный нами полевой МОП-транзистор может обеспечить 10 А даже при напряжении 2,25 В, так что это идеальный выбор.
Изготовление печатной платы для радиоуправляемой машины Arduino
Самой интересной частью создания этого проекта была разработка печатных плат. Печатная плата здесь не только формирует схему, но и выступает в качестве шасси для нашего автомобиля, поэтому мы спроектировали автомобиль, похожий на форму, с возможностью легко монтировать наши двигатели. Вы также можете попробовать разработать свою собственную печатную плату, используя схему выше, или вы можете использовать мой дизайн печатной платы, который после завершения выглядит так, как показано ниже.
Как видите, я разработал печатную плату так, чтобы легко установить аккумулятор, двигатель и другие компоненты. Вы можете скачать файл Gerber для этой платы по ссылке. Когда вы будете готовы с файлом Гербера, самое время его изготовить. Чтобы сделать ваши печатные платы легко выполненными с помощью PCBGOGO, выполните следующие действия.
Шаг 1. Зайдите на сайт www.pcbgogo.com, зарегистрируйтесь, если вы впервые. Затем на вкладке прототипа печатной платы введите размеры вашей печатной платы, количество слоев и количество требуемых печатных плат. Моя печатная плата имеет размер 80 см × 80 см, поэтому вкладка выглядит так, как показано ниже.
Шаг 2: Продолжите, нажав кнопку Цитировать сейчас . Вы попадете на страницу, где при необходимости установите несколько дополнительных параметров, например, используемый материал, расстояние между дорожками и т. Д. Но в большинстве случаев значения по умолчанию будут работать нормально. Единственное, что мы должны здесь учитывать, - это цена и время. Как видите, время сборки составляет всего 2-3 дня, а для нашего PSB это всего лишь 5 долларов. Затем вы можете выбрать предпочтительный способ доставки в зависимости от ваших требований.
Шаг 3: Последний шаг - загрузить файл Gerber и продолжить оплату. Чтобы убедиться, что процесс проходит гладко, PCBGOGO проверяет, действителен ли ваш файл Gerber, прежде чем продолжить оплату. Таким образом, вы можете быть уверены, что ваша печатная плата удобна для изготовления и будет доставлена вам в установленном порядке.
Сборка печатной платы
После того, как плата была заказана, она пришла ко мне через несколько дней, хотя курьер доставил ее в аккуратно помеченную, хорошо упакованную коробку, и, как всегда, качество печатной платы было потрясающим. Я делюсь несколькими изображениями досок ниже, чтобы вы могли судить.
Я включил паяльник и приступил к сборке платы. Поскольку посадочные места, контактные площадки, переходные отверстия и шелкография идеально подходят по форме и размеру, у меня не возникло проблем со сборкой платы. Плата была готова всего за 10 минут с момента распаковки коробки.
Ниже представлены несколько фотографий платы после пайки.
Колеса для 3D-печати и крепление двигателя
Как вы, возможно, заметили на картинке выше, нам нужно 3D-модель нашего мотора и колес для робота. Если вы использовали наш файл PCB Gerber, опубликованный выше, то вы также можете использовать 3D-модель, скачав ее по этой ссылке.
Я использовал Cura, чтобы разрезать свои модели и распечатать их с помощью Tevo Terantuala без опор и 0% заполнения для уменьшения веса. Вы можете изменить настройку в соответствии с нашим принтером. Поскольку двигатели вращаются очень быстро, мне было сложно сконструировать колесо, которое плотно и плотно прилегало к валу двигателя. Поэтому я решил использовать лезвия дрона внутри колеса, как вы можете видеть ниже.
Я нашел это более надежным и прочным, однако поэкспериментируйте с различными конструкциями колес и дайте мне знать в разделе комментариев, что сработало для вас.
Программирование Arduino
Полную программу (как Arduino nano, так и pro mini) для этого проекта можно найти внизу этой страницы. Объяснение вашей RC-программы следующее
Запускаем программу с включения необходимого файла заголовка. Обратите внимание, что для модуля nRF24l01 требуется, чтобы в вашу среду разработки Arduino была добавлена библиотека. Вы можете загрузить библиотеку RF24 с Github по этой ссылке. Кроме того, мы уже определили минимальную и максимальную скорость для нашего робота. Минимальный и максимальный диапазон от 0 до 1024 соответственно.
#define min_speed 200 #define max_speed 800 #include
Затем внутри функции настройки мы инициализируем наш модуль nRF24L01. Мы использовали 115 диапазонов, так как он не перегружен, и настроили модуль на работу с низким энергопотреблением, вы также можете поиграть с этими настройками.
void setup () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // 115 полоса выше сигналов WIFI myRadio.setPALevel (RF24_PA_MIN); // МИН. Мощность low rage myRadio.setDataRate (RF24_250KBPS); // Минимальная скорость}
Затем в функции основного цикла мы будем выполнять только функцию ReadData, с помощью которой мы будем постоянно читать значение, отправленное из нашего модуля джойстика Transmitter. Обратите внимание, что адрес канала, указанный в программе, должен совпадать с адресом, указанным в программе передатчика. Мы также распечатали значение, которое получаем для отладки. После успешного считывания значения мы выполним функцию Control Car для управления нашей RC-машиной на основе значения, полученного от
модуля Rf.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Какой канал читать, 40 бит Address myRadio.startListening (); // Прекращаем передачу и запускаем Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nПолучено:"); Serial.println (data.msg); получено = data.msg; Control_Car (); }}
Внутри функции Control Car мы будем управлять двигателями, подключенными к выводам PWM, используя функцию аналоговой записи. В нашей программе передатчика мы преобразовали аналоговые значения выводов A0 и A1 Nano в значения от 1 до 10, от 11 до 20, от 21 до 30 и от 31 до 40 для управления автомобилем в прямом, обратном, левом и правом направлениях соответственно. Приведенная ниже программа используется для управления роботом в прямом направлении.
if (получено> = 1 && получено <= 10) // Двигаться вперед {int PWM_Value = map (Received, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
Точно так же мы можем написать еще три функции для обратного, левого и правого управления, как показано ниже.
если (получено> = 11 && получено <= 20) // Разрыв {int PWM_Value = map (получено, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (получено> = 21 && получено <= 30) // Поверните налево {int PWM_Value = map (Received, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (получено> = 31 && получено <= 40) // Поверните направо {int PWM_Value = map (Received, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
Работа Arduino RC Car
После того, как вы закончите с кодом, загрузите его на свою профессиональную мини-доску. Снимите аккумулятор и плату через модуль FTDI для тестирования. Запустите свой код, откройте последовательную батарею, и вы должны получить значение от модуля джойстика передатчика. Подключите аккумулятор, и ваши моторы также должны начать вращаться.
Полную работу над проектом можно найти в видео по ссылке внизу этой страницы. Если у вас есть вопросы, оставьте их в комментариях. Вы также можете использовать наши форумы, чтобы получить быстрые ответы на другие ваши технические вопросы.