Documente Academic
Documente Profesional
Documente Cultură
-1-
Cuprins
1. Tema de proiectare..............................................................................................
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.
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
4
Capitolul 2
Marimi justificative
Se spune că mecatronica
este tehnologia mecanică
cerută de societatea
avansat informatizată.
-1-
Proiect de licenţă
6
Minirobot păianjen
Tehnică de calcul
Mecanică
Mecatronică
Electromecanică
Tehnologie electrică
Mecatronică
Tehnologie macnetică
Software pentru partea electrică
7
Proiect de licenţă
Inginerie electrică
Mecatronică
Inginerie mecanică
Ingineria
Fig 2.1c
8
Minirobot păianjen
Capitolul 3
Roboţi
3.1.1 Introducere
9
Proiect de licenţă
Î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
10
Fig 3.1.2.b
Minirobot păianjen
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
.
Fig 3.1.2.e
11
Proiect de licenţă
Fig 3.1.2.g
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ă.
13
Proiect de licenţă
14
Minirobot păianjen
15
Proiect de licenţă
16
Minirobot păianjen
17
Proiect de licenţă
18
Minirobot păianjen
19
Proiect de licenţă
20
Minirobot păianjen
21
Proiect de licenţă
22
Minirobot păianjen
23
Proiect de licenţă
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
Fig. 3.2.3.a
24
Minirobot păianjen
Capitolul 4
Realizarea proiectului
sinteză
Putere Putere
constructoare funcţională
analiză
25
Proiect de licenţă
26
Minirobot păianjen
(Fig 4.1.1.2.a)
Fig 4.1.1.3.a
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
-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
28
Minirobot păianjen
Fig 4.1.1.4.2.a
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.
l
sin AB l AEF 22mm
l AEF
29
Proiect de licenţă
Fig 4.1.1.4.3.a
Fig 4.1.1.5.a
30
Minirobot păianjen
Semnul -----------0++++++++++++0-------------------0+
lui Z
Semnul ++++++++++++++++++++++++++++++++++
lui Y
Semnul +++++++++++++0--------------------0+++++++
lui X
31
Proiect de licenţă
Fig 4.1.1.6.a
Fig 4.1.1.7.a
32
Minirobot păianjen
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
33
Proiect de licenţă
.(Fig 4.1.3.a)
34
Minirobot păianjen
Fig 4.2.a
35
Proiect de licenţă
36
Minirobot păianjen
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ţă
dI
U −R∗I −L
dt
ω= +Uo
cM ∗B (Rel 4.2.1.1.d)
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)
39
Proiect de licenţă
Microprocesor
Sursa
Comanda
A/D
Convertor
incremental
Sistem de reglare
40
Minirobot păianjen
tc
ta 1
U=ta UA =ε∗UA= ∫ UA∗dt
tc tc 0 (0≤ε≤1 ) (Rel 4.2.1.2.a)
ω
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ţă
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)
42
Minirobot păianjen
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.
43
Proiect de licenţă
Fig 4.2.1.4.a
Funcţionarea circuitului.
44
Minirobot păianjen
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
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
46
Minirobot păianjen
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ţă
48
Minirobot păianjen
49
Proiect de licenţă
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.
51
Proiect de licenţă
Fig. 4.2.3.1.c
52
Minirobot păianjen
.
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ţă
Semnificaţia pinilor
Fig. 4.2.3.1.e
54
Minirobot păianjen
Fig. 4.2.3.2.a
55
Proiect de licenţă
Fig. 4.2.3.2.b
56
Minirobot păianjen
Fig. 4.2.3.2.c
57
Proiect de licenţă
Fig 4.2.4.2.a
58
Minirobot păianjen
Fig 4.2.4.2.b
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
60
Minirobot păianjen
61
Proiect de licenţă
Fig 4.3.1 b
62
Minirobot păianjen
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.
63
Proiect de licenţă
Fig : 4.3.2.b
Fig : 4.3.2.c
64
Minirobot păianjen
Fig : 4.3.2.d
Fig : 4.3.2.e
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
66
Minirobot păianjen
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.
68
Minirobot păianjen
Fig 4.3.3 a
69
Proiect de licenţă
Limbajul de Asamblare
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
2. Instrucţiuni .
3. Operanzi .
71
Proiect de licenţă
4. Comentarii
5. Directive
Directive de control
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>.
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.
Sintaxă:
Constant <name>=<value>
Descriere:
De fiecare dată când apare <name> în program, va fi înlocuit cu <value>.
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ţă
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
Sintaxă:
<name_constant> equ <value>
Descriere:
To the name of a constant <name_constant> is added value <value>
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.
Sintaxă:
end
Descriere:
74
Minirobot păianjen
Instrucţiuni condiţionale
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ă.
Sintaxă:
Else
Descriere:
Folosit cu directiva IF ca o alterntivă dacă termenul condiţional este
incorect.
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
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.
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
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.
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 de Date
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.
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.
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.
77
Proiect de licenţă
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.
Sintaxă:
[<term>] dt <term> [, <term>,........., <term>]
Descriere:
Directiva generează seria RETLW de instrucţiuni, o instrucţiune de
fiecare termen.
Configurând o directivă
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.
Sintaxă:
Processor <microcontroller_type>
Descriere
Instrucţiunea setează tipul microcontrolerului unde programarea este
făcută.
78
Minirobot păianjen
6. Macro-uri
Cum să le scriem:
Introducere
79
Proiect de licenţă
Transfer de Date
Aritmetică şi logică
80
Minirobot păianjen
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.
81
Proiect de licenţă
Listă de cuvinte
82
Minirobot păianjen
Transfer date
Operaţii cu biţi
83
Proiect de licenţă
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
Alte instrucţiuni
4.3.5 Programul
; 0 1 0 1
;Motoarele se rotesc in sens contrar 1(-) 2(+) nume:
;Senzorii sunt
;RA0 - fata dreapta
84
Minirobot păianjen
Bank1 macro
bsf STATUS,RP0
endm
;----------------------------------------------------------
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
; 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
Fig 5.2.1.a.
90
Minirobot păianjen
91
Proiect de licenţă
Fig 5.2.2.1.c
92
Minirobot păianjen
Fig 5.2.2.1.d
93
Proiect de licenţă
94
Minirobot păianjen
Fig 5.2.2.2.a
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
96
Minirobot păianjen
97
Proiect de licenţă
BIBLIOGRAFIE :
98
Minirobot păianjen
ANEXE :
Anexa 1
99
Proiect de licenţă
Anexa 2
100