1 листопада 2016 р.

6. Нове шасі - перші рухи

Не пройшло і місяця, як прибуло наше шасі. Акуратна коробочка з купою шматків фарбованого металу, болтиками, кріпленнями, двигунами, і дротами.

Скажу чесно - спочатку були трохи побоювання. Заплатити відчутну суму грошей за покупку через Інтернет китайського виробу, який ми бачили тільки на фото і одному відеоролику…

На щастя - наші побоювання виявилися марними. Всі металеві деталі зроблені дуже якісно. Ніяких гострих країв, всі отвори і зрізи акуратно зашліфовані. Фарбування акуратне, рівномірне і стійке до протирання та подряпин. Деталі виконані точно - все сходиться і стикується ідеально. Всі коліщата монтуються на підшипники, тому опір тертя мінімальний.

Радості від складання шасі було не менше, ніж від складання хорошого конструктора Lego чи якоїсь шафки IKEA :-)


Двигуни також виглядають достойно. Вбудовані редуктори зменшують швидкість до рівня пристойності респектабельного танка, відповідно збільшуючи силу тяги. Також двигуни мають по два давачі Холла, які мали би дозволяти рахувати швидкість обертання валів. Як з ними працювати поки не розібралися.

Робоча напруга двигунів - до 9В, максимальний робочий струм 1200 мА. Це означає, що ці двигуни не можна підключати напряму до виходів Arduino - спалять моментально.

А от щодо електроніки - продавець підкачав. Замість Espduino kit, який би мав стати серцем нашого робота, в коробці була якась незрозуміла плата розширення.

ESP 13 Shield


Читання інтернету виявило, що це ESP13 - плата розширення (шилд), для Arduino UNO. Дає можливість простим способом під'єднатися до WiFi прямо з Arduino. Це близько, але зовсім не те, що нам було потрібно. Ну нестрашно. Після скарги до BangGood частину грошей повернули, а ESP13 залишився нам як бонус. Потім подумаємо що з тим робити.

Оскільки ми залишилися без контролера двигунів, довелося шукати як ними керувати за допомогою того, що є у нас в наявності. Бо дуже вже хотілося хоч якось побачити робота на ходу.

Добре, що під час підбору деталей для стартового набору, ми прихопили парочку транзисторів 2N2222A NPN. А ось тут є стаття, де розповідають, як можна керувати двигуном за допомогою транзистора, не боячись, що великий струм двигуна спалить Arduino.

Transistor-controled motor scheme


Ця схема не ідеальна, енергетично не ефективна та й заднього ходу не передбачає, але для початку згодиться. Для простоти ми з неї вилучили навіть захисний діод біля двигуна. Сподіваюся, що інертність редуктора не дасть двигуну нагенерувати якісь зайві напруги, які би зашкодили.

Отже - зібравши на макетці таку схему для двох двигунів, і підключивши їх до виходів 9 та 10 Arduino ми змогли їх запускати та зупиняти, керуючи струмом двигуна через транзистор.

Я постійно плутаю ті всі колектори з емітерами - може і у вас буде та ж проблема. Якщо двигун не запускається - спробуйте розвернути транзистор іншим боком. Головне пам'ятати, що база завжди по центру, і до неї треба під'єднувати керуючий провідник від Arduino.

Окремою задачкою було забезпечення живлення робота. В комплекті із шасі прийшло кріплення на два елементи 18650 3.7V. Насправді - то дуже добрий варіант, яким можна легко отримати живлення біля 7 вольт та ємністю аж до 10 000 mAh - саме те, що треба і для Arduino, і для двигунів. Але в нас ніколи не було таких елементів, і в комплекті таких не дали. Зате в нас є багато акумуляторів типу АА. Тому ми вибрали наступну схему:
  • Arduino живиться кабелем USB від акумуляторного банку для заряджання мобілок (Xiaomi Power Bank). Краще не мучити схему мікроконтролера неякісним живленням - а тут хоч якісь гарантії.
  • До двигунів під'єднали простий батарейний блок на три елементи AA, випиляний із старої поламаної китайської іграшки. Прямо на ньому як бонус був змонтований ще й вимикач живлення, який також було використано.
Simple battery block - front view

Simple battery block - back view


Батарейний блок для двигунів шматками дроту примотали знизу рами робота. Акумуляторний банк, макетку і сам Arduino розмістили на верхній площині.

Вийшло ось таке (не забудьте підкласти якийсь ізолятор під плати, щоб металевий корпус не замикав нічого):

The very first prototype robot - view 1

The very first prototype robot - view 2


Ну вже хоч щось! Пора братися за програмну частину.

Простота робота визначає легкість його програмування :-)

Оскільки наші двигуни під'єднані до виходів 9 та 10 Arduino - то для їхнього запуску достатньо подати на ці виходи рівень високої напруги, і робот має поїхати. Якщо звісно ж ми нічого не накосячили під час під'єднання.

Тим, хто пройшов початкові курси - буде нескладно розібратися як працює ця програма:
// Запам'ятовуємо номери виходів керування двигунами
int rightMotorPin = 9;
int leftMotorPin = 10;

void setup() {
    // Перемикаємо порти в режим виводу
    pinMode(rightMotorPin, OUTPUT);
    pinMode(leftMotorPin, OUTPUT);
   
    // Вмикаємо обидва двигуни
    digitalWrite(rightMotorPin, HIGH);
    digitalWrite(leftMotorPin, HIGH);
    // Рухаємося вперед 6 секунд
    delay(6000);
   
    // Зупиняємо правий двигун - робот буде розвертатися вправо
    digitalWrite(rightMotorPin, LOW);
    // Виконуємо поворот 6 секунд
    delay(6000);
   
    // Знову запускаємо правий двигун
    digitalWrite(rightMotorPin, HIGH);
    // Рухаємося вперед 6 секунд
    delay(6000);
   
    // Зупиняємо лівий двигун - робот буде розвертатися вліво
    digitalWrite(leftMotorPin, LOW);
    // Виконуємо поворот 6 секунд
    delay(6000);
   
    // Зупиняємо робота повністю, щоб можна було його догнати і зловити
    digitalWrite(rightMotorPin, LOW);
}

void loop(){

}

І ось він - момент істини:




Звісно ж - мала напруга живлення двигунів зробила ці рухи досить кволенькими, але як би там не було -

ВОНО ЖИВЕ!!!

Немає коментарів:

Дописати коментар