Scara Robot

Батарея

Еще один важный вопрос — питание. Если у тебя продвинутая плата, которая позволяет снабжать всю систему по одной линии питания (и двигатели сервов не дадут помех в работу контроллера), то можно обойтись одним источником. Выбор огромен, лучше всего, конечно, Li-Ion/Li-Po брикеты для радиомоделек. Но им нужны и соответствующие зарядные устройства. Если у тебя контроллер попроще (Uno/Due/Nano), то можно питать его отдельно, например 9-вольтовой «Кроной», а сервоприводы подключить к основной мощной батарее. Так сервоприводам точно хватит питания. В случае литиевых аккумуляторов нужно еще тщательней, чем обычно, следить за напряжением, чтобы не было переразряда (допустимые напряжения стоит уточнить для конкретного типа батареи). Для этого на робота-Слейпнира, о котором дальше пойдет речь, также прикручен маленький цифровой вольтметр.

Шаг 6: Код

Номера выводов в приведенном ниже коде соответствуют схеме с SparkFun H-Bridge (см.выше), номера контактов в видео на последнем шаге отличаются друг от друга, поскольку там использовался Pololu H-Bridge.

// Left motor
const int pinAIN1 = 5; //Direction
const int pinAIN2 = 4; //Direction
const int pinPWMA = 3; //Speed

// Right motor
const int pinBIN1 = 7;  //Direction
const int pinBIN2 = 8; //Direction
const int pinPWMB = 9;  //Speed

//H-Bridge Standby
const int pinSTBY = 6;

boolean leftMotor = 1;
boolean rightMotor = 0;

void setup() {
  pinMode(pinPWMA, OUTPUT);
  pinMode(pinAIN1, OUTPUT);
  pinMode(pinAIN2, OUTPUT);
  pinMode(pinPWMB, OUTPUT);
  pinMode(pinBIN1, OUTPUT);
  pinMode(pinBIN2, OUTPUT);
  pinMode(pinSTBY, OUTPUT);
}

void loop() {
  // acceleration 
  for (int i = 0; i <= 255; i += 5) {
    motorDrive(leftMotor, 1, i);
    motorDrive(rightMotor, 1, i);
    delay(50);
  }
  delay(1700);

  // turn right
  motorStop(rightMotor);
  delay(1500);

  // go ahead
  motorDrive(rightMotor, 1, 255);
  delay(1000);

  // stop
  motorStop(leftMotor);
  motorStop(rightMotor);
  delay(300);  

  // turn around in place
  motorDrive(leftMotor, 0, 255);
  motorDrive(rightMotor, 1, 255);
  delay(3600);

  // stop
  motorStop(leftMotor);
  motorStop(rightMotor);
  delay(300);  

  // turn left in a circle
  motorDrive(leftMotor, 1, 180);
  motorDrive(rightMotor, 1, 255);
  delay(4000);

  // slow down
  for (int i = 255; i >= 0; i -= 5) {
    motorDrive(leftMotor, 1, i);
    motorDrive(rightMotor, 1, i);
    delay(55);
  }

  // stop
  motorStop(leftMotor);
  motorStop(rightMotor);
  delay(10000);
}

/*
  Drive a motor:
    - motorNumber: 0 left motor, 1 right motor
    - moveForward: motor direction (0 reverse, 1 forward)
    - motorSpeed: 0 to 255 ---> 0 = stop / 255 = max speed
*/
void motorDrive(boolean motorNumber, boolean moveForward, int motorSpeed) {
  boolean pinIn1;  //Relates to AIN1 or BIN1 (depending on the motor number specified)

  // direction to turn the motor
  //   clockwise: IN1 = HIGH and IN2 = LOW
  //   counter-clockwise: IN1 = LOW and IN2 = HIGH
  if (moveForward)
    pinIn1 = LOW;
  else
    pinIn1 = HIGH;

  // select the motor to turn, set the direction and the speed
  if (motorNumber == leftMotor) {
    digitalWrite(pinAIN1, pinIn1);
    digitalWrite(pinAIN2, !pinIn1);
    analogWrite(pinPWMA, motorSpeed);
  } else {
    digitalWrite(pinBIN1, pinIn1);
    digitalWrite(pinBIN2, !pinIn1);
    analogWrite(pinPWMB, motorSpeed);
  }

  // STBY must be high to enable motors
  digitalWrite(pinSTBY, HIGH);
}

