Sunteți pe pagina 1din 25

Universitatea Tehnică „........

” din oras
Facultatea de

Secţia …

PROIECT DE LICENTA
- BRAT ROBOTIC-

Brat robotic realizat cu microcontroller-ul


PIC18F46K80

Îndrumător: Prof. Dr. Ing.


Absolvent: …

oras, 2016

1
Lucrarea de fata reprezinta obiectul realizarii practice a unei platforme robotice
de tip “brat robotic” cu 3 DOF -grade de libertate care este capabil sa apuce si sa mute
un obiect. Comanda bratului robotic este realizata prin intermediul unei tastaturi cu
microswitch-uri care trimite catre microcontroller comenzi de miscare in sus, jos, rotire
stanga- dreapta si gripp. Microcontrolle-ul utilizat este din familia Microchip, are o
arhitectura Harvard pe 8 biti si lucreaza la o frecventa de clock de 64 Mz. Alimentarea
tuturor modulelor electronice din componenta bratului robotic se realizeaza de la o sursa
de tensiune DC 6-18V si este stabilizata prin intermediul a doua circuite specializate de
tip 7805. S-au utilizat doua circuite integrate de acest tip 7805 deoarece in urma testelor
practice s-a constat faptul ca in momentul in care se comanda servomecanismele RC,
curentul consumat depaseste pe o scurta perioada de timp 0.5A, tensiunea stabilizata de
la iesire scade la o valoare inferioara (<3V) iar microcontroller-ul se reseteaza in
momentul in care detecteaza acest lucru. S-a constatat faptul ca daca dispozitivele de
putere (in cazul de fata servomecanismele RC) sunt alimentate separat, resetarea
microcontroller-ului este evitata si deasemenea semnalele perturbatoare induse de
motoarele DC (ce fac parte din servomecanisme) pe linia de alimentare a
microcontroller-ului sunt eliminate.
Asa cum a fost mentionat si mai sus, unitatea centrala de procesare a semnalelor
are la bazamicrocontroller-ul pe 8-bit PIC18F46K80 ce functioneaza la o viteza de 64
Mhz si dispune de rezerve generoase de memorie RAM/ROM, timere si protocoale de
comunicatie (in cadrul proiectului vor fi descrise pe larg toate aceste caracteristici).
Micocontroller-ul PIC18F46K80 este integrat in acest proiect robotic si executa task-uri
precum achizitia si prelucrarea semnalelor digitale provenite de la tastatura de comanda
dar in acelasi timp genereaza si semnalele de comanda PWM pentru cele 4
servomecanisme care actioneaza bratul robotic. In ceea ce priveste partea de BOM (Bill
of Materials), pentru realizarea bratelor si a bazei platformei robotice s-a utilizat un
material performant si usor de prelucrat, care are o rezistenta sporita la forte de
indoire/torsiune si este rezistent totodata si la temperatura/umiditate. Pentru
interconectarea elementelor constitutive ale bratului robotic s-au utilizat prinderea in
suruburi , adeziv si baghete de plastic maleabil. In ceea ce priveste realizarea
propriuzisa/fizica a circuitelor electronice, s-au utilizat PCB-urile cu gauri deoarece sunt
rezistente, se lucreaza usor cu ele si permit transpunerea schemei electronice intr-un
mod adaptiv si curat.
2
------------------------ROBOTIC ARM- modular description--------------------------

3
--------------------Schema electronica a platformei robotice--------------------

4
Servomecanismele RC- descriere generala de functionare

O alta categorie de motoare DC utilizate in robotica ce dispun de cutie de viteze si sunt


comandate in semnal PWM o reprezinta servomecanismele RC.Din punctul de vedere al
costurilor aceste sunt dispozitive de actionare avantajoase din foarte multe puncte de vedere.
Pot fi foloite in aplicatii unde este necesar un control precis al pozitiei axului motor de iesire
din servomecanism iar miscarea aceastora este limitata mecanic la un unghi de aproximativ
180 grade. Pe de alta parte, cu mici modificari la partea mecanica, miscarea de rotatie a axului
se poate transforma in miscare de rotatie continua. Acest lucru ar reprezenta si principalul lor
dezavantaj (modificarea de catre utilizator pentru a obtine o miscare continua de rotatie).

FIG.1 Servomecanism RC

