Sunteți pe pagina 1din 100

MINIROBOT PĂIANJEN

-1-
Cuprins

1. Tema de proiectare..............................................................................................

2. Marimi justificative:generalitati despre mecatronica............................................

3. Roboţi
3.1 Studiul robotilor
3.1.1 Introducere...............................................................................................
3.1.2 Domeniile de utilizare ale robotilor.......................................................................
3.1.3 Clasificarea robotilor..........................................................................................
3.1.4 Partile componente ale unui robot..................................................................
3.2 Roboţi paşitori.
3.2.1 Introducere...........................................................................................................
3.2.2 Criterii de clasificare a roboţilor paşitori...............................................................
3.2.3 Mecanisme din componenţa picioarelor............................................................

4. Realizarea proiectului.

4.1 Partea mecanica.

4.1.1 Proiectarea sistemului de locomoţie.......................................................................


4.1.1.1 Proiectarea mecanismului folosit pentu locomoţia robotului......................
4.1.1.2 Compunerea mecanismului......................................................................
4.1.1.3 Notarea tuturor elementelor si a cuplelor cinematice................................
4.1.1.4 Sinteza elementelor din componenţa mecanismului.................................
4.1.1.4.1 Condiţia de existentă a manivelei............................................
4.1.1.4.2 Sinteza picioarelor laterale.....................................................
4.1.1.4.3 Sinteza piciorului din mijloc.................................................
4.1.1.5 Analiza sensurilor de deplasa a elementelor......................................
4.1.1.6 Reprezentarea dimensiunilor tuturor elementelor........................................
0 0
4.1.1.7 Reprezentarea la scara a poziţiilor cuplelor din 60 in 60 .......................

4.1.2 Alegrea motorului necesar acţionarii robotului.............................................


4.1.3 Schema cinematica a robotului......................................................................

4.2 Partea electrica.

4.2.1 Motoarele de curent continu.....................................................................


4.2.1.1 Principiul de funcţionare................................................................................
4.2.1.2 Controlul vitezei motoarelor de c.c.........................................................
4.2.1.3 Circuitul integrat pentru folosit pentru comanda motoarelor ..................
4.2.1.4 Schema electrica a circuitului folosit pentru comanda motorului ............

4.2.2 Senzorii de contact folosit pentru detectarea obstacolelor.


4.2.2.1 Schema electrica circuitului senzorial,fucţionare
2
4.2.3 Sistemul de comanda (PIC16F84A).
4.2.3.1 Prezentare pic.....................................................................................................
4.2.3.2 Constructia circuitului de dezvoltare pentru PIC 16F84A................................

4.2.4 Alimentarea circuitului electric................................................................................


4.2.4.1 Stabilirea tensiunilor de alimentare.................................................................
4.2.4.2 Circutul stabilizator de tensiune,fuctionare......................................................

4.3 Partea de programare


4.3.1 Modul de programare.....................................................................................................
4.3.2 Descrierea programului folosit pentru scrierea codului MPLAB................................
4.3.3 Programare în Limbaj de Asamblare............................................................................
4.5.4 Prezentarea setului de instrucţiuni..............................................................................
4.5.5 Programul folosit pentru comanda robotului............................................................

5.Concluzii si dezvoltari ulterioare..................................................................

5.1 Concluzii
5.2 Dezvoltari ulterioare.
5.2.1 Dotarea robotului cu un senzor inductiv pentru detectia metalelor.....................
5.2.2 Dotarea robotului cu mai mulţi senzori de proximitate IR................................
5.2.2.1 Principiul de funcţionare a senzorului IR............................................
5.2.2.2 Schema electrică a circuitului senzorial funcţionare............................
6. Bibliografie...................................................................................................
7. Anexe

-1-
Capitolul 1
Tema de proiectare

Să se proiecteze un mecanism robot de tip paianjen,capabil să ocolească


obstacolele apărute in cale.

4
Capitolul 2

Marimi justificative

Se spune că mecatronica
este tehnologia mecanică
cerută de societatea
avansat informatizată.

-1-
Proiect de licenţă

2.1 Conceptul de „mecatronică" ; definiţie :

Termenul "mecatronică" (MECAnică + elecTRONICĂ) a fost conceput


în 1969 de un inginer al firmei japoneze Yaskawa Electric şi protejat până în
1982 ca marcă a acestei firme. Se referea iniţial la complectarea structurilor
mecanice din construcţia aparatelor cu componente electronice. În prezent
termenul defineşte o ştiinţă inginerească interdisciplinară, care, bazându-se
pe îmbinarea armonioasă a elementelor din construcţia de maşini,
electrotehnică şi informatică, îşi propune să îmbunătăţească performanţele şi
funcţionalitatea sistemelor tehnice.
. Dezvoltarea electronicii s-a făcut în paşi rapizi începând din anul
1957, anul apariţiei tranzistorului, aproape la fiecare un an şi jumătate s-a
dublat numărul de componente pe o placheta de siliciu, ajungând azi la
zeci de milioane de tranzistori. In contextul acestei dezvoltări
spectaculoase se înscrie şi domeniul microcontrolerelor (calculatorul intr-un
singur chip).

Utilizarea microcontrolerelor în aplicaţii, la fel ca şi utilizarea


microprocesoarelor şi calculatoarelor de proces, permite înlocuirea
componentelor hard (electrice şi mecanice) cu componente soft.

Ori de cate ori se proiectează un sistem trebuie să se aibă în


vedere, ca obiectiv major, înlocuirea, pe cât posibil a componentelor
mecanice şi electrice cu componente electronice ce au înglobate
componente soft (inteligentă artificială).

Mecatronica este definită simplu "Ştiinţa maşinilor inteligente".


Acesta este şi subtitlul revistei internaţionale "Mechatronics",
începând cu primul număr din 1998.Studiul mecatronicii şi proiectarea şi
realizarea sistemelor mecatronice trebuie clădite pe cei trei piloni
principali: mecanica, electronica, tehnica de calcul, fiecare cu subsistemele şi
subdomeniile lui principale, iar intersecţia acestora conduce la sisteme şi
produse cu caracteristici remarcabile, superioare unei simple reuniuni a

6
Minirobot păianjen

componentelor de diferite tipuri. Acest lucru impune înzestrarea specialistului


în mecatronică cu cunoştinţe temeinice din domeniul mecanicii, electronicii şi
tehnicii de calcul, dar şi al sistemelor mecatronice, de cele mai diferite tipuri, şi
al principiilor şi etapelor de proiectare şi realizare a acestora.

Cele mai sugestive reprezentări ale mecatronicii sunt reprezentate prin


intersecţia a trei sau mai multor cercuri. După modul în care sunt definite
zonele de intersecţie, există multe modele, unele fiind prezentate în figura 2.1.

Tehnică de calcul

Mecanică
Mecatronică

Electronică Fig 2.1.a

Electromecanică

Tehnologie electrică

Mecatronică

Tehnologie macnetică
Software pentru partea electrică

Software pentru mecanică


Tehnologie pentru calculatoare
Fig 2.1 b

7
Proiect de licenţă

Electrronică senzori CADa

Inginerie electrică

Mecatronică
Inginerie mecanică

Electromagnetism electronică control


Modelare optimizare

Ingineria
Fig 2.1c

Sistemele mecatronice sunt caracterizate de faptul că stochează,


procesează şi analizează semnalele obţinute şi execută sarcini adecvate.
Scopul este de a extinde şi de a completa sistemele mecanice cu senzorii şi
microcontrolere pentru a crea produse fiabile şi inteligente..

8
Minirobot păianjen

Capitolul 3
Roboţi

3.1 Studiul roboţilor

3.1.1 Introducere

Termenul "robot" a fost folosit in 1920 de cehul Karel Capek intr-o


piesa numita "Robotul universal al lui Kossum". Ideea era simpla: omul face
robotul după care robotul ucide omul.
După 1977 tendinţa multor producători a fost de a umaniza forma
roboţilor şi de a crea androizii.
In 1956 a luat fiinţa prima companie ce realiza roboti industriali, iar in
1961 Compania de automobile "Genral Motors" "angaja" primul robot
industrial. începând cu 1980 asistam la o expansiune a roboţilor industriali in
diverse industrii.
Domeniile de aplicare a tehnicii roboţilor se lărgesc mereu, ei putând fi
utilizaţi in industrie, transporturi şi agricultura, in sfera serviciilor, in
cunoaşterea oceanului şi a spaţiului cosmic, in cercetarea ştiinţifica etc.
In general, roboţii constituie o clasa de sisteme tehnice care imita sau
substituie funcţii motrice sau intelectuale umane.Aceasta se realizează prin
asocierea diferitelor tipuri de sisteme de manipulare sau locomotoare,
determinând caracterul antropomorfic al robotului, cu diferite tipuri de
echipamente de calcul sau logice, care determină funcţiile intelectuale ale

9
Proiect de licenţă

acestuia.Roboţii i-şi desfăşoară activitatea intr-un mediu concret, ale cărui


caracteristici pot ramane constante sau variabile in timp.
Primele cercetări in domeniul roboticii au fost iniţiate la inceputul anilor
'60. După un avânt substanţial al aplicaţiilor roboticii in domeniul industrial, cu
precădere in industria automobilelor, la inceputul anilor '90 s-au conturat
multiple aplicaţii in domeniile neindustriale (nemanufacturiere).
Statisticile privind tipurile de roboţi arată sugestiv creşteri importante
ale numărului roboţilor care răspund unor aplicaţii neindustriale. Daca in
cursul anului 2000 numărul unităţilor instalate a ajuns la 112500, la sfârşitul
anului 2004 se estimează ca numărul acestora va ajunge la aproape 625000.
Pentru a sugera aplicaţii concrete in aceste subdomenii, aplicaţii abordabile in
colective interdisciplinare de ingineri, sunt precizate mai departe direcţiile care
pot fi avute in vedere.

3.1.2 Domeniile de utilizare ale roboţilor

 În medicina : sisteme
robotizate pentru diagnoza prin ecografie(fig
3.1.2.a), sisteme robotizate pentru
intervenţii neurochirurgicale; vehicule ghidate
automat pentru transportul medicamentelor,
alimentelor telemanipulatoare pentru
chirurgie laporoscopica; sisteme robotizate
pentru pregătirea prin simulare, etc. fig 3.1.2.a

Pentru reabilitare se pot identifica următoarele aplicaţii: scaun cu


rotile pliant, imbarcabil in autoturisme; manipulator pentru deservirea
persoanelor paralizate, vehicul pentru conducerea nevazatorilor etc.

 În construcţii (Fig 3.1.2.b):


vehicul ghidat automat pentru asfaltarea
şoselelor, sistem robotizat pentru stropirea
betonului in construcţia tunelurilor; robot
mobil pentru cofraje glisante; excavatoare

10
Fig 3.1.2.b
Minirobot păianjen

autonome, sistem robotizat pentru


compactarea si nivelarea suprafeţelor turnate
din beton; sistem robotizat pentru
inspectarea faţadelor clădirilor etc.

 În administraţia locala :robot folosit


pentru inspectia in caz de atentat (Fig 3.1.2.c), vehicul
autonom pentru curăţirea zăpezii de pe autostrăzi;
vehicul autonom pentru menţinerea curăţeniei pe străzi;
sistem robotizat pentru inspecţia si intretinerea
automata a canalelor etc.

Fig 3.1.2.c
 În agricultura, dintre aplicaţiile
posibile amintim: vehicul comandat folosit pentru
stropirea pomilor fructiferi (Fig 3.1.2.d),sistem
robotizat de plantare a răsadurilor; sistem robotizat
de culegere a fructelor; sistem robotizat de
culegere a florilor; sistem robotizat de tundere a
oilor etc.
Fig 3.1.2.d
.

 Hotelurile si restaurantele pot fi prevăzute cu: sisteme


robotizate pentru pregătirea automata a sălilor de restaurant, de conferinţe;
sistem de manipulare automata a veselei; minibar mobil pentru transportul
băuturilor, ziarelor etc.

 Pentru siguranţa si pază robot mobil


de pază pe timpul nopţii in muzee(Fig 3.1.2.e); robot
mobil pentru paza clădirilor şi şantierelor; vehicul
autonom pentru stingerea incendiilor; robot mobil

Fig 3.1.2.e

11
Proiect de licenţă

pentru detectarea şi dezamorsarea minelor; sistem


robotizat pentru intervenţii in spatii periculoase etc.

 În gospodărie, pentru hobby si


petrecerea timpului liber(Fig 3.1.2.f) se pot identifica
următoarele aplicaţii: robot de supraveghere copii
pentru diverse intervale de vârsta; robot de.
gestionare şi supraveghere generala a locuinţei, robot Fig 3.1.2.f

mobil pentru pentru tunderea automata a gazonului;


instalaţie robotizata pentru curăţirea bărcilor de
agrement si sport etc.

 În cercetarea spaţială Încă


din anii 60 institutele de cercetare spaţială
au cercetat posibilitatea aplicării
tehnologiei de teleoperare a unor roboţi
mobili în cadrul cercetării spaţiale. (Fig
3.1.2.g) robotul mobil Sojourner.

Fig 3.1.2.g

Aspectele prezentate vin să sprijine intenţiile de a demara activităţi in


domeniul roboticii, unele din acestea putând deveni chiar activităţi de succes,
care pot constitui adevărate provocări pentru specialiştii in robotica sau in
domeniile apropiate.
Este adevărat ca roboţii prin calităţile lor pot cauza reduceri masive de
personal acolo unde sunt implementaţi, dar creează si meserii alternative:
 tehnicieni in industria roborizarii;
 ingineri;
 vânzători;
 programatori;
 supervizori etc.
Beneficiile introducerii roboţilor in industrie includ managementul
controlului şi al productivităţii şi creşterea evidenta a calităţii produselor.

12
Minirobot păianjen

Roboţii pot lucra zi si noapte fara a obosi sau a-si reduce performanta.
Consecvent realizează reduceri substanţiale ale preţului de cost in primul
rând prin reducerea consumurilor de materii prime şi al prelucrării automate a
acestora. De asemenea utilizarea roboţilor aduce avantaje pe piaţa
concurenţiala. Prin dezvoltarea rapida a industriei si a tehnicii de calcul,
putem observa evoluţia roboţilor către generaţiile inteligente ce le oferă
caracteristica de a "intelege" mediul in care lucrează.

3.1.3 Clasificarea roboţilor

Din punct de vedere al relaţiei om-robot in timpul desfăşurării lucrului


roboţilor, aceştia se impart in trei mari categorii:
 Roboti automaţi;
 Roboti biotehnici;
 Roboti interactivi.

3.1.3.1 Roboţii automaţi realizează funcţiile lor fara participarea


directa a omului in procesul de comanda. Având in vedere adaptibilitatea lor
la condiţiile(starea) mediului în care î-şi realizează funcţiile, robotii automaţi se
impart in trei generaţii:
 Robotii din generaţia I, care se caracterizează prin program fix de
funcţionare, ei fiind capabili sa repete in mod strict operaţiile specificate in
program, sub condiţia invariabilităţii mediului in care lucrează,
fara perturbaţii externe.Ei nu se adaptează la schimbările mediului, neavand,
practic, nici o informaţie despre mediul extern. Programul acestor roboti se
poate schimba intr-o oarecare măsura si sunt utilizaţi cel mai bine la aplicaţii
industriale , pentru operaţii ce se repeta stereotip.
 Generaţia a II-a cuprinde roboţii adaptivi, capabili sa lucreze in
condiţii de mediu variabile sau parţial necunoscute iniţial.Capacitatea de
adaptare robotului la acţiunea perturbatiilor date de schimbările de mediu este
determinata de senzorii cu care se dotează aceşti roboti, de la care se obţin
informaţii asupra schimbării condiţiilor externe. Aceşti roboţi lucrează după un

13
Proiect de licenţă

ciclu de operaţii definite in prealabil, dar pot sa efectueze si operaţii sub


schimbarea condiţiilor de operare.
 Generaţia a III-a cuprinde robotii inteligenţi, posedând oarecari
caractere de inteligenta artificiala, gradul lor de inteligenta variind in raport cu
funcţiile care au fost dorite iniţial. Aceşti roboti sunt capabili să-şi definească
acţiunile instantanee luând in considerare informaţiile obţinute prin senzori
tactili, vizuali sau de zgomot asupra mediului de operare, sa rezolve probleme
particulare şi să-şi modifice modul de acţiune in concordanta cu variaţiile
mediului de operare.

3.1.3.2 Roboţii biotehnici

Sunt roboţii la care exista o permanentă participare a operatorului


uman în procesul de comanda. Sunt imparţiţi in trei subgrupe:
 roboţi comandaţi pas cu pas;
 roboţi copiativi, denumiţi si master-slave robots;
 roboţi semiautomaţi.
In cazul roboţiior comandaţi pas cu pas, prin acţionarea de către
operatorul uman a unui buton sau maneta, este pus in funcţiune unul din
gradele de mişcare ale robotului. Roboţii master-slave sunt constituiţi din
doua lanţuri cinematice deschise, primul lanţ (maşter) având mişcarea
comandata de operatorul uman, iar al doilea (slave) copiind la scara aceasta
mişcare şi efectuând operaţiile de manipulare pentru care este destinat
robotul. In alte cazuri, legătura dintre maşter si slave este indirecta, prin
teletransmisie. In cazul robotiior biotehnici semiautomaţi, operatorul uman
participa nemijlocit in procesul de comanda, dar in acelaşi timp cu el lucrează
si un calculator universal sau specializat.

3.1.3.3 Roboţii interactivi

Se caracterizează prin faptul ca operatorul uman are numai o


participare periodica in procesul de comanda, in restul timpului robotul fiind
comandat automat de calculatorul electronic. Aceşti roboţi pot funcţiona in

14
Minirobot păianjen

regim automatizat, cu alternarea permanenta a regimului biotehnic cu cel


automat, cu comanda de supervizare sau cu comanda dialog.
Roboţii inteligenţi se afla in faza de incercari in laboratoare sau aplicaţii
la unele operaţii de montaj automat.
Aşadar, robotul este un manipulator cu program de lucru variabil,
autonom si cu funcţionare automata, care reproduce anumite funcţii motrice şi
intelectuale ale omului în realizarea unor operaţii de producţie auxiliare sau de
baza. El poate realiza cele mai variate succesiuni de operaţii de manipulare in
cadrul unor procese de fabricate, aceasta flexibilitate fiind asigurata pe de o
parte prin disponibilitatea unui număr suficient de grade de libertate(grade de
mişcare), iar pe de alta parte prin programabilitate.

3.1.4 Parţile componente ale unui robot

Structura generala a roboţilor depinde foarte mult de utilitatea si


scopul pentru care sunt produşi. Funcţiile de baza sunt reprezentate de patru
sisteme:
 Subsistemul cinematic;
 Subsistemul de acţionare;
 Subsistemul de comanda si programare;
 Subsistemul senzorial.

3.1.4.1 Subsistemul cinematic

Cuprinde structura capabila sa execute mişcările pentru a acţiona


asupra mediului inconjurator. Astfel in funcţie de mediul in care este folosit,
robotul poate fi dotat cu:roti;senile;picioare mecanice; diverşi suporţi.

3.1.4.2 Subsistemul de acţionare

Furnizează energia mecanică necesară acţionării cuplelor cinematice


ale sistemului mecanic.

15
Proiect de licenţă

Elementele esenţiale şi indispensabile ale unui sistem de acţionare îl


constituie motoarele, care transformă un anume tip de energie (electrică,
hidraulică, pneumatică) în energie mecanică, la parametrii necesari
funcţionării robotului.
Statisticile din domeniul acţionării roboţilor arată o dezvoltare a
acţionărilor electrice (15-30% din totalul acţionărilor) şi hidraulice (circa 50-
55%), în dauna acţionărilor pneumatice.
Acţionările hibride au apărut recent ca o necesitate de a cumula
avantajele celorlalte tipuri de acţionări.
Alegerea modului de acţionare depinde de natura agentului energetic,
disponibil şi compatibil cu sistemul de fabricaţie în care robotul este integrat,
de natura operaţiilor care trebuie să fie executate, de capacitatea necesară de
manipulare, de precizia de lucru impusă, de spaţiul de lucru şi de structura
sistemului de fabricaţie. Ordinea de importanţă a acestor criterii se va stabili,
de la caz la caz, ţinând cont şi de cinematica ce va trebui impusă, prin
comandă, sistemului mecanic şi de acţionare.
Motoarele de acţionare ale roboţilor industriali trebuie să dezvolte
cupluri mari la gabaritele minime, să aibă momente de inerţie reduse în
scopul îmbunătăţirii comportării dinamice şi, implicit, facilitatea poziţionărilor,
să fie compatibile cu sistemul de comandă şi insensibile la perturbaţii.
Acţionarea cuplelor cinematice se poate face direct, fie prin mecanisme de
transmitere şi transformare a parametrilor cinematici şi dinamici (organe de
transmitere, reductoare, amplificatoare de cuplu etc.

 Actionarea electrica a robotilor tinde să devină cea mai răspândită


variantă de acţionare a roboţilor industriali datortită unor avantaje evidente,
cum ar fi;
 disponibilitatea energiei electrice în cvasitotalitatea mediilor în care
acţionează roboţii, mai puţin mediile explozive;
 fiabilitatea ridicată şi gabartitul redus ale motoarelor electrice realizate
la ora actuală;
 modalităţi simple de reglare a parametrilor cinematici şi dinamici;
 compatibilitatea cu sistemele de comandă, cu traductorii de măsură a
deplasărilor şi vitezei şi cu sistemul senzorial;

16
Minirobot păianjen

 preţurile moderate datorită faptului că elementele acţionării sunt


standardizate şi executate în producţie de serie în întreprinderi
specializate.
Principalul dezavantaj al acţionărilor electrice constă în necesitatea
utilizării unor mecanisme suplimentare pentru reglarea parametrilor cinematici
şi dinamici (viteze, forţe, momente) la valorile impuse de funcţionarea
robotului (transformatoare, convertizoare etc).

 Actionarea hidraulica a robotilor şi electrohidraulică (hibridă)


este utillizată pentru acţionarea a 40...55% dintre roboţii existenţi în prezent
pe plan mondial datorită unor avantaje certe cum ar fi:
 robusteţe, puteri mari de acţionare la greutăţi reduse ale
componentelor;
 rigiditate ridicată şi timp de răspuns redus;
 nu necesită mecanisme intermediare de transmitere şi amplificare;
 comanda nu este sensibilă la perturbaţii;
 oferă largi posibilităţi de reglare a parametrilor de acţionare
(forţe,viteze, cupluri, turaţii);
Dezavantajele:
 necesită grupuri hidraulice şi elemente de comandă complicate şi
costisitoare;
 necesită o etanşare pretenţioasă a tuturor îmbinărilor, în caz contrar

 Actionarea pneumatica a robotilor este folosită în proporţie


de 20-25% în construcţia roboţilor industriali.
Avantaje:
 simplitatea constructivă, elemente componente tipizate, preţuri de cost
relativ scăzute;
 viteze de deplasare mari;
 comoditatea conectării la reţelele de aer comprimat;
 elasticitatea acţionării şi, în special, a strângerii, absolut indispensabilă
în anumite situaţii de manipulare.
Dezavantaje:

17
Proiect de licenţă

 realizează forţe şi momente reduse, datorită presiunilor de lucru reduse


(4-8 bari);
 şocuri la capete de cursă;
 dificultatea poziţionării precise şi flexibile (poziţionarea implică
folosirea unor scheme şi elemente de acţionare pretenţioase;
 randamente reduse, fenomene de condensare şi, implicit, de
coroziune, zgomot la evacuare.
Domenii de utilizare:
 roboţi simpli, cu comandă secvenţială de precizie redusă;
 sarcini de manipulare mici la viteze ridicate;
 medii explozive sau pericol de incendiu.

3.1.4.3 Subsistemul de comandă şi de programare.

A jucat un rol foarte important în procesul evolutiv al roboţilor, fiindcă


dezvoltarea şi complexitatea sa au fost cele care au determinat apariţia
diverselor generaţii de roboţi, soluţiile mecanice adoptate fiind îmbunătăţite
mai mult sub aspectul performanţelor constructive şi de exploatare.
Complexitatea tot mat mare a acestor sisteme a fost dictată de nevoia de a
asigura robotului o gamă cât mai largă de funcţiuni de execuţie şi o adaptare
cât mai corectă la condiţiile mediului înconjurător.
Pentru toate generaţiile de roboţi însă, sistemul de comandă şi de
programare poate fi definit ca un ansamblu de echipamente de calcul şi
programele ataşate acestora, care permit evoluţia diferitelor segmente ale
structurii mecanice de o manieră coordonată, capabilă să asigure îndeplinirea
sarcinii de lucru impuse prin programare.
Principalele sisteme de comandă şi programare care sunt utilizate
pentru diferitele tipuri de roboţi pot fi clasificate în:
 sistemele electromecanice;
 sistemele bazate pe relee electrice;
 sistemele electronice;
 sistemele cu automate programabile secvenţiale;
 sistemele cu microprocesor;

18
Minirobot păianjen

 sistemele bazate pe inteligenţa artificială (care îşi pot adapta


comportamentul în funcţie de schimbările mediului în care are loc
funcţionarea robotului).

Sistemele de comandă se mai pot clasifica în:


 sistemul de comandă în buclă deschisă
 sistemul de comandă în buclă închisă .
Starea internă cuprinde totalitatea datelor care caracterizează starea
sistemului mecanic (poziţiile, stările de mişcare, forţe, reacţiuni, momente,
temperaturi în anumite zone etc.) şi ale celor referitoare la sistemul de
acţionare (tensiuni, intensitate, frecvenţe, presiuni, debite, viteze etc).
Starea externă cuprinde totalitatea datelor care caracterizează mediul
în care evoluează robotul industrial. Ele se referă la configuraţia geometrică a
mediului (poziţia şi dimensiunile obiectelor din mediu), temperaturi, compoziţia
chimică, poziţia obiectelor de manipulat etc.
Datele referitoare Ia starea internă şi externă sunt sesizate de traductoare şi
senzori.
Traductoareie sunt aparate sau dispozitive care receptează date
privitoare la dimensiuni, viteze liniare şi unghiulare şi le transformă în semnale
dependente de datele receptate. Altfel spus, traductoareie sesizează şi
transmit date comensurabile.
Senzorii sunt aparate şi dispozitive ce sesizează (recepţionează)
datele nedimensionale ale stărilor interne şi externe (prezenţă-absenţă,
apropiere, acţionare etc), care sunt transformate în semnale dependente de
aceste date.
Sistemul de comandă recepţionează şi prelucrează informaţiile (datele)
transmise de traductoare şi senzori şi, printr-un sistem de feedback - legătură
inversă , transmite comenzi sistemului de acţionare pentru punerea în
mişcare a cuplelor conducătoare.
Sistemele de comandă pot fi realizate secvenţial sau continuu , In
cazul comenzilor secvenţiale, cuplele cinematice sunt puse în mişcare în mod
succesiv, pe când în cazul comenzilor continue cuplele cinematice, având
eventual parametrii cinematici variabili în timp, sunt acţionate simultan, în
funcţie de operaţiile de executat. In funcţie de gradul de participare al

19
Proiect de licenţă

operatorului uman, comanda roboţilor industriali poate fi: manuală, automată


sau mixtă
Comanda manuală se realizează prin intermediul acţiunii operatorului
uman, în timp ce comanda automată se face prin intermediul unui sistem
programabil, cu programare rigidă (nemodificabilă) sau flexibilă. Modificarea
programului poate fi făcută prin programare sau prin adaptare.Ultimele două
variante de comandă , care pot fi cu învăţare şi adaptive, conţin elemente de
inteligenţă artificială. In mare, prin inteligenţa artificială înţelegem capacitatea
sistemului tehnic, în cazul nostru a robotului industrial, de a se adapta la
mediu şi la sarcini variabile, specifice activităţii roboţilor.
Rolul sistemului de comandă şi de programare este acela de a permite
introducerea şi memorarea (eventual întocmirea şi codificarea) unui set de
informaţii de natură şi succesiune bine determinate, denumit program. Pe
baza datelor conţinute .de acesta, sistemul de comandă propriu-zis trebuie să
elaboreze şi să trimită către sistemul de acţionare un set de comenzi, care să
determine mişcări ale cuplelor cinematice conducătoare capabile să asigure
deplasarea segmentelor robotului şi acţiunea organului terminal de maniera
impusă pentru realizarea sarcinii de lucru.Comanda desfăşurării unui program
care face parte din sistemele software ale roboţilor cu comandă automată
presupune supravegherea şi coordonarea desfăşurării a patru categorii de
procese:
 mişcarea propriu-zisă a structurii mecanice a robotului;
 schimbul de informaţii cu procesul tehnologic în care este inclus
robotul pentru realizarea coordonării în timp a operaţiilor;
 schimbul de informaţii cu operatorul uman care supraveghează
procesul;
 schimbul de informaţii cu alte sisteme de comandă automate ierarhic
superioare.

3.1.4.4 Subsistemul senzorial

El asigură măsurarea unor mărimi fizice şi eventual perceperea unor


modificări semnificative a acestor mărimi.

20
Minirobot păianjen

Datorită sistemului senzorial se pot pune în evidenţă şi caracteristicile


geometrice şi chimice ale obiectelor din mediul de lucru. Senzorii datorită
caracteristicilor pe care le au pot explora zona de lucru, zona de contact, cea
apropiată, cea îndepărtată, iar senzorii foarte puternici chiar şi zone foarte
îndepărtate. Informaţiile culese cu ajutorul sistemului senzorial servesc la
construirea unui model al lumii în care evoluează robotul, model funcţie de
care aceasta îşi va genera planurile de acţiuni viitoare.În funcţie de soluţia
constructivă, senzorii sunt pasivi sau activi. Senzorii activi folosesc
caracteristicile intrinseci ale mediului, iar cei pasivi generează modificări în
mediu pentru a măsura unele caracteristici.
Alte două categorii de senzori cu care poate fi dotat un robot industri
sunt: senzori de mărimi interne ai robotului (poziţie, viteză sau acceleraţia
unor componente mecanice proprii) şi senzori de mărimi externe (greutate,
formă, poziţie, temperatură, culoare, etc ale obiectelor asupra cărora
acţionează robotul).
Caracteristicile senzoriale ale unui robot depind foarte mult de gradul
său de autonomie, de aplicaţiile pentru care a fost proiectat şi de tipul
mediului de lucru.
In general percepţia se realizează în două etape:
1.) conversia proprietăţilor fizice într-un semnal, de obicei electric;
2.) prelucrarea acestui semnal în vederea extragerii informaţiei care
interesează.
Se preferă o prelucrare preliminară în care senzorii robotului elimină
zgomotele care perturbă semnalul util.
Există mai multe criterii de clasificare a senzorilor utilizaţi în sistemele
de comandă ale robotului industrial:
1.) după cum vine sau nu în contact cu obiectul a cărui proprietate fizică o
măsoară, distingem:
 senzori cu contact;
 senzori fără contact;
2.) după proprietăţile pe care le pun în evidenţă:
 senzori pentru determinarea formelor şi dimensiunilor (pentru
evaluarea în mediu de lucru);

21
Proiect de licenţă

 senzori pentru determinarea proprietăţilor fizice ale obiectelor (de


forţă,decuplu, de densitate şi elastici);
 senzori pentru proprietăţi chimice (de compoziţie, concentraţie,
analizatoare complexe);
 după mediul de culegere a informaţiei:
- senzorii pentru mediul extern
- senzorii pentru funcţia internă
 după distanţa la care sunt culese informaţiile:
- senzori IR;
- senzori ultrsonici;
- senzori de contact.

3.2 Roboţi paşitori.


3.2.1 Introducere

Pământul este traversat în permanenţă de o mulţime de insecte şi


animale, care ajung în locuri greu accesibile. Pornind de la această
constatare, oamenii au căutat să imite natura şi viaţa din universul ei, un loc
aparte fiind modalitatea de a copia cât mai mult şi cât mai fidel mersul
diferitelor insecte şi animale, pentru a realiza, astfel, vehicule păşitoare
capabile să servească din plin necesităţilor din viaţa şi activitatea umană.
Mersul este extrem de complex de realizat pentru roboţi, spre
deosebire de oameni şi animale, pentru care mersul este a doua natură.
Aceste vehicule păşitoare au apărut deoarece oamenii erau obligaţi, de
multe ori, să lucreze în condiţii grele, chiar ostile, pe suprafeţe de teren unde
roţile sau şenilele nu făceau faţă eficient. Astfel, aceste maşini pot lucra pe
teren moale sau îngheţat, acoperit cu zăpadă sau pe teren accidentat, plin de
stânci şi roci de diferite dimensiuni, pe pante sau pe suprafeţe plane.De
asemenea, pot acţiona foarte bine în zone deşertice sau mlăştinoase, unde
proprietăţile fizice ale terenului se pot schimba, ducând la o instabilitate a
capacităţii de susţinere.
Este foarte larg şi divers domeniul de utilizare a unui robot păşitor.
Acest tip de robot poate lucra eficient în industria nucleară, militară, în

22
Minirobot păianjen

montarea - demontarea de conducte, atât la suprafaţă cât şi în mediu acvatic,