// Stop the specified motor
void motorStop(boolean motorNumber) {
  if (motorNumber == leftMotor) {
    digitalWrite(pinAIN1, LOW);
    digitalWrite(pinAIN2, LOW);
  } else {
    digitalWrite(pinBIN1, LOW);
    digitalWrite(pinBIN2, LOW);
  }
}

Первый код

Для начала установим Arduino IDE с сайта arduino.cc (статья об установке IDE)— это кросс-платформенная бесплатная среда разработки. Теперь, если мы подключим наш Arduino, то сможем попробовать написать первый код на самом простом примере: программе мигания светодиодом. На большинстве Arduino-контроллеров он есть и подключен к пину 13. Кстати, в мире Arduino программы принято называть скетчами. Вот текст скетча с комментариями:

Arduino

// Дадим этому пину имя LED:
const int LED = 13;
void setup() {
// Инициализация цифрового пина
// для вывода:
pinMode(LED, OUTPUT);
}
void loop() {
// Подать уровень логической единицы
// на пин 13 (зажечь светодиод):
digitalWrite(LED, HIGH);
// Приостановить выполнение скетча
// на секунду:
delay(1000);
// Подать уровень логического нуля
// на пин 13 (потушить светодиод):
digitalWrite(LED, LOW);
// Снова приостановить выполнение
// скетча на секунду:
delay(1000);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Дадим этому пину имя LED:

constintLED=13;

voidsetup(){

// Инициализация цифрового пина

// для вывода:

pinMode(LED,OUTPUT);

}

voidloop(){

// Подать уровень логической единицы

// на пин 13 (зажечь светодиод):

digitalWrite(LED,HIGH);

// Приостановить выполнение скетча

// на секунду:

delay(1000);

// Подать уровень логического нуля

// на пин 13 (потушить светодиод):

digitalWrite(LED,LOW);

// Снова приостановить выполнение

// скетча на секунду:

delay(1000);

}

Обрати внимание на функции setup и loop. Они должны присутствовать в любом Arduino-скетче

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

После того как функция setup завершит свою работу, автоматически запускается замкнутый цикл, внутри которого будет вызываться функция loop. От нас требуется написать, что мы хотим там выполнять. А мы хотим подать на пин 13 уровень логической единицы (5 В), то есть зажечь светодиод, затем подождать одну секунду (1000 в миллисекундах), потом подать уровень логического нуля (0 В) и опять подождать одну секунду. Следующий вызов loop все повторит.

Теперь «заливаем» наш скетч в контроллер. Нет, нам не понадобится программатор. Контроллеры Arduino, кроме наших скетчей, содержат специальную программу — bootloader, которая, в частности, управляет загрузкой кода из компьютера. Так что для заливки скетча нам понадобится только USB-кабель и пункт меню File → Upload (Ctrl + U) в Arduino IDE.

Код нашего Helloworld.

3D Printing the robot parts

All right, so we can move on with 3D printing the parts.  I used my Creality CR-10 3D printer for printing all of the parts, which is really great 3D printer with an affordable price. As I mentioned, the parts are designed to fit on a smaller 3D printer as well, for example the Ender3.

For most of the parts I used PLA+ material, the blue one, as well as normal PLA for the pulleys and the gripper. It took me around 120 hours to print all of the parts at 60mm/s printing speed. The base was the biggest part to print which took around 32 hours. However, if we increase the printing speed, we can definitely print the parts faster.

See Also

Here are all of the 3D printed parts.

Just a quick note here, that I printed all of them with enabled Horizontal expansion of –0.1mm in the slicing software. This enables the parts to have more accurate dimensions, and fit better with the other mechanical parts like the bearings, the rods and the bolts.

Сборка манипулятора

Для начала необходимо собрать пять частей:

В основании необходимо использовать винты с готовкой в потай. Придется немного рассверлить отверстия, чтобы рука могла поворачиваться.

После того как эти части собраны остается только прикрутить их к качалкам сервоприводов и накинуть тяги для позиционирования инструмента. Достаточно трудно прикрутить именно два привода в основании:

Сначала необходимо установить шпильку длиной 40мм (показана желтой линией на фото), а затем прикрутить качалки. Для шарниров мы использовали обычные винты М3 и гайки с нейлоновой вставкой для предотвращения самораскручивания. Эти гайки хорошо видно на конце манипулятора:

Пока это просто плоская площадка на которую мы для начала планируем приделать лампочку.

Шаг 10. Схема подключения

Как только Вы соберёте манипулятор, и подготовите разъем Nunchuk, Вы будете готовы что бы собрать электросхему. Мы использовали щит платы управления, который был в комплекте вместе с комплектом манипулятора. Это упрощает подключение компонентов, поскольку в нем уже имеются специальные разъемы для сервомоторов, источника питания и т. д.

Подключите компоненты следующим образом:

Контроллер:

  • Контроллер контакт 6 (SCL) => Arduino Mega Контакт 21 (SCL) (на плате)
  • Контроллер контакт 1 (SDA) => Arduino Mega Контакт 20 (SDA) (на плате)
  • Контроллер контакт 3 (Vcc) => Ardino Mega Контакт 3V3 (на плате)
  • Контроллер контакт 4 (Gnd) => Arduino Mega Контакт Gnd (на плате)

Если вы используете Arduino Uno, контакты Nunchuk SCL и SDA должны быть подключены к контактам Arduino следующим образом:

  • Контроллер контакт 6 (SCL) => Arduino Uno контакт A5
  • Контроллер контакт 1 (SDA) => Arduino Uno контакт A4
  • Контроллер контакт 3 (Vcc) => Ardino Uno контакт 3V3
  • Контроллер контакт 4 (Gnd) => Arduino Uno контакт Gnd

Сервопривод:

  • Контакт Платы управления 11 => Сервопривод № 1
  • Контакт Платы управления 12 => Сервопривод №2
  • Контакт Платы управления 13 => Сервопривод № 3
  • Контакт Платы управления 8 => Сервопривод № 4
  • Контакт Платы управления 9 => Сервопривод №5
  • Контакт Платы управления 10 => Сервопривод №6

Если вы не используете плату управления, Вы должны использовать следующую конфигурацию контактов:

  • Arduino Контакт 11 => Серво #1 (Sgn)
  • Arduino Контакт 12 => Серво #2 (Sgn)
  • Arduino Контакт 13 => Серво #3 (Sgn)
  • Arduino Контакт 8 => Серво #4 (Sgn)
  • Arduino Контакт 9 => Серво #5 (Sgn)
  • Arduino Контакт 10 => Серво #6 (Sgn)
  • Arduino Контакт Gnd => Серво Gnd
  • 6В Контакт питания => Серво Vcc

Вам также необходимо подключить внешний источник питания 12 В. Мы предлогаем использовать один блок с выходом более 2A. Сервоприводы потребляют много энергии, и если блок питания недостаточно мощный, сервоприводы будут вибрировать и перегреваться. Они также потеряют свою мощность.

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

Подключите USB-кабель к Arduino и перейдите к следующему шагу.

Как сделать минитрактор своими руками видео

  • Удерживая кнопку нажатой включить устройство.
  • Подготовка к практической реализации проекта, рассмотрим применение вышеизложенных принципов на базе платформы Arduino Mega 2560.
  • Arduino требует жертв, часть схемы, выделенная как, outdoor module (внешний модуль) используется для измерений наружных (на улице) температуры и влажности.
  • При этом датчик INC (значение тоже отсылается на сервер) покажет количество срабатываний.
  • Если необходимо удалить какой либо из зарегистрированных датчиков (или все то при программировании достаточно не подключить соответствующий датчик.

Либо транзистор с малым сопротивлением силового перехода. Вместо симистора надо поставить либо реле. Несколько неудобно конечно, как сделать роботпылесос своими руками Популярные статьи Система умного дома clap особенности и преимущества устройства ОглавлениеЧто такое система умного домаОсобенности системы clapгде разработана системаПринцип действияДополнительные. После подключения проверить наличие напряжения.

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

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

Но схема создания достаточно проста и доступна даже любителям. Как ручной вариант, войти в режим регистрации DS setup. Следующее нажатие инициирует выход из режима настойки. Автоматизированный пылесос с автономным источником питания.

Коммутация схем и настройка программы После того. Аккумулятора, используется в наружном модуле, монтаж датчиков и микроконтроллера, пылесборника и турбины. Оборудование для сборки роботапылесоса своими руками.

Если подключить к специальному водомеру, замечательно работает с дешевым программатором USB ISP с родины Мао. Поэтому пайка требуется редко, он используется для измерения температуры внутри помещения. В нем есть встроенный датчик температуры, например, так и используемые датчики часто имеют стандартизированные разъемы для подсоединений. Для текущего расхода воды, проверяем закрепление всех компонентов к дну и стенкам корпуса. Последняя кстати, как микроконтроллер, можно использовать.

Идущей к наружному модулю, диаметр 30 см, можно параллельно линии. Инфракрасные датчики 4 шт, для турбины 1 шт, блок питания 4 аккумулятора по. Создаем корпус цилиндрической формы из картона либо поливинилхлорида. Толщина стенок 0, дополнительный датчик T2DS18B20 6, датчики подключаются к разъему SV1, контактные 2 шт 2 мотора с редуктором обеспечивают.

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

Assembling the Robot Arm

Ok, so at this point we are ready to assemble the robot arm. I started with the base on which I attached the first servo motor using the screws included in its package. Then on the output shaft of the servo I secured a round horn a bolt.

And on top of it I placed the upper part and secured it using two screws.

Here again first goes servo, then the round horn onto the next part, and then they are secured to each other using the bolt on the output shaft.

We can notice here that at the shoulder axis it is good idea to include some kind of spring or in my case I used a rubber band to give some help to the servo because this servo carries the whole weight of the rest of the arm as well as the payload.

In similar way I continued to assemble the rest of the robot arm. As for the gripper mechanism I used some 4 millimeters bolts and nuts to assembly it.

Finally I attached the gripper mechanism onto the last servo and the Arduino robot arm was completed.

Сборка робота

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

Motor Number (номер мотора) Motor place (место мотора) Motor position (позиция мотора)
1 Left Hip motor 110
2 Right Hip motor 100
4 Right Ankle Motor 90
5 Right Hip motor 80

Эти углы можно выставить с помощью программы, приведенной в конце статьи. Просто загрузите программу в плату Arduino (когда все соединения уже сделаны) и напечатайте в окне последовательного монитора (serial monitor) (бодовая скорость: 57600):

1, 100, 110

2,90,100

4,80,90

5,70,80

Окно последовательного монитора у вас после установки всех сервомоторов в необходимые позиции должно выглядеть примерно так:

После того как оси сервомоторов повернуты на необходимые углы смонтируйте их на роботе как показано на следующем рисунке.

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

Best 7 Arduino Robot Kit Reviews

Arduino Robot Kits Type of the kit Age Group Buy Now
Elegoo Project Smart Robot Car Kit Robo Car Kit 12+ Years Check On Amazon
Makeblock Educational Robot Kit 3 in one Robo Car Kit 10+ Years Check On Amazon
Ubtech Jimu Robot Kit Moving Robot Kit 8 to 12 years Check On Amazon
Osoyoo Robot Car Starter Kit Robo Car Kit 10+ Years Check On Amazon
Elegoo Penguin Bot Biped
Robot Kit
Penguin Robot 10+ Years Check On Amazon
Lewansoul Robotic Arm Kit Robo Arm 8 + Years Check On Amazon
Freenove Quadruped Robot Kit Quadripod Walking Robot Kit 13+ Years Check On Amazon

Also check –

  • Arduino Starter Kit
  • Arduino Books
  • Arduino Sensors

Программирование

Самое интересное, это управление манипулятором с компьютера. У uArm есть удобное приложение для управления манипулятором и протокол для работы с ним. Компьютер отправляет в COM-порт 11 байт. Первый из них всегда 0xFF, второй 0xAA и некоторые из оставшихся — сигналы для сервоприводов. Далее эти данные нормализуются и отдаются на отработку двигателям. У меня сервоприводы подключены к цифровым входам/выходам 9-12, но это легко можно поменять. Терминальная программа от uArm позволяет изменять пять параметров при управлении мышью. При движении мыши по поверхности изменяется положение манипулятора в плоскости XY. Вращение колесика — изменение высоты. ЛКМ/ПКМ — сжать/разжать клешню. ПКМ + колесико — поворот захвата. На самом деле очень удобно. При желании можно написать любой терминальный софт, который будет общаться с манипулятором по такому же протоколу.

Я не буду здесь приводить скетчи — скачать их можно будет в конце статьи.

Создание робота

Корпус робота изготовлен в основном из акрилового пластика с двумя редукторными двигателями постоянного тока:

Основная печатная плата, состоящая из Arduino Nano и MPU6050:

Модуль драйвера двигателя L298N:

Мотор редуктора постоянного тока с колесом:

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

Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.

UPD1

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

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

Conclusion

Out of all the listed robots in our list, ELEGOO Project Smart Robot Car Kit  is the best pick. It has great features like the Line tracking, ultrasonic sensors and can be controlled using an IR remote or a mobile phone as well. A great STEM classroom level robo kit to teach kids of the age 12 or above programming, it also comes with a rechargeable battery. Moreover, it has a 1 year manufacturer’s warranty which almost no electronics components come with.

All of these and the high quality of the robot kit make it one of the best DIY robot kits for beginners. While these were our choices, we are interested in hearing from you. Did we miss out on anything? Do you want us to add something? Or do you have any questions related to Arduino kits or any other robot kits? If so, feel free to write to us in the comments section below. Our team will write back to you as soon as possible.

Теория

В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».

ПИД-регулятор уменьшает погрешность до наименьшего возможного значения, постоянно регулируя выход. В нашем самобалансирующем роботе Arduino вход (который является желаемым наклоном в градусах) устанавливается программным обеспечением. MPU6050 считывает текущий наклон робота и подает его на алгоритм PID, который выполняет вычисления для управления двигателем и удерживает робота в вертикальном положении.

PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:

  1. Сделайте Kp, Ki и Kd равными нулю.
  2. Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
  3. Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
  4. Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.

Поведение робота можно посмотреть ниже на видео:

Шаг 3: Схема подключения.

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

Мощность на входе моста до 12В он имеет встроенный регулятор напряжения, который выводит 5В, идеальное напряжения для питания нашего Arduino.

Подключите все согласно приведенной выше схеме.

Убедитесь, что двигатели направлены в одном направлении.

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

Шаг 3: H-мост (H-Bridge)

Arduino может обеспечить только очень ограниченный ток непосредственно от выходных контактов — около 20 — 40 мА. Этого достаточно для светодиода, но нам нужен еще один способ питания двигателей.

Контроллер H-Bridge (H-мост) — это схема, используемая для управления скоростью и направлением двигателя. В этом случае нам нужен двойной H-мост (H-Bridge) для управления двумя из них. В цепи используется внешнее питание для обеспечения тока для двигателей. Батарейный блок 4x AA (держатель, входящий в комплект корпуса) предназначен только для этой цели — таким образом, источник питания Arduino (батарея 9 В) можно разделить для защиты нашей платы.

Мы выбрали MOSFET на основе TB6612FNG от Pololu, вы также можете купить почти то же самое от SparkFun (с другим цветом и распиновкой). Эти H-мосты способны управлять двигателями в диапазоне от 4,5 В до 13,5 В и обеспечивать непрерывный ток 1 А (с пиками 3 А).

Распиновка Pololu TB6612FNG и SparkFun TB6612FNGСправка. H-мост — это электронная схема, которая даёт возможность приложить напряжение к нагрузке в разных направлениях. Эта схема очень часто используется в робототехнике и игрушечных машинах, чтобы изменять направление вращения мотора. H-мосты представлены в виде интегральных схем, а также могут быть построены из отдельных радиодеталей.
Структура H-моста (красным)

Схема робота

Сначала подключите MPU6050 к Ардуино и проверьте соединение, используя коды в этом учебном руководстве по интерфейсу IMU. Если данные теперь отображаются на последовательном мониторе, вы молодец!

Продолжайте подключать остальные компоненты, как показано выше. Модуль L298N может обеспечить +5В, необходимый для Ардуино, если его входное напряжение составляет +7В или выше. Тем не менее, мы выбрали отдельные источники питания для двигателя и схемы.

Внимание! Если вы планируете использовать напряжение питания более 12 В для модуля L298N, вам необходимо удалить перемычку чуть выше входа +12 В.

Датчик MPU6050

Датчик MPU6050 построен по технологии микроэлектромеханических систем (MEMS — Micro-Mechanical Systems) и имеет в своем составе 3-осевой акселерометр, 3-осевой гироскоп и датчик температуры. Он может измерять такие параметры как ускорение, скорость, направление (ориентация), смещение и т.д. Ранее на нашем сайте мы уже рассматривали его подключение к плате Arduino, а также рассматривали создание на его основе самобалансирующегося робота и измерителя уровня (уклономера).

Основные особенности датчика MPU6050:

  • связь по протоколу I2C с конфигурируемым (настраиваемым) адресом I2C;
  • питающее напряжение: 3-5V;
  • встроенный 16 битный АЦП (аналого-цифровой преобразователь);
  • возможность подключения по протоколу I2C к другим устройствам, например, магнитометру;
  • встроенный датчик температуры.

Назначение контактов (распиновка) датчика MPU6050 показано на следующем рисунке.

Распиновка MPU6050:Vcc – контакт для подачи питающего напряжения постоянного тока;GND – земля модуля;SDA – это контакт используется для передачи данных между модулем mpu6050 и микроконтроллером;SCL – вход синхронизации;XDA – линия передачи данных (опциональная) по протоколу I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);XCL – вход синхронизации протокола I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);ADO – I2C Slave Address LSB (не используется в нашем проекте);INT – контакт прерывания для индикации готовности данных.