Metoda de comanda a acestor mecanisme se realizeaza prin PWM sau altfel spus prin
puls cu latimea factorului de umplere variabil. Asadar pentru comanda sunt necesare doar 3
fire, din care 2 de alimentare si doar un fir de comanda, fir prin care se va trimite comanda in
regim PWM . Pulsul de comanda corelat cu pozitia unghiulara a rotorului, este prezentat in
figura urmatoare :

FIG.2 Comanda PWM a servomecanismelor RC

In momentul cand aceste motoare sunt comandate sa execute o miscare de rotatie, pozitia de
comanda este mentinuta atat timp cat se trimite semnalul PWM.

5
Materiale folosite în structura corpului la construcţia roboţilor

Ca şi corpul uman, corpul unui robot conţine părţile vitale ce ajută la buna funcţionare
a sa. Astfel structura de bază a corpului unui robot poate fi construită din materiale precum
lemn, plastic sau metal şi poate lua orice formă şi dimensiune. O caracteristică importantă de
care trebuie să se ţină cont atunci când se aleg dimensiunile şi formele materialului este aceea
că pe structura corpului vor fi dispuse motoarele/servomotoarele, acumulatorii, plăcile
electronice şi alte elemente auxiliare, care au o anumită greutate şi care influenţează nu numai
alegerea parametrilor materialului, ci şi locomoţia prin modul în care sunt dispuse pe cadrul
robotului. În multe cazuri o carcasă de protecţie poate fi plasată peste circuitele electronice şi
peste anumite componente auxiliare, ajungându-se chiar şi la utilizarea de piele artificială,
aceasta având un rol pur estetic şi nu de protecţie. In cazul de fata materialul predominant
folosit este lemnul datorita usurintei cu care se prelucreaza. Metalul reprezintă alegerea optimă
în construcţia structurii de bază a unui robot, iar printre metalele cel mai des utilizate în acest
scop se pot enumera:

- Aluminiul este un material utilizat în construcţia roboţilor de dimensiuni medii şi mari şi se


remarcă duritatea mare raportată la greutate, fiind în acelaşi timp uşor de prelucrat dar scump
în comparaţie cu alte materiale.

- Oţelul este deseori utilizat în construcţia cadrului unui robot datorită durităţii ridicate iar ca
dezavantaj se remarcă faptul că prelucrarea acestuia necesită scule speciale, oţelul fiind un
material mai greu deformabil. Oţelul inoxidabil este utilizat în construcţia componentelor de
precizie cum ar fi braţe, mâini, angrenaje şi alte mecanisme unde aluminiul nu ar putea face
faţă solicitărilor.

- Lemnul este un material utilizat în principal la construcţia cadrului unui robot, şi apreciat
pentru faptul că se prelucrează foarte uşor.Acesta are o duritate slabă raportată la greutate.

- Plasticul este materialul folosit la aproape orice în zilele noastre, inclusiv la construcţia
roboţilor. Acesta are o duritate chiar mai mare decât a multor metale şi este foarte uşor de
prelucrat şi de lipit.
Acestea au fost doar câteva exemple de materiale cel mai des utilizate în construcţia
roboţilor, dar lista poate continua având în vedere apariţia de noi materiale a căror principală

6
caracteristică este duritatea maximă raportată la greutatea minimă. Un material uşor de
prelucrat cu greutate mică şi duritate mare constituie un avantaj şi duce implicit la o proiectare
mai bună a tuturor ansamblelor unui robot. Cu cât greutatea este mai mică cu atât consumul de
energie este mai redus şi implicit autonomia de funcţionare mai mare. În ceea ce priveşte
construcţia robotului din cazul de fata, materialele utilizate au fost:
-Plastic, baghete de plastic;
-Forex;
-Aluminiul;

Proiectarea hardware generală a robotului

Proiectarea hardware a robotului s-a axat în principiu pe reducerea greutăţii şi de aici


toate avantajele care decurg. Materialele utilizate în construcţia robotului cum ar fi aluminiul,
cuprul şi plasticul au asigurat această diminuare a greutăţii şi în principiu o optimizare a
proiectării hardware. În ceea ce priveşte plăcile de bază pe care s-au plantat componentele
electronice, pentru comoditate şi rapiditate în execuţie, plăcuţele cu găuri au fost alegerea
optimă aşa cum se poate observa şi în figura următoare:

FIG.3 Tipul de cablaj utilizat

Componentele electronice folosite în construcţia robotului au fost alese în ideea unei


