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

Ovládání teploty pomocí relé a senzoru DS18B20

Tento projekt umožňuje měřit teplotu pomocí senzoru DS18B20, zobrazit ji na I2C LCD displeji, a ovládat relé podle teplotních limitů. Relé bude aktivní, když je teplota mezi 0 a 22 stupni Celsia. Projekt může sloužit k ovládání topení, ventilace nebo jiného zařízení podle okolní teploty.