în construcţii (poduri, drumuri etc), în domeniul agricol -forestier, în cel al
serviciilor şi chiar pe suprafaţa corpurilor cereşti.
In cazul general, un robot pasitor este un vehicul dotat cu un anumit
grad de autonomie capabil să execute o clasă de sarcini utile. Astfel aceştia
pot îndeplini sarcini de convoiaj, transportând obiecte între posturi de
depozitare şi de lucru îndepărtate, de explorare, furnizând informaţii despre
mediul de lucru în care acţionează prin intermediul unor organe de percepţie,
sarcini de recoltare, fiind capabili să localizeze şi să culeagă obiecte
îndepărtate, şi pot chiar interveni, realizând operaţii asupra obiectelor aflate la
distanţă
Succesul în îndeplinirea acestor sarcini depinde atât de cunoştinţele pe
care robotul le are asupra configuraţiei iniţiale a spaţiului de lucru, cât şi de
cele obţinute pe parcursul evoluţiei sale.
Problemele specifice ce apar la roboţii pasitori ar fi următoarele:
evitarea impactului cu obiectele staţionare sau în mişcare, determinarea
poziţiei şi orientării robotului pe teren, planificarea unei traiectorii optime de
mişcare.
În cazul unui sistem robotic automat distribuit poziţiile spaţiale sunt de
o extremă importanţă şi de ele depinde îndeplinirea scopurilor dorite şi
funcţionarea întregului sistem. Cu alte cuvinte, robotul trebuie să fie capabil
să-şi planifice mişcările, să decidă automat ce mişcări să execute pentru a
îndeplini o sarcină, în funcţie de aranjamentul momentan al obiectelor din
spaţiul de lucru.
3.2.2 Criterii de clasificare a roboţilor paşitori
Sunt câteva criterii pentru a diferenţia între ele aceste maşini păşitoare
şi, în acelaşi timp, de a le grupa împreună după caracteristici similare. Astfel,
pot fi definite 5 criterii de clasificare: Principiul constructiv, care împarte
domeniul roboţilor paşitori în două categorii:

1.) maşini care au la bază principii biologice


(din lumea insectelor, vertebratelor etc.) –( 3.2.2.a
şi Fig. 3.2.2.c);
Fig 3.2.2.a

23
Proiect de licenţă

2.) maşini care se bazează, pe o concepţie


proprie a proiectantului (Fig 3.2.2.b)

Sistemul de acţionare, care poate fi: electric


(Fig 3.2.2.a ), hidraulic (Fig 3.2.2.b), pneumatic (Fig
3.2.2.c) sau o combinaţie a acestora.

Fig 3.2.2.b
Tipul de mecanisme ale elementelor de sprijin (picioare), care poate fi plan
sau spaţial
Numărul de picioare: 2,3,4, 6,7,8 sau mai
multe .

Fig .3.2.2.c

3.2.3 Mecanisme din componenţa picioarelor

O atenţie deosebită trebuie acordată proiectării elementelor de sprijin,


deoarece acestea îndeplinesc un rol dublu: de susţinere şi de deplasare a
maşinii în condiţii de viteză optimă, stabilitate şi siguranţă în exploatare.
Ele trebuie să asigure:
 lungime corespunzătoare a pasului;
 un răspuns dinamic bun şi evitarea unei frecări excesive;
 traiectorie rectilinie în timpul fazei de susţinere, cu păstrarea
constantă a nivelului platformei vehiculului.
Exemplele care urmează (Fig. 4.4.a) sunt o ilustrare a câtorva
mecanisme utilizate pentru acţionarea picioarelor maşinilor păşitoare.

Fig. 3.2.3.a

24
Minirobot păianjen

Capitolul 4
Realizarea proiectului

4.1 Partea mecanica.

4.1.1 Proiectarea sistemului de locomoţie.

Locomoţia este procesul ce î-i permite robotului să se deplaseze


prin mediu, prin acţionarea anumitor forte asupra sa ,studil acţionarii acestor
forţe se numeste dinamica iar studiul formulelor matematice asociate miscarii
fara a considera fortele fizice se numeste cinematica.
Robotul paşitor este format din doua mecanisme dispuse paralel una
fată de alta ce î-i permite robotului să se deplaseze prin mediul
inconjurataor.Fiecare mecanism este acţionat de catre un servomotor cu
reductor ce realizează miscarea elementului manivela din componenta
acestor mecanisme.

4.1.1.1 Proiectarea mecanismului folosit pt locomotia


robotului.

Proiectarea mecanismelor constă în stabilirea şi calcularea


mecanismului optim pentru un scop bine precizat. Aşadar proiectarea începe
cu sinteză şi se termină cu analiza mecanismelor.

sinteză
Putere Putere
constructoare funcţională

analiză

25
Proiect de licenţă

Analiza-porneşte de la un mecanism dat şi prin procedeele de analiză


se determină parametrii funcţionali,adică determinarea pentru fiecare element
a parametrilor de poziţie
Sinteza-se porneşte de la necesitatea realizării unor anumiţi parametri
cinematici şi prin procedeele de sinteză se găseşte un mecanism care să
îndeplinească parametrii ceruţi.
Mecanismul folosit pentru realizarea robotului paşitor este format din
trei lanţuri cinematice care conţin cate o grupa structurala. Toate cele trei
lanţuri cinematice sunt acţionate de catre o manivela avand o legatura
comună.
Lanţurile cinematice reprezintă sisteme formate din elemente
cinematice de diferite ranguri legate între ele în mod continuu prin cuple
cinematice de diferite clase.
Grupa structurala reprezinta cel mai simplu lant cinematic care are
gradul de mobilitate 0.
Legatura dintre 2 elemente din structua unui mecanism o reprezintă
cupla.Cupla este un set de 2 elemente adiacente din structura unui mecanism
legate intre ele printr-o articulaţie.

4.1.1.2 Compunerea mecanismului

Este operaţia inversă fata de descompunerea mecanismului.


Principiul de formare este urmatorul şi este ilustrat in figura 4.1.1.2.a.

 se porneste de la o grupa structurala motoare(manivela 1,1,1)


 se leaga cate una si celelante grupe structurale(0,2,2 aspectul 1;
0,2,2 aspectul 3; 0,2,2 aspectul 1);
 se leagă cuplelele fixe de elementul fix .

26
Minirobot păianjen

(Fig 4.1.1.2.a)

4.1.1.3 Notarea tuturor elementelor şi a cuplelor cinematice.(Fig


4.1.1.3.a)

Fig 4.1.1.3.a

4.1.1.4 Sinteza elementelor din componenţa mecanismului

Pentru ca mecanismul folosit pentru deplasarea robotului să devină un


mecanism paşitor este necesar să se impună poziţiile de extrem ale unor
elemente precum şi stabilirea dimensiunilor elementelor ce intră în
componenţa mecanismului.

4.1.1.4.1 Condiţia de existentă a manivelei

Acţionarea manivelei cu ajutorul motoarelor rotative electrice aduce


necesitatea existentei unei unui element conducator care să poata efectua o

27
Proiect de licenţă

0
miscare completa de 360 ( Fig 4.1.1.4.1.a) Acestă posibilitate este
condiţionată de existenta unor anumite relatii intre parametri constructivi ai
elementelor.

Fig 4.1.1.4.1.a
Rotaţia elementului lA,B este caracterizată de poziţia sa fată de normala
la plan.Poziţia acestui element este dată de triunghiul B,C,D.Pentru existenta
triunghiului B,C,D latura B,D trebuie sa aiba condiţia BD  ICB+IAB ;
BD  ICB -IAB ;Acestă condiţie trebuie indeplinita şi pentru valorile extreme B,D

unde BD max =l AB +l DC iar valoarea minimă este B,D min = l AB - l DC .

Pentru existenţa triunghiului B,C,D trebuie sa avem l AB +I DA  I CB +I CD şi l AB

-I DA >I CB -I CD .Aceste condiţii se mai pot utiliza pentru a verifica daca elementul

I AB este manivela.
Pentru cel de al doilea mecanism condiţia de existenţa a manivelei este

l AB  l BF ;

12+52  55+25

12-52>55-25
 ca elementul AB este manivela;
12  22

4.1.1.4.2 Sinteza picioarelor laterale

În cazul mecanismului din figura 4.1.1.4.2.a elementul condus este l CX

,care este imparţita in: l CD şi l XD (in l CD = l XD ).Pentu a reliza pasul ,elementului

28
Minirobot păianjen

l CD i se impune să efectuieze un unghi Ω .Pentru acest lucru se procedeaza


asrfel:

S-a dat lungimile l CD =25mm si I DA = 52mm.Pentru sinteza noastra a mai

ramas l AB si l BC .Pentru DC 10 manivela se află în prelungirea lui DC 10 .

Unghiul pe care trebuie sa-l faca 1 =48 iar  2 =107


0
0

Fig 4.1.1.4.2.a

lCD  l AD  2lCD l AD cos 1


AC 11 = =67mm
lCD  l AD  2lCD l AD cos  2
AC 10 = =43mm

AC11  AC10
AC 11 =l AB + l BC l AB = 2 =12mm
AC11  AC10
AC 10 =l BC - l AB l BC = 2 =55mm
Lungimile elementelor celuilant lanţ cinematic compus din cuplele
A,B,G,H sunt identice cu acestea.

4.1.1.4.3 Sinteza piciorului din mijloc

Pentru realizarea pasului piciorul din mijloc (Fig 4.1.1.4.3.a)se impune


stablirea unor dimensiuni ale elementelor care intră în componenţa lui,precum
şi al unghiurilor pe care trebuie să le faca.

I se impune ca unghiul  sa fie de 57 .


0

l
sin   AB  l AEF  22mm
l AEF

29
Proiect de licenţă

Fig 4.1.1.4.3.a

4.1.1.5 Analiza sensurilor de deplasa a elementelor (Fig


4.1.1.5.a)

Atunci cănd s-a facut sinteza mecanismelor s-a ţiniut cont şi de


faptul :cand picioarele laterale calca pe pamant(efectuiaya pasul) piciorul din
mijloc se roteste in gol(este eliberat,se incarca) pentru a intra in contact cu
pamantul la un la moment dat (calculat) ca să efectuieze pasul.Deci
picioarele laterale sunt în antifaza cu piciorul din mijloc.

Fig 4.1.1.5.a

30
Minirobot păianjen

Cu culoarea roz,maro,galben,portocaliu sunt reprezentate poziţiile

elementelor mecanismului în momentul în care  î-şi schimba sensul de


deplasare.
Cu culoarea verde sau rosu sunt reprezentate poziţiile elementelor
mecanismului in momentul în care piciorul din mijloc al mecanismului iese din
sarcina sau intra.
Se alege  ca fiind sensul de deplasare al mecanismului.

PIZIŢIE Z7 Z8 Z9 Z10 Z11 Z12

Semnul -----------0++++++++++++0-------------------0+
lui Z

PIZIŢIE Y7 Y8 Y9 Y10 Y11 Y12

Semnul ++++++++++++++++++++++++++++++++++
lui Y

PIZIŢIE X7 X8 X9 X10 X11 X12

Semnul +++++++++++++0--------------------0+++++++
lui  X

Tabel ce exprima directia de deplasare a picioarelor mecanismului în anumite


poziţii .

Din tabel se observă ca sensul de deplasare a picioarelor în momentul


în care ele ating pamantul pentru a se deplasa diferă (la anumite unghiri al

elementului l AB cu normala) şi apare o franare pana în momentul in care  i-


şi schimbă sensul.

31
Proiect de licenţă

4.1.1.6 Reprezentarea dimensiunilor tuturor elementelor.

Din aproape in aproape am ajuns la un mecanism al carui dimensiuni


sunt reprezentate in figua 4.1.1.6.a.

Fig 4.1.1.6.a

4.1.1.7 Reprezentarea mecanismului conform poziţiei elementului


conducător din 600 în 600 (Fig 4.1.1.7.a).

Fig 4.1.1.7.a

4.1.2 Alegrea motorului necesar acţionării robotului.

32
Minirobot păianjen

Alegerea motorului se face in funţie de momentul şi turaţia necesară


mecanismului pentru a se deplasa la viteza stabilita.
La o viteza de 3m/min sec avem nevoie de o viteza a axului motor care
angreneaza biela manivela de 0,5 rot/sec.
Cu autorul unui soft (Mecanical-mecanism) am aflat momentul
necesar mecanismului pentru a se deplasa la o greutate de 300 g dispusa pe

ambele mecanisme.
M mecanism = 0, 078
Intrucat motoarele de cc cu perii dezvolta turatii foarte mari am decis
sa aleg un ansamblu motor reductor care mai are in componenta 4 reductoare
de turatie.
Am ales motoreductorul FS 70 MG (Fig 4.1.2.a)

Fig 4.1.2.a
Caracteristici

Cuplu: 3.3 kg-cm


Viteza: 0.09 rot/Sec
Masa: 20 g
Dimensiuni: 28 x 13 x 30
mm

4.1.2 Schema cinematică .(Fig 4.1.3.a)

Schema cinematica este formata din doua motore de cc care angrenaza


fiecare un set de 4 reductoare,la radul lui ultimul reductor angreneaza
mecanismul robotului . Setul de 4 reductoare se afla in componenta
motoreductorului cumparat din comert.
Reductoarele sunt necesare pentru reducerea turatiei motoarelor de cc la
o turatie dorita si cresterea momentului.

33
Proiect de licenţă

.(Fig 4.1.3.a)

4.2 Partea electrica

Partea electrica a robotului este fomata din urmatoarele parţi asa ca în


figura 4.2.a:
 servomotoarele de curent continu;
 sistemul de comanda (PIC16F84A);
 sistemul senzorial;
 alimentarea circuitului electric.

34
Minirobot păianjen

Fig 4.2.a

35
Proiect de licenţă

4.2.1 Motoarele de curent continu

4.2.1.1 Principiul de funcţionare .

Servomotoarele de curent continuu sunt utilizate în foarte multe


aplicaţii din domeniul mecanicii fine şi mecatronicii (roboţi industriali şi de
servicii, vehicole cu ghidare automată, periferice de calculator, automate de
control şi servire, automate bancare etc, datorită unor caracteristici
remarcabile:
 Domeniu amplu al puterilor/momentelor dezvoltate;
 Moment de inerţie redus al părţilor mobile şi, în consecinţă, un raport
mare putere/moment de inerţie;
 Posibilitatea reglării în limite foarte largi a turaţiei;
 Greutate şi volum mici;
 Moment impulsional foarte mare, care oferă o protecţie la suprasarcini
de scurtă durată;
 Facilităţi favorabile de montare etc.

Fig. 4.2.1.1.a( Simulare 3D) Principiul de funcţionare a unui motor de curent


continuu.

Principiul de funcţionare a unui motor de curent continuu poate fi


înţeles cu ajutorul figurii 4.2.1.1.a.Asupra unui conductor parcurs de un curent
electric, I, şi aflat într-un câmp magnetic de inducţie, B, se exercită o forţă, FL,
al cărei sens poate fi determinat cu "regula mâinii drepte" (vectorul B intră în
palmă, degetele sunt orientate de-a lungul lui I, iar degetul mare indică sensul

36
Minirobot păianjen

forţei). Mărimea acestei forţe, pentru cazul în care B şi I sunt perpendiculare,

are expresia: FL  B  L  I . (Rel 4.2.1.1.a)

Se consideră, în continuare, un rotor de rază, r, pe care sunt dispuse


mai multe cadre dreptunghiulare. Se constată că asupra jumătăţii din dreapta
a conductorului, a cărui normală la suprafaţă este perpendiculară, la un
moment dat, pe inducţia B, se exercită o forţă, FL, îndreptată în jos. Apare un
cuplu de forţe, care tinde să rotească rotorul în sensul acelor de ceasornic.
Pentru ca momentul mecanic, care acţionează asupra rotorului, să-şi menţină
sensul, este necesar un comutator, care să determine schimbarea
ciclică a sensului curentului prin conductoarele motorului, pe măsură ce
acestea se deplasează în câmpul magnetic.
O schemă electrică echivalentă a înfăşurării unui motor de curent
continuu este prezentată în figura 4.2.1.1.b ,în care s-au folosit următoarele
notaţii:
U - tensiunea de alimentare;
Uo - tensiunea contraelectromotoare;
I - curentul prin înfăşurare;
R - rezistenţa înfăşurării;
L - inductanţa înfăşurării.

Fig. 4.2.1.1.b Schema electrică echivalentă

Se poate scrie următoarea ecuaţie:

dI
U=R∗I + L +Uo
dt (Rel 4.2.1.1.b)
Pe de altă parte, tensiunea contraelectromotoare, Uo, este
proporţională cu viteza unghiulară a rotorului, co:

37
Proiect de licenţă

Uo   nlrB  cMB (Rel 4.2.1.1.c)

Din relaţiile (Rel 4.2.1.1.B) şi (4.2.1.1.C)se obţine relaţia pentru


viteza unghiulară:

dI
U −R∗I −L
dt
ω= +Uo
cM ∗B (Rel 4.2.1.1.d)

Conform ecuaţiei (Rel 4.2.1.1.D), principalul parametru, care permite


controlul vitezei unghiulare (turaţiei) a motorului, este tensiunea de alimentare
a înfăşurării, U.
Pentru realizarea comutării curenţilor, în vederea menţinerii sensului
momentului care asigură deplasarea rotorului, se utilizează două soluţii,
diametral opuse:
1.) Comutaţia mecanică;
2.) Comutaţia electronică.