dimensiuni cât mai reduse şi o calitate sporită pentru o optimizare a spaţiului utilizat şi anume
a cadrului robotului. Toţi rezistorii utilizaţi sunt marcaţi în codul culorilor şi au o valoare a
puterii proprii de 1/4W, această alegere fiind făcută în strânsă corelaţie cu faptul că prin
circuitele existente curentul care circulă nu are valori mari.
Pe lângă toate acestea, au mai fost utilizate LED-uri cu o singură culoare, condensatori,
regulatoare de tensiune de 5V, motoare de curent continuu şi o serie largă de de conectori şi
fire. S-a insistat foarte mult pe calitatea lipiturilor precum şi pe conectorii, mufele şi firele de
conexiune alese pentru ca în etapele următoare ale construcţiei robotului să nu se întâmpine
probleme legate de conectivitate.
7
Criterii pentru alegerea unui microcontroller

Sunt multe aspecte de care trebuie ţinut seama la alegerea unui MC pentru o anumită
aplicaţie. Alegerea unui MC potrivit poate duce la succesul proiectului, aşa cum o alegere
nepotrivită poate duce la eşecul proiectului. Fiecare cititor trebuie să adapteze aceste criterii
nevoilor sale şi scalei proprii de valori. Obiectivul urmărit în alegerea unui MC este obţinerea
calităţii dorite cu un cost cât mai scăzut. Calităţile dorite înseamnă performanţă, fiabilitate,
calităţi EMC (de compatibilitate electromagnetică cu mediul), iar costul total include costurile
cercetării, proiectării, construcţiei, testării, reparării produsului. În primul rând se pune
problema stabilirii funcţiei pe care MC trebuie s-o îndeplinească în sistem. Alegerea din
catalog a unui MC trebuie făcută în ideea a cât mai puţin hardware suplimentar (din motive
economice). Procesul de căutare este dificil din cauza numărului foarte mare de tipuri de MC
disponibile pe piaţă. . După stabilirea MC optim se verifică preţurile, dacă este disponibil,
suportul acordat de fabricant, existenţa uneltelor de dezvoltare, stabilitatea firmei
constructoare. Un criteriu important este posibilitatea de a fi găsit pe piaţă (optenabilitatea),
mai ales în zone în care circulaţia mărfurilor este destul de greoaie. Criteriile pentru alegerea
unui MC sunt, în ordinea importanţei:

1). Posibilitatea folosirii în aplicaţia dată este suficient un MC sau sunt necesare circuite
suplimentare;
2). Liniile I/O sunt suficiente (un număr prea mic înseamnă că aplicaţia nu se poate face cu
acest MC, iar un număr prea mare înseamnă un cost excesiv);
3). Există toate interfeţele solicitate de aplicaţie: I/O serial, convertoare A/D, D/A şi nu există
interfeţe în plus;
4). Există capacitatea de memorare suficientă: RAM, ROM;
5). MC are viteza suficientă pentru această aplicaţie. Se verifică timpul necesar rulării
programului care trebuie să fie mai mic decât intervalul de timp în care trebuie să reacţioneze
MC.
Un argument pentru alegerea unui tip de MC este existenţa unui modul de evaluare.
Pentru a promova propriile MC, mulţi furnizori au creat Kit-uri de evaluare care conţin plăci
de evaluare şi un soft minimal cu care se poate învăţa utilizarea MC şi se pot pune la punct

8
aplicaţii. Un kit conţine de regulă un program monitor pentru calculator PC, un program de
transfer al datelor spre placa de evaluare (prin interfaţa RS232 sau CENTRONICS), un
asamblor şi un compilator C. Toate kiturile sunt însoţite de documentaţie.

Schema bloc a unui microcontroller

Schema este în continuare o reprezentare generalizată :

FIG.4 Schema bloc microcontroller

Se poate observa că un MC este organizat în jurul unei magistrale interne pe care se


vehiculează date, adrese şi semnale de comandă şi control între blocurile funcţionale. Unitatea
centrală execută instrucţiunile pe care le primeşte prin magistrala de date din memoria
program. Structura Harvard este posibilă şi răspândită la MC pentru că de regulă instrucţiunile
sunt stocate în memoria ROM, iar datele în cea RAM. Magistrala de date şi cea de adrese pot
fi separate sau multiplexate. Fiecare MC are un controller de întreruperi care admite atât
intrări din exterior cât şi de la modulele interne. Unele MC dispun de un controller DMA
propriu.Modulele I/O pot fi seriale sau paralele. Fiecare modul transferă date cu exteriorul
prin intermediul registrului de date (RD). Modulul este programat (configurat) de unitatea
centrală prin intermediul unui registru de comenzi (RC) şi se poate citi starea modulului prin
registrul de stare (RS). Prin RS se pot genera întreruperi către unitatea centrală. Registrele

