Robotická ruka

Projekt od našeho čtenáře Antonína P. - Robotická ruka

Vždy mě zajímala robotika a automatizace strojů a zařízení a proto jsem si pořídil Arduino Uno.

Pak nastala ale otázka co si mám postavit, na internetu je plno zajímavých projektů, ale vybrat si ten správný je obtížné. Nakonec zvítězil jeden z několika a to robotická ruka, ono totiž co se více té automatizace týče, na ní jsem vždy obdivoval ty rozmanité možnosti. A tak jsem se rozhodl že jednu takovou ruku postavím i doma, samozřejmě, že ve zmenšeném měřítku.

Na internetu jsem si našel model robotické ruky a ten jsem si převedl do programu SolidEdge ST8 tak, aby bylo možné následně nechat vytisknout na 3D tiskárně díly k sestavení.

Vyrenderovaný model Robotické ruky

Vytisknuté díly na školní 3D tiskárně

To jednodušší je převést všechny soubory a sestavit model tak, aby vše do sebe zapadlo a vše fungovalo správně.

Složitější věc přišla hned na to a to napsat správně program.

Simulované zapojení v programu Autodesk Circuits

V stránkách Autodesk Circuits jsem si nejdříve vyzkoušel jak vše bude fungovat a také jsem si tam upravil původní program, který jsem našel na internetu (odkaz na původní program a zapojení servo motorku: http://learningwitharduino.blogspot.cz/2012/12/first-project-servo-and-ir-receiver.html ).

Toto je však pouze program pro jeden servo motorek, já jsem však potřeboval pro 3 další serva. Tak mi nezbývalo nic jiného než si program přizpůsobit podle sebe, protože program, co tu je vidět, tak to není jeho finální verze a může se ještě nadále měnit, ale jeho podstata už je daná.

Program je uveden níže.

// 
// The Unnamed Circuit
// 
// Made by antonin pavel
// License: CC-BY-SA 3.0
// Downloaded from: https://circuits.io/circuits/3010944-the-unnamed-circuit

#include <Servo.h>
#include <IRremote.h>

unsigned long Value1 = 0xFD08F7; // where XXXXXXXX is on our your remote's values(1servo)
unsigned long Value2 = 0xFD8877; // where XXXXXXXX is another button on your remote(1servo)
unsigned long Value3 = 0xFD48B7; // where XXXXXXXX is on our your remote's values(2servo)
unsigned long Value4 = 0xFD28D7; // where XXXXXXXX is another button on your remote(2servo)
unsigned long Value5 = 0xFDA857; // where XXXXXXXX is on our your remote's values(3servo)
unsigned long Value6 = 0xFD6897; // where XXXXXXXX is another button on your remote(3servo)
unsigned long Value7 = 0xFD18E7; // where XXXXXXXX is on our your remote's values(4servo)
unsigned long Value8 = 0xFD9867; // where XXXXXXXX is another button on your remote(4servo)

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

// the setup routine runs once when you press reset:
void setup() {              

Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver

  // initialize the digital pin as an output.

servo1.attach(10);// attack servo to digital pin 10
servo2.attach(9);
servo3.attach(8);  
servo4.attach(7);
}

// the loop routine runs over and over again forever:
void loop() {

if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }

if(results.value == Value1) {
servo1.write(160);//PIN10
}
else if  (results.value == Value2){
servo1.write(75);//PIN10
} 
  if(results.value == Value3) {
servo2.write(160);//PIN9
}
else if  (results.value == Value4){
servo2.write(75);//PIN9
}
if(results.value == Value5) {
servo3.write(160);//PIN8
}
else if  (results.value == Value6){
servo3.write(75); //PIN8 
} 
  if(results.value == Value7) {
servo4.write(160);//PIN7
}
else if  (results.value == Value8){
servo4.write(75);//PIN7
}
}

Projekt je prozatím ještě rozpracován, ale jakmile bude hotový, tak Vám pošlu dodatečné video, jak ruka funguje.

Vše zatím funguje jak má a pak podle toho, jaké pozice mi dovolí nastavit konstrukce, tak bude nutno pouze změnit rozsah pohybů servo motorků. Napájení bude řešeno externím napájecím zdrojem nebo 5V z USB podle potřeby. Ruka bude řízena dálkovým ovladačem nebo odpovídajícím programem napsaným v programu Arduino IDE.

 

Seznam použitých komponent

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/897-arduino-servo-motor-1420669476.html

http://dratek.cz/arduino/1433-nepajive-kontaktni-pole-zy-103-1475273073.html

Další podobné články

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač