Содержание:

 

  1. Введение
  2. Видеопрезентация работы
  3. Шаг 1. Материалы и оборудование
  4. Шаг 2. Тело робота
  5. Шаг 3. Схема
  6. Шаг 4. Программирование

 

 


Введение:

Этот интересный механизм называется FIER. Он представляет собой четвероногого робота, который сделан из деревянных деталей, проводков и программной системы Arduino.

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





Видеопрезентация работы:



Шаг 1. Материалы и оборудование:

Материалы:

 

 

 

 

  • сервопривод (понадобится 12 штук) – Tpro – SG90
  • дерево бальза Dow (36 х 3/3 дюймов), Rectangle (36 x 6 x ½ дюймов), Dow (12 x 1/8 дюймов)
  • комплект Arduino Uno
  • двигатель PWM – TLC5940
  • резисторы 14 штук – 4,7К, 1,7 К, 10К Ом
  • конденсатор 10 uF
  • разъем – "папа" 538 – 42375 – 1856
  • плата Protoboard 589 – 8200 – 4565 
  • аккумулятор (не обязательно) – 6 вольт, 5000mAh
  • акселерометр – 3-осный, ADXL345.

Инструменты:

 

 

  • острый нож
  • паяльник
  • сверло на 1/8 бит
  • тремоклей 
  • столярный клей.


Этот список оборудования и материалов необходим, чтобы построить собственного робота FIER. Общая стоимость основных деталей для робота - чуть более $ 100, но это без доставки. Некоторые вещи вы можете найти в магазине поблизости, такие как дерево бальза, которые обычно можно найти на специализированных точках. 

Здесь можно сэкономить на батареях, поскольку они могут стоить немного дороже с зарядным устройством. Можно просто получать 5 - 6 вольт питания от источника и запустить провод, потому что робот не будет ходить очень далеко и быстро. Наконец, можно приложить акселерометр, чтобы помочь роботу держать баланс, но это может быть немного трудно для тех, кто не имеет большого опыта в программировании.

Шаг 2. Тело робота:

Самая трудная часть в этом проекте - это сделать ногу, а затем размножить её на 4 конечности, но если вы сможете сделать одну, вы сможете сделать и все четыре.

Мы не будем углубляться во все детали для построения тела робота, но мы постараемся дать вам общее представление о том, как это сделать.

Как упоминалось ранее, корпус робота выполнен из пробкового дерева, которое является очень хорошим материалом для работы. Здесь нужен один инструмент - нож. Также эти действия лучше выполнять на специальном столе для работы с деревом, чтобы получить более последовательные и параллельные разрезы.

Мы предлагаем вам несколько фотографий построения одной ноги, так что вы можете использовать их, чтобы иметь образец того, как строить ноги. Одна деталь, которую следует указать на ногах, это точки опоры. Вы можете видеть также на рисунках контакты для сервоприводов. Они необходимы для укрепления ног, вместо того, чтобы весь вес приходился на оси сервоприводов. Здесь вам понадобится 1/8 сверло и 1/8 дюбель. Что касается живота робота, то это обычный прямоугольник с выемками по углам, куда нужно провести сервоприводы.

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

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
































Это видео является свидетельством испытания одной ноги, которая перемещается, когда каждый сервопривод вращается на 180 градусов.





Шаг 3. Схема:

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

Как отмечается в схеме, имеется 5 - 6 вольтовый источник питания. Это главный источник для всех сервоприводов и с таким количеством сервоприводов они могут тянуть совсем немного тока. Убедитесь в том, что вы используете только источник, который может обрабатывать 1А или больше, котируется на оборудовании и списке материалов, аккумулятор или блок питания. Не используйте 5В источник на Arduino для питания сервоприводов, используйте только источник Arduino для питания двигателя PWM.

Чтобы разместить все компоненты вместе, мы предлагаем использовать печатную плату и припаять их все вместе. Так как этот проект служит для уроков в классе, используйте передатчик PCB Advanced Circuits.



Скачать схему в большом размере можно здесь.


Шаг 4. Программирование:

Ниже мы предлагаем пример кода, чтобы испытать робота, которого вы видели в первом видео. Если все работает правильно, робот должен встать, поднять одну ногу, и покачиваться для движения. Для того, чтобы установить код для работы, необходимо установить TLC5940 драйверы, которые доступны на этом сайте.

Одна ошибка, с которой вы можете столкнуться из-за плохой инструкции, будет то, что ноги двигаются в противоположных направлениях. Самый простой способ исправить её – изменить код. В коде вы увидите несколько функций, которые похожи с tlc_setServo (4, 100). Первым параметром является двигатель, которым вы хотите управлять, и второй параметр – угол  сервопривода. Просто измените второй параметр, что бы он действовал так, как вам нужно.

Исходный код:

//FIER Wave

#include <avr/interrupt.h>

#include "Tlc5940.h"
#include "tlc_servos.h"

void setup()
{
    // PWM Driver Setup
    tlc_initServos();  // Note: this will drop the PWM freqency down to 50Hz.
}

void loop()
{
  set();
  stand();
  stance();
  for(;;)
    wave();
}

void wave()
{
  tlc_setServo(4, 100);
  tlc_setServo(7, 100);
  tlc_setServo(10, 80);

  for(int i = 135; i < 150; i++){
    tlc_setServo(0, i);
    Tlc.update();
    delay(20);
  }

  for(int j = 150; j > 120; j--){
    tlc_setServo(0, j);
    Tlc.update();
    delay(20);
  }

  for(int k = 120; k < 135; k++){
    tlc_setServo(0, k);
    Tlc.update();
    delay(20);
  }
}

void stance()
{
  tlc_setServo(5, 115);
  tlc_setServo(8,  65);

  tlc_setServo(4, 100);
  tlc_setServo(7, 100);
  tlc_setServo(10, 80);

  Tlc.update();
  delay(30);

  for(int i = 0; i < 45; i++){
    tlc_setServo(0, i);
    tlc_setServo(1, 90+i);
    Tlc.update();
    delay(20);
  }

  tlc_setServo(2, 70);
  Tlc.update();
  delay(20);

  for(int j = 0; j < 90; j++){
    tlc_setServo(0, 45+j);
    Tlc.update();
    delay(20);
  }

  tlc_setServo(2, 80);
  Tlc.update();
  delay(20);
}

//Stand
void stand()
{
  int ia = 90;
  int ib = 90;
  int ja = 90;
  int jb = 90;

  /*tlc_setServo(2, 90);
  tlc_setServo(5, 90);
  tlc_setServo(8, 90);
  tlc_setServo(11, 90);*/

  while(ia <= 175){
    ib++;
    tlc_setServo(1, ib);
    tlc_setServo(10, ib);
    ia = ia + 2;
    tlc_setServo(3, ia);
    tlc_setServo(6, ia);

    jb--;
    tlc_setServo(4, jb);
    tlc_setServo(7, jb);
    ja = ja - 2;
    tlc_setServo(0, ja);
    tlc_setServo(9, ja);

    Tlc.update();
    delay(50);
  }

  while(ib >= 90){
    ib--;
    tlc_setServo(4, ib);
    tlc_setServo(7, ib);

    jb++;
    tlc_setServo(1, jb);
    tlc_setServo(10, jb);

    Tlc.update();
    delay(50);
  }
}

void set()
{
  int angle = 90;

  tlc_setServo(0, angle);
  tlc_setServo(1, angle);
  tlc_setServo(2, angle);
  tlc_setServo(3, angle);
  tlc_setServo(4, angle);
  tlc_setServo(5, angle);
  tlc_setServo(6, angle);
  tlc_setServo(7, angle);
  tlc_setServo(8, angle);
  tlc_setServo(9, angle);
  tlc_setServo(10, angle);
  tlc_setServo(11, angle);
  tlc_setServo(12, angle);
  tlc_setServo(13, angle);
  tlc_setServo(14, angle);
  tlc_setServo(15, angle);
}
                                     

Как мы уже говорили ранее, можно использовать акселерометр, чтобы помочь роботу держать баланс. Существует пример кодов, доступных в Интернете для тестирования акселерометра, если вы будете его использовать (http://www.sparkfun.com/products/9156).

Теперь ваш робот готов. Вы видите, как он интересно двигается, перебирая ногами, как паук.

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