9
modulelor I/O pot fi văzute de UC ca locaţii de memorie sau ca dispozitive de I/O într-un
spaţiu de adresare separat. Sub numele de dispozitiv I/O, într-o abordare generalizată, sunt
cuprinse principalele interfeţe ale MC (timer, canal serial UART) şi linii I/O grupate în porturi
paralele de uz general. Acelaşi nume generic poate acoperi şi interfeţele speciale întâlnite în
configuraţii particulare de MC (convertor A/D, interfaţă serială sincronă, interfaţă LCD,
interfaţă USB, etc.

Particularizare. Microcontroller-ul PIC18F46K80 – package si descriere pini

FIG.5 PIC18F46K80
Particularizare. Diagrama bloc a microcontrollerului PIC18F46K80

10
FIG.6 Diagrama bloc a microcontrollerului PIC18F46K80

Dispozitive I/O

Dispozitivele I/O reprezintă un aspect de mare interes atunci când este vorba de
microcontroller, interes rezultat din însăşi particularitatea unui MC aceea de a interacţiona cu
mediul în procesul de control pe care îl conduce.
Dispozitivele I/O implementează funcţii speciale degrevând unitatea centrală de toate
aspectele specifice de comandă şi control în funcţia respectivă.Există o varietate mare de
dispozitive I/O; dispozitivele I/O conduc operaţii generale de comunicaţie (transfer serial sau
paralel de date), funcţii generale de timp (numărare de evenimente, generare de impulsuri),
operaţii de conversie analog/numerică, funcţii de protecţie, funcţii speciale de comandă, şi
enumerarea poate continua. Parte din resurse acoperă funcţiile de control propriu-zis, iar o
parte asigură funcţiile necesare aplicaţiilor în timp real (sistemul de întreruperi, timer). Din
această mare varietate, parte din dispozitive se găsesc în configuraţia tuturor MC sau sunt

11
foarte des întâlnite, iar o altă parte de dispozitive o regăsim doar în MC construite pentru a
optimiza aplicaţii cu un grad mare de particularitate. În acest capitol, în continuare, vor fi
prezentate dispozitive des întâlnite în echiparea MC. Dispozitivele I/O sunt “văzute” de
unitatea centrală ca porturi. Există două filozofii de alocare a adreselor (mapare) pentru
apelarea porturilor de către unitatea centrală. Porturile sunt mapate fie în spaţiul de memorie,
fie într-un spaţiu propriu.

Avantajele mapării în spaţii separate:


• Metoda nu este susceptibilă de a provoca erori soft deoarece se
folosesc instrucţiuni diferite pentru a accesa memoria şi dispozitivele I/O;
• Dispozitivele I/O nu ocupă spaţiu de memorie;
• Decodificatorul de adrese pentru dispozitivele I/O este mai simplu
deoarece spaţiul de adresare al dispozitivelor I/O este mai mic.
Dezavantaje ale mapării în spaţii separate:
• instrucţiunile I/O sunt mai puţin flexibile în comparaţie cu
instrucţiunile de lucru cu memoria;
• instrucţiunile I/O nu permit folosirea modurilor de adresare folosite în
lucrul cu memoria.

Avantajul mapării în spaţiu comun:


• toate instrucţiunile de lucru cu memoria şi toate modurile de adresare
sunt utilizabile şi în tratarea dispozitivelo I/O (programarea operaţiilor
I/O este foarte flexibilă);
Dezavantajele mapării în acelaşi spaţiu:
• este susceptibil la erori software;
• spaţiul de adresare disponibil pentru memorie este mai mic.
Avantajul mapării într-un spaţiu comun este acela că se poate opera cu porturile la fel
ca şi cu o locaţie de memorie; multe operaţii aritmetice şi logice folosesc operanzi direct de la
port, datele pot fi mutate între porturi cu o singură instrucţiune, conţinutul unui port poate fi
citit, incrementat şi rezultatul scris din nou la port de asemenea cu o singură instrucţiune.

12
Module Timer

Natura aplicaţiilor pentru care s-a născut microcontroller-ul implică o multitudine de


funcţii de timp puse la dispoziţia utilizatorului prin module de timp numite timer. Un MC este
echipat în mod obligatoriu cu un astfel de modul mai mult sau mai puţin complex. Un sistem
timer obişnuit pune la dispoziţie un set de funcţii implementate pe baza unui numărător liber
central şi a unor blocuri funcţionale pentru fiecare funcţie în parte. Timer-ul are în structura sa,
dintre toate celelalte subsisteme, cele mai multe registre. Toate funcţiile unui timer pot genera
întreruperi independente; fiecare are controlul propriu şi propriul vector de întrerupere.
Modulele timer complexe sunt construite cu arii de numărare programabile (PCA). Pentru
aplicaţii speciale în timp real s-au construit module timer cu unitate aritmetică şi logică
proprie. Timer-ul este folosit pentru a măsura timpul şi pentru a genera semnale cu perioade şi
frecvenţe dorite. Timer-ele nu sunt doar circuite cu funcţii detemporizare; în modulul timer
sunt implementate câteva mecanisme care pun la dispoziţia utilizatorului funcţii specifice.
Mecanismul de comparare permite controlul unor semnale de ieşire; mecanismul de captură
permite monitorizarea unor semnale de intrare; numărătoarele interne permit generarea de
referinţe de timp interne, necesare în bucle de întârziere, multiplexarea diferitelor sarcini
software, ş.a. Timer-ul poate fi folosit practic pentru orice funcţie de timp, inclusiv generarea
unor forme de undă sau conversii D/A simple. Funcţiile oferite de un timer sunt:

1). Captură la intrare (IC - input capture) - această funcţie se bazează pe posibilitatea de a
stoca valoarea numărătorului principal la momentul apariţiei unui front activ al unui semnal
extern. Facilitatea permite măsurarea lăţimii unui impuls sau a perioadei unui semnal.
Facilitatea poate fi folosită şi ca referinţă de timp pentru declanşarea altor operaţii.
2). Comparare la ieşire (OC - output compare) - se compară la fiecare impuls de ceas valoarea
numărătorului principal cu cea a unui registru. Dacă se constată egalitate, în funcţie de
programarea anterioară pot avea loc următoarele evenimente: declanşarea unei acţiuni la un pin
de ieşire (opţional), setarea unui flag într-un registru sau generarea unei întreruperi pentru
unitatea central (opţional). Funcţia este folosită pentru a genera întârzieri sau pentru a genera o
formă de undă cu valori dorite pentru frecvenţă şi pentru factorul de umplere .

