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().

#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 
} 

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.

Podobne wpisy