Работа схемы
Схема устройства представлена на следующем рисунке.
Драйвер мотора используется для управления двигателями машины. Его контакты 2, 7, 10 и 15 подсоединены к цифровым контактам Arduino 12, 11, 10 и 9 соответственно. Один из двигателей подключен к выходным контактам драйвера мотора 3 и 6, а другой – к контактам 11 и 14. Батарейка 6 Вольт также используется для питания драйвера мотора – а через него для питания двигателей. Контакты rx и tx Bluetooth модуля непосредственно подключены к контактам tx и rx платы Arduino. Батарейка 9 Вольт используется для подачи питания на контакт Arduino Vin.
Шаг 6. H-мост (модуль LM 298)
Термин H-мост (англ. H-bridge) выведен из типичного графического представления такой схемы. Это схема, которая может приводить двигатель постоянного тока в прямом и обратном направлении, см. рисунок выше для понимания работы H-моста.
Он состоит из 4 электронных переключателей S1, S2, S3 и S4 (транзисторы / МОП-транзисторы (MOSFET) / IGBTS). Когда переключатели S1 и S4 замкнуты (а S2 и S3 разомкнуты), на двигатель идет положительное напряжение. Поэтому он вращается в прямом направлении. Аналогично, когда S2 и S3 замкнуты, а S1 и S4 открыты, обратное напряжение идет через двигатель, поэтому он вращается в обратном направлении.
Примечание. Переключатели в одном и том же плече (S1, S2 или S3, S4) никогда не замыкаются в одно и то же время, это приведет к короткому замыканию.
H-мосты доступны в виде интегральных микросхем, или вы можете создать свой собственный, используя 4 обычных транзистора или полевых транзистора (MOSFET). В нашем случае мы используем микросхему H-моста LM298, которая позволяет контролировать скорость и направление вращения двигателей. Ниже перейдем к описанию пинов:
Выход 1: двигатель постоянного тока 1 + или шаговый двигатель A+
Выход 2: двигатель постоянного тока 1 - или шаговый двигатель A-
Выход 3: двигатель постоянного тока 2 + или шаговый двигатель B+
Выход 4: двигатель B выведен
12В контакт: 12В вход, но вы можете использовать от 7 до 35 В
GND: земля
Вывод 5В: выход 5 В, если перемычка 12 В на месте, идеально подходит для питания вашего Arduino
EnA: включает сигнал ШИМ для двигателя А
IN1: включить двигатель A
IN2: включить двигатель A
IN3: включить двигатель B
IN4: включить двигатель B
EnB: включает сигнал ШИМ для двигателя B
Необходимые детали и узлы
Прежде чем приступить к сборке квадрокоптера своими руками, необходимо обзавестись всеми необходимыми деталями. Мозгом нашей самоделки станет полетный контроллер Arduino Uno. Его возможностей более чем достаточно для того, чтобы управлять беспилотником.
Помимо микроконтроллера, нам понадобятся:
- Аккумулятор (лучше несколько) на 3.7В
- Плата MPU-6050 (на ней установлены гироскоп и акселерометр)
- Транзистор ULN2003A
- Коллекторные двигатели с полым ротором 0820
- Провода
Необходимо сделать несколько замечаний. Так как мы собираем дешевый самодельный дрон, то наш выбор пал на коллекторные движки с полым ротором (так называемые coreless motors). Они далеко не так надежны, как бесколлекторные двигатели, но зато гораздо дешевле стоят. Кроме того, можно обойтись без дополнительных контроллеров скорости.
Зато невозможно обойтись без гироскопа и акселерометра. Гироскоп необходим для того, чтобы квадрокоптер мог удерживать заданное направление движения, тогда как акселерометр используется для измерения ускорения. Без этих устройств управлять коптером было бы гораздо сложнее (если вообще возможно), так как именно они предоставляют данные для сигнала, регулирующего скорость вращения винтов.
Мы не указали в списке необходимых деталей раму. Ее можно приобрести, а можно распечатать на 3D принтере каркас, лучи и крепления для двигателей. Второй вариант нам кажется более предпочтительным, тем более, что в интернете можно без труда найти проекты квадрокоптера.
Исходный код программы
В программе первым делом необходимо инициализировать выходные контакты для подключения двигателей (через драйвер мотора).
Arduino
#define m11 11 // задний двигатель
#define m12 12
#define m21 10 // передний двигатель
#define m22 9
1 |
#define m11 11 // задний двигатель #define m12 12 #define m21 10 // передний двигатель #define m22 9 |
Затем в функции setup задать направление работы для этих контактов (на вывод данных).
Arduino
void setup()
{
Serial.begin(9600);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
}
1 |
voidsetup() { Serial.begin(9600); pinMode(m11,OUTPUT); pinMode(m12,OUTPUT); pinMode(m21,OUTPUT); pinMode(m22,OUTPUT); } |
После этого мы будем считывать данные из последовательного порта Arduino, получаемые им от последовательного порта Bluetooth модуля, и выполнять соответствующие инструкции.
Arduino
void loop()
{
while(Serial.available())
{
char ch=Serial.read();
str=ch;
if(str==’1′)
{
Serial.println(Forward);
forward();
i=0;
}
else if(str==’2′)
{
Serial.println(Left);
right();
i=0;
}
else if(str==’3′)
{
Serial.println(Right);
left();
i=0;
}
1 |
voidloop() { while(Serial.available()) { charch=Serial.read(); stri++=ch; if(stri-1==’1′) { Serial.println(Forward); forward(); i=; } elseif(stri-1==’2′) { Serial.println(Left); right(); i=; } elseif(stri-1==’3′) { Serial.println(Right); left(); i=; } |
Затем мы запрограммируем функции для различных направлений движения машины. Всего будет использоваться пять условий для задания направления движения машины, представленных в следующей таблице:
Далее представлен полный текст программы.
Arduino
#define m11 11 // задний двигатель
#define m12 12
#define m21 10 // передний двигатель
#define m22 9
char str,i;
void forward()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}
void backward()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
}
void left()
{
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
delay(100);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}
void right()
{
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
delay(100);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}
void Stop()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
}
void setup()
{
Serial.begin(9600);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
}
void loop()
{
while(Serial.available())
{
char ch=Serial.read();
str=ch;
if(str==’1′)
{
Serial.println(Forward);
forward();
i=0;
}
else if(str==’2′)
{
Serial.println(Left);
right();
i=0;
}
else if(str==’3′)
{
Serial.println(Right);
left();
i=0;
}
else if(str==’4′)
{
Serial.println(Backward);
backward();
i=0;
}
else if(str==’5′)
{
Serial.println(Stop);
Stop();
i=0;
}
delay(100);
}
}
1 |
#define m11 11 // задний двигатель charstr2,i; voidforward() { digitalWrite(m11,LOW); digitalWrite(m12,LOW); digitalWrite(m21,HIGH); digitalWrite(m22,LOW); } voidbackward() { digitalWrite(m11,LOW); digitalWrite(m12,LOW); digitalWrite(m21,LOW); digitalWrite(m22,HIGH); } voidleft() { digitalWrite(m11,HIGH); digitalWrite(m12,LOW); delay(100); digitalWrite(m21,HIGH); digitalWrite(m22,LOW); } voidright() { digitalWrite(m11,LOW); digitalWrite(m12,HIGH); delay(100); digitalWrite(m21,HIGH); digitalWrite(m22,LOW); } voidStop() { digitalWrite(m11,LOW); digitalWrite(m12,LOW); digitalWrite(m21,LOW); digitalWrite(m22,LOW); } voidsetup() { Serial.begin(9600); pinMode(m11,OUTPUT); pinMode(m12,OUTPUT); pinMode(m21,OUTPUT); pinMode(m22,OUTPUT); } voidloop() { while(Serial.available()) { charch=Serial.read(); stri++=ch; if(stri-1==’1′) { Serial.println(Forward); forward(); i=; } elseif(stri-1==’2′) { Serial.println(Left); right(); i=; } elseif(stri-1==’3′) { Serial.println(Right); left(); i=; } elseif(stri-1==’4′) { Serial.println(Backward); backward(); i=; } elseif(stri-1==’5′) { Serial.println(Stop); Stop(); i=; } delay(100); } } |
Шаг 4: Проверка двигателей и программа Arduino IDE
Нам нужно, загрузить и установить версию Arduino 23.
После того, как мы установили Arduino, мы подключим наш компьютер с ЧПУ контроллера Рампы / Sanguino / Gen6-7 с помощью кабеля USB, мы выберем соответствующий последовательный порт под Arduino инструментов IDE / последовательный порт, и мы будем выбирать тип контроллера под инструменты платы (Рампы (Arduino Mega 2560), Sanguinololu / Gen6 (Sanguino W / ATmega644P — Sanguino должен быть установлен внутри Arduino)).
Основное объяснение параметра, все параметры конфигурации находятся в configuration.h файла:
В среде Arduino мы откроем прошивку, у нас уже есть загруженный файл / Sketchbook / Marlin и мы увидим параметры конфигурации, перед тем, как загрузим прошивку на наш контроллер.
1) #define MOTHERBOARD 3, в соответствии с реальным оборудованием, мы используем (Рампы 1,3 или 1,4 = 33, Gen6 = 5, …).
2) Термистор 7, RepRappro использует Honeywell 100k.
3) PID — это значение делает наш лазер более стабильным с точки зрения температуры.
4) Шаг на единицу, это очень важный момент для того, чтобы настроить любой контроллер (шаг 9)
У вас нет 3D-принтера? Построй Один!
Этот конкретный 3D-принтер, 3D-принтер EWaste за $ 60 , очень мал и может быть недостаточно большим, чтобы печатать детали для некоторых из более крупных проектов, описанных выше, но это действительно крутой домашний проект, очень доступный и экологически безопасный, так как он использует в основном переработанные детали. Вам понадобится пара старых CD или DVD приводов, дисковод гибких дисков, небольшой шаговый двигатель, блок питания, экструдер и несколько дополнительных устройств, но на самом деле это удивительно простой проект.
Вам нужно будет немного поработать с калибровкой и базовой электроникой, но конечный продукт удивительно функционален для того, из чего он сделан.
Как еще можно модернизировать квадрик
Узким местом коптера являются его коллекторные движки. Если поискать, можно найти чуть более крупные и более мощные моторы, чем предложены в нашей статье, но значительного выигрыша в характеристиках не произойдет.
Впрочем, у нас была цель собрать недорогой квадрокоптер своими руками, и именно поэтому использовались дешевые моторы. Бесколлекторные двигатели заметно дороже, но зато они дадут вам заметно большую мощность и надежность. К ним придется докупить еще и контроллеры скорости, но это действительно эффективная модернизация.
Выбор платы Arduino Uno обусловлен тем, что с нее можно довольно легко снять чип и поставить его на ProtoBoard. Это позволяет уменьшить вес дрона на 30 грамм, но придется включить в схему дополнительные конденсаторы. Подойдет и плата Arduino Pro Mini.
Что касается программы Arduino, то ее можно сравнительно легко изменить и дополнить новыми функциями. Главное, что с ее помощью дрон способен в автоматическом режиме стабилизовать свое положение.
На квадрокоптер могут быть установлены дополнительные модули, например, плата приемника, что позволит организовать дистанционное управление дроном.
Где купить платформу и запчасти
Все, о чем говорится в этой статье, можно без проблем купить на всем известном сайте. К сожалению, подавляющее большинство предложений основываются на стандартной платформе 4WD автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.
Платформа Ардуино 4WD с двигателями, колесами и рамой без электронных компонентов
4WD платформа для Ардуино с необычным видом крепления элементов
Конструктор машинки Ардуино на платформе 4WD с пультом управления Bluetooth и PS2
Типовой набор 4WD машинки с Ардуино, шилдами и основными датчиками
Шаг 5. Ардуино контроллер
Arduino UNO — это плата микроконтроллера с открытым исходным кодом, основой которой служит микроконтроллер Microchip ATmega328P и разработанная Arduino.cc.
Плата оснащена наборами цифровых и аналоговых пинов ввода/вывода (I/O), которые могут быть подключены к различным платам расширения (экранам) и другим цепям. Плата имеет 14 цифровых контактов, 6 аналоговых контактов и программируется с помощью Arduino IDE (интегрированная среда разработки) через USB-кабель типа B. Плата может питаться от USB-кабеля или от внешней 9-вольтовой батареи, хотя он принимает напряжение от 7 до 20 вольт, по аналогии с Arduino Nano и Leonardo.
Эталонный дизайн оборудования распространяется под лицензией Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Макет и производственные файлы для некоторых версий оборудования также доступны. «Uno» означает один на итальянском языке и был выбран в честь выпуска Arduino Software (IDE) 1.0. Плата Uno и версия 1.0 программного обеспечения Arduino (IDE) были эталонными версиями Arduino, теперь разработанными для более новых выпусков.
Плата Uno является первой в серии плат Arduino c USB и эталонной моделью для последующих платформ. ATmega328 на Arduino Uno поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать новый код без использования внешнего аппаратного программера с использованием оригинального протокола STK500. Uno также отличается от всех предыдущих плат тем, что не использует микросхему драйвера FTDI USB-to-serial. Вместо этого он использует Atmega16U2 (Atmega8U2 до версии R2), запрограммированный как преобразователь USB-to-serial.
Микроконтроллеры обычно программируются с использованием диалекта функций из языков программирования C и C++. В дополнение к использованию традиционных наборов инструментов компилятора проект Arduino предоставляет интегрированную среду разработки (IDE).
Направляющие (валы)
На что влияет. Плавность хода сопла, ровность слоев.
Варианты. Направляющих для Prusa i3 нужно ровно шесть штук. По две на каждую ось (X, Y, Z). Размеры следующие:
Общепринятый стандарт для валов 3D-принтера — 8 мм. И гнаться за 10 или 12 мм смысла нет. Вес головы хотэнда не такой значительный, что бы на расстоянии в 370 мм гнуть вал.
Хотя, если у вас есть лишние деньги, можно извратиться и купить 12 миллиметровые валы. Вот только подшипники и подгонка пластиковых деталей потом выйдет дороговато.
Финансовый совет. Перфекционистам на заметку: рельсовые направляющие, конечно же, отличная штука. Но их стоимость даже в Китае откровенно пугает. Оставьте эту модернизацию на будущее.
К слову, валы можно купить как на AliExpress (тут или тут), так и по месту с тех же досок объявлений. Самый доступный вариант — отправиться на блошиный рынок и найти на разборке принтеров и старой оргтехники (МФУ, сканеры) шесть нормальных валов.
Главное, вооружитесь штангенциркулем. Все валы должны быть строго одного диаметра. Цена за штуку получится в районе 60 – 70 рублей.
Цена вопроса: 420 рублей (вариант блошинного рынка).
И сколько вышло?
Проведем приблизительные подсчеты. Рассчитываем самый бюджетный вариант. Учтите, что экономия требует затрат времени — придется побегать.
ИТОГО: 7420 руб + 580 руб (на всякий случай) = 8 000 рублей.
Что ж, я обещал, что мы соберем 3D-принтер за 10 000 рублей. И мы это сделали. Да, придется побегать, поискать и потратить время, но моя задача была доказать, что 3D-печать – не так дорого, как может показаться на первый взгляд.
Материал получился очень обширным, но я старался максимально сжать информацию и выделить лишь ключевые моменты, на которые стоит обратить внимание. Надеюсь, у меня получилось
Если чего не сказал – не судите строго. Я готов поделиться опытом и посоветовать максимально эффективные варианты решения той или иной проблемы по 3D-печати. В данном случае, по закупке комплектующих.
Продолжение следует;)
iPhones.ru
Пришло время закупаться.
Рассказать
Плата Arduino CNC Shield v3.02
Плата расширения CNC Shield v3.02 создана для Arduino UNO 3D принтеров и подобного им оборудования. Данная база входов/выходов обеспечивает работу устройств в автоматическом режиме или посредством подключения к USB-порту.
Плата Arduino CNC Shield v3.02
Arduino CNC Shield v3.02 имеет 4 оси, интерфейс двух разновидностей (UART, I2C). Требуемое напряжение для силовой и логической частей соответственно равно 36 В и 5 В. Тип прошивки этой платы называется Arduino GRBL. База характеризуется четырьмя слотами (по числу осей) и перемычками для их дублирования. Драйверы Arduino CNC Shield v3.02 подключаются разными путями.
Ремни, шкивы, шпильки и прочая мелочь
Для самостоятельной сборки механики принтера остается совсем немного. По сути, это недорогие детали, рассказывать о которых слишком много не имеет смысла. Поэтому, приведу список.
Финансовый совет. Не стремитесь взять самое лучшее. Подходите с умом и проверяйте диаметры. Так, шпильки для Z оптимальны именно 5-миллиметровый. У 8-миллиметровых больший шаг резьбы, что отразиться на качестве печати (будут слишком характерная слоистость).
Гнаться за шкивами для ремня тоже нет смысла. Подойдет обычный подшипник. При покупке включайте фантазию. Вариант «тупо купить по списку» здесь не работает.
Цена вопроса: при большом желании можно легко вписаться в 700 – 800 рублей.
Электроника
Без электроники принтер не поедет и не поймет, чего вы от него хотите. К счастью, цена на комплектующие просела значительно и можно закупиться без удара по семейному бюджету.
Многоканальное управление
С одной сервомашинкой разобрались, но для самолета их нужно минимум три и еще регулятор скорости. Решение «в лоб» — взять микроконтроллер с четырьмя каналами 16-битного ШИМ, но такой контроллер будет стоять дорого и, скорее всего, займет много места на плате.
Второй вариант — запилить программный ШИМ, но занимать процессорное время — это тоже не вариант. Если снова посмотреть на диаграммы сигнала, то 80% времени он не несет никакой информации, поэтому рациональнее было бы ШИМом задавать только сам импульс 1-2мс.
Почему скважность изменяется в таких узких пределах, ведь проще было бы и формировать и считывать импульсы со скважностью хотя бы 10-90%? Зачем нужен тот неинформативный кусок сигнала занимающий 80% времени? Я заподозрил, что, возможно, эти 80% могут занимать импульсы для других исполнительных механизмов, а потом этот сигнал разделяется на несколько разных. То есть, в периоде длительностью 20мс могут уместится 10 импульсов длительностью 1-2мс, затем этот сигнал каким-то демультиплексором разделяется на 10 различных с длительностью периода как раз 20мс
Сказано — сделано, нарисовал в PROTEUS такую схемку:
То есть, в периоде длительностью 20мс могут уместится 10 импульсов длительностью 1-2мс, затем этот сигнал каким-то демультиплексором разделяется на 10 различных с длительностью периода как раз 20мс. Сказано — сделано, нарисовал в PROTEUS такую схемку:
В роли демультиплексора — 74HC238, на его вход E подаются импульсы с выхода микроконтроллера
Эти импульсы — ШИМ с периодом 2мс (500Гц) и скважностью 50-100%. У каждого импульса своя скважность, обозначающая состояние каждого канала
Вот так выглядит сигнал на входе Е:
Для того, чтобы 74HC238 знал на какой выход подать текущий сигнал используем PORTC микроконтроллера и входы A, B, C демультиплексора. В результате на выходах получаем такие сигналы:
Сигналы на выходе получаются правильной частоты (50Гц) и скважности (5-10%). Итак, нужно генерировать ШИМ частотой 500Гц и заполнением 50-100%, вот табличка для настройки предделителя и ТОР 16-битного счетчика:
Интересно, что возможное количество значений ШИМа ровно в 1000 раз меньше частоты таймера.
А как насчет взаимодействия
Удивительно слушать заявления некоторых умельцев, что для ЧПУ Ардуино не подходит, тем более, невозможен симбиоз mach3 arduino, якобы они не желают взаимодействовать.
Другие же уверены в противном: ардуину можно реализовать для ЧПУ при помощи трёх вариантов:
- Полностью автономный контроллер.
- Плата-интерпретатор отвечает за движения, но они рассчитываются на компьютере.
- Плата-транслятор (переходник) – выполняет роль виртуального ЛПТ-порта.
Многие пользователи в сети, у которых проблемная электроника, просят посоветовать им программу, чтобы станки под управлением таковой, могли работать чётко и бесперебойно. Фрезеры на станке призваны заготовку обрабатывать равномерно, выполняя сигналы программного блока.
Подшипники
На что влияет. Уровень шума, качество печати, ровность слоев и граней детали.
Варианты. И снова все упирается в бюджет. Можно заказать подшипник в блоке (модель SC8UU, например, тут). Можно просто линейный подшипник LM8UU. Можно остановиться на бронзовых или латунных втулках генератора автомобиля. Главное, подобрать нужный размер.
Наконец, можно заказать подшипники у 3D-печатника, у которого будете покупать детали для своего принтера (об этом ниже). Готовые подшипники всех размеров есть тут.
Запомните, для Prusa i3 вам нужны 12 линейных подшипников.
Финансовый совет. Не спешите заказывать подшпиники в Китае. Не факт, что выйдет дешевле. Варианты по 40 – 60 рублей за штуку можно найти и в «родных краях».
Цена вопроса: 600 рублей.
Математическая модель
Я не буду приводить вывод уравнений движения, все таки это третий курс института. Для тех же, кому интересен вывод, в конце статьи ссылка, где он описан подробнее.
Систему представим в следующем виде:
Маятник это масса mp прикрепленная на конце невесомого стержня длины l. На другой конец стержня прикреплен двигатель, развивающий максимальный момент Mk и передающий его на колесо массой mw и радиусом r. Задача управления — стабилизировать маятник в вертикальном положении и возвращать в начальное положение колесо.
Уравнения движения, описывающие обратный маятник, представимы в следующем виде:
Arduino колесный робот
Роботы Arduino роботов очень весело, и вы можете получить много крутых наборов, чтобы сделать их. Но если вы хотите сделать все это самостоятельно, этот набор инструкций от davidhrbaty поможет вам напечатать этого маленького парня на 3D-принтере, и вы сможете подключить Arduino Nano чтобы заставить его бежать. Робот может управляться с помощью ИК-пульта, автоматически с помощью обнаружения препятствий или в «режиме мониторинга», в котором используется ультразвуковой датчик.
В дополнение к распечатке тела вам понадобится Arduino Nano , некоторые серводвигатели, ИК-приемник и пульт дистанционного управления, ультразвуковой датчик, динамик и несколько батарей типа ААА. К счастью, почти все эти вещи практически гарантированно поставляются в стартовом наборе, так что вы, вероятно, уже имеете их. После этого вам просто нужно быстро распечатать и настроить моторы.
Корпус
На что влияет. Корпус обеспечивает жесткость всей конструкции. Учтите, что во время печати хотэнд будет постоянно перемешаться вверх, вниз, влево, вправо, вперед и назад. Иногда эти движения будут очень резкими и быстрыми, поэтому, чем надежнее будет корпус, тем лучших результатов вы достигните.
Варианты. Чертеж рамы есть в открытом доступе (тут или тут). Дальше остается обратиться в конторы, занимающиеся резкой фанеры, ДСП, акрила или металла.
Из стали 3-4 миллиметра выйдет подороже, потяжелее, но надежнее. Из фанеры 6 – 8 мм дешевле. Есть варианты и из акрила.
Финансовый совет. Готовые варианты рам на AliExpress и Ebay сразу отметайте. Там просят в три-четыре раза большую сумму. Полистайте доски объявлений по месту жительства. Средняя стоимость корпуса из фанеры варьируется в пределах 600 – 1000 рублей. Все, что дороже — от лукавого.
Цена вопроса: 800 рублей (здесь и далее – приблизительная стоимость).