13
3). Întreruperi în timp real (RTI – real-time interrupt) – într-un sistem există sarcini care
trebuiesc executate periodic sau care nu permit depăşirea unui interval limită între doua
execuţii. Aceste sarcini sunt lansate ca rutine de tratare a întreruperii generate de timer.
4). COP (computer operating properly) watchdog – această funcţie este folosită pentru a reseta
sistemul în cazul în care din erori de programare (bugs) sau erori în desfăşurarea programului
datorate perturbaţiilor mediului, registrul COP nu este accesat într-un interval de timp prescris.
5). Acumulare de pulsuri (pulse accumulator) – este funcţia folosită pentru a număra
evenimentele ce apar într-un interval de timp determinat sau pentru a măsura durata unui
impuls.

Microcontrollerul PIC18F46K80

FIG.7 PIC18F46K80

Microcontrollerul utilizat pentru acest proiect este PIC18F46K80 si are reprezentarea


pinilor ca in figura de mai sus.Pinii I/O ai microcontrollerului inglobeaza mai multe functii ,
asfel , pinii corespunzatori port-ului PORTA pot fi setati si ca pini analogici de intrare dar si
ca pini digitali de intrare/iesire. De asemenea pinii Vpp , RB7 si RB6 sunt utilizati in
programarea memoriei microcontrollerului prin conexiune ICSP , dar pinii RB7 , RB6 pot fi
utilizati si ca pini digitali de intrare/iesire. Microcontroller-ul PIC18F46K80 contine un
numar de 11 canale analogice si pot fi folosite in regim multiplexat, independent unul de
celalalt avand. Microcontrollerul are la baza arhitectura de tipul Harvard si un numar de 35 de
instructiuni, putand opera la o frecventa maxima de 64 Mhz , reprezentand o viteza
propriuzisa de lucru de F(clock)/4= 16 Mhz. Acest lucru inseamna ca microcontroller-ul are