O schemă de principiu a unui motor de curent continuu cu comutaţie


mecanică este prezentată în figura 4.2.1.1.e .

Fig. 4.2.1.1.e Motor de curent continuu cu comutaţie mecanică

Statorul cuprinde polii magnetici, realizaţi cu ajutorul magneţilor


permanenţi, iar rotorul este bobinat şi alimentat cu tensiune, prin intermediul

38
Minirobot păianjen

unui sistem colector -perii. Fiecare capăt al unui conductor ( Fig. 4.2.1.1.e )
este scos la o lamelă a colectorului, iar comutarea sensului curentului se
realizează prin contactul cu una din cele două perii, care îşi păstrează
polaritatea (de exemplu "+" pentru peria din stânga şi "-" pentru peria din
dreapta).
La un motor, periile sunt plasate în aşa fel, încât vectorul curentului
este menţinut perpendicular pe direcţia câmpului magnetic de excitaţie, pentru
oricare poziţie a rotorului. Astfel, momentul motor rezultat va fi proporţional cu
curentul care străbate înfăşurarea motorului, iar viteza unghiulară a motorului
va fi proporţională cu tensiunea. Ecuaţiile clasice care definesc un motor de
c.c sunt:

M=moment motor
(Mm) = km ¿ I (Rel 4.2.1.1.e)

Eg = Tensiune contra-electromotoare
Eg = ke  co (Rel 4.2.1.1.f)

Km=este o constantă a momentului, ke este o constantă a tensiunii


co= este viteza unghiulară a motorului.
Un dezavantaj important al acestui tip de motor constă este
determinata de "limita de comutaţie", la care apare o scânteiere puternică la
perii, care reduce drastic durata de funcţionare a motorului, parazitează
semnalele radio şi limitează nivelele tensiune/curent. Întrucât soluţia
presupune rotaţia înfăşurărilor alimentate cu curent şi a colectorului aferent,
efectele constau într-un moment de inerţie mai mare şi un regim termic mai
nefavorabil, întrucât căldura, dezvoltată mai ales în rotor, are puţine căi de
disipare.
Soluţiile mai recente au căutat să înlăture aceste neajunsuri, prin
schimbarea rolurilor statorului şi rotorului, respectiv polii magnetici, realizaţi
din magneţi permanenţi, sunt amplasaţi în rotor, iar înfăşurările, alimentate cu
tensiuni electrce, în stator. Aceste motoare, cu comutaţie electronică, se
numesc şi motoare fără perii (brushless DC motors = BLDC).

39
Proiect de licenţă

4.2.1.2 Controlul vitezei a motoarelor de c.c.

Schemele de comandă a motoarelor de curent continuu sunt, în


principiu, mult mai complexe decât cele pentru comanda MPP, întrucât nu mai
pot fi utilizate scheme de comandă în buclă deschisă, ci sunt necesare mai
multe bucle de reglare, bazate pe reacţii după curent, viteză şi poziţie (Fig.
4.2.1.2.a).

Microprocesor
Sursa
Comanda

Control Control Control PWM Invertor M


pozitie viteza curent

A/D

Convertor
incremental
Sistem de reglare

Fig. 4.2.1.2.a. Schemă pentru comanda unui motor de curent continuu

Modul în care se realizează controlul vitezei unghiulare la un motor de


c.c, poate fi înţeles pe baza caracteristicilor mecanice ale motorului co = f(M),
prezentate în figura 4.2.1.2.a. . Aceste caracteristici sunt drepte uşor
descrescătoare, care depind de tensiunea de alimentare, UA, a înfăşurării
motorului. Dacă, de exemplu, tensiunea este egală cu tensiunea nominală,
motorul va funcţiona la viteza unghiulară (turaţia) nominală, pentru tensiuni de
alimentare mai mari vitezele unghiulare vor fi mai mari, iar pentru valori mai
mici ale tensiunii ele vor scădea. Prin modificarea tensiunii de alimentare în
limite foarte largi şi vitezele unghiulare ale motoarelor de curent continu pot fi
variate într-o plajă amplă.
Variaţia tensiunii de alimentare poate fi realizată cu amplificatoare
liniare, cu variaţia continuă a tensiunii , dar cvasi-totalitatea soluţiilor utilizează
amplificatoare comandate în impulsuri („Chopper") – (Fig. 4.2.1.2.a.) În
această figură, CS, reprezintă blocul comutatoarelor statice (tranzistoare de

40
Minirobot păianjen

putere), comandat să închidă (pe parcursul timpului activ, ta) circuitul de


alimentare a înfăşurării, timp în care curentul creşte exponenţial (s-a
reprezentat simplificat cu un segment de dreaptă), după care, pe parcursul
intervalului tp (pauză), CS întrerupe alimentarea înfăşurării, iar curentul, care
descreşte exponenţial (segmentul de dreaptă cu pantă descrescătoare), se
închide prin dioda supresoare, DS. În acest fel, înfăşurarea motorului este
alimentată cu tensiunea medie:

tc
ta 1
U=ta UA =ε∗UA= ∫ UA∗dt
tc tc 0 (0≤ε≤1 ) (Rel 4.2.1.2.a)

Pot fi luate în considerare două metode de alimentare în impulsuri:


1.) Cu ta constant şi tc variabil → Pulse Frequency Modulated Amplifier
(PFM);
2.) Cu tc constant şi ta variabil → Pulse Width Modulated Amplifier (PWM)
Fig. 4.2.1.2.b Este metoda cea mai des folosită, iar toate procesoarele
numerice mai performante au un număr de ieşiri PWM, care pot fi programate
pentru diferite frecvenţe şi lăţimi ale impulsurilor [DUM3b], [DUM3c].

ω
UA 1 < UA2<UA3
ω3
UA 1
ω2 Δω
UA 2
ω1
UA 3
ω0

M
Fig. 4.2.1.2.b Caracteristici mecanice

41
Proiect de licenţă

Fig. 4.2.1.2.c ) Variator de tensiune (Chopper);

UA
UA 1

IA ta 1 Tp 1 t
tc

UA t
UA 1

ta 2 tp 2 t
tc
Fig. 4.2.1.2.d Comanda în lăţime a imulsurilor (PWM)

4.2.1.3 Circuitul integrat folosit pentru comanda motoarelor de C.C.

În cazul multor sisteme mecatronice, cum ar fi roboţii mobili,


echipamentele periferice ale calculatoarelor, autovehiculele etc. se utilizează
servomotoare de curent continuu cu comutaţie mecanică. Structura de bază a
acestor motoare şi a amplificatoarelor de putere, care servesc la comanda lor,
este unitară în întreaga lume. Controlul bi-directional presupune utilizarea
unor punţi în H, care conţin patru tranzistoare de putere, şi sunt comandate cu
semnale PWM, generate de un procesor numeric. Viteza motorului de curent

42
Minirobot păianjen

continuu poate fi modificată prin schimbarea lăţimii impulsurilor utilizate pentru


comanda tranzistoarelor de putere.
Există un număr foarte mare de circuite integrate, cu diferite nivele de
complexitate şi de la multe firme producătoare, care includ punţi de putere în
H, cum ar fi: L293B/L293D, LMD18200, LMD18201, LMD18245, L6227 etc.

Circuitul integrat ales de mine este L293B (Fig 4.2.1.3.a)( Fig 4.2.1.3.b)
Alimentarea circuitului integrat se la vace la 5v find un circuit TTL
.Pentru comanda motoarelor el suportă o tensiune intre 5-36V din care î-mi
sunt necesari doar 7(tens de alimentare a motoarelor),si un curent max de
600mA din care i mi sunt necesari doar 300mA(curentul care poate sa treca
prin motoare).. Circuitul L293B, de exemplu, conţine câte patru amplificatoare
care suportă curenţi electrici mari. L293B au fost proiectate pentru comutarea
bi-direcţională.Toate intrările sunt compatibile TTL, iar semipuntile sunt
activate pe perechi, cu ajutorul semnalelor de validare 1,2 EN pentru
semipuntile 1 şi 2 , respectiv 3,4 EN pentru perechea 3 şi 4. Dacă intrările de
validare (enable) sunt în starea "High (H)" (1 logic), tranzistoarele din
componenţa semipuntilor respective conduc şi ieşirile sunt active şi în fază cu
intrările.

Fig 4.2.1.3.a (schema logica) Fig 4.2.1.3.b

Când intrările de validare (enable) sunt în starea "Low (L)" (0 logic)


tranzistoarele de putere corespunzătoare sunt blocate, iar ieşirile semipuntilor
sunt în starea de înaltă impedanţă. Pentru o configuraţie adecvată a
semnalelor de validare, fiecare perche de semipunţi configurează o punte H

43
Proiect de licenţă

pentru comanda motorului (vezi Fig 4.2.1.3.b pentru perechile 1 şi 2).


Intrările 1A şi 2A determină sensul de rotaţie a motorului: 1A - L şi 2A
-H→sens orar; 1A - H şi 2A -L →sens antiorar.

4.2.1.4 Schema electrica a circuitului folosit pentru comanda motorului


(Fig 4.2.1.1.a),funcţionare.

Fig 4.2.1.4.a

Funcţionarea circuitului.

Sistemul de comanda (pic) comanda prin iesirile sale intrarile


circuitului integrat L293B asa cum se vede in figura : RB3→IN 1 ,RB4→ IN2
si RB5→IN 3 al ,RB6→IN 4 al .
IN 1, IN 2 sunt intrarile punţii 1;
IN 3, IN 4 sunt intrarile punţii 2;
Cele două punţi ale circuitului L293B comută curenţii în motoare,
puntea 1 (OUTPUT 1,OUTPUT 2 ) comandă motorul 1 ,si puntea 2 (OUTPUT
3,OUTPUT 4) comandă motorul 2.
EN 1,EN 2 sunt intrarile de validare ale punti 1 ,2 ele se leaga
impreuna si se conecteaza la iesirea RB2 a sistemului de comanda,pt
activarea puntilor sau dezactivarea lor.

44
Minirobot păianjen

Pentru comanda sarcinilor inductive se pun diode de comutatie din


cauza faptului ca dupa ce motorul va produce niste curenti inversi prin
inductie care poate sa deterioreze puntile.Miscare de rotaţie a moturului va
genera o tensiune la bornele circuitului care l-a comandat şi acest lucru
afecteaza circuitul.Pentru a anula aceasta diferenta de potential se introduc in
circuit diode de comutaţie.
Am ales diode de comutaţie de tip BY 398 (Fig 4.2.1.4.c) şi le-am
conectat ca in figura 4.2.1.4.a.Aceste diode de protectie suportă un curent
maxim de un 1A.

4.2.1.4.c.Dioda de comutatie BY 398

Talelebele cu comenzi posibile provenite de la sistemul de comandă


(pic)

RB2=EN1 ,
EN 2 RB3=IN 1 RB4= IN2 M1
H L H SE ROTEŞTE IN DREAPTA
H H L SE ROTEŞTE IN STANGA
H L L FRANARE RAPIDA
H H H FRANARE RAPIDA
L X X FRANARE RAPIDA

RB2=EN1 M2
, EN 2 RB5=IN 3 RB6=IN 4
H L H SE ROTEŞTE IN DREAPTA
H H L SE ROTEŞTE IN STANGA
H L L FRANARE RAPIDA
H H H FRANARE RAPIDA
L X X FRANARE RAPIDA

Tabel care exprima direcţia de deplasare al robotului in funcţie de


sensul de deplasare al motoarelor

45
Proiect de licenţă

M1 M2 Robot
SE ROTEŞTE ÎN -SE ROTESTE ROBOTU SE DEPLASEAZA
DREAPTA ÎN DREAPTA ÎNAINTE
SE ROTEŞTE ÎN SE ROTESTE ÎN ROBOTU SE DEPLASEAZA
STANGA STANGA ÎNAPOI

SE ROTEŞTE ÎN SE ROTESTE ÎN ROBOTU SE ÎNTOARCE RAPID


STANGA DREAPTA SPRE PARTEA STANGA

SE ROTEŞTE ÎN SE ROTESTE ÎN ROBOTU SE ÎNTOARCE RAPID


DREAPTA STANGA SPRE PARTEA DREAPTA
SE ROTESTE ÎN ROBOTU SE ÎNTOARCE SPRE
FRANARE RAPIDA DREAPTA PARTEA STANGA

SE ROTEŞTE ÎN FRANARE ROBOTU SE ÎNTOARCE SPRE


STANGA RAPIDA PARTEA STANGA

SE ROTESTE ÎN ROBOTU SE ÎNTOARCE SPRE


FRANARE RAPIDA STANGA PARTEA DREAPTA

SE ROTEŞTE ÎN FRANARE ROBOTU SE ÎNTOARCE SPRE


DREAPTA RAPIDA PARTEA DREAPTA
FRANARE
FRANARE RAPIDA RAPIDA STOP

4.2.2 Senzorii de contact folosit pentru detectarea obstacolelor.

Robotul este dotat cu 4 senzori de contact, 2 pentru fata (stanga,dreapta),


2 pentru spate (stanga ,dreapta) ce pot detecta obstacolele aparute in cale
.Fiecate sensor este conectat la microcontrolar la pinii RB3,RB4,RB5,RB6
pentru a-i sesiza acestuia prezenta sau absenta unui obstacol.

46
Minirobot păianjen

4.2.2.1 Schema electrica circuitului senzorial,fucţionare Fig 4.2.2.1.a

Fig 4.2.2.1.a

Functionare
Fiecare senzor de contact este conectat la pinii microcontrolarului in
urmatorul mod:
RB3 i-si schimba starea (din 0 logic in 1 logic) atunci cand contactul din fata
partea dreapta este actionat
RB4 i-si schimba starea (din 0 logic in 1 logic) atunci cand contactul din fata
partea stanga este actionat
RB5 i-si schimba starea (din 0 logic in 1 logic) atunci cand contactul din spate
partea dreapta este actionat
RB6 i-si schimba starea (din 0 logic in 1 logic) atunci cand contactul din spate
partea stanga este actionat

47
Proiect de licenţă

Modul de functionare a unui senzor de contact


In stare de neactionare a unui senzor el va lega pinul prin care se leaga
la micocontrolar la masa printr-o rezisternta de 10k in parallel cu o rezistenta
de 1k inseriat cu un led semnalamd starea de 0 logic corespunzatoare faptului
ca senzorul nu a detectat nici un obstacol.
Daca contactul este apasat el va furniza micocontrolarului 5v ,1 logic ce
indica faptul ca senzorul respectiv a detectat un obstacol.Tot in acelasi timp la
bornele ledului va aparea o tensiune de circa 1,5 v ce va duce la aprinderea
lui.
Micocontrolarul va testa tot timpul starea pinilor RB3,RB4,RB5,RB6 si in
functie de starea lor va comanda moroarele robotului

4.2.3 Sistemul de comandă.


Am ales un sitem de comanda de tip PIC16F84.Cauze care m-
audeterminat sa fac aceasta aleger ar fi:costul relativ foarte scazut in
comparatie cu alte tipuri de micocontrolare,sunt f usor de programat etc
4.2.3.1 Prezentare PIC16F84A.

Circumstanţele în care ne găsim astăzi în domeniul microcontrolerelor


şi-au avut începuturile în dezvoltarea tehnologiei circuitelor integrate. Această
dezvoltare a făcut posibilă înmagazinarea a sute de mii de tranzistoare într-un
singur cip. Aceasta a fost o premiză pentru producţia de microprocesoare, şi
primele calculatoare au fost făcute prin adăugarea perifericelor ca memorie,
linii intrare-ieşire, timer-i şi altele. Următoarea creştere a volumului capsulei a
dus la crearea circuitelor integrate. Aceste circuite integrate conţin atât
procesorul cât şi perifericele. Aşa s-a întâmplat cum primul cip conţinând un
microcalculator, sau ce va deveni cunoscut mai târziu ca microcontroler a luat
fiinţă.
Microcontrolerul PIC16F84 poate fi inclus perfect în aplicatii de
comanda a robotilor mobili, industria automobilelor, controlul motoarelor,
senzori de consum redus, chei electronice, controlul frecventei receptoarelor
e.t.c.

48
Minirobot păianjen

Acesta este un tip de procesor de înalta performanta, CMOS, full static,


pe 8 biti .Toate microcontrolerele din aceasta serie (16Fx) sunt construite pe o
arhitectura RISC avansata si prezinta facilitati avantajoase ale hardware-ului,
stiva de 8 nivele si multiple surse interne si externe de întrerupere . Magistrala
separata de date si de instrucţiuni a arhitecturii Harvard permite conlucrarea
cuvântului instrucţiune de 14 biti cu magistrala de date de 8 biti.
Microcontrolerul PIC16F84 realizeaza în mod tipic o compresie a codului de
2:1 si astfel o sporire a viezei de pâna la 2:1 (la 10MHz) fata de alte
microcontrolere de 8 biti din aceasta clasa . PIC16F84 are 68 de octeti de
RAM, 64 de octeti de memorie EPROM de date si 13 pini I/O . Este disponibil
si un numarator/temporizator. Familia PIC16F84 aduce avantaje speciale prin
reducerea numarului componentelor externe si reducerea consumului de
energie.
 Memoria program (FLASH)-pentru memorarea unui program
