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

Test ESC a BLDC motoru

Cílem tohoto Arduino projektu je testování a kalibrace obousměrného regulátoru otáček (ESC) pomocí PWM signálu. Program simuluje sekvenci pohybů: dopředu, neutrální pozici a reverzní chod, což umožňuje ověřit správnou funkci ESC včetně přepínání směru otáčení motoru.

Laserový alarm

Cílem tohoto projektu je vytvořit jednoduchý, ale funkční bezpečnostní systém, který detekuje narušení prostoru pomocí vysílače (laserového paprsku) a přijímače (fotorezistoru). Jakmile je paprsek přerušen, Arduino to vyhodnotí jako narušení a spustí alarm – například zvukový signál pomocí piezo bzučáku.