14
capabilitatea de a executa un numar de 16 milioane de instructiuni pe secunda, lucru ce il
recomanda in proiecte de acest gen.

FIG.8 Arhitectura Harward

Un aspect important legat de acest tip de arhitectura este acela ca memoria program
este separata de memoria de date , in acest fel fiind posibila citirea unei date si a unei
instructiuni in acelasi timp( memoria de date si memoria program se afla pe BUS-uri diferite).
Tehnica pipeline este cea prin intermediul careia o instructiune se executa corect iar in cazul
de fata , o instructiune este corect realizata in 4 perioade de clock, astfel , la o frecventa a
oscilatorului de 64 Mhz, frecventa reala de lucru a microcontrolerului va fi de 264/4 = 16
Mhz, sau altfel spus, 16 mips (16 milioane de de instructiuni pe secunda) Aceasta tehnica se
regaseste si la procesoare si ajuta la cresterea vitezei propriuzise de lucru. Fiecare etapa din
cele 4 din procesul pipeline este executata de catre o unitate functionala a
microcontrollerului. Segmentele pipeline sunt conectate intre ele intr-un mod analog
asamblarii unei conducte din segmente de teava. Segmentele tipice de executie ale unei
instructiuni masina pe microcontroller sunt :
F- fetch - se refera la un ciclu special in care procesorul citeste din memorie codul
instructiunii ce urmeaza a fi executata.
D-decode – se refera la procesul de decodare , proces in care instructiunea este recunoscuta si
procesul are tot ce ii trebuie pentru executia instructiunii.
E-execute- reprezinta procesul propriuzis de executie a instructiunii
W-write-back- scrierea rezultatului inapoi in memorie.

15
FIG.9 Secventa de executie a unei instructiuni

Referitor la microcontrollerul PIC18F46K80, acesta, pe langa oscilatorul extern ce


poate fi adaugat din punct de vedere hardware, mai contine si un oscilator intern fiind posibil
astfel prin intermediul multiplicatorului PLL atingerea unei frecvente de pana la 64 Mhz. In
cazul de fata frecventa la care opereaza microcontrolerul este de 64 Mhz (oscilator intern) si a
fost ales pentru ca are integrat in constructia sa o platforma ADC multicanal, platforma ce a
corespuns standardelor de design digital alese la inceputul constructiei acestui proiect. Un
avantaj net fata de alte microcontrollere este acela referitor la viteza mare de executie a
instructiunilor si totodata numarul mare de canale I/O de care dispune. Pe langa toate aceste
caracteristici superioare se mai adaga faptul ca microcontrollerul dispune side o serie larga de
modul de comunicatie serial-sincrona si asincrona, I2C, CAN, convertor analogic pe 12 bit si
este totodata versatil din punctul de vedere al alimentarii deoarece poate fi alimentat cu o
tensiune de 3.3V pana la 5V. Programarea microcontroller-ului se realizeaza prin intermediul
conexiunii de tip ICSP ce este compusa din 5 pini (Vpp, Vdd, Vss, DAT si CLK). O serie de
caracteristici ce descriu microcontrollerul PIC18F46K80 sunt prezentate in figura urmatoare :

FIG.10 Resurse microcontroller

16
• Power-Saving modul Sleep
• Gamă largă de tensiune gama de operare (2.0V-5.5V)
• Power-on Reset (POR)
• Power-up Temporizator (PWRT) şi Oscilator Start-up Temporizator (OST)
• Brown-out Reset (BOR)
• low-curent watchdog timer (WDT)
• anduranţă mare in scrierea Flash-ului / EEPROM-ului pe celulă:
- 100.000 cicluri Flash
- 1.000.000 cicluri EEPROM
- Flash / date EEPROM de retenţie:> 40 ani
• Memoria program de citire / scriere în cursul timpului de funcţionare
• In-Circuit Debugger
• Pana la 64 Kbytes de flash program memory
• Pana la 1024 Kbytes de memorie EEPROM (100000 de cicli de scriere/citire)
• Pana la 3.6 Kbytes de memorie SRAM
• Trei oscilatoare interne de 31 KHz, 500KHz si 16 MHz.

Functiile pinilor I/O

17
18
FIG.11 Descriere functionalitati pini

Pinul MCLR/Vpp

Acest prin are rolul de MASTER CLEAR OR RESET .