scris. Pentru că memoria ce este făcută în tehnologia FLASH poate fi
programată şi ştearsă mai mult decât odată, aceasta face microcontrolerul
potrivit pentru dezvoltarea de componentă.

 EEPROM-memorie de date ce trebuie să fie salvate când nu


mai este alimentare.
Este în mod uzual folosită pentru memorarea de date importante ce nu
trebuie pierdute dacă sursa de alimentare se întrerupe dintr-o dată. De
exemplu, o astfel de dată este o temperatură prestabilită în regulatoarele de
temperatură. Dacă în timpul întreruperii alimentării această dată se pierde, va
trebui să facem ajustarea încă o dată la revenirea alimentării. Astfel
componenta noastră pierde în privinţa auto-menţinerii.

 RAM-memorie de date folosită de un program în timpul


executării sale.
În RAM sunt memorate toate rezultatele intermediare sau datele temporare ce
nu sunt cruciale la întreruperea sursei de alimentare.

49
Proiect de licenţă

 PORTUL A şi PORTUL B sunt conexiuni fizice între


microcontroler şi lumea de afară. Portul A are 5 pini, iar portul B are 8 pini.

 TIMER-UL LIBER (FREE-RUN) este un registru de 8 biţi în


interiorul microcontrolerului ce lucrează independent de program. La fiecare al
patrulea impuls de ceas al oscilatorului î-şi încrementează valoarea lui până
ce atinge maximul (255), şi apoi începe să numere tot din nou de la zero.
După cum ştim timpul exact dintre fiecare două incrementări ale conţinutului
timer-ului, poate fi folosit pentru măsurarea timpului ce este foarte util la unele
componente.

 UNITATEA DE PROCESARE CENTRALĂ(Fig. 4.2.3.1.a) are


rolul unui element de conectivitate între celelalte blocuri ale
microcontrolerului. Coordonează lucrul altor blocuri şi execută programul
utilizatorului.

50
Minirobot păianjen

Fig. 4.2.3.1.a

S-a spus deja că PIC1684 are o arhitectură RISC. Acest termen este
adeseori găsit în literatura despre calculatoare, şi are nevoie să fie explicat
aici mai în detaliu. Arhitectura Harvard este un concept mai nou decât von-
Neumann. S-a născut din nevoia de mărire a vitezei microcontrolerului. În
arhitectura Harvard, bus-ul de date şi bus-ul de adrese sunt separate. Astfel
este posibil un mare debit de date prin unitatea de procesare centrală, şi
bineînţeles, o viteză mai mare de lucru. Separarea programului de memoria
de date face posibil ca mai departe instrucţiunile să nu trebuiască să fie
cuvinte de 8 biţi. PIC16F84A foloseşte 14 biţi pentru instrucţiuni ceea ce
permite ca toate instrucţiunile să fie instrucţiuni dintr-un singur cuvânt. Este de
asemenea tipic pentru arhitectura Harvard să aibă mai puţine instrucţiuni
decât von-Newmann şi să aibă instrucţiuni executate uzual intr-un ciclu.
Microcontrolerele cu arhitectură Harvard sunt de asemenea numite
"microcontrolere RISC". RISC înseamnă Reduced Instruction Set Computer.
Microcontrolerele cu arhitectura von-Newmann sunt numite "microcontrolere
CISC". Titlul CISC înseamnă Complex Instruction Set Computer.

Pentru că PIC16F84A este un microcontroler RISC, aceasta înseamnă


că are un set redus de instrucţiuni, mai precis 35 de instrucţiuni (de ex.
microcontrolerele INTEL şi Motorola au peste 100 de instrucţiuni). Toate
aceste instrucţiuni sunt executate într-un ciclu cu excepţia instrucţiunilor jump
şi branch. Conform cu ceea ce spune constructorul, PIC16F84A ajunge la
rezultate de 2:1 în compresia cod şi 4:1 în viteză în comparaţie cu alte
microcontrolere de 8 biţi din clasa sa.

 Clock-ul /ciclul instrucţiune (Fig. 4.2.3.1.c)

Clock-ul sau ceasul este starter-ul principal al microcontrolerului, şi


este obţinut dintr-o componentă de memorie externă numită "oscilator". Dacă
ar fi să comparăm un microcontroler cu un ceas de timp, "clock-ul" nostru ar fi
un ticăit pe care l-am auzi de la ceasul de timp. În acest caz, oscilatorul ar

51
Proiect de licenţă

putea fi comparat cu arcul ce este răsucit astfel ca ceasul de timp să meargă.


De asemenea, forţa folosită pentru a întoarce ceasul poate fi comparată cu o
sursă electrică.
Clock-ul de la oscilator intră într-un microcontroler prin pinul OSC1
unde circuitul intern al microcontrolerului divide clock-ul în 4 clock-uri egale
Q1, Q2, Q3 şi Q4 ce nu se suprapun. Aceste 4 clock-uri constituie un ciclu de
o singură instrucţiune (numit de asemenea ciclu maşină) în timpul căreia
instrucţiunea este executată.
Executarea instrucţiunii începe prin apelarea unei instrucţiuni care este
următoarea în linie. Instrucţiunea este apelată din memoria program la fiecare
Q1 şi este scrisă în registrul de instrucţiuni la Q4. Decodarea şi executarea
instrucţiunii sunt făcute între următoarele cicluri Q1 şi Q4. În următoarea
diagramă putem vedea relaţia dintre ciclul instrucţiunii şi clock-ul oscilatorului
(OSC1) ca şi aceea a clock-urilor interne Q1-Q4. Contorul de program (PC)
reţine informaţia despre adresa următoarei instrucţiuni.

Fig. 4.2.3.1.c

 Pipelining( Fig. 4.2.3.1.d)

Ciclul instrucţiune constă din ciclurile Q1, Q2, Q3 şi Q4. Ciclurile de


instrucţiuni de apelare şi executare sunt conectate într-un aşa fel încât pentru
a face o apelare, este necesar un ciclu cu o instrucţiune, şi mai este nevoie
de încă unul pentru decodare şi executare. Totuşi, datorită pipelining-ului

52
Minirobot păianjen

(folosirea unei pipeline-conductă, şi este aducerea unei instrucţiuni din


memorie în timp ce se execută alta), fiecare instrucţiune este executată
efectiv într-un singur ciclu. Dacă instrucţiunea cauzează o schimbare în
contorul programului, şi PC-ul nu direcţionează spre următoarea ci spre alte
adrese (poate fi cazul cu subprogramele jumps sau calling), 2 cicluri sunt
necesare pentru executarea unei instrucţiuni. Aceasta este pentru că
instrucţiunea trebuie procesată din nou, dar de data aceasta de la adresa
corectă. Ciclul începe cu clock-ul Q1, prin scrierea în registrul instruction
register (IR). Decodarea şi executarea începe cu clock-urile Q2, Q3 si Q4.

.
Fig. 4.2.3.1.d

 TYC0 citeşte instrucţiunea MOVLW 55h (nu are importanţă pentru noi
ce instrucţiune a fost executată, ce explică de ce nu este un dreptunghi
desenat în partea de jos).
 TCYI execută instrucţiunea MOVLW 55h şi citeşte MOVWF PORTB.
 TCY2 execută MOVWF PORTB şi citeşte CALL SUB_1.
 TCY3 execută o apelare a subprogramului CALL SUB_1, şi citeşte
instrucţiunea BSF PORTA, BIT3. Pentru că instrucţiunea aceasta nu
este aceea de care avem nevoie, sau nu este prima instrucţiune a
subprogramului SUB_1 a cărei execuţie este următoarea în ordine,
instrucţiunea trebuie citită din nou. Acesta este un bun exemplu a unei
instrucţiuni având nevoie de mai mult de un ciclu.
 TCY4 ciclul instrucţiunii este total folosit pentru citirea primei
instrucţiuni din subprogram la adresa SUB_1.

53
Proiect de licenţă

 TCY5 execută prima instrucţiune din subprogram SUB_1 şi citeşte


următoarea.

 Semnificaţia pinilor

PIC16F84 are un număr total de 18 pini. Cel mai adesea se găseşte


într-o capsulă de tip DIP18 dar se poate găsi de asemenea şi într-o capsulă
SMD care este mai mică ca cea DIP. DIP este prescurtarea de la Dual In
Package. SMD este prescurtarea de la Surface Mount Devices sugerând că
găurile pentru pini unde să intre aceştia, nu sunt necesare în lipirea acestui tip
de componentă.

Fig. 4.2.3.1.e

Pinii microcontrolerului PIC16F84 (Fig. 4.2.3.1.e) au următoarea semnificaţie:

 Pin nr.1 RA2 Al doilea pin la portul A. Nu are funcţie adiţională.


 Pin nr.2 RA3 Al treilea pin la portul A. Nu are funcţie adiţională.
 Pin nr.3 RA4 Al patrulea pin la portul A. TOCK1 care funcţionează ca
timer se găseşte de asemenea la acest pin.
 Pin nr.4 MCLR Resetează intrarea şi tensiunea de programare Vpp a
microcontrolerului.
 Pin nr.5 VSS Alimentare, masă.
 Pin nr.6 RB0 Pin de zero la portul B. Intrarea Întrerupere este o funcţie
adiţională.
 Pin nr.7 RB1 Primul pin la portul B. Nu are funcţie adiţională.
 Pin nr.8 RB2 Al doilea pin la portul B. Nu are funcţie adiţională.

54
Minirobot păianjen

 Pin nr.9 RB3 Al treilea pin la portul B. Nu are funcţie adiţională.


 Pin nr.10 RB4 Al patrulea pin la portul B. Nu are funcţie adiţională.
 Pin nr.11 RB5 Al cincilea pin la portul B. Nu are funcţie adiţională.
 Pin nr.12 RB6 Al şaselea pin la portul B. Linia de 'Clock' în mod
programare.
 Pin nr.13 RB7 Al şaptelea pin la portul B. Linia 'Data' în mod
programare.
 Pin nr.14 Vdd Polul pozitiv al sursei.
 Pin nr.15 OSC2 Pin desemnat pentru conectarea la un oscilator.
 Pin nr.16 OSC1 Pin desemnat pentru conectarea la un oscilator.
 Pin nr.17 RA2 Al doilea pin la portul A. Nu are funcţie adiţională.
 Pin nr.18 RA1 Primul pin la portul A. Nu are funcţie adiţională.

4.2.3.2 Constructia circuitului de dezvoltare pentru PIC16F84A(Fig.


4.2.3.2.a)

Fig. 4.2.3.2.a

Alimentarea picului dupa cum se vede se face la 5V cu o tensiune


provenita de la un stabilizator de tensiune( Fig. 4.2.3.2.a).
Ansamblul Q1,C2,C3 reprezinta circuitul oscilator.

55
Proiect de licenţă

Circuitul oscilator este folosit pentru a da microcontrolerului un ceas-


clock. Ceasul este necesar pentru ca microcontrolerul să execute programul
sau instrucţiunile din program.
Oscilatorul XT (Q1) (Fig. 4.2.3.2.b)cu cristal se află intr-o carcasă
metalică cu doi pini pe care este înscrisă frecvenţa la care cristalul oscilează.
Mai este necesar câte un condensator ceramic de 30pF cu celălalt capăt la
masă de a fi conectaţi la fiecare pin.

Fig. 4.2.3.2.b

Oscilatorul şi condensatorii pot fi încapsulaţi împreună într-o carcasă


cu trei pini. Un asemenea element se numeşte rezonator ceramic şi este
reprezentat în scheme ca cel de mai jos. Pinii centrali ai elementului sunt
masa, iar pinii terminali sunt conectaţi la pinii OSC1 şi OSC2 ai
microcontrolerului. Când se proiectează un aparat, regula este să plasaţi
oscilatorul cât mai aproape de microcontroler, pentru a elimina orice
interferenţă de pe liniile pe care microcontrolerul primeşte tactul de ceas.
După alimentare, oscilatorul începe să oscileze (Fig. 4.2.3.2.c)
. Oscilaţia la început are o perioadă şi o amplitudine instabile, dar după un
timp devin stabilizate.

56
Minirobot păianjen

Fig. 4.2.3.2.c

Am ales un oscilator XT (Fig. 4.2.3.2.a)


Rezistenta de reset. R1 este folosită pentru a pune microcontrolerul
într-o condiţie 'cunoscută'. Aceasta înseamnă practic că microcontrolerul
poate să se comporte incorect în unele condiţii nedorite. Pentru a continua să
funcţioneze corect trebuie resetat, însemnând că toţi registrii vor fi puşi într-o
stare de start. Resetul nu este folosit numai când microcontrolerul nu se
comportă cum vrem noi, dar poate de asemenea să fie folosit când se
încearcă un montaj ca o întrerupere într-un program de execuţie sau când se
pregăteşte un microcontroler de a citi un program.Pentru a preveni ajungerea
unui zero logic la pinul MCLR accidental (linia de deasupra înseamnă că
resetul este activat de un zero logic), MCLR trebuie să fie conectat printr-un
rezistor la polul pozitiv al sursei de alimentare. Rezistorul trebuie să fie între 5
şi 10k. Acest rezistor a cărui funcţie este de a menţine o anumită linie la
starea logică unu ca o prevenire, se numeşte o scoatere-pull up.

4.2.4 Alimentarea circuitului electric.

4.2.4.1 Stabilirea tensiunilor de alimentare.

În general, alimentarea corectă este de o importanţă maximă pentru


funcţionarea corectă a sistemului cu microcontroler. Poate fi uşor comparată
cu respiraţia unui om în aer. Este mai probabil ca un om care respiră în aer
curat va trăi mai mult decât un om care locuieşte într–un mediu poluat. Pentru
o funcţionare corectă a oricărui microcontroler, este necesar să oferim o sursă

57
Proiect de licenţă

stabilă de alimentare, un reset sigur în momentul în care îl porniţi şi un


oscilator.
Avem nevoie de asigurarea a 2 tipuri de alimentari:
1. Alimentarea circuitelor integrate (PIC,L293B,) precum şi a circuitului
senzorial care se face cu o tensiune de 5V,ea este asigurata cu ajutoru unui
stabilizator de tensiune de la o sursă alimentare de 7Vcc.
2. Alimentarea motoarelor de c.c cu o tensiune de 7Vc/c se face direct de
la sursă de alimentare externă(transformator electric cu o punte
sabilizatoare).

4.2.4.2 Circutul stabilizator de tensiune,fuctionare.( Fig 4.2.4.2.a )

Fig 4.2.4.2.a

Conform specificaţiilor tehnice oferite de producătorul


microcontrolerului PIC, tensiunea de alimentare ar trebui să se încadreze
între 2.0V şi 6.0V pentru toate versiunile. Cea mai simplă soluţie este
folosirea stabilizatorului de tensiune LM7805CV care oferă tensiune stabilă de
+5V la ieşire. O astfel de sursă este ilustrată în figura de mai sus.
Pentru a funcţiona corect sau pentru a avea o tensiune stabilizată la 5V
la ieşire (pinul 3 Fig 4.2.4.2.b) tensiunea de intrare ar trebui să fie între 7V şi
24V.

58
Minirobot păianjen

Fig 4.2.4.2.b

Alimentarea circuitului se face de la bornele unei surse de tensiune cu


o tensiune de 7v şi un curent de 1A.Alimentarea circuitului se va putea
intrerupe cu ajutorul comutatorului cu 2 poziţii S1.
Condensatorul C1 se pune pt a filtra tensiunea de stabilizata de 5v
atunci cand ea variază intr-o gama foarte mica de aprox 0,3v.Variaţia tensiunii
apre din cauza consumurilor diferite pe unitatea de timp a circuitelor
alimentate.
Semnalizarea tensiunii de alimentare de 5v in circuit se face optic cu
ajutorul unui led D1.Intrucat tensiunea de alimentare a circuitului este de 5V
si tensiunea de alimentare a ledului este de 1,5v ,pentru ca ledu sa nu se
arda daca i-l alimentam cu 5V vom folosi o rezistenţa conectata in serie cu
ledu asa ca in (Fig 4.2.4.2.c)
.
Dimensionarea rezistenţei .

Fig 4.2.4.2.c.

59
Proiect de licenţă

U R  U  U D  5  1, 7  3,3V
UR 3,3
R   165
I 0, 02
Valoarea rezistenţei este determinată de curentul care trebuie să
circule prin led. Curentul maxim care poate curge printr-un led a fost stabilit
de producător. Ledurile cu randament maxim pot produce rezultate bune cu
un curent mai mic de de 2mA. Pentru a determina valoarea rezistenţei serie,
trebuie să cunoaştem valoarea tensiunii de alimentare. De aici scădem
tensiunea care cade pe led. Această valoare va varia de la 1,2v la 1,6v,
depinzând de culoarea ledului. Răspunsul este valoarea lui Ur. Folosind
această valoare şi curentul care vrem să circule prin LED (între 0.002A şi
0.01A) putem să aflăm valoarea rezistenţei cu ajutorul formulei: R=UR / I.
Curentul meu care poate circula prin led astfel incat sa respecte
parametri de functionare a ledului este de 0.01A

