Bucket Mobile - робот Arduino - част 2
GeekElectronics » Arduino от А до Я » Bucket-mobile - робот на Arduino - Част 2. Свързване на моторния щит

В предишна статия описах процеса на сглобяване на мотоциклетна платформа за бъдещия робот Arduino и споделих плановете си за бъдещето.
Основната задача за днес е да накараме Bucketmobile да се движи и да управлява сервото.
Свързване на Motor Shield към Arduino Mega 2560
Да не губим време и да започваме. Отстраняваме горната част на платформата и запояваме проводниците към четирите двигателя. Спазвайте полярността. Имам синя жица на всички горни контакти и жълта на долните.

Запоявайте много внимателно, за да не повредите клемите на двигателите. Резултатът трябва да е нещо подобно.

Веднага ще поправим серво MG995 и внимателно ще поставим кабелите вътре в платформата на мотоциклета, така че да не се придържат към колелата и вече не трябва да премахваме горната му част.

След това монтираме кутията за батериите и я фиксираме. Все още имам блок от 4 елемента.
Ако имате превключвател и ненужен конектор, през който ще се зареждат батериите, тогава ги инсталирайте сега. За съжаление ги нямах под ръка.
Веднага извеждаме всички жици през дупките до върха.

Сега го фиксираме отвън в горната част на платформата Arduino Mega 2560 и вмъкваме нашия Motor Drive Shield 2x L293D в него. Поставяме горната част на платформата на място и я фиксираме с болтове.
Сега е време да свържете двигателите към Motorщит.
Свързах предните двигатели към клеми M3 и M4. М4 - преден десен двигател, М3 - преден ляв. Arduino, когато се прикрепи към горния капак, стана обратното, така че това изместване се оказа.

M2 - заден десен двигател. M1 - задно ляво, Спазвайте полярността на електродвигателите

Свързваме сервото MG995.

Серво захранващият кабел трябваше да бъде прекъснат, защото регулаторът на напрежението, вграден в Arduino, не произвеждаше достатъчно ток, за да го задвижи. В резултат на това имаше грешка в работата.
Реших проблема, като свързах захранващия проводник на сервото директно към източника на захранване.
Свързваме захранващите проводници към контактите на моторния щит. Също така свързваме проводника от сервото към положителния извод

Моля ви веднага да обърнете внимание на джъмпера. Ако го премахнете, тогава захранването на контролера Arduino ще трябва да се доставя отделно. Фигурата показва диаграма, обясняваща електрическите връзки на захранващите шини на контролера Arduino и модула Motor Shield.

Обичаме нашия шедьовър.

Това е мястото, където приключваме с хардуера за днес и преминаваме към писане на тестова скица за робота.
Заетост на портовете Arduino със свързан моторен щит
След свързването на Motor Shield към Arduino, някои портове вече не са достъпни за работа, тъй като Motor Shield ги използва.

Повече подробности за това има на уебсайта Arduino Shield List.
Пример за скица за работа на Arduino с Motor Shield, който осъществява управлението на четири двигателя и едно серво
Основната задача е да се справи с управлението на четири мотора и въртенето на едно серво.
Нека обсъдим първоначалнотофункционалност на нашата тестова скица.
Предлагам да приложа следния алгоритъм:
- Придвижете се напред за 5 секунди, докато завъртите сервото на 90 градуса
- Завъртете надясно за 2 секунди със серво завъртане на 180 градуса
- Придвижете се назад за 5 секунди, докато завъртите сервото на 90 градуса
- Завъртете наляво за 2 секунди със серво завъртане на 0 градуса
- Спрете двигателите за 3 секунди със серво завъртане на 90 градуса
Задачата е поставена - можете да започнете.
Първо трябва да инсталираме библиотеката AFMotor.
afmotor.rar (9,2 KiB, 2789 посещения)
Изтеглете архива и извлечете съдържанието му в \arduino-1.XX\libraries\
//Създаване на обекти за двигатели AF_DCMotor motor1(1); //M1 канал на моторния щит - заден ляв AF_DCMotor motor2(2); //M2 канал на моторния щит - заден десен AF_DCMotor motor3(3); //M3 канал на моторния щит - преден ляв AF_DCMotor motor4(4); // M4 канал на Motor Shield - отпред вдясно
// Създаване на обект за сервото Servo myservo;
void setup() // Изберете щифта, към който е свързан сервото myservo.attach(9); // или 10, ако е включен в крайния слот // Завъртане на сервото на 0 градуса при всяко включване myservo.write(0); // Пауза 5 секунди закъснение(5000); >
void loop() //Задаване на скоростта на 100% (0-255) motor1.setSpeed(255); motor2.setSpeed(255); motor3.setSpeed(255); motor4.setSpeed(255);
// Задаване на посоката на движение // НАПРЕД - напред // НАЗАД - назад // ОСВОБОЖДАВАНЕ - стоп
// Придвижване напред за 5 секунди, докато завъртате сервото на 90 градуса motor1.run(FORWARD); motor2.run(НАПРЕД); motor3.run(НАПРЕД); motor4.run(НАПРЕД); myservo.write(90); // Завъртане на сервото на 90 градуса delay(5000);
// Завъртете надясно за 2 секунди със сервото, завъртяно на 180 градуса
motor1.run(НАПРЕД); motor2.run(НАЗАД); motor3.run(НАПРЕД); motor4.run(НАЗАД); myservo.write(180); // Завъртане на сервото на 180 градуса delay(2000);
// Придвижете се назад за 5 секунди, докато завъртите сервото на 90 градуса motor1.run(BACKWARD); motor2.run(НАЗАД); motor3.run(НАЗАД); motor4.run(НАЗАД); myservo.write(90); // Завъртане на сервото на 90 градуса delay(5000);
//Завийте наляво за 2 секунди със серво завъртане на 0 градуса
motor1.run(НАЗАД); motor2.run(НАПРЕД); motor3.run(НАЗАД); motor4.run(НАПРЕД);
myservo.write(0); // Завъртане на сервото с 0 градуса delay(2000);
// Спрете двигателите за 3 секунди със сервото, завъртяно на 90 градуса motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); myservo.write(90); // Завъртане на сервото на 90 градуса delay(3000); >