19
- MCLR and VPP sunt doua functii reprezentate prin acelasi pin;
- MCLR reprezinta Master Clear, iar functia de reset pe microcontroller va determina ca
microcontrollerul sa stea intr-o stare de reset atat timp cat MCLR este conectat la GND .
Datorita acestui fapt, pentru a se evita eventualele resetari ale microcontrollerului, se utilizeaza
un rezistor de tipul pull-up care mentine in permanenta pinul de MCLR la Vdd. Cand MCLR
e conectat ls Vdd , atunci microcontrollerul incepre sa execute prima instructiune din
memoria program.
Definitia VPP se traduce ca fiind Voltage for Programming si este utilizat in procesul scrierii
memoriei . Atunci cand amplitudinea tensiunii de pe pinul Vpp este cuprinsa intre 9-13v
microcontrollerul intra intr-o stare speciala de reset unde acesta nu functioneaza , dar poate fi
programat.

FIG.12 Pinul MCLR

20
Codul Sursa – C
#define sus PORTA.f3
#define jos PORTE.f0
#define stanga PORTA.f2
#define dreapta PORTE.f1
#define stanga_sus PORTC.f2
#define stanga_jos PORTE.f2
#define dreapta_sus PORTA.f1
#define dreapta_jos PORTA.f0
#define centru PORTA.f5
#define LED_stanga LATD.f0
#define LED_centru_stanga LATD.f1
#define LED_dreapta LATD.f3
#define LED_centru_dreapta LATD.f2
#define servo_baza LATD.f7
#define servo_sus LATD.f6
#define servo_gripp LATD.f4
#define servo_ultim LATD.f5

//--------------------------------DESCRIERE------------------------------------//
/*Platforma robotica mobila comandata prin microswitch-ri si 3 grade de libertate.
Alimentarea sistemelor electronice componente se realizeaza la o tensiune de 5V,
tensiune obtinua prin stabilizare pozitiva de tensiune de la o sursa externa de
5-18V. Miscarile baratelor platformei robotice se realizeaza prin intermediul
servomecanismelor RC.*/
//-------------------------CONECTIVITATE si MODULE ELECTRONICE-----------------//
/*1). INTRARI DIGITALE :
RA0 = tasta dreapta jos;
RA1 = tasta dreapta sus;
RA2 = tasta stanga;
RA3 = tasta sus;
RA5 = tasta centru;
RE0 = tasta jos;
RE1 = tasta dreapta;
RE2 = tasta stanga jos;
RC2 = tasta stanga sus;
2). IESIRI LED-uri indicatoare:
RD0 = LED stanga;
RD1 = LED centru stanga;
RD2 = LED centru dreapta;
RD3 = LED dreapta;

3). IESIRI SERVOMECANISME :


RD4 = SERVO GRIPP;
RD5 = SERVO ULTIM;
RD6 = SERVO CENTRAL;
RD7 = SERVO BAZA; */
//----------------------------------------------------------------------------//

21
void main() {
//---------setari registri clock---64Mhz => 61.2 ns/ instruction (measured with
oscilloscope)------//
// OSCILATORUL ESTE SETAT PE INTERNAL OSCILATOR 64 Mhz
// 1). Din seterile "project-edit project" se seteateaza tipul oscilatorului (setat pe internal RC
oscillator) din registrul CONFIG1H;
// a). Registrul CONFIG1H<3:0> = bitii FOSC<3:0> = "1000" ( modul = INTIO2 internal
RC oscillator);
// b). Registrul CONFIG1H<4> = PLLCFG = "1" (1 = Oscillator is multiplied by 4);
// 2). Registrul OSCTUNE <6> = PLLEN = "1" (Frequency Multiplier PLL Enable bit =
enable);
// 3). Registrul OSCCON <6:4> = bitii IRCF<2:0> = "111"(111 = HF-INTOSC output
frequency is used (16 MHz)) - tipul oscilaatorului intet folosit
// 4). Registrul OSCCON <1:0> = bitii SCS<1:0> = "00"(Default primary oscillator
(OSC1/OSC2 or HF-INTOSC with or without PLL. Defined by the FOSC<3:0> Configuration
bits, CONFIG1H<3:0>)
//---------------------------------------------------------------------------------------------------------------/
/
OSCCON = 0b01110000;
OSCTUNE.f6 = 1;
//------------------------setari TRIS-reg directivitate-----------------------//
TRISA = 0b00101111;
TRISC = 0b00000100;
TRISB = 0b00000000;
TRISD = 0b00000000;
TRISE = 0b00000111;
ANCON0=0; // Canalele AN0-AN7 de IN = digitale
ANCON1=0; // Canalele AN8-AN14 de IN = digitale
//----------------------SETARE INTRERUPERE PE TIMER1--------------------------//
INTCON.GIE = 1; //enable all un-masked interrupts
INTCON.PEIE = 1; //Set PEIE
T1CON = 1; //enable Timer1
PIR1.TMR1IF = 0; //clear interrupt flag
TMR1H = 0b11111111; // SET INITIAL START TIMER VALUE-High (step = 0.114
ms cu osciloscopul = pas de timer)
TMR1L = 0b11110111; // SET INITIAL START TIMER VALUE-Low
PIE1.TMR1IE = 0; // disable Timer1 interrupt
//----------------------------------------------------------------------------//
LATD = 0; // iesirile pe LED-uri =0;