4.3.1 Partea de programare a robotului.

4.3.1 Modul de programare

Programarea picului se va face cu ajutorul unei plăci de programare (Fig


4.3.1 b) conectată la un PC prin intermediul unui cablu de programare.Codul
sursa este editat intr-un soft de programare MPLAB IDE V 7.6 Limbajul de
programare cu care lucreaza MPLAB este Assambler.
Programul scris este salvat cu extensia .HEX apoi este incarcat intr-un
alt soft Valleman PIC Programmer v2.6.0.(Fig 4.31a) care realizeaza
transferul lui spre placa de programare spre PIC.
Ca un rezultat al procesului translării unui program scris în limbaj de
asamblare obţinem fişiere ca:
Fişier de executare (Program_Name.HEX)
Fişier de erori program (Program_Name.ERR)
Fişier listă (Program_Name.LST)

60
Minirobot păianjen

Primul fişier conţine programul translat ce este citit în microcontroler prin


programareare. Conţinutul lui nu poate da orice informaţie programatorului,
aşa că nu ne vom mai referi la ele în continuare.
Al doilea fişier conţine posibile erorile ce au fost făcute în procesul
scrierii, şi ca au fost observate de translatorul de asamblare în timpul
procesului de translare. Erorile pot fi descoperite de asemenea într-un fişier
"listă". Acest fişier este mai potrivit deşi când programul este mare şi vederea
fişierului "listă" durează mai mult.
Al treilea fişier este cel mai folositor programatorului. În el sunt conţinute
multe informaţii, ca informaţii despre instrucţiunile de poziţionare şi variabilele
din memorie, sau semnalizarea erorii.

Fig 4.3.1 a Valleman Pic Programmer

61
Proiect de licenţă

Fig 4.3.1 b

4.3.2 Descrierea progrsmului de scriere a codului MPLAB

MPLAB este un pachet de program Windows ce face scrierea şi


dezvoltarea unui program mai uşoară. Poate fi descris cel mai bine ca un
mediu de dezvoltare pentru un limbaj de programare standard ce este
intenţionat pentru programarea unui computer PC. Unele operaţii ce erau
făcute din linia de instrucţiuni cu un număr mare de parametri până la
descoperirea IDE-ului, "Integrated Development Environment", sunt acum
făcute mai uşoare prin folosirea MPLAB. Totuşi, gusturile noasre diferă, aşa
că chiar astăzi unii programatori preferă editoarele standard şi compilatoarele
din linia de instrucţiuni. În orice caz, programul scris este uşor de citit, şi este
disponibil un help bine documentat

 Alegerea modului de dezvoltare

Setarea unui mod dezvoltare este necesară aşa ca MPLAB să poată


şti ce instrumente vor fi folosite pentru a executa programul scris. În cazul
nostru, avem nevoie să setăm simulatorul ca un instrument ce este folosit.

62
Minirobot păianjen

Făcând clic pe OPTIONS---> DEVELOPMENT MODE, o nouă fereastră apare


ca în imaginea: Fig : 4.3.2.a

Fig : 4.3.2.a
Trebuie să selectăm opţiunea 'MPLAB-SIM Simulator' pentru că acolo
se va testa programul. În afară de această opţiune, este de asemenea
disponibilă opţiunea 'Editor Only'. Această opţiune este folosită doar dacă
dorim să scriem un program şi prin programator să scriem ' hex file' într-un
microcontoler. Selecţia modelului microcontrolerului este făcută în partea
dreaptă. Pentru că această carte este bazată pe PIC16F84, trebuie selectat
acest model.
De obicei când începem să lucrăm cu microcontrolere, folosim un simulator.
După cum nivelul cunoaşterii va creşte, programul se va scrie într-un
microcontroler imediat după translare.

 Conceperea unui proiect

Pentru a începe să scriem un program avem nevoie să cream mai intâi


un proiect. Făcând clic pe PROJECT --> NEW PROJECT se poate denumi
proiectul si sa l memoram într-un director pe care-l dorim. În imaginea de mai
jos, este creat un proiect numit 'test.pjt' şi memorat în directorul
c:\PIC\PROJEKTS\.
Acest director este ales pentru că autorii au ales acest director în
calculatorul lor. În general, un director cu fişiere este plasat de obicei într-un
director mai mare a cărui nume este asociat negreşit cu conţinutul lui. Fig :
4.3.2.b

63
Proiect de licenţă

Fig : 4.3.2.b

După denumirea unui proiect, clic pe OK.

Fig : 4.3.2.c

Făcând un clic pe "test [.hex]" se activează opţiunea 'Node properties'


în colţul din dreapta jos a ferestrei. Făcând clic pe ea obţineţi următoarea
fereastră. Fig : 4.3.2.d

64
Minirobot păianjen

Fig : 4.3.2.d

Din această imagine observăm că sunt diferiţi parametri. Fiecare fel


corespunde la un parametru în "Command line". Pentru că memorarea
acestor parametri este foarte necomfortabilă, chiar interzisă pentru începători,
s-a introdus ajustarea grafică. Din imagine observăm ce opţiuni trebuie
deschise. Făcând clic pe OK ne întoarcem la fereastra anterioară unde "Add
node" este o opţiune activă. Făcând clic pe ea obţinem următoarea fereastră
unde ne denumim programul asamblor. Să-l denumim"Test.asm" pentru că
acesta este primul nostru program în MPLAB Fig  4.3.2.e.
.

Fig : 4.3.2.e

Făcând clic pe OK ne întoarcem la fereastra de început unde


observăm adăugat un fişier asamblor Fig : 4.3.2.g

65
Proiect de licenţă

Fig : 4.3.2.g
Făcând clic pe OK ne întoarcem la fereastra de început unde observăm
adăugat un fişier asamblor Fig : 4.3.2.h

Fig : 4.3.2.h

Făcând clic pe OK ne întoarcem la mediul de dezvoltare MPLAB.

 Conceperea unui nou fişier asamblor(scrierea un program nou)

Când partea "proiect" a lucrului este terminată, trebuie să începem să


scriem un program. Cu alte cuvinte, un nou fişier trebuie deschis, şi se va
denumi "test.asm". În cazul nostru, fişierul trebuie denumit "test.asm" pentru
că în proiecte ce au doar un fişier ( ca al nostru), numele proiectului şi numele
fişierului sursă trebuie să fie aceleaşi.

66
Minirobot păianjen

Un nou fişier este deschis făcând clic pe FILE>NEW. Astfel obţinem o


fereastră text în interiorul spaţiului de lucru MPLAB.

 .Scrierea unui program

Numai după ce toate operaţiile precedente au fost terminate suntem


capabili să începem să scriem un program. Vom scrie programul de comanda
aminirobotului paianjen.

67
Proiect de licenţă

Programul trebuie să fie scris într-o fereastră care este deschisă, sau
copiată de pe un disc, sau luat din prezentarea Mikroelektronika Internet
folosind opţiunile copy şi paste. Când programul este copiat în "test.asm"
window, putem folosi comanda PROJECT -> BUILD ALL (dacă nu sunt erori),
şi o nouă fereastră va apare ca în imaginea următoare.

Putem vedea din imagine că obţinem fişierul "test.hex" ca rezultat al


procesului de translare, pentru care este folosit programul MPASMWIN, şi că
este doar un mesaj. În toate aceste informaţii, ultima propoziţie în fereastră
este cea mai importantă pentru că arată dacă translarea a fost sau nu făcută
cu succes. 'Build completed successfully' este un mesaj afirmând că
translarea a fost de succces şi că nu sunt alt erori.
În caz că apare o eroare, trebuie să facem dublu clic pe mesajul eroare în
fereastra 'Build Results'. Aceasta vă va transfera automat în programul
asamblor şi în linia unde a fost eroarea.

4.3.3 Programarea în Limbaj de Asamblare.

Abilitatea de a comunica este de mare importanţă în orice domeniu.


Totuşi, este posibilă numai dacă amândoi partenerii de comunicare cunosc
acelaşi limbaj, sau urmăresc aceleaşi reguli în timpul comunicării. Folosind
aceste principii ca un punct de plecare, putem de asemenea defini

68
Minirobot păianjen

comunicarea ce are loc între microcontrolere şi om. Limbajul pe care


microcontrolerul şi omul îl folosesc pentru a comunica este numit "limbaj de
asamblare". Titlul însuşi nu are un înţeles deosebit, şi este analog numelor
altor limbaje, de ex. engleza şi franceza. Mai precis, "limbajul de asamblare"
este doar o soluţie trecătoare. Programele scrise în limbaj de asamblare
trebuie traduse într-un "limbaj de zero-uri şi unu-uri" pentru ca un
microcontroler să-l înţeleagă. "Limbajul de asamblare" şi "assembler-ul" sau
asamblorul sunt două noţiuni diferite. Primul reprezintă un set de reguli
folosite în scrierea unui program pentru un microcontroler, iar celălalt este un
program în computerul personal care traduce limbajul de asamblare într-un
limbaj de zero-uri şi unu-uri. Un program ce este tradus în "zero-uri" şi "unu-
uri" este numit "limbaj maşină, şi este scris conform cu regulile de asamblare
sau ale altui limbaj pentru programarea microcontrolerului vezi Fig 4.3.3c
. Omul poate înţelege pentru că este constituit din semne şi cuvinte ale
alfabetului. Când se scrie un program, trebuie urmărite unele reguli pentru a
se obţine un efect dorit. Un Translator interpretează fiecare instrucţiune
scrisă în limbajul de asamblare ca o serie de zero-uri şi unu-uri ce au o
semnificaţie pentru logica internă a microcontrolerului.

Fig 4.3.3 a

Să luăm de exemplu instrucţiunea "RETURN" pe care microcontrolerul


o foloseşte pentru a se întoarce dintr-un sub-program.

Când asamblorul îl traduce, obţinem o serie de zero-uri şi unu-uri pe


care microcontroleul ştie cum să-l interpreteze.

69
Proiect de licenţă

Exemplu: RETURN 00 0000 0000 1000

Similar propoziţiei de mai sus, fiecare instrucţiune de asamblare este


interpretată ca şi corespunzând unei serii de zero-uri şi unu-uri.

Locul unde această traducere a limbajului de asamblare se găseşte , se


numeşte un fişier de "execuţie". Vom întâlni adesea numele de fişier "HEX".
(Fig 6.1 c).
Acest nume vine de la o reprezentare hexazecimală a acelui fişier, ca şi
de la apendicele "hex" din titlu, de ex. "run through.hex". Odată ce este
generat, fişierul de execuţie este citit în microcontroler printr-un programator.

Limbajul de Asamblare

Elementele de bază ale limbajului de asamblare sunt:


1. Label-uri sau Etichete;
2. Instrucţiuni;
3. Operanzi;
4. Directive;
5. Comentarii.
6. Macro-uri

1. Label-uri .
Un Label este o desemnare textuală (în general un cuvânt uşor de citit)
pentru o linie într-un program, sau secţiunea unui program unde micro-ul
poate sări – sau chiar începutul unui set de linii a unui program. Poate fi
folosit de asemenea pentru a executa ramificare de program (ca Goto…….) şi
programul poate chiar avea o condiţie ce trebuie îndeplinită pentru ca
instrucţiunea Goto să fie executată. Este important pentru un label de a
începe cu o literă a alfabetului sau cu o subliniere "_". Lungimea label-ului

70
Minirobot păianjen

poate fi de până la 32 caractere. Este de asemenea important ca un label să


înceapă de la primul rând.

2. Instrucţiuni .

Instrucţiunile sunt deja definite prin folosirea unui microcontroler specific,


aşa că ne rămâne doar să urmăm instrucţiunile pentru folosirea lor în limbajul
de asamblare. Modul în care scriem o instrucţiune mai este numit "sintaxa"
instrucţiunii. În exemplul următor putem recunoaşte o greşeală în scriere
pentru că instrucţiunile movlp şi goto nu există pentru microcontrolerul
PIC16F84.

3. Operanzi .

Operanzii sunt elemente ale instrucţiunii pentru instrucţiunea ce este


executată. Ei sunt de obicei regiştri sau variabile sau constante. Constantele
sunt numite "literal-e". Cuvântul literal înseamnă "număr".

71
Proiect de licenţă

4. Comentarii

Comentariul este o serie de cuvinte pe care programatorul le scrie


pentru a face programul mai clar şi mai uşor de citit. Se plasează după o
instrucţiune , şi trebuie să înceapă cu punct şi virgulă";".

5. Directive

O directivă este similară unei instrucţiuni, dar spre deosebire de o


instrucţiune este independentă de modelul microcontrolerului, şi reprezintă o
caracteristică a limbajului de asamblare însuşi. Directivelor le sunt date uzual
înţelesuri de scop prin variabile şi regiştri. De exemplu, LEVEL poate fi o
desemnaţie pentru o variabilă în memoria RAM la adresa 0Dh. În felul acesta,
variabila la acea adresă poate fi accesată prin desemnaţia LEVEL. Aceasta
este mult mai uşor pentru un programator să înţeleagă decât să încerce să-şi
aducă aminte că adresa 0Dh conţine informaţii despre LEVEL.

Directive de control

#DEFINE Schimbă o bucată de text pentru o alta

72
Minirobot păianjen

Sintaxă:
#define<name> [<text ce schimbă numele>]

Descriere:
De fiecare dată când apare <name> în program , va fi înlocuit cu <text ce
schimbă numele>.

Directive similare: #UNDEFINE, IFDEF,IFNDEF

INCLUDE Include un fişier adiţional într-un program

Sintaxă:
#include <file_name>
#include "

Descriere:
O aplicaţie a acestei directive are efect ca şi cum întregul fişier a fost
copiat într-un loc unde directiva "include" a fost găsită. Dacă numele fişierului
este în paranteze pătrate, avem de a face cu un fişier de sistem, şi dacă este
în interiorul ghilimelelor de citare, avem de a face cu fişier de utilizator.
Directiva "include" contribuie la un traseu mai bun al programului principal.

CONSTANT Dă o valoare numerică constantă desemnării textuale

Sintaxă:
Constant <name>=<value>

Descriere:
De fiecare dată când apare <name> în program, va fi înlocuit cu <value>.

Directive similare: SET, VARIABLE

VARIABLE Dă o valoare numerică variabilă desemnării textuale

Sintaxă:
Variable<name>=<value>

Descriere:
Folosind această directivă, desemnarea textuală se înlocuieşte cu o
valoare particulară. Diferă de directiva CONSTANT în aceea că după
aplicarea directivei, valoarea desemnării textuale poate fi înlocuită.

73
Proiect de licenţă

Directive similare: SET, CONSTANT

SET Definirea variabilei asamblorului

Sintaxă:
<name_variable>set<value>

Descriere:
Variabilei <name_variable> îi este adăugată expresia <value>.
Directiva SET este similară lui EQU, dar cu directiva SET numele
variabilei poate fi redefinit urmând o definiţie.
Directive similare: EQU, VARIABLE

EQU Definind constanta asamblorului

Sintaxă:
<name_constant> equ <value>

Descriere:
To the name of a constant <name_constant> is added value <value>

Instrucţiuni similare: SET

ORG Defineşte o adresă de unde programul este înmagazinat în


memoria microcontrolerului

Sintaxă:
<label>org<value>

Descriere:
Aceasta este cea mai frecvent folosită directivă. Cu ajutorul acestei
directive definim unde o anumită parte a programului va fi în memoria
program.

Primele două instrucţiuni ce urmează după prima directivă 'org' sunt


memorate de la adresa 00, şi celelalte două de la adresa 10.

END Sfârşit de program

Sintaxă:
end

Descriere:

74
Minirobot păianjen

La sfârşitul fiecărui program este necesar de a plasa directiva 'end' aşa


ca translatorul de asamblare să ştie că numai sunt instrucţiuni în program.

Instrucţiuni condiţionale

IF Ramificare de program condiţională

Sintaxă:
if<conditional_term>

Descriere:
Dacă condiţia în <conditional_term> este îndeplinită, parte a
programului ce urmează directivei IF va fi executată. Şi dacă nu este, partea
ce urmează directivei ELSE sau ENDIF va fi executată.

Directive similare: #ELSE, ENDIF

ELSE 'IF' alternativă la blocul program cu termeni condiţionali

Sintaxă:
Else

Descriere:
Folosit cu directiva IF ca o alterntivă dacă termenul condiţional este
incorect.

Instrucţiuni similare: ENDIF, IF

ENDIF Sfârşitul secţiunii de program condiţionale

Sintaxă:
endif

Descriere:
Directiva este scrisă la sfârşitul blocului condiţional pentru translatorul de
asamblare pentru a şti că este sfârşitul blocului condiţional

Directive similare: ELSE, IF

WHILE Execuţia secţiunii programului cât timp condiţia este


îndeplinită

Sintaxă:
while<condition>

75
Proiect de licenţă

.
endw

Descriere:
Liniile de program între WHILE şI ENDW vor fi execuate cât timp
condiţia este îndeplinită. Dacă condiţia se opreşte din a mai fi validă,
programul continuă executarea instrucţiunilor urmând linia ENDW. Numărul
de instrucţiuni dintre WHILE şi ENDW poate fi cel mult 100, şi numărul de
execuţii 256.

ENDW Sfârşitul părţii condiţionale a programului

Sintaxă:
endw

Descriere:
Instucţiunea este scrisă la sfârşitul blocului WHILE condiţional, aşa ca
translatorul de asamblare să ştie că este sfârşitul blocului condiţional

Directive similare: WHILE

IFDEF Execuţia unei părţi de program dacă simbolul este definit

Sintaxă:
ifdef<designation>

Descriere:
Dacă desemnarea <designation> este definită anterior (cel mai adesea
prin instrucţiunea#DEFINE), instrucţiunile ce urmează sunt executate până ce
nu se ajunge la directivele ELSE şi ENDIF.

Directive similare: #DEFINE, ELSE, ENDIF, IFNDEF, #UNDEFINE

IFNDEF Execuţia unei părţi de program dacă simbolul este definit

Sintaxă:
ifndef<designation>

Descriere:
Dacă desemnarea <designation> nu a fost definită anterior, sau dacă
definiţia ei a fost ştearsă cu directiva directive #UNDEFINE, instrucţiunile ce
urmează sunt executate până ce nu se ajunge la directivele ELSE şi ENDIF.

76
Minirobot păianjen

Directive similare: #DEFINE, ELSE, ENDIF, IFDEF, #UNDEFINE

Directive de Date

CBLOCK Definind un bloc pentru constantele numite

Sintaxă:
Cblock [<term>]
<label>[:<increment>], <label>[:<increment>]......
endc

Descriere:
Directiva este folosită pentru a da valori constantelor numite. Fiecare
termen ce urmează primeşte o valoare mai mare cu unu decât precursorul lui.
Dacă parametrul <increment> este de asemenea dat, atunci valoarea dată în
parametrul <increment> este adăugată constantei următoare. Valoarea
parametrului <term> este valoarea de pornire. Dacă nu este dată, este
considerată a fi zero.

Directive similare: ENDC

ENDC Sfârşitul definiţiei blocului constante

Sintaxă:
endc

Descriere:
Directiva este folosită la sfârşitul definiţiei unui bloc de constante ca
translatorul de asamblare să ştie că nu mai sunt constante.

Directive similare: CBLOCK

DB Definind date de un byte

Sintaxă:
[<term>]db <term> [, <term>,.....,<term>]

Descriere:
Directiva rezervă un byte în memoria de program. Când sunt mai mulţi
termeni ce au nevoie să li se desemneze un byte de fiecare, ei vor fi
desemnaţi unul după altul.

Instrucţiuni similare: DE, DT

77
Proiect de licenţă

DE Definind Byte-ul de memorie EEPROM

Sintaxă:
[<term>] de <term> [, <term>,....., <term>]

Descriere:
Directiva este folosită pentru definirea byte-ului de memorie EEPROM.
Chiar dacă a fost iniţial intenţionată doar pentru memoria EEPROM, poate fi
folosită pentru oricare altă locaţie de memorie.

Instrucţiuni similare: DB, DT

DT Definin tabelul de date

Sintaxă:
[<term>] dt <term> [, <term>,........., <term>]

Descriere:
Directiva generează seria RETLW de instrucţiuni, o instrucţiune de
fiecare termen.

Directive similare: DB, DE

Configurând o directivă

_CONFIG Setarea the biţilor configuraţionali

Sintaxă:
· -config<term> or__config<address>,<term>

Descriere:
Sunt definite oscilatorul, aplicaţia timer watchdog şi circuitul intern de
reset. Înainte de folosirea acestei directive, procesorul trebuie definit folosind
directiva PROCESSOR.

Directive similare: _IDLOCS, PROCESSOR

PROCESSOR Definind modeul microcontrolerului

Sintaxă:
Processor <microcontroller_type>

Descriere
Instrucţiunea setează tipul microcontrolerului unde programarea este
făcută.

78
Minirobot păianjen

6. Macro-uri

Macros-urile sunt elemente foarte folositoare în limbajul de asamblare.


Ei ar putea fi pe scurt descrişi ca "grup definit al utilizatorului de instrucţiuni ce
vor intra în programul de asamblare unde a fost apelat macro-ul". Este posibil
de a scrie un program chiar fără folosirea macro-urilor. Dar cu folosirea lor
programul scris este mult mai uşor de înţeles, în special dacă mai mulţi
programatori lucrează la acelaşi program. Macro-urile au acelaşi scop ca
funcţii ale limbajelor de programare complexe.

Cum să le scriem:

<label> macro [<argument1>,<argument2>,......<argumentN>]


........
.......
endm

Din modul în care sunt scrise, vedem că macro-urile pot accepta


argumente, ceea ce este foarte folositor în programare. Când apare
argumentul în corpul macro-ului, va fi înlocuit cu valoarea <argumentN>.

4.3.4 Setul de Instrucţiuni.

Introducere

Am menţionat deja că microcontrolerul nu este ca orice alt circuit


integrat. Când ies din producţie cele mai multe circuite integrate sunt gata de
a fi introduse în aparate ceea ce nu este cazul cu microcontrolerele. Pentru a
"face" microcontrolerul să îndeplinească o sarcină, trebuie să-i spunem exact
ce să facă, sau cu alte cuvinte trebuie să scriem programul pe care
microcontrolerul să-l execute. Vom descrie în acest capitol instrucţiunile care
alcătuiesc assembler-ul, sau limbajul de programare cu nivel scăzut pentru
microcontrolerele PIC.

Setul complet care cuprinde 35 de instrucţiuni este dat în tabela


următoare. Un motiv pentru un număr aşa de mic de instrucţiuni stă în primul

79
Proiect de licenţă

rând în faptul că discutăm despre un microcontroler RISC ale cărui instrucţiuni


sunt bine optimizate având în vedere viteza de lucru, simplitatea arhitecturală
şi compactitatea codului. Singurul neajuns este că programatorul trebuie să
controleze o tehnică "neconfortabilă" în a utiliza un set modest de 35 de
instrucţiuni.

Transfer de Date

Transferul de date într-un microcontroler este făcut între registrul de


lucru (W) şi un registru 'f' ce reprezintă orice locaţie în RAM-ul intern
(indiferent dacă aceştia sunt regiştri speciali sau de scop general).

Primele trei instrucţiuni (a se vedea următorul tabel) fac ca o constantă


să fie înscrisă în registrul W (MOVLW este prescurtarea pentru MOVe Literal
to W), şi ca datele să fie copiate din registrul W în RAM şi datele din RAM să
fie copiate în registrul W (sau în aceeaşi locaţie RAM, la care punct numai
starea steguleţului Z se schimbă). Instrucţiunea CLRF scrie constanta 0 în
registrul 'f ', iar CLRW scrie constanta 0 în registrul W. Instrucţiunea SWAPF
schimbă locurile câmpului de nibbles- bucăţi de 4 biţi în interiorul unui
registru.

Aritmetică şi logică

Din toate operaţiile aritmetice, PIC ca majoritatea microcontrolerelor,


acceptă doar scăderea şi adunarea. Steguleţele C, DC şi Z sunt setate funcţie
de rezultatul adunării sau scăderii, dar cu o excepţie: pentru că scăderea se
face ca o adunare a unei valori negative, eticheta C este inversă urmând
scăderii. Cu alte cuvinte, este setată dacă operaţia este posibilă, şi este
resetată dacă un număr mai mare a fost scăzut din unul mai mic.

Unitatea logică a PIC-ului are capabilitatea de a face operaţiile AND (ŞI),


OR (SAU), EX-OR (SAU-EXCLUSIV), complementare (COMF) şi rotaţie (RLF
şi RRF).

80
Minirobot păianjen

Instrucţiunile ce rotesc conţinutul registrului mută biţii în interiorul


registrului prin eticheta C cu un spaţiu la stânga (către bitul 7), sau la dreapta
(către bitul 0). Bitul ce "iese" din registru este scris în steguleţul C, şi valoarea
steguleţului C este scrisă într-un bit al "părţii opuse" a registrului.

Operaţii cu biţi

Instrucţiunile BCF şi BSF fac setarea sau ştergerea unui singur bit
oriunde în memorie. Chiar dacă pare o simplă operaţie, este executată în aşa
fel ca CPU citeşte mai întâi întregul byte, schimbă un bit în el şi apoi scrie
întregul byte în acelaşi loc.

Direcţionarea debitului unui program

Instrucţiunile GOTO, CALL şi RETURN sunt executate în acelaşi fel ca şi


în celelalte microcontrolere, numai stiva este independentă de RAM-ul intern
şi limitată la opt nivele.
Instrucţiunea 'RETLW k' este identică cu instrucţiunea RETURN, cu
excepţia că înainte de a se întoarce dintr-un subprogram, constanta definită
operandul de instrucţiuni este scrisă în registrul W. Această instrucţiune ne
permite să proiectăm uşor tabelele (listele) Look-up. Cel mai mult le folosim la
determinarea poziţiei datelor în tabelul nostru adăugând-o la adresa la care
încep tabelele, şi apoi citim datele din acea locaţie (care este uzual găsită în
memoria program).

Tabelul poate fi format ca un subprogram ce constă dintr-o serie de


instrucţiuni 'RETLW k', unde constantele 'k' sunt membri ai tabelului.

Scriem poziţia unui membru al tabelului nostru în registrul W, şi folosind


instrucţiunea CALL apelăm un subprogram care crează tabelul. Prima linie de
subprogram ADDWF PCL, f adaugă poziţia unui membru al registrului W la
adresa de start a tabelului nostru, găsită în registrul PCL, şi astfel obţinem

81
Proiect de licenţă

adresa datelor reale în memoria program. Când ne întoarcem dintr-un


subprogram vom avea în registrul W conţinutul unui membru al tabelului
adresat. În exemplul anterior, constanta 'k2' va fi în registrul W urmând unei
întoarceri dintr-un subprogram.

RETFIE (RETurn From Interrupt - Interrupt Enable) este o întoarcere


dintr-o rutină de întrerupere şi diferă de o RETURN numai în aceea că
setează automat bitul GIE (Global Interrupt Enable). La o întrerupere, acest
bit este automat şters. Când începe întreruperea, numai valoarea contorului
de program este pusă în vârful stivei. Nu este prevăzută memorarea
automată a valorilor şi stării registrului.

Jump-urile (salturile) condiţionale sunt sintetizate în două instrucţiuni:


BTFSC şi BTFSS. Funcţie de starea bitului în registrul 'f' ce este testat,
instrucţiunile sar sau nu peste instrucţiunea de program următoare.

Perioada de Execuţie a Instrucţiunii

Toate instrucţiunile sunt executate într-un ciclu cu excepţia instrucţiunilor


ramură condiţionale dacă condiţia a fost adevărată, sau dacă conţinutul
contorului de program a fost schimbat de o anumită instrucţiune. În acest caz,
execuţia cere două cicluri de instrucţiuni, iar al doilea ciclu este executat ca
NOP (No Operation-Fără operaţii). Patru clock-uri oscilator fac un ciclu
instrucţiune. Dacă folosim un oscilator cu frecvenţa de 4 MHz, timpul normal
pentru execuţia instrucţiunii este 1 µs, şi în caz de branching-ramificare
condiţională, perioada de execuţie este 2 µs.

Listă de cuvinte

f orice locaţie de memorie într-un microcontroler;


W registru de lucru;
b poziţie bit în registru 'f';
d bit destinaţie label grup de opt caractere ce marchează începutul
unei părţi de program ;

82
Minirobot păianjen

TOS vârful stivei;


[] opţiune;
 poziţie bit în registru.

Mnemonic Descriere Operaţie Steguleţ Ciclu Notă

Transfer date

MOVLW Mută constanta în W k→(W) 1


k
MOVWF f Mută W în f W→f 1

MOVF Mutăf f→d Z 1 1,2


f, d
CLRW Şterge W OOh→W, 1→Z Z 1

CLRF f şterge f OOh→f, 1→Z 1 2


Z
SWAPF f, Interschimbă nibble- f(7:4) →(3:0) ,f(3:0) → 1 1,2
d urileîn f (7:4)
Aritmetică şi logică

ADDLW k Adună constanta cu W W+K→W C.DC.Z 1

ADDWF f, Adună W cu f W+f→d C.DC.Z 1 1,2


d
SUBLW k Scade W din constantă K-W→W C.DC.Z 1

SUBWF f, Scade W din f f-W→d C.DC.Z 1 1,2


d
ANDLW k ŞI literal cu W W.AMD.k →W 1
z
ANDWF f, ŞI W cu f W. AHD.f →d 1 1,2
z
d
IORLW k SAU inclusiv constanta cu W W.GR.k →W 1
z
IORWF f, SAU inclusiv W cu f W.QR.f→ d z 1 1,2
d
XORLW k SAU exclusiv constanta cu W W.XDR.k → W 1 1,2
z
XORWF f, SAU exclusiv W cu f W.XDR.f →d z 1
d
INCF f, d Incrementează f f+1→f 1 1,2
z
DECF f, Decrementează f f-1 → f 1 1,2
z
d
RLF f, Roteşte la stânga prin Carry c 1 1,2
d
RRF f, Roteşte la dreapta prin Carry 1 1,2
c
d
COMF f, d Complement f f→d z 1 1,2

Operaţii cu biţi

BCF f, şterge bitul f 0 →f(b) 1 1,2


b

83
Proiect de licenţă

BSF f, b Setează bitul f l→(b) 1 1,2

Direcţionarea unui debit de program

BTFSC f, Testează bitul (Sari daca este şters salt daca f(b)=0 1(2) 3
b
BTFSS f, b Testează bitul fcSari daca este setat salt daca f(b)=1 1(2) 3

DECFSZ f, d Decrementează f, Sari daca f-1→d, salt daca Z=l 1(2)

INCFSZ f, este 0f, Sari daca este 0


Incrementează f+1 →d, salt daca Z=1 1(2) 1,2,3
d
GOTO k Du-te la adresă W.AND.k →W 2

CALL k Apelează subrutina W.AND.f →d 2

RETURN - întoarcere din Subrutină TOS→PC,1→GIE 2

RETLW k Întoarcere cu constanta în W k→W, TOS→PC 2

RETFIE întoarcere din întrerupere TOS→PC. 1→GIE 2

Alte instrucţiuni

NOP Fără Operaţii 1

CLRWDT - şterge Timer-ul Watchdog 0→WDI,1→IO,1→PD TO.PD 1

SLEEP Du-te în mod standby 0→WDI,1→IO,0→PD TO.PD 1

4.3.5 Programul

;Comanda unui robot crab


;21.04.2009
;la portul B se face comanda motoarelor. RB6 cu RB5 comanda un motor
; iar RB4 cu RB3 comanda al doilea motor
;RB2 este ENABLE si el trebuie sa fie unu. Iesirile RB6 si RB5 ca si
; RB4 cu RB3 trebuie sa aiba valori
;contrare ca motoarele sa se roteasca si aceeasi valoare ca motoarele
; sa se opreasca.
;Datorita pozitiei motoarelor comanda la un motor este de sens contrar
; la celalalt.
;Consideram tabelul
; Motor1 Motor 2
; RB6 RB5 RB4 RB3
; 1 0 0 1
;Motoarele se rotesc in acelasi sens (+) nume: direct
; 0 1 1 0
;Motoarele se rotesc in acelasi sens (-) nume: invers
; 1 0 1 0
;Motoarele se rotesc in sens contrar 1(+) 2(-) nume:

; 0 1 0 1
;Motoarele se rotesc in sens contrar 1(-) 2(+) nume:

;Senzorii sunt
;RA0 - fata dreapta

84
Minirobot păianjen

;RA1 - fata stinga


;RA2 - spate dreapta
;RA3 - spate stinga

list p=16F84 ; list directive to define processor


#include <p16F84.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;s-a ales un oxcilator extern XT


;-----------------------------------------------------------
;Macro
;-----------------------------------------------------------
Bank0 macro
bcf STATUS,RP0
endm

Bank1 macro
bsf STATUS,RP0
endm
;----------------------------------------------------------

;***** VARIABLE DEFINITIONS


cblock 0x20
w_temp ; variabile pentru salvare
status_temp ; variabile pentru salvare
TIMER1,TIMER2,TIMER3 ;variabile folosite pentru temporizare

;RA0 - fata dreapta


;RA1 - fata stinga
;RA2 - spate dreapta
;RA3 - spate stinga

pozitie_obstacol ;bitii 1,0 indica pozitia obstacolului


;bit3=1, bit2=1, bit1=0 , bit0=0 , - obstacol fata, (12)
;bit3=1, bit2=0, bit1=0 , bit0=0 , - obstacol spate stinga, (8)
;bit3=0, bit2=1, bit1=0 , bit0=0 , - obstacol spate dreapta, (4)
;bit3=0, bit2=0, bit1=1 , bit0=1 , - obstacol spate, (3)
;bit3=0, bit2=0, bit1=1 , bit0=0 , - obstacol fata stinga, (2)
;bit3=0, bit2=0, bit1=0 , bit0=1 , - obstacol fata dreapta, (1)
;bit3=0, bit2=0, bit1=0 , bit0=0 , - nici un obstacol, (0)
;bit3=x, bit2=x, bit1=x , bit0=x , - obstacol fata-spate, x-diferit de zero, (rest)
;endc
;**********************************************************************

ORG 0x000 ; processor reset vector


goto main ; go to beginning of program

ORG 0x004 ; interrupt vector location


movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register

85
Proiect de licenţă

;intreruperea
; daca a aparut intreruperea aici se pune codul de tratare a
; intreruperii

end_isr
movf status_temp,w ; copie val reg STATUS in status_temp
movwf STATUS ; restaurare registru STATUS

swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt

;-------------------------------------------------------------------------------
;subprograme
;subprogramul de intirziere

DELAY_ROUTINE movlw 0x07


movwf TIMER3
del_loop3 MOVLW 0xff
MOVWF TIMER2
DEL_LOOP1 MOVLW 0xff
MOVWF TIMER1
DEL_LOOP2 DECFSZ TIMER1,F
GOTO DEL_LOOP2
DECFSZ TIMER2,F
GOTO DEL_LOOP1
decfsz TIMER3,f
goto del_loop3
RETLW 0

; Motor1 Motor 2
; RB6 RB5 RB4 RB3
; 1 0 0 1
;Motoarele se rotesc in acelasi sens (+) nume: direct
; 0 1 1 0
Motoarele se rotesc in acelasi sens (-) nume: invers
; 1 0 1 0
;Motoarele se rotesc in sens contrar 1(+) 2(-) nume: dreapta
;miscarea este spre dreapta (partea din fata) sau spre stinga (partea din spate)
; 0 1 0 1 ;
;Motoarele se rotesc in sens contrar 1(-) 2(+) nume: stinga
;miscarea este spre stinga (partea din fata) sau spre dreapta (parteadin spate)

direct
bsf PORTB,6
bcf PORTB,5
bcf PORTB,4
bsf PORTB,3
return

86
Minirobot păianjen

invers
bcf PORTB,6
bsf PORTB,5
bsf PORTB,4
bcf PORTB,3
return

dreapta
bsf PORTB,6
bcf PORTB,5
bsf PORTB,4
bcf PORTB,3
return

stinga
bcf PORTB,6
bsf PORTB,5
bcf PORTB,4
bsf PORTB,3
return

stop
bcf PORTB,6
bcf PORTB,5
bcf PORTB,4
bcf PORTB,3
return

obstacol
movfw PORTA ;citesc portA
andlw 0x0f ;maschez primii patru biti
movwf pozitie_obstacol ;memorez obstacolul
return
;------------------------------------------------------------------------------------------------------
;programul principal

main
;initializari
Bank0
CLRF PORTA ;sterge registrul PORTA
CLRF PORTB ;sterge registrul PORTB
Bank1
MOVLW 0xff ;PORTA = intrari
MOVWF TRISA
;la portul B se face comanda motoarelor. RB6 cu RB5 comanda un motor
; iar RB4 cu RB3 comanda al doilea motor
;RB2 este ENABLE si el trebuie sa fie unu. Iesirile RB6 si RB5 ca si
; RB4 cu RB3 trebuie sa aiba valori
;contrare ca motoarele sa se roteasca si aceeasi valoare ca motoarele
; sa se opreasca. Consideram tabelul

87
Proiect de licenţă

; Motor1 Motor 2
; RB6 RB5 RB4 RB3
; 1 0 0 0
; Motoarele se rotesc in acelasi sens (+) nume: direct
; 0 1 1 0
; Motoarele se rotesc in acelasi sens (-) nume: invers
; 1 0 1 1
; Motoarele se rotesc in sens contrar 1(+) 2(-) nume: dreapta
; 0 1 0 1
; Motoarele se rotesc in sens contrar 1(-) 2(+) nume: stinga
;
;Senzorii sunt
;RA0 - fata dreapta
;RA1 - fata stinga
;RA2 - spate dreapta
;RA3 - spate stinga
;
MOVLW b'10000111' ;PORTB<7> = intrare, PORTB<6:3> = iesiri,
; PORTB<2:0>=intrari
;NOTA: iesirea RB2 nu mai este folosita, ENABLE motoare se leaga direct la +5V

MOVWF TRISB
CLRF INTCON ;Disable interrupts
Bank0
;------------------------
; bsf PORTB,2 ;ENABLE motoare
clrf pozitie_obstacol ;nu este nici un obstacol
call direct ;pornesc inainte
main1
call obstacol
movfw pozitie_obstacol
sublw .12
btfsc STATUS,Z
goto main_spate
movfw pozitie_obstacol
sublw .8
btfsc STATUS,Z
goto main_spate_stinga
movfw pozitie_obstacol
sublw .4
btfsc STATUS,Z
goto main_spate_dreapta
movfw pozitie_obstacol
sublw .3
btfsc STATUS,Z
goto main_fata
movfw pozitie_obstacol
sublw .2
btfsc STATUS,Z
goto main_fata_stinga
movfw pozitie_obstacol
sublw .1
btfsc STATUS,Z

88
Minirobot păianjen

goto main_fata_dreapta
movfw pozitie_obstacol
sublw .0
btfsc STATUS,Z
goto main_fara_obstacol
call stop ;obstacol fata spate
goto main1
main_spate_stinga
call dreapta
call DELAY_ROUTINE
goto main1
main_spate_dreapta
call stinga
call DELAY_ROUTINE
goto main
main_fata_stinga
call dreapta
call DELAY_ROUTINE
goto main1
main_fata_dreapta
call stinga
call DELAY_ROUTINE
goto main1
main_fara_obstacol
call direct
goto main1
main_fata
call invers
call DELAY_ROUTINE
goto main1
main_spate
call direct
call DELAY_ROUTINE
goto main1
END ; directiva de terminare a programului

89
Proiect de licenţă

Capitolul 5
Concluzii,dezvoltari ulterioare

5.1Concluzii

Proiectul si-a atins tema

5.2 Dezvoltari ulterioare.

M-am gandit si la viitoarele dezvoltari pe care pot sa le aduc


robotului,şi anume:
 dotarea robotului cu mai mulţi senzori de proximitate ir pentru a putea
sa depisteze si obstacolele din spate şi fetele laterale.
 Dotarea robotului cu senzori ultrasonici pentu depistarea obstacolelor
mai indepartate.(pentru realizarea lor mai ramane de studiat).
 Dotarea robotului cu un senzor inductiv pentru detectia metalelor .Din
tot ce am studiat in acest domeniu pot sa zic ca deja am realizat
schema electrica a senzorului inductiv ,ea fiind prezentată in figura
5.2.a.

5.2.1 Dotarea robotului cu un senzor inductiv pentru detectia metalelor

Fig 5.2.1.a.

90
Minirobot păianjen

Detecru de metale este realizat dintr-un circuit oscilator care este


acordat pe o anumita frecventa de rezonanta.Atunci cand în apropierea
bobinei se apropie un obiect metalic ,liniile de camp macnetic se vor închide
prin metal .Acest lucru va parazita frecventa de rezonanta a oscilatorui
facandu-l sa-şi schimbe frecventa.
Pentru ca aceasta variatie sa poata fi sesizata de microcontrolaru
(PIC16F84 care nu permite prelucrarea semnalului analogic) mai avem
nevoie de un circuit care sa transforme semnalu analogic in semnal digital
sesizabil de pic.
Acest lucru din ce am mai studiat se poate face cu ajutoru unui filtru si cu un
circuit integrat care sa realizeze conversia pe care l am si gasit(CD4093BC)

5.2.2 Dotarea robotului cu mai mulţi senzori de proximitate IR

5.2.2.1 Principiul de funcţionare a senzorului IR

Senzorul de proximitate prezent detectează obiectele aflate în


apropiere şi poate sesizeaza şi în ce parte se află acestea prin emisia de
pulsuri de energie luminoasa in domeniul infraroşu cu ajutorul a 2 diode
electroluminiscente (LED IR); dacă aceste pulsuri luminose întalnesc un
obiect de care se reflectă inapoi spre senzor, reflexia este captată de
elementul fotoreceptor(fototranzistor IR) al senzorului si semnalizată. Daca in
raza de acţiune a senzorului nu se afla nici un obiect atunci fasciculul de
radiatie IR nu va mai fi reflectat înapoi iar detectoru va semnala lipsa
prezenţei lui. Senzorul detecteaza, fara contact, obiectele capabile sa reflecte
radiaţia electromagnetica in spectrul infrarosu.. Distanta de detectare este
aproximativ 10 cm,ea se poate regla cu ajutorul unui semireglabil.
Emiţătorul (LED IR fig 5.2.2.1.a ) transmite un fascicol de lumină în
spectrul infrarosu (de regulă sunt folosite lungimi de undă în intevalul 880-
990nm .Curentul prin dioda, in timpul pulsului, este de aproximativ 1A
asigurandu-se o distanta mare de sesizare.
Fototranzistorul IR (fig. 5.2.2.1.b ) este un tranzistor cu regiunea
joncţiunii emitor-bază expusă radiatiei, astfel încât rolul diferenţei de potenţial
dintre bază şi emitor este jucat de fluxul luminos incident pe joncţiunea

91
Proiect de licenţă

emitoare. Generarea de perechi electron-gol contribuie la micşorarea barierei


de potenţial a joncţiunii şi deschiderea ei mai mult sau mai puţin, în funcţie
de numărul de fotoni incidenţi.

Fig . 5.2.2.1.b Fototranzistorul IR Fig. 5.2.2.1.a Led IR

La iesirea detectorul de impusuri, alcătuit din componentele se obţine o


tensiune pozitivă în cazul în care fotodioda receptionează pulsurile luminoase,
sau o tensiune nula daca pulsurile luminoase nu sunt receptionate.
Principiul de funcţionare al unui senzor IR este prezentat în figura
5.2.2.1.c

Fig 5.2.2.1.c

Atât emiţătorul cât şi detectorul au o rază de acţiune (en. field of


view). În funcţie de poziţia obiectului în mediu, acesta poate fi detectat sau nu
de către senzor. Dacă obiectul este prezent la intersecţia razelor de acţiune
a emiţătorului şi a detectorului, radiaţia reflectată de obiect va fi observată de
detector, în caz contrar, obiectul nefiind detectat. Un exemplu de situaţie în
care un anumit obiect din mediu nu poate fi detectat, este prezentat în figura
5.2.2.1.d.

92
Minirobot păianjen

Fig 5.2.2.1.d

Plecând de la ipoteza că toate obiectele din mediul în care robotul mobil


operează au aceeaşi culoare, senzorul IR poate fi calibrat astfel încât să
măsoare distanţa între ele şi orice obiect din mediu aflat în câmpul său de
acţiune la un moment dat. Astfel, intensitatea luminii reflectate de către obiect,
este invers proporţională cu pătratul distanţei până la obiectul respectiv.

În realitate însă, obiectele au culori diferite, rezultatele fiind în aceste


cazuri diferite, unele obiecte reflectând o mai mare sau mai mică cantitate de
lumină înapoi. Spre exemplu, suprafeţele de culoare închisă (negru de exemplu)
sunt aproape invizibile pentru majoritatea senzorilor IR (vezi figura 5.2.2.1.e şi
figura 5.2.2.1.f).

De asemenea, informaţiile primite de la senzorii IR sunt susceptibile la


erori dacă în încăperea respectivă există o cantitate mai mare decât o valoare
prag de lumină naturală (provenită de la soare).

În principiu, dacă un fascicol transmis este reflectat şi detectat, se poate


face asumpţia că un obiect este prezent în mediu. Cazurile în care un fascicol
de lumină în infrarosu este detectat el nefiind trimis de emiţătorul senzorului
sunt foarte rare.

Pe de altă parte, absenţa unui semnal transmis înapoi la detector nu


semnifică neapărat faptul că nu există nici un obiect în mediu. Datorită faptului
că unele obiecte de culoare închisă nu reflectă lumina în spectrul infrarosu, se
poate presupune că, în momentul în care un fascicol a fost trimis dar nu a fost
receptat înapoi, cel puţin un obiect de culoare închisă există în câmpul de
acţiune al senzorului.

93
Proiect de licenţă

Fig 5.2.2.1.e Obiectele de Fig 5.2.2.1.f Obiectele de


culoare deschisa reflecta mai culoare inchisa reflecta
putin lumina din spectrul puternic lumina

Datorită motivelor enumerate mai sus, senzorii IR nu pot fi folosiţi cu


succes în detectarea şi evitarea de obstacole. De asemenea, datorită faptului
că obiectele din mediu au suprafeţe de culori diferite, în expresia reală a
funcţiei intensităţii de mai sus va mai apare o componentă de „reflectivitate"
a luminii de către suprafaţa respectivă. Aşadar, în cele mai multe cazuri,
senzorul IR nu poate detecta cu precizie distanţa la care se află obiectul
respectiv.

Senzorii IR sunt de regulă senzori cu rază de acţiune relativ scurtă


(maxim 50-100cm) datorită faptului că intensitatea semnalului IR este invers
proporţională cu pătratul distanţei.

Cu toate aceste probleme pe care senzorii IR le au, ei sunt destul de


des folosiţi la construcţia roboţilor mobili, în primul rând datorită preţului
extrem de mic pe care producătorii lor îl practică.

94
Minirobot păianjen

5.2.2.2 Schema electrică a circuitului senzorial (Fig 5.2.2.2.a)


funcţionare.

Fig 5.2.2.2.a

Circuitul poate detecta obstacolele care apar în cale ,precum si direcţia


îin care se afla ele:stanga inainte dreapta,asa ca in figura 5.2.2.2.a.
Cum functionează?
Sistemul de comanda pic va comanda fiecare led în parte asa ca în
figura 5.2.2.2.b prin RB1,RB2,RB7 pe o durata de 600μs sa trimită radiaţie

95
Proiect de licenţă

IR in directia ledurilor.

600 μs 600 μs

RB1 t

RB2
t

RB7 t

RA0
t

Nu detecteaza obstacol
Detecteaza obstacol pe partea dreapta si pe partea stanga
.
Fig 5.2.2.2.b

Obstacol în
RB1 RB2 cale RA0
H L DA H
H L NU L
L H DA H
L H NU L

Tabel ce exprima starea lui RA0 in funcţie de semnalul provenit de la


sistemul de comanda si prezenta obstacolelor in cale.
Daca radiaţia s-a întors inapoi înseamna ca ea s-a reflectat de un
obstacol.Radiaţia va fi detectata de fototranzistor, acesta se va deschie, iar
atunci intrarea RA0 a sistemului de comanda va intra in starea de High (1
logic).Cu ajutoru semireglabilului se poate regla sensibilitatea

96
Minirobot păianjen

senzorului(distanţa la care poate face detecţia).Reglarea distanţei de fapt se


face prin modificarea curentului prin diodele IR(cantitatea de radiaţie emisa
este in functie de curentul aplicat pe ele,marindu-se cantitatea de radiaţie
emisa de diode atunci fototranzistoru IR se va deschide la o distanta mai
mare decat cea precedenta ).
Dupa toate aceste dezvoltari robotul poate avea o utilizare in detectia
minelor explozibile metalice.

97
Proiect de licenţă

BIBLIOGRAFIE :

1. Joseph L Jones, RUG WARRIOR PRO Assembly Guide, Vol I


2. Mircea Niţulescu, [1998], Roboţi mobili , Editura SITECH Craiova
3. International Federation of Robotics (IFR), Stockholm, Sweden
4. Internet - studii de caz http://telerobot.mech.uwa.edu.au/
5. Cursuri de robotica
6. Mecanisme Electrice tip M(MP)-100M şi MP-100 MT
7. Sisteme numerice cu circuite integrate – Culegere de
probleme,Sanda Maican,Ed. Tehnică Bucureşti 1980
8. Calculul şi construcţia elementelor de mecanică fină,Traian Demian,
Dumitru Tudor, Iosif Curiţa E.D.P. Bucureşti 1972
9. Circuite cu semiconductoare în industrie. Amplificatoare şi
oscilatoare ,A. Vătăşescu (ş.a.)(ediţia în limba franceză 1972)
10. Rotar Dan Electronica digitala

98
Minirobot păianjen

ANEXE :
Anexa 1

Cablaj imprimat (pozitiv+negativ)

Cablaj imprimat (Negativ)

99
Proiect de licenţă

Cablaj imprimat (pozitiv)

Anexa 2

Cablaj imprimat (simulare 3D)

100

S-ar putea să vă placă și