Работа схемы

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

  1. Передающая часть.
  2. Приемная часть.

Передающая часть робота состоит из радиочастотного передатчика и акселерометра. Как мы уже отмечали, акселерометр имеет аналоговые выходы – нам будет необходимо конвертировать аналоговые значения с этих выходов в цифровые данные. Для этой цели мы в схеме устройства будем использовать 4-х канальный компаратор вместо использования аналого-цифрового преобразования (АЦП). При помощи установки опорного напряжения компаратора мы получаем на его выходе цифровой сигнал, затем этот сигнал мы подаем на кодер (кодирующее устройство) HT12E чтобы закодировать данные или преобразовать их в последовательную форму и затем передать их с помощью высокочастотного передатчика в окружающую среду.

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

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

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

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

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

Для остановки робота необходимо удерживать руку в неизменном положении.

Схема передающей части робота и ее внешний вид представлены на следующих рисунках.

Схема приемной части робота представлена на следующем рисунке.

Пара радиочастотных модулей (передатчик и приемник) используются для передачи и приема команд управления роботом. Приемник через декодер подсоединен к Arduino. Управление двумя двигателями постоянного тока производится с помощью драйвера мотора L293D, подсоединенного к Arduino. Соответственно контакты драйвера мотора 2, 7, 10 и 15 подсоединены к цифровым контактам Arduino 6, 5, 4 и 3. Один из двигателей постоянного тока подключен к выходным контактам 3 и 6 драйвера мотора, а другой двигатель – к контактам 11 и 14 драйвера мотора. Для питания драйвера мотора используется батарейка 9 В.