Table of Contents

Introducere

Am facut o mana robotica folosind 4 servomotare. Aceasta este controlata cu ajutorul unei telecomenzi.

poza2.jpg

Descriere

Am facut o mana robotica folosind 4 servomotare. Aceasta este controlata cu ajutorul unei telecomenzi.

Bratul robotic functioneaza pe baza unei telecomenzi.

Semnalele sunt citite de catre microcontrolerul ATMEGA 328 si programul trimite comenzile potrivite servomotoarelor.

Servomotoarele sunt alimentate separat de placuta la 6v (cu ajutorul a 4 baterii). Telecomanda este alimentata la 3v (se putea si 1,5v).

ca-poza3.jpg

Hardware Design

Corpul a fost facut din placaj. Pisele sunt unice. Pentru a controla servomotoarele am folosit o placuta Arduino:

arduino.jpg

Aceasta foloseste un ATMEGA 328. Datasheetul pentru atmega 328:

atmegadata.pdf

Telecomanda are 7 butoane de tip push-button alimentate la 3v. Ele sunt citite si interpretate de ATMEGA 328. Rezistentele folosite sunt de 1k ohm.

Software Design

Mediul de dezvoltare este un soft arduino ce foloseste cod c si anumite librarii proprii. Totul este free si aplicatiile dezvoltate se pot uploda direct pe microcontroler.

Acesta se poate downloda de pe situl :

Software

Primul pas a fost initializarea fiecarui buton, starea butonului si toate servomotoarele: (acestea sunt cateva exemple. resul de cod se afla la download)

  
 * const int ledPin =  13;      // the number of the LED pin
 * const int buttonPin = 2;     // the number of the pushbutton pin
 * const int buttonPin2 = 3;     // the number of the pushbutton pin
 * const int buttonPin3 = 4;     // the number of the pushbutton pin
 * int buttonState = 0;  
 * int buttonState2 = 0;
 * int buttonState3 = 0;  

Pentru fiecare servomotor am facut cate un set asemanator de variabile, in acest fel chiar daca as schimba servomotoarele as avea un program functional.

* int servoPin = 8; → pinul pentru servomotor * int minPulse = 600; → min pozitie * int maxPulse = 2400; → max pozitie * int turnRate = 100; → rata de turatie * int refreshTime = 20; → timp intre pulsuri (Hz) * int centerServo; → pozitia de centru * int pulseWidth; → distanta intre pulsuri * int moveServo; * long lastPulse = 0; → timpul (ms)

Apoi am setat pinii de pe placuta cu INPUT/OUTPUT. Intr-un loop se citesc butoanele si se executa cod in caz ca sunt apasate (sau nu). Cu ajutorul if-urilor limitez maximul pulsului. La un interval de 5 ms se verifica daca pozitia servomotoarelor trebuie schimbata sau nu.

Rezultate Obţinute

Bratul robotic si telecomanda sunt operationale si bug free.

Concluzii

Sunt foarte multumit de rezultatul obtinut. A fost un proiect interesant si solicitant.

Pentru viitorii studenti ce vor incerca sa recreeze acest proiect am cateva sfaturi ajutatoare:

* Cu cat doriti sa investiti in mai multe servomotoare cu atat miscarile sunt mai complexe si aveti posibilitatea sa creeati ceva mai bun.
* Ca sa arate mai bine incercati sa gasiti plexiglass de cel putin 4 mm. Eu am folosit de 2 si nu am reusit sa fac o structura stabila deoarece era prea subtire.
* Atentie la servomotare. Trebuie sa luati motorase destul de puternice. Eu am folosit 2 de 11kg/cm si nu cred ca pot ridica cu ele o sticla de Cola.
* Luati 5m de fir de macar 2 culori. La cat am taiat si am masurat va spun sigur ca 3 m nu va ajug.
* Incercati sa luati niste switchuri SPST. Pe care sa le folositi ca butoane ON/OFF.
* Desenati pe hartie/carton componentele pe care vreti sa le decupati din plexiglass/traforaj si uitativa atenti la mecanica din spatele structurii.

Ce se mai poate adauga la acest proiect?

Foarte multe. De la mai multe servomotoare la senzori de presiune, de proximitate s.a
Practic ideea este o mana umana. Deci cam orice va puteti imagina.

De exemplu :
  
  * Senzorului de presiune va poate limita puterea unui servomotor care e folosit pentru gripper. In felul acesta daca servomotorul este prea puternic nu veti strivi ce incercati sa prindeti cu el.
  * Un senzor de perimetru poate fi folosit pentru a inlocui butonul de pe telecomanda pentru gripper cu un sistem automat. Cand "vede" ca ceva este aproape incearca sa il prinda.
  * Telecomanda poate fi imbunatatita. Puteti sa o faceti sa mearga prin unde radio.
  * Se poate adauga un sasiu cu sine sau roti pentru a face bratul mobil.
  * Si multe altele.

Download

Aici veti gasi codul sursa.

misca.zip

Jurnal

Ziua 1: Cercetare. Am cautat pe internet detalii despre servomotare, magazinele de unde se pot cumpara si preturile acestora. Desi am gasit in jur de 5 magazine online, preturile difera . Am comparat timpul de livrare si costul transportului si am luat 4 servomotoare standard : 2 HiTec HS-311 2 TowerPro MG996R

Am ales HiTec pentru ca nu erau foarte scumpe si am considerat ca pentru gripper nu e nevoie de foarte multa putere. Pe de alta parte cele TowerPro le-am ales tocmai pentru putere , dar si pentru dimensiunea standard a acestora.

Cateva locuri de unde puteti procura aceste servomotoare:

*phoenixmodels.ro
*www.sierra.ro
*www.aeromodel.ro

Ziua 2: Am cautat materialele necesare. Am gasit plexiglass la Bricostore si Practiker. Am luat plexiglass de 2 mm de la bricostore. Am mai cumparat suruburi,saibe si piulite pentru baza robotului.

Ziua 3: Taierea plexiglasului este mai dificila decat pare. Am urmarit cateva tutoriale pe youtube despre cum se poate lucra cu acest material. Partea interesanta este ca puteti face forme custom cu plexiglasul, partea mai grea este sa va si iasa.

Cu ajutorul caldurii puteti curba piesa sau puteti sa o topiti,rotunjiti s.a.

Am renuntat la plexiglass pentru ca placa mea de 2mm este mult prea subtire pentru a sustine motoarele si de asemenea se poate crapa foarte foarte repede. Fasii foarte mari de plexiglass la 4 sau 5 mm costa destul de mult si ramanea foarte mult material care nu aveam la ce sa il folosesc.

Ziua 4: Am primit o placa de traforaj si am imceput sa modelez piesele in formele desenate.

ATENTIE! Daca nu aveti trusa de traforaj o sa fie dificil. Ascultati un om cu experienta.

A fost destul de dificil sa fac patratele in segmentele 3 si 4. Am folosit burgie speciale sa dau o gaura de 16 pe care am largit-o cu ajutorul unei pile si a panzei de bomfaier.

Ziua 5: Montarea servomotoarelor.

Putin mai greu decat ma asteptam. Am folosit bormasina cu diferite burghie sa introduc suruburi. Excesul l-am taiat cu panza de bomfaier.

Ziua 6:

Dupa ce am observat cum arata proiectul, am decis sa ma ocup de partea electrica.

Am folosit un clips de 4 baterii pentru a alimenta servomotoarele si unul de 2 pentru a alimenta telecomanda. Cateva probleme cu aceasta alimentare dar au fost rezolvate.

Tecomanda este destul de simpla in design. Am pus butoanele necesare pe o placuta. Am alimentat placuta la 3v si am folosit un SPDT switch pentru a taia alimentarea. 7 fire de la output le-am dus la placuta , care va citi daca butonul este apasat sau nu, 7 fire sunt adunate si toate se duc la masa placutei. Iar ultimele 7 sunt alimentate la 3v.

Fiecare servomotor are 3 cabluri.

rezultat.jpg

Ziua 7:

Am inceput sa scriu programul pentru a controla servomotoarele din telecomanda. Dupa cate setbacks am reusit sa scriu un programel simplu si eficient , care da refresh la 20ms. Am folosit variabile globale care pot fi schimbate in functie de specificatiile fiecarui servomotor.

programat.jpg

Ziua 8:

Finisaje. Vopsit + aspect.

vopsit.jpg final.jpg

ATENTIE! Desi in jurnal apar 8 zile nu va lasati pacaliti. A durat mai mult , si au fost destule probleme pe care le-am rezolvat.

Bibliografie/Resurse

YOUTUBE.COM & GOOGLE.COM

Pentru mine youtube a fost o resusa de nepretuit. De aici, uitanduma la ce au facut altii mi-a venit ideea pentru proiect, de multe ori cand am ramas impodmolit am reusit sa trec peste cu ajutorul acestor situri. Am citit zeci de articole pe google despre cum merg aceste servomotare si despre specificatiile lor, despre magazinele unde le gasesc de cumparat si despre rezolvarea unor probleme ale acestora.

O lista scurta de situri vizitate este :

Si multe altele.

Resurse Software

Am folosit o placuta Arduino Duemilanove (care foloseste un ATMEGA 328). Librariile se gasesc pe site-ul acestora insa nu am folosit aceste librarii. Am scris programul in asa fel incat sa fie usor de inteles , putin cod dar si adaptabil la mai multe feluri de servomotoare.

* http://arduino.cc/en/Reference/HomePage

Am programat microcontrolerul folosind softul de pe pagina acestora :

* http://arduino.cc/en/Main/Software

Este un mic program facut in java care foloseste cod C/C++, compileaza si genereaza un fisier .hex . Butonul de UPLOAD TO I/O BOARD fisierul .hex microcontrolerului.

Am ales sa lucrez cu aceasta placuta din cauza ca are un microcontroler mai bun si o dimensiune mai mica.

Resurse Hardware

Mi-am folosit cunostintele pentru a face o lista de componente de care am nevoie(in general componente de baza care se pot gasi fara prea mare dificultate.).