for (;;){
//--------------------------------------------------servo baza = stanga-dreapta
while (stanga){
servo_baza= 1;
Delay_us(900);
servo_baza = 0;
Delay_ms(40);
LED_stanga = 1;
}
22
while (dreapta){
servo_baza= 1;
Delay_us(2000);
servo_baza = 0;
Delay_ms(40);
LED_dreapta = 1;
}
//-------------------------------------------------------------------servo gripp
while (dreapta_sus){
servo_gripp= 1;
Delay_us(900);
servo_gripp= 0;
Delay_ms(18);
LED_centru_stanga =1;
LED_centru_dreapta =1;
}

while (dreapta_jos){
servo_gripp= 1;
Delay_us(2100);
servo_gripp= 0;
Delay_ms(18);
LED_centru_stanga =1;
LED_centru_dreapta =1;
}
//----------------------------------------------------------------servo superior
while (sus){
servo_sus= 1;
Delay_us(900);
servo_sus = 0;
Delay_ms(40);
LED_centru_stanga =1;
}
while (jos){
servo_sus= 1;
Delay_us(1700);
servo_sus = 0;
Delay_ms(40);
LED_centru_dreapta =1;
}
//--------------------------------------------------------------servo sus ultim
while (stanga_sus){
servo_ultim= 1;
Delay_us(800);
servo_ultim = 0;
Delay_ms(30);
}
while (stanga_jos){
23
servo_ultim= 1;
Delay_us(2200);
servo_ultim = 0;
Delay_ms(30);
}
LED_centru_dreapta =0;
LED_centru_stanga =0;
LED_dreapta =0;
LED_stanga =0;
}
}

24
Bibliografie

1). Carti / ebooks:


PIC Robotics - John Iovine
Programming Pic Microcontrollers With Picbasic
Adaptive Motion of Animals and Machines - Hiroshi Kimura et al (Eds)
Advances in Robot Kinematics - Jadran Lenarcic and Bernard Roth (Eds)
Amphibionics Build Your Own Biologically Inspired Reptilian Robot - Karl Williams
An Introduction to MEMs Engineering - Nadim Maluf and Kirt Williams
Anatomy of a Rrobot - Charles M Bergren
Apress.Robot.Building.for.Beginners.Dec.2009
Artificial Mind System – Kernel Memory Approach - Tetsuya Hoya
Autonomous Mobile Robots - Shuzhi Sam Ge & Frank L Lewis
Autonomous Robotic Systems - Anibal T. de Almeida and Oussama Khatib (Eds)
Scientific Methods in Mobile Robotics - Ulrich Nehmzow
Robot Builders Bonanza - Gordon Mccomb

2). Mediul Online (documentatie / poze)


www.seattlerobotics.org/guide/servos.html
www.seattlerobotics.org/guide/servohack.html
www.cs.uiowa.edu/~jones/step/index.html
www.repairfaq.org/filipg/RC/F_Servo101.html
www.hut.fi/Misc/Electronics/
www.boondog.com\tutorials\tutorials.htm
www.eg3.com/ee/robotics.htm
http://members.tripod.com/RoBoJRR/reference.htm
http://rvl.www.ecn.purdue.edu/RVL/mobile-robot-nav/mobile-robot-nav.html
www.rentron.com/.
www.tabrobotkit.com.
www.robotics.com/arobot/sonar.html.
www.hompro.com/techkids/..

25