Ramię robota

Elektronicznie sterowane ramię z trzema punktami swobody.

LOFI Robot EDUBOX - zest edukacyjny do nauki robotyki i konstruowania robotów

Istnieje wiele projektów robotycznych ramion, postanowiliśmy wybrać taki, który ograniczy do minimum ilość drogich serwomotorów kontrolujących jego ruch.

Co potrzebujesz do zbudowania podstawowego robota-żurawia:

  • Komplet części drewnianych + śrubki i nakrętki
  • Dwa standardowe serwomotory (docelowo trzy)
  • Płytka prototypowa + kabelki
  • Arduino
  • Opcjonalnie – dwa potencjometry do sterowania
  • Fragment rurki aluminiowej o średnicy 8mm i długości 35mm
  • Opcjonalnie – komplet części drewnianych chwytaka + micro serwo

Pliki do pobrania:

CZĘŚCI DO WYCIĘCIA – WERSJA 1.0

crane lasercut parts

Konstrukcja

Obecna wersja żurawia to zdecydowanie wersja BETA. Jej głównym ograniczeniem jest brak możliwości robota wokół własnej osi. Wynika to z problemu konstrukcyjnego, którego do tej pory nie udało nam się w satysfakcjonujący sposób rozwiązać, związanego z łożyskowaniem silnika obracającego robotem. Ze względu na fakt, że robot mocno wychyla się do przodu w punkcie obrotu podstaw powstają duże naprężenia, aby odtworzyć mechanizm podobny do prezentowanego wyżej uArm, konieczne jest wykorzystanie konkretnego modelu łożyska i dobranie kilku elementów sklejki o różnych grubościach, co zdecydowanie komplikuje projekt, a naszym założeniem jest konstruowanie robotów w możliwie jak najprostszy sposób.

  • zuraw-czesci1280
    Komplet części mechanicznych.
  • lofi_zuraw 2
    Skręć podstawę żurawia.
  • lofi_zuraw 3
    Do podstawy przymocuj boczne ścianki. W obecnej wersji podstawa robota jest sztywna, nie ma on możliwości wykonywania ruchów obrotowych.
  • lofi_zuraw 1
    Przy pomocy małych śrubek dołączonych do serwomotorów przykręć odpowiednie klocki ramienia do plastikowych, sześcioramiennych orczyków.
  • lofi_zuraw 12
    Orczyki na silnikach.
  • lofi_zuraw 11
    Części górnego ramienia.
  • lofi_zuraw 10
    Górne ramię z główką.
  • lofi_zuraw 4
    Całe ramię.
  • lofi_zuraw 6

  • lofi_zuraw 5
  • lofi_zuraw 7

Skończona konstrukcja, wraz z chwytakiem, wygląda w następujący sposób:

lofi_zuraw 8

Elektronika

Każdy serwomotor posiada wbudowany analogowy lub cyfrowy układ sterujący, żeby go uruchomić nie wystarczy tak jak w przypadku silnika DC podłączyć do niego zasilanie, konieczne jest również wygenerowanie odpowiedniego sygnału sterującego typu PWM.

Przewód zasilający serwomotora posiada trzy żyły:

  • czerwona – do zasilania +5V
  • brązowa (lub czasem czarna) – do masy GND
  • pomarańczowa (lub czasem biała) – do sygnału sterującego, podłączamy ją do pinu cyfrowego Arduino oznaczonego jako PWM (ze znakiem ~)

Schemat podłączenia serwomotora do Arduino
fritz_servo_simple

Schemat podłączenia dwóch serwomotorów i sterowania przy pomocy potencjometrów.
fritz_servo_pot

Oprogramowanie

Oprogramowanie sterujące ramieniem w najprostszy sposób (przy pomocy dwóch potencjometrów) składa się z elementarnych funkcji. Najważniejsza kwestia to poprawne załadowanie biblioteki obsługującej serwomotory (odpowiada za to linia #include <Servo.h>). Pozostała część programu odczytuje dane z potencjometrów i przepisuje je na wartości sterujące serwomotorami z uwzględnieniem faktu, że zakres ruchów potencjometru odczytujemy w skali 0-1023 punktów i musimy przeliczyć go na zakres ruchów serwa, czyli 0-179 stopni, tę operację wykonuje funkcja map().

[code lang=”arduino”]
#include <Servo.h>

Servo myservo; // create servo object to control a servo

Servo myservo2;

// analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int val2;

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo2.attach(10);
Serial.begin(9600);
}

void loop()
{
val = analogRead(0);
// reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 100, 177); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
//delay(15);
Serial.println(val);

val2 = analogRead(1); // reads the value of the potentiometer (value between 0 and 1023)
val2 = map(val2, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo2.write(val2); // sets the servo position according to the scaled value
delay(50);

// waits for the servo to get there
}
[/code]

Co dalej? / Modyfikacje

  • Jedną z najciekawszych modyfikacji jaką można wykonać przy pomocy zastawu części robota żurawia jest wykonanie konstrukcji zbliżonej do Drawbota. Wystarczy zmontować ramię tak bu poruszało się w poziomej płaszczyźnie. Szczegóły konstrukcji Drawbota.

Powiązane wpisy