Platformă robotică cu braț mobil și comandă wireless – [301983]

Universitatea „Vasile Alecsandri” [anonimizat]: Prof. Dr. Ing. Gheorghe Stan

Absolvent: [anonimizat], 2017

OBIECTIV

Proiectul de față constă în realizarea practică a unui sistem robotic inteligent comandat de către utilizator prin intermediului unei comunicații wireless de tip bluetooth direct de pe smartphone. Astfel utilizatorul are posibilitatea de a directtiona platforma robotică în cele 4 direcții (înainte-înapoi, stânga-dreapta) dar în același timp acesta poate comandă și brațul robotic pentru manipularea diferitelor obiecte. Partea de mecatronică a [anonimizat], material ușor prelucrabil dar în același timp foarte rezistent la umiditate și stress mecanic. În ceea ce privește partea de acționare (tracțiune și directivitate platforma), această a fost realizată cu ajutorul a două motoare DC de curent continuu cu reductor tip 1:120 și permite întregii platfome robotice să se deplaseze în toate cele 4 direcții dar și rotirea pe loc. [anonimizat] a întregului ansamblu robotic. Pentru o [anonimizat] 2 motoare de curent continuu este transferată prin intermediul a două roți ce conțin pe partea exterioară un material din poros aderent iar în ceea ce privește roțile din spate s-au utilizat 2 roți mobile capabile de a se roți în jurul propriei axe la 360 [anonimizat]. Pentru construcția brațelor s-[anonimizat] (așa cum a fost menționat anterior), dar și aluminiul în scopul de a se micșora greutatea brațelor și de a [anonimizat] 3 servomecanisme. Articulațiile brațelor componente sunt realizate cu ajutorul a 3 [anonimizat] (articulația secundară) [anonimizat] a face față ridicării greutăților.

În ceea ce privește partea de prindere a obiectelor s-a realizat un mecanism de tip „gripper” din material FOREX și acționat prin intermdiul doar unui singur servomecanism. Prinderea servomecanismelor pe platforma robotică s-a realizat integral cu ajutorul suruburilor pe cadrele de aluminiu și pe cele de FOREX. [anonimizat], s-a utilizat integral aluminiul pentru construcția brațelor și în urmă testelor a reieșit faptul că servomecanismele nu erau capabile să dezvolte un moment mecanic destul de puternic pentru a garanta mișcarea brațelor și astfel s-a regândit brațul robotic utilizând de această dată material FOREX și cadru de aluminiu considerabil mai subțire și ușor. [anonimizat], s-[anonimizat], acest lucru ajutând la evitarea deteriorării acesstora în urmă impactului cu diferite obiecte în modul normal de funcționare. În ceea ce privește partea efectivă a tool-urilor și materialelor auxiliare utilizate în prelucrarea sistemului robo-mecatronic, se pot menționa următoarele: cutter, mașină de polizat, traforaj, bormașina, foaie abrazivă, pensete, patent, sfic, foarfece iar că materiale prelucrate propriuzise se pot menționa FOREX-ul, Aluminiul, plastic maleabil la temperatura, șuruburi, holsuruburi, piulițe, șaibe, adeziv. În ceea ce privește autonomia platformei robotice, s-a utilizat un pachet de acumulatori de tip Li-Ion ce garantează un timp minim de funcționare(în regim normal) de aproximativ o ora și jumătate.

Acumulatorii ce alimentează întreagă platforma robotică sunt conectați în format serie-paralel și totalizat au o putere finală de aproximativ 50Wh. Un singur element constitutiv al pachetului poate livra o tensiune de 3.7V și un curent de maxim 2800mAh.De asemenea sistemul electronic este dotat și cu o mufă 2-pini cu ajutorul căreia se realizează încărcarea acumulatorilor cu o tensiune de încărcare monitorizată care nu trebuie să depășească un maxim de 12V. Firele de alimentare utilizate la procesul de încărcare, precum și firele utilizate la alimentarea modulelor electronice au o secțiune mare pentru a se evita pierderile prin căldură și a permite un curent mare de consum și de încărcare.

În ceea ce privește tensiunea de alimentare a sistemelor/modulelor electronice componente, această are o valoare de 5V și este obținută prin intermediul stabilizatoarelor pozitive de tensiune de tip 7805 care au o capabilitate în curent de maxim 1.5A. S-au utilizat două elemente stabilizatoare de acest tip (7805), unul dintre ele alimentând toate sistemele și modulele electronice componente și celălalt alimentând ceea ce însemna parte de acționare (motoarele de curent continuu DC și servomecanismele RC).

S-au folosit două elemente stabilizatoare și nu doar unul singur în scopul de a se evita resetarea micrcontroller-ului la creșterea semnificativă a consumului de curent dar acest lucru va fi detaliat în următoarele capitole ale proiectului. De asemenea în partea de alimentare a modulelor electronice s-a implementat și indicarea optică prin intermediul a două LED-uri de culoare verde, LED-uri prin intermediul cărora se indică funcționarea normală a circuitului stabilizator de tensiune și implicit a modulelor electronice. Se recomandă că tensiunea prezența în partea de intrare a circuitului stabilizator de tensiune să nu depășească valoarea de 18V în scopul de a se evita deteriorarea ireversibilă a acestora dar și a sistemelor electronice alimentate. Se știe faptul că o temperatura mare de lucru a unui circuit electronic duce la scăderea performanțelor acestuia în ceea ce privește capabilitatea în curent și exact în acest scop cele două elemente stabilizatoare sunt dotate cu elemente radiatoare pasive. Microcontroller-ul utilizat în acest proiect este un microcontroller pe 8 biți din familia Microchip și lucrează la o frecvența de 64 de Mhz, ceea ce înseamnă că este capabil să execute un număr de 16 milioane de instrucțiuni pe secundă, viteză de procesare arhisuficienta pentru proiectul de față. Tensiunea de alimentare a microcontroller-ului este de maxim 5V dar acesta poate rula foarte bine și la tensiunea de 3.3V, programarea acestuia realizanduse printr-o conexiune serial-sincronă standard de tip ICSP, conexiune ce va fi descrisă pe larg în următoarele capitole ale proiectului. Conexiunea de programare este dipusă pe PCB-ul circuitului electronic într-o zona degajată pentru a facitita accesul la această iar programarea propriu-zisă (încărcarea fișierului .hex) în microcontroller se realizează cu ajutorului programatorului PicKit2.

În ceea ce privește partea de afișare a mesajelor de interes, s-a utilizat un LCD de tip alfanumeric ce conține 2 lini și 16 coloane și pe care este posibilă afișarea diferitelor caractere predefinite, carctere custor realizare de utilizator dar în același timp este posibilia și citirea informației afișate pe LCD la un moment dat. Display-ul alfanumeric dispune în același timp și de un backlight cu LED, contrastul de afișarea poate fi variat prin intermdiul unui semireglabil iar tensiunea maximă de alimentare a afisajului este de 5V. Display-ul alfanumeric comunică cu microcontroller-ul printr-ul protocol de 6 biți, unde 2 biți sunt asignati pentru control și 4 biți sunt utilizați în transmisia efectivă a datelor. Microcontroller-ul comunica cu modulul de trensmisie wireless prin intemediul unui protocol de comunicație de tip UART serial asincron cu o viteză de transmie a informației de 9600baud, sau altfel spus 9600 biți pe secundă. Acest protocol de comunicație, așa cum a fost menționat, este un protocol serial asincronc pe două linii de comunicație Rx și TX și nu implică un semnal de sincronizare de CLK. Prin intermediul acestui modul electronic de transmisie wireles -bluetooth de tip HC-05 se transmit comenzi de directivitate și de acționare a brațului robotic. În ceea ce privește efectiv partea de funcționalitate a platformei, la alimentarea acesteia, pe display-ul alfanumeric se vor afișa mesaje de interes și la scurt timp va intră în secvență de autocentrare, unde brațul robotic va fi adus automat la poziția orizontală iar gripper-ul va fi acționat de 2 ori(închis-deschis). Imediat în următoarea secvență de funcționare, sistemul software va intră într-un regim de buclă unde se aștepta că utilizatorul să se conecteze la sistem prin comunicația wireless-bluetooth. Această stare de așteptare va fi întreruptă în momentul în care utiliztorul detectează wireles bluetooth sistemul, face peering cu acesta prin acces cu parolă și în ultima faza apasă orice buton de pe tastatură qwerty a smartphone-ului. După execuția acestei etape, sistemul robotic se află în starea de așteptare a comenzilor de directivitate și comandă braț doar prin intermediul sistemului wireless bluetooth. În acest moment, utilizatorul poate comanda platforma să se deplaseze înainte, înapoi, stânga, dreapta, rotirea pe loc în ambele direcții, comandă brațului robotic în orice direcție și nu în ultimul rând manipularea secvențială a gripper-ului(închis-deschis).

Capitolul I

Stadiul actual privind minirobotul mobil

1.1. Un sistem robotic autonom este definit ca un sistem mecanic care este capabil să performeze un set de task-uri predefinite prin partea software. Un robot este în fond un cumul de elemente electromecanice și electronice care formează în final un totunitar dotat cu inteligență artificială. Senzorii care intră în componența unui sistem robotic inteligent reprezintă o componentă de bază & nbsp; în funcționarea sistemului și au rolul de interfatare cu mediul înconjurător. Modular, un sistem robotic poate fi reprezentat că în următoarea figură(blocurile de bază ale unui robot)

FIG.47

În ceea ce privește interacționarea cu mediul exterior a unui robot dotat cu inteligență artificială , această poate fi reprezentată în următorul mod :

FIG.48 Interacțiune robot-mediu

Comportamentul unui sistem robotic sau ceea ce este observat de către robot în momentul în care interacționeaza cu mediul exterior, nu este doar rezultatul programării (sau a părții software in sine), ci reprezintă un cumul de mai mulți factori :

1).Programul ce rulează pe microcontroller ;

2).Partea electromecanică, de acționare și cea de senzoristică (sau partea hardware);

3).Mediul exterior cu care robotul interacționeaza;

Spre deosebire de o simulare pe computer, modul în care un robot interacționeaza cu mediul exterior este complet deosebit și nepredictibil deoarece ia în calcul neliniaritatea și zgomotul ce afectează senzorii, dar și dispozitivele de acționare precum actuatoarele sau moatoarele. Un foarte simplu experiment ce demonstrează neliniaritatea și nepredictibilitatea unui sistem robotic este cel în care un sistem robotic este pus să execute același task, din același punct de plecare, în același mediu. Rezultatul, în ciuda acelorași constante de repetabilitate, este diferit de fiecare dată când robotul este pus să execute același task, așa cum se poate vedea și din urmatoarele grafice (spre exemplu traiectoria unui robot line follower care urmarește o linie- task reperat de 2 ori pentru fiecare grafic):

FIG.49 Tipuri mișcare (repetabile, nerepetabile)

Din punctul de vedere al inteligenței artificiale și progresele tehnologiei până în momentul de față, s-a constatat faptul că utilizandu-se un complex de rețele neuronale și sisteme nonliniare de tip fuzzy se poate simula creierul unei persoane în varsta de 10 ani. Un alt aspect important în robotică este sistemul de locomoție, care ajută sistemul robotic să se deplaseze în mediul real. De cele mai multe ori aceste sisteme de locomoție sunt inspirate și preluate din mediul exterior și anume din locomoția sistemelor biologice care este vastă și foarte variată.

FIG.50 Tipuri de locomoție în robotică

Având în vedere limitările impuse de sistemele electromecanice, sistemele robotice utilizează cu preponderență ca metodă de locomoție mecanismele bazate pe roți sau sisteme articulate ce au la bază un numar minim de “picioare”.

1.2. Locomoția de tip “legged”

În general sistemele de locomoție articulate de tip “legged” au o complexitate mult mai mare și necesită un timp semnificant crescut de construcție în comparație cu deplasarea prin intermediul roților. O metoda de locomoție de tipul mersului biped poate fi aproximată cu dinamica de rostogolire a unui polygon, în care lungimea pasului reprezintă lungimea laturei poligonului. Pe masură ce dimensiunea pasului scade, dinamica mersului biped poate fi aproximata cu un cerc cu rază egală cu dimensiunea piciorului așa cum se poate observa și din figura următoare: FIG.51 Locomoție de tip „legged”

În privința sistemelor de locomoție de tip “multi-legged” inspirate din mediul înconjurator, aceastea pot fi de urmatoarele feluri:

FIG.52 Locomoție „legged”

Așa cum se poate observa și din figura de mai sus, locomoția de topi “multi-legged” este caracterizată prin faptul că exista mai multe puncte de contact între robot și sol. Ca și avantaje pentru acest tip de locomoție ar fi de amintit stabilitatea sporită și manevrabilitatea foarte bună pe teren accidentat. Cel mai mare dezavantaj în schimb ar fi complexitatea sporită în costruția sistemelor mecanice. Ceea ce caracterizează un sistem locomotor de tip “legged” este numărul de grade de libertate, acest termen referindu-se în principiu la gradul de mobilitate al unui picior articulat. Un sistem de locomoție articulat și având 3 grade de libertate este cel prezentat în figura urmatoare:

FIG.53 Sistem cu 3 grade de libertate (DOF)

Crescând intr-un sistem robotic numărul de grade de libertate pentru fiecare picior articulat în parte, se crește per total mobilitatea platformei robotice și implicit manevrabilitatea în lumea reală. Ca dezavantaje principale ar fi creșterea presiunii pe fiecare articulație în parte, creșterea consumului de energie necesar mișcării, numărul de servomecanisme și nu în cele din urmă creșterea masei robotului. Un tip de locomoție ce are la baza un număr de 4 picioare articulate este des întâlnit în robotică, fiind mai puțin complex decât locomoția prin intermediul a 6 picioare. Ca și deosebire fundamentală, mișcarea cu ajutorul a 4 picioare se realizează total diferit de mișcarea cu 6 picioare din punctul de vedere al dinamicii :

FIG.54 Modalități de locomoție în sistemele robotice cu 4 picioare

Un scurt sumar referitor la metodele de locomoție ce folosesc tehnica “legged”, aceastea sunt:

1). Sisteme de locomoție cu un singur picior (saritoare)

FIG.55 Single legg robot

2).Sisteme de locomoție cu un singur picior (rotative)

FIG.56 Single legg robot

3). Sisteme de locomoție cu 2 picioare (bipede)

FIG. 57 Robot biped

4). Sisteme de locomoție cu 4 și cu 6 picioare:

FIG.58 Robot cu 4 și respectiv 6 picioare

Locomoția de tip “wheeled”

Acest tip de locomoție este unul dintre cele mai populare atunci când vine vorba de sistemele robotice dar și în vehiculele controlate de om. Prin acest tip de locomoție se atinge un nivel foarte ridicat de eficiență în ciuda faptului că implementare mecanismului este foarte simplă. Spre deosebire de dinamica “legged”, aici nu intră în calcul probleme de balans sau de echilibru în sine deoarece în permanență există contact între robot și sol. Referitor la punctele de contact cu solul, un echilibru îndeajuns este stabilit în 3 puncte (3 roți), dar echilibrul poate fi stabilit și prin intermediul a numai doua roți așa cum este demonstrat de către roboții de tip “inverted pendulum” sau “two wheels balancing robot” – roboți de balans. Tipurile de roți utilizate în sistemele robotice sunt cele prezentate în urmatoarea figură:

FIG. 59 Tipuri de roți utilizate în robotică

Surprinzător de crezut, dar numărul minim de roți cu care poate fi echipate un robot este doi (cazul roboților de balans). Configurațiile de roți utilizate în sistemele robotice bazate pe locomoția de tip “wheeled” sunt următoarele :

FIG. 60 Tipuri de configuratie roti

FIG. 61 Tipuri configurație roți

O parte din sistemele robotice beneficiază de omnidirecționalitate, acest lucru însemnand faptul că se pot mișca în orice direcție și în orice moment în jurul axei verticale. Acest nivel de manevrabilitate se bazează pe faptul că roțile se mișcă pe mai multe direcții ceea ce inseamnă că aceastea au o formă sferică și nu una cilindrică.

Tipuri de roți utilizate la platformele robotice mobile

Roțile cu care un sistem robotic mobil este dotat sunt de diferite tipuri și pot îndeplini mai multe funcții simultan. Roata fixatp pe cadrul robotului este una dintre cele mai întâlnite configurații. Acest tip de roată are doar un singur grad de libertate sau altfel spus se poate învârti bidirecțional doar pe o axă.

FIG.62 Roata fixă

Un alt tip de roată ce are ca rol principal directivitatea și nu tracțiunea este roata centrată și cea descentrată orientabilă.

FIG.63 Roată mobilă

Așa cum a fost amintit și anterior în proiect, roata omnidirecțională este utilizată în platformele robotice la care se dorește un grad maxim de manevrabilitate în jurul axei verticale. Acest tip de roată, numită și ”Swedish wheel” este reprezentat in figura următoare :

FIG. 64 Roată swedish

Prin intermediul acestui tip de roată, un robot mobil are posibilitatea de a executa mișcări omnidirecționale în jurul axei Y și nu necesită nici un dispozitiv de direcție/ghidaj al roților, ci schimbarea direcției de mers se realizează în sine doar din mișcarea de rotație.

Motoarele DC utilizate în dinamica roboților

Un element electromecanic foarte important în dinamica robotică este motorul de curent continuu ce este utilizat preponderent în procesul de locomoție. Există o gamă largă de tipuri de motoare DC, fiecare tip având avanajele și dezavantajele sale.Spre exemplu motarele de curent continuu DC sunt des utilizate în deplasarea roboților, avantajul major al acestora fiind faptul că sunt ușor de controlat prin intermediul swithc-urilor, releelor, tranzistorilor, punților de tip H. Pe de altă parte, un dezavantaj major îl reprezintă puterea de tracțiune redusă sau “torque-ul” redus, ceea ce implică utilizarea reductoarelor/cutiilor de viteză pentru transformarea vitezei în putere.

FIG. 65 Tipuri de motoare DC

O altă categorie de motoare utilizate în deplasarea platformelor robotice sunt motoarele de tip stepper sau mai sunt numite pas cu pas. Avantajul utilizării acestor motoare este faptul că nu necesită cutii de viteza deoarece au un torque foare ridicat în comparație cu moarele DC. Viteza acestora dar și poziția rotorului sunt ușor controlabile în frecvență, iar frânarea motrului se poate face foarte simplu prin lasara bobinelor motorului alimentate. Fiecare revoluție a axului motorului este alcătuită dintr-o serie de pași discreți. Un pas este definit ca fiind rotația unghiulară a axului motorului la aplicarea unui impuls de comandă. Fiecare impuls face ca axul să se rotească cu un anumit număr de grade caracteristic fiecărui tip de motor. Un „pas unghiular” reprezintă rotația axului motorului la fiecare pas, și se măsoară în grade. Nivelul de putere al motoarelor pas cu pas variază, de la motoarele foarte mici cu un consum de ordinul mW, la motoarele mai mari cu un consum de ordinul zecilor de wați. De obicei motoarele pas cu pas au două faze, dar există și motoare cu trei sau cinci faze. Un motor bipolar cu două faze are o bobină/fază iar un motor unipolar are o bobină cu priză centrală/fază. De multe ori motorul unipolar este catalogat ca fiind un motor cu patru faze deși el are numai două faze. Există și motoare care au două bobine separate/fază – acestea pot fi conduse fie ca un motor bipolar sau ca un motor unipolar. În funcție de acest pas unghiular se poate face o clasificare a motoarelor pas cu pas. Alte avantaje ale motoarelor stepper sunt:

1). Rotația unghiulară a motorului este proporțională cu pulsul electric aplicat;

2). Motorul are moment maxim în poziția oprit dacă bobinele sunt alimentate;

3). Poziționare precisă (err. 3-5% la un pas, care nu se cumulează de la un pas la altul;

4). Răspunsuri excelente la pornit/oprit/schimbarea direcției de rotație;

Dezavantajul in cadrul utilizarii acestor motoare ar fi modalitatea mai complexă de comandă și curentul total consumat mai mare decât în cazul motoarelor DC. O definiție simplă a motorului pas cu pas este: „un dispozitiv electromecanic care convertește impulsurile electrice în mișcări mecanice discrete”. Axul motorului pas cu pas execută o mișcare de rotație în pași incrementali discreți când este aplicată în secvența corectă o comandă electrică în pulsuri. Rotația motorului este strâns legată de caracteristicile acestor impulsuri electrice. Astfel direcția de rotație a motorului este direct legată de secvența în care sunt aplicate pulsurile electrice, de asemenea și viteza de rotație este direct dependentă de frecvența impulsurilor electrice iar deplasarea unghiulară este direct dependentă de numărul de pulsuri electrice aplicate. Aceste motoare de tip stepper la rândul lor se impart in două categorii – bipolare și unipolare.

Motoarele pas cu pas unipolare

În această categorie intră atât motoarele pas cu pas cu magnet permanent cât și cele hibride cu 5 sau 6 fire. Ele au legăturile interne în general după cum se observă în figura urmatoare:

sau

FIG. 66 Stepper unipolar

În general firele 1 și 2 sau +V sunt legate la pozitivul sursei de alimentare, iar celelalte fire sunt legate alternativ la negativul sursei pentru a schimba direcția câmpului produs de bobină

FIG. 67 Stepper unipolar

În figura de mai sus este reprezentata o secțiune transversală printr-un motor pas cu pas cu magnet permanent sau hibrid (diferența dintre cele două tipuri de motoare nu este relevantă la acest nivel de abstractizare), a cărui bobine sunt prezentate alăturat. Astfel, bobina 1 este distribuită pe polii de sus și de jos ai statorului, pe când bobina 2 este distribuită pe polii din stânga și din dreapta ai statorului. Rotorul are 6 poli. După cum se observă în figură, curentul circulă din firul central la terminalul „a” lucru care face ca polul de sus al statorului să devină polul nord, iar cel de jos polul sud. Acest lucru face ca rotorul să fie atras în poziția prezentată. Dacă curentul prin bobina 1 este oprit și bobina 2 este alimentată rotorul va efectua o rotire cu 30 grade unghiulare , adică un pas. Dacă dorim să rotim motorul continuu se va aplica curentul pe cele două bobine conform secvenței de mai jos (la fel se consideră logica pozitivă, adică 1 înseamnă că bonina este străbătută de un curent, iar 0 înseamnă că bobina nu este alimentată):

Este foarte important de reținut că cele două jumătăți ale aceleiași bobine nu sunt alimentate în același timp. În prima secvență de mai sus, se observă că bobinele sunt alimentate pe rând, deci consumul este mai mic. În cea de-a doua secvență bobinele sunt alimentate în același timp și are ca rezultat creșterea momentului produs de motor de 1,4 ori față de modul de alimentare din prima secvență, dar cu un consum dublu. Motoarele pas cu pas cu magnet permanent pot ajunge la o rezoluție de 1,8 grade /pas, pe când motoarele pas cu pas hibride sunt normal construite cu o rezoluție de 3,6 grade și 1,8 grade /pas, dar cele mai performante pot ajunge până la o rezoluție de 0,72 grade /pas.

Motoarele pas cu pas bipolare

În această categorie, ca și în categoria motoarelor unipolare intră atât motoarele pas cu pas cu magnet permanent cât și cele hibride. Diferența dintre motoarele unipolare și cele bipolare este lipsa legăturii centrale la bobine. Din acest motiv motoarele bipolare sunt mai simple din punct de vedere constructiv, dar driver-ele folosite sunt mai complexe, ele trebuind să inverseze polaritatea fiecărei perechi de poli.

FIG.68 Stepper bipolar

După cum se observă în figura de mai sus, motorul are 4 fire, spre deosebire de cele unipolare care au 5 sau 6 fire. Pentru a putea putea recunoaște un motor pas cu pas bipolare de alte motoare cu 4 fire se măsoară rezistența dintre terminale. Circuitul de comandă pentru aceste motoare este alcătuit dintr-o punte H pentru fiecare bobină; pe scurt o punte H permite ca polaritatea tensiunii aplicate la capetele fiecărei bobine să fie controlată independent. Secvența de control pentru acest tip de motor este prezentată mai jos, folosind simbolurile – și + pentru a indica polaritatea tensiunii aplicate la terminalele bobinelor:

Terminal 1a +–+–+–+– ++–++–++–++–

Terminal 1b –+–+–+–+- –++–++–++–++

Terminal 2a -+–+–+–+– -++–++–++–++-

Terminal 2b –+–+–+–+ +–++–++–++–+

Timp –>

Servomecanismele RC

O altă categorie de motoare DC utilizate în robotică ce dispun de cutie de viteze și sunt comandate în semnal PWM o reprezintă servomecanismele RC. Din punctul de vedere al costurilor aceste sunt dispozitive de acționare avantajoase din foarte multe puncte de vedere. Pot fi foloite în aplicații unde este necesar un control precis al poziției axului motor de ieșire din servomecanism iar mișcarea aceastora este limitată mecanic la un unghi de aproximativ 180 grade. Pe de alta parte, cu mici modificări la partea mecanică, mișcarea de rotație a axului se poate transforma în mișcare de rotație continuă. Acest lucru ar reprezenta și principalul lor dezavantaj (modificarea de către utilizator pentru a obține o mișcare continuă de rotație).

FIG. 69 Servomecanism RC

Metoda de comandă a acestor mecanisme se realizează prin PWM sau altfel spus prin puls cu lațimea factorului de umplere variabil. Așadar pentru comandă sunt necesare doar 3 fire, din care 2 de alimentare și doar un fir de comandă, fir prin care se va trimite comanda in regim PWM . Pulsul de comandă corelat cu poziția unghiulară a rotorului, este prezentat in figura următoare :

FIG.70 Comandă PWM a servomecanismelor

În momentul când aceste motoare sunt comandate să execute o mișcare de rotație, poziția de comandă este menținută atât timp cât se trimite semnalul PWM.

Acumulatorii și alimentarea cu energie electrică

În domeniul roboticii, acumulatorii sunt nelipsiți datorită caracteristicilor foarte bune pe care le au în ceea ce priveste menținerea curentului și posibilitatea de încărcare. Există pe piața o gamă largă de acumulatori care se potrivesc în foarte multe aplicații, unii dintre aceștia fiind menționați și în continuare. In ceea ce priveste domeniul roboticii, de mult timp nu se mai utilizeaza bateriile de tip non-rechargeable deoarece sunt limitate din punct de vedere al autonomiei si utilizarii. In schimb, pe piata au aparut foarte multe tipuri de acumulatori ce functioneaza pe diferite principii si avand diferite caracteristici tehnice. Caracteristica sau reating-ul unui acumulator de energie electrică se exprimă în mod direct utilizând tensiunea acumulatorului și curentul generat de acesta. Ca și o caracterisitică legată de principiile de funcționare ale unui acumulator, când acesta este încărcat 100%, acesta va livra o tensiune cu 15% mai mare decât rating-ul lui în tensiune iar când acesta este descărcat, va livra o tensiune cu 15% mai mică decât ratingul lui în tensiune. Pentru a crește curentul livrat de un acumulator, se utilizează principiul legării celulelor în paralel, în acest caz curentul generat de acmulator dublându-se. Daca se dorește dublarea tensiunii generate de un acumulator, acesta se va lega in serie cu un acumulator de același tip. Pe orice acumulator se înscrie capabilitatea aceastuia in curent și dacă se ia un simplu exemplu de valoare a curentului (de pildă 1200mAh), acest lucru va însemna ca acumulatorul este capabil să livreze un curent de 1.2A timp de o oră sau 2.4A timp de jumatate de oră, înainte de a intra în panta de descarcare. Ca și o diferențiere, mA se referă la curentul pe care acumulatorul il livrează iar mAh se referă la cât de mult curent poate stoca în el. Luând exemplul de mai sus cu valoarea de 1200 mAh, acest lucru însaemnă că acumulatorul poate livra 1,2Ah și chiar 2.4Ah, dar când valoarea este notată cu 1200 mA, se reprezintă valoarea maximă a curentului pe care acumulatorul o poate genera și nimic mai mult. Legarea în paralel a acumulatorilor este o operațiune sensibila și necesită prudență din cauza faptului că împerecherea acumulatorilor de diferite feluri poate duce la o ineficiență maximă prin autodescarcare. Trebuie astfel având în vedere faptul că la punere în paralel a acumulatorilor este necesar ca aceștia să fie de același tip și trebuie ca încarcarea să se realizeze doar în momentul în care aceștia sunt conectați în paralel. Pentru a veni în ajutorul proiectanților de sisteme robotice, online se găsesc programe specializate ce calculează automat necesarul capacitații unui acumulator care ulterior va trebui sa fie utilizat într-un sistem robotic:

FIG.71 Interfață GUI pentru calcul capacitate acumulator

Tipuri de acumulatori utilizați în sistemele robotice:

-Acumulatori cu acid, aceștia au fost prezenți pe piața încă din anul 1950 și sunt și astăzi foarte des folosiți, fiind totodată foarte ușor de manipulat și ieftini. Principalul dezavantaj al acestor acumulatori este faptul că sunt voluminoși, grei și trebuie tot timpul ținuți încărcați, neavând capacitatea de a menține curenți mari precum o fac noile tipuri de acumulatori. Acest tip de acumulator, la randul sau, este de mai multe feluri iar primul dintre aceștia este acumulatorul de tip “wet cell” în care elemenții ce compun acumulatorul sunt scufundați în acid sulfuric:

FIG. 72 Acumulator cu acid

O altă categorie este reprezentată de acumulatorul cu gel :

FIG.73 Acumulatorul cu gel

Ultima categorie de acumulatori este cea care se bazează pe tehnologia Absorbed Glass Mat (AGM):

FIG.74 Acumulator AGM

Aceste din urma două tipuri de acumulatori, spre deosebire de acumulatorul clasic pe bază de acid, sunt mai scumpe dar au avantajele că nu se sulfatează sau degradează în timp iar șansa degajării de hidrogen în stare gazoasă este imposibilă. Acumulatorii de tip AGM au un avantaj net in fața acumulatorilor cu acid și acela este numărul de cicli de funcționare care este mult mai mare. O primă regulă în privința utilizării acumulatorilor cu acid este accea că în permanență acumulatorul trebuie încărcat full și nu parțial.

-Acumulatorii cu Lithium (Li-ion), reprezintă noul standard în ceea ce privește puterea portabilă. Capacitatea energetică a acestora este similară cu a acumulatorilor de tip NiMH, putere de ieșire apropiată de a acumulatorilor NiCad și o greutate cu 20-35% mai mică. Datorită acestui fapt, acumulatorii de acest tip au și un preț ridicat. Aceștia sunt construiți în totalitate din materiale care nu sunt toxice făcându-i din acest punct de vedere și cei mai siguri. Li este o substanță care se aprinde foarte repede și formează mari cantități de hidrogen când este pus în contact cu apă, astfel trebuie să se aibă în vedere o manipulare corectă a acestora.

FIG.75 Acumulatori Li-Ion

– Acumulatorii cu Li-polymer sunt foarte scumpi și au capabilități de debitare a curentului de ieșire până în jurul valorii de 30A.

– Acumulatorii cu NiCad (Nickel Cadmium) sunt foarte utili în construcția roboților de dimensiuni mici și medii. Aceștia pot debita un curent mare la ieșire și pot fi încărcați într-o oră sau două. Un dezavantaj al acestor acumulatori este acela că după multe încărcări pot stoca din ce în ce mai puțină energie iar acest efect poarta denumirea de efect de memorie. Pentru a preveni acest efect este necesar ca înainte de a se încarcă un acumulator cu NiCad trebuie că acesta să fie complet descărcat. FIG.76 Acumulatori NiCad

– Acumulatorii cu NiMH (Nickel Metal Hydride) pot fi încărcați ori de câte ori este nevoie, au un curent de ieșire bun, și cea mai bună capacitate energetică. Depinzând de anumiți factori, încărcarea unui acumulator cu NiMH poate dura și până la 10 ore. Avantajul față de acumulatorii cu NiCad este acela că pot avea foarte multe cicluri de încărcare-descărcare.

FIG.77 Acumulator NiMH

Afișajul cu leduri – Sisteme și caracteristici

În sistemele embedded cu microcontroller sunt utilizate diferite metode de interfațare cu tilizatorul iar cele mai des întâlnite sunt cele optice și acustice. Aceste sisteme auxiliare au rolul de a informa dar și de a avertiza în același timp asupra anumitor procese în curs la care utilizatorul trebuie să reacționeze printr-un feedback și să interacționeze cu sistemul electronic. În ceea ce privește strict partea de informare/avertizare optică există multiple soluții, printre care se pot enumera cele simple cu LED-uri, cele cu LED-uri și mesaje în mișcare, afișare cu LED-uri prin metoda POV, display-uri de tip 7 segmente, LCD-uri alfanumerice (cristale lichide), LCD-uri grafice (cristale lichide), LCD-uri cu feedback (touchscreen), LCD-uri grafice cu OLED, sisteme de proiecție cu laser.

SISTEM DE AFISARE CU LED-uri

Primul sistem mentionat în proiect, cel cu LED-uri este unul dintre cele mai simple în care se comandă aprinderea unui LED în momentul în care se dorește informarea sau atenționarea asupra unui eveniment. Ca și conectivitate într-un sistem embedded, aceastea sunt conectate întotdeuna prin intermediul unui rezistor de limitare a curentului de polarizare în scopul evitării defectării ireversibilie a diodei LED. Aceste LED-uri integrate în sistemele embedded sunt de regulă utilizate în regim PWM, metoda prin care se controleaza totodată și puterea luminoasă emisa de către diodă. De regulă în sistemele cu microcontroller, comanda PWM se realizează în sisteme de întrerupere prin intermediul TIMER-elelor microcontroller-ului. Dioda LED este o componentă electronică a cărei rezistență electrică depinde de valoarea și de sensul tensiunii aplicate între cele două borne ale acesteia. Mai concret, principala proprietate a unei diode este aceea că lasă curentul electric să treacă doar într-un singur sens. Echivalentul ei mecanic este supapa (de sens). Spre deosebire de rezistențe, bobine și condensatorii nepolarizați, bornele unei diode au semnificații diferite și de aceea fiecare a primit un nume special – anod și catod. Simbolul general al unei diode este prezentat in figura următoare:

FIG.2 Simbol dioda

Până acum in prezentul proiect am considerat dioda într-o situație idealizată: dacă este polarizată direct va conduce curentul electric (adică va avea rezistența electrică egală cu zero) iar dacă este polarizată invers nu va conduce curentul electric (adică va avea o rezistență electrică infinit de mare). În cazul real, în momentul în care dioda LED este polarizată direct, rezistența ei electrică nu este chiar zero, iar când este polarizată invers dioda lasă să treacă un mic curent, chiar dacă acesta este extraordinar de mic. Acest lucru este descris si in figurile următoare, unde dioda LED este alimentată ideal de la o sursă de tensiune continuă:

FIG.3 Metodele de polarizare ale diodei

Așa cum se vede în figura urmatoare, dioda lasă să treacă un curent direct (Id) atunci când este polarizată direct și un curent invers minuscul (Ii) atunci când este polarizată invers asa cum se poate observa si in urmatoarea figura următoare:

FIG.4 Caracteristici electrice de funcționare ale diodei

Funcția de culoare roșie arată ce curent (Idiodă) apare în diodă atunci când la borne aplicăm o anumită tensiune (Udiodă). Funcția nu este chiar simplă, așa că pentru a o înțelege mai ușor am împărțit graficul în patru zone. Fiecare din aceste zone este delimitată de valorile de pe axa Udiodă la care se întâmplă ceva important cu linia roșie. După cum poate ai intuit deja, în zonele A și B dioda este polarizată invers iar în zonele C și D este polarizată direct.

Zona C. Această zonă arată că dacă la bornele diodei aplicam orice tensiune între 0 V și Vp (în polarizare directă), aceasta nu va lăsa să treacă nici un curent. Vp este ceea ce se numește “tensiune de prag” sau “tensiune de deschidere (a diodei)”.

Zona D. Cuprinde zona în care diodei îi este aplicată o tensiune mai mare decât Vp (tot în polarizare directă). Se observă că cu cât încercăm să-i dăm o tensiune mai mare decât Vp, cu atât curentul prin ea crește mai mult. Trebuie să subliniem că după ce depășim Vp, curentul prin diodă crește extraordinar de repede. Asta înseamnă că dacă unei diode încercăm să îi aplicăm o tensiune cu doar foarte puțin peste Vp, rezistența electrică a acesteia va scădea până foarte aproape de 0 ohmi (adică dintr-un dispozitiv izolator devine brusc unul foarte bun cu o foarte bună conductivitate electrică).Atâta timp cât o diodă este deschisă, tensiunea de la bornele ei va fi întotdeauna doar cu foarte foarte puțin mai mare decât Vp.

Zona B. Este zona în care dioda este polarizată invers cu tensiuni între 0 și Vs, unde Vs este tensiunea de străpungere, adică tensiunea la care izolația diodei polarizare invers cedează.

Zona A. Este zona în care diodei polarizate invers i se aplică tensiuni mai mari decât poate ea suporta (Vs).

În ceea ce privește partea de funcționalitate în cazul diodelor de orice tip, dar specific pentru cazul LED-urilor, mai mult curent aplicat diodei însemna o intensitate luminoasă mai mare. În cazul în care un LED este conectat direct la o sursă de alimentare, acesta va începe să consume din ce în ce mai mult curent și în cele din urmă se va defecta iremediabil. Astfel, ori de cate ori se utilizează un system cu LED-uri, este recomandat sa se folosească și o rezistență de polarizare pentru reducerea curentului și protecția LED-ului. Tipurile de LED cele mai des întalnite și utilizate în sisteme inteligente cu microcontrollere/automatizări sunt descrise în figurile de mai jos :

1). Dioda LED de tip RGB:

Denumirea provine de la RGB= Red-Green-Blue și reprezintă în fond LED-uri de culori diferite într-un singur LED. Acest lucru inseamnă că se poate obține orice culoare posibilă din combinația celor 3 culori numite culori primare. Pe același principiu funcționează spre exemplu și afișarea imaginilor pe display/TV. Aceste LED-uri au 4 pini din care 3 pentru fiecare culoare și un pin comun (A sau K).

FIG.5 RGB LED

2). Flashing LED-s

Aceste LED-ri conțin pe lângă joncțiunea P-N responsabilă cu emisia undei luminoase și un circuit integrat care face posibilă funcția de toggle fără a fi necesar nici un controller adițional pentru această funcție. De asemenea se pot găsi pe piața și LED-uri de tip RGB care au aceasta funcție de toggle nu doar cu culorile primare ci pot emite sute-mii de culori.

FIG.6 Flashing LED

3). LED-uri SMD

Aceste LED-uri se diferențiază de cele convenționale doar prin forma package-ului și sunt utilizate în sistemele unde există necesitatea de subdimensionare. La rândul lor aceste LED-uri variază prin mărimea pachetului, culoarea emisă și de asemenea pot fi integrate și LED-urile RGB în acest tip de pachet(SMD).

FIG.7 SMD LED

4). High power LED’s

De regulă LED-urile de peste 1W sunt considerate LED-uri de putere și de regulă acestea sunt folosite în panouri publicitare și în automotive. LED-urile de putere necesită de asemenea un radiator.

FIG.8 LED de putere

5). LED-uri speciale

În aceasta categorie intră și LED-uri cu emisie în infraroșu (IR) care emit intr-p lungime de undă invizibilă ochiului uman. Acestea sunt utilizate majoritar în telecomenzile TV, dar nu numai. Materialele utilizate în design-ul și construcția acestor dispozitive LED sunt diferite și variază în funcție de spectrul emis.

FIG.9 LED special

Materialele utilizate în design-ul și construcția acestor dispozitive LED sunt diferite și variază în funcție de spectrul emis. În următorul tabel se pot observa materialele utilizate în procesele de producție a LED-urilor:

FIG.10 Lungime de undă în funcție de materiale

SISTEM DE AFIȘARE – PANOU/MATRICE LED-uri (dot matrix display)

Acest sistem de afișare cu LED-uri este compus din multiple linii și coloane realizate cu LED-uri (se utilizează și RGB-uri de asemenea) care sunt conectate între ele, așa cum se poate observa și în exemplul de mai jos:

FIG.11 Panou matrice de LED-uri

Acest tip de afișor se utilizează atunci când se dorește afișarea unor mesaje care rulează dar totodată permite și afișarea de caractere custor create de catre utilizator.Un dezavantaj în cazul acestui tip de device afișor este acela că necesită un numar mare de pini de I/O pentru comandă.

SISTEM DE AFIȘARE – METODA POV

Această metodă de afișare a mesajelor este una foarte interesantă prin faptul că doar prin intermedul a unei singure linii de LED-uri se pot afișa mesaje diferite, chiar și imagini. Metoda numită POV provine de la „persistence of vision” și se explica foarte simplu prin faptul că o imagine rămâne pe retina unei persoane timp de 1/16 secunde. Astfel, în acest sens, pentru afișarea unui mesaj/caracter se comanda aprinderea secvențială în timp a unui număr de LED-uri așa cum se poate observa și în figura următoare (ce conține 3 secvențe) :

FIG.12 Compunere imagine-metodă PV

Acest tip de elemet afișor necesitp adițional și un motor cu rotație controlată (ex. stepper) în funcție de care se realizează timming-ul și secventa de comandă a LED-urilor. Se utilizează cu precădere în sisteme homemade cu microcontroller pentru ceasuri, afișare de mesaje pe roțile biciletei sau mai nou pe roțile mașinilor:

FIG.13 Aplicații sisteme POV

SISTEM DE AFIȘARE – 7 SEGMENTE

Așa cum spune și denumirea, acest tip de afișor este compus din 7 LED-uri așezate rectangular ce reprezintă segmentele de afișare ale modulului. De regulă numarul LED-urilor este 8, deoarece integrat în acest modul 7-segmente se află și punctul, așa cum se vede și din figura următoare:

Fiecare LED din aceasta configurație reprezintă parte din afișor și compune în final o cifră/caracter. De asemenea pot exista afișoare de tip 7 segmente sub diferite culori și sub diferite configurații sub care pot fi folosite.

FIG.14 Afișaj 7-seg

Ca si configuratii, există doua tipuri de afisaje 7-segmente și anume cu anod comun și cu catod comun, așa cum este descris și în următoarea figură.

FIG.15 Afișaj 7-seg

Chiar dacă aceste afișaje sunt folosite de foare mult timp pe piață, acestea nu și-au pierdut utiliatea și pot fi înca remarcate în multe sisteme industriale datorită fiabilitatii (ex.voltmetre, ampermetre, multimetre,etc). Așadar pentru comandă acestor dispozitive de afișare cu LED-uri este necesar un număr de 7 pini I/O de control de la microcontroller, dacă se utilizează în această configurație. Așa cum a fost precizat anterior în cadrul acestui proiect, există două tipuri de afișaje 7 segmente și anume cu anod comun sau cu catod comun. Acest lucru înseamna că afișajul va avea un anod comun al tuturor LED-urilor și va fi conectat la Vdd-ul sistemului și comanda se va face cu 0V pe fiecare pin de comandă sau viceversa, cu catod comun, unde toate terminalele K ale LED-urilor vor fi conectate împreuna la Vss (masa) sistemului și comandă de afișare se va realiza prin aplicarea de 5V pe fiecare terminal.

SISTEM DE AFIȘARE – LCD alfanumeric

Acest modul de afișare este des folosit in sistemele embedded cu microcotrollere si de regulă comunicația se realizează prin intermediul a 4 biți de date și 3 biți de control. Acest tip de display este de asemenea folosit și în proiectul de față, exact în această configurație (4 biți de date și 3 biți de control). LCD-ul alfanumeric se poate găsi în diferite configuratii și arii de afișare, spre exemplu 162 caractere, 20×4 caractere și majoritatea acestora au la baza controller-ul HD44780. LCD-ul alfanumeric utilizat în proiectul de față va fi pe larg detaliat în următoarele capitole ale proiectului din punct de vedere hardware și software. Fizic acesta se prezintă astfel:

FIG.16 LCD alfanumeric 16×2 caractere

Prin intermediul acestui tip de display se pot afișa mesaje informative și de averizare dar în acelasi timp utilizatorul iși poate defini propriile caractere pe care dorește să le afișeze pe display prin intermediul unor funcții speciale ce utilizeaza CGRAM-ul si CGROM-ul controller-ului de afișare.

În proiectul de față, LCD-ul alfanumeric de 16×2 caractere a fost utilizat ăn scopul afișării celor 4 parametri masurați (tensiune, temperatură, umidiate, viteză vânt) în paralel cu transmisia acestora via wireless bluetooth.

SISTEM DE AFIȘARE – LCD GRAFIC (GLCD)

Aceste LCD-uri sunt utilizate în sistemele embedded unde este necesară afișarea unor caractere custom/imagini ce sunt compuse din pixeli. Majoritatea acestor LCD-uri utilizate în sistemele embedded cu microcontrollere au la bază controller-ul KS0108. De asemenea capabilitatea de afișare a acesor LCD-uri este exprimată în matrice de pixeli, spre exemplu 128X64 pixeli.

FIG.17 GLCD

SISTEM DE AFIȘARE – TOUCHSCREEN LCD

LCD-urile de acest tip sunt cu precădere utilizate în platformele electronice unde este necesar un feedback de la utilizator în funcție de informația afișată de display. La rândul lor, aceste module LCD sunt de mai multe tipuri și putem aminti pe cele cu touchscreen monocrom și pe cele tuchscreen color.

FIG.18 Touchscreen display

SISTEM DE AFIȘARE – OLED LCD

Denumirea de display OLED provine de la „Organic Light Emitting dioded”. Consumul de energie comparativ cu un display LCD convențional este mult mai mic deoarece pentru afișare se consuma energie per pixel. La LCD-urile conventionale, consumul ridicat de energie este determinat de sursa de backlight care trebuie să lumineze pixelii display-ului din parte din spate. Acest lucru face ca acest tip de LCD să fie unul dintre cele mai eficiente și în același timp foarte subțiri tehnologii.

FIG.19 OLED display

SISTEM DE AFIȘARE – PROIECȚIE CU LASER

Acest tip de afișare se utilizează cu precadere în domeniul pubilicitar unde proiecțiile laser trebuie facute pe o suprafață mare dar în același timp se utilizează de o bună perioadă de timp și în domeniul automotive pentru afișarea de pe parbriz, de tip „Head Up Display”.

Capitolul II

PREZENTAREA CONSTRUCTIVĂ A MINIROBOTULUI MOBIL

2.1. CONSTRUCȚIA PRACTICĂ A MINIROBOTULUI

Asa cum a fost mentionat anterior in cadrul acestui proiect, partea practica a fost realizata in intregime cu materiale usor prelucrabile, unde cea mai mare importanta o are materialul tip FOREX, un material cu proprietati mecanice si de rezistenta foarte bune. Printre elementele platformei robotice realizate din acest material se numara si cadrul de baza al platformei, parti ale bratului, elementele de fixare ale modulelor electronice dar si ale servomecanismelor.

FOREX : acest material a fost utilizat datorita faptului ca se prelucreaza mecanic foarte usor si este rezistent la temperatura si umiditate in acelasi timp. Prelucrarea acestui material in cazul de fata s-a realizat preponderent cu un cutter dar si cu panza de traforaj acolo unde a fost necesar, in special se poate aminti la pozitionarea servomecanismelor. Tot aici se poate aminti faptul ca in special la constructia bratului robotic s-a folosit si Aluminiul, asa cum se poate observa in urmatoarea figura :

FIG.20 Materiale utilizate in constructia platformei robotice

Avantajul utilizarii acestui material este acela ca se poate lipi foarte bine cu adeziv, prinderea rezultata fiind de foarte buna calitate si foarte rezistenta la stress din punct de vedere mecanic. Fixarea modulelor electronice pe cadrul de FOREX se realizeaza prin intermediul suruburilor si a distantierelor realizate tot din acest material. Dimensionarea bazei de FOREX pe care s-au montat toate modulele electronice s-a realizat imediat dupa ce partea HW a fost finalizata, moment in care toate modulele au fost suprapuse pe materialul de FOREX rezultand in final dimensiunile necesare sau altfel spus suprafata necesara pentru dispunerea modulura a ansamblelor electronice.

In ceea ce priveste partea practica a constructiei sistemului electronic, s-au utilizat PCB-uri pentru prototipare (cablaj de test) iar realizarea traseelor de interconexiune s-a relizat prin metoda „din aproapei in aproape”, acest lucru insemnand ca procesul de lipire cu fludor incepe cu lipirea unei celule de pe PCB, apoi cu urmatoarea din imediat proxima si in final se realizeaza puntea dintre ele. Acest proces se repeta de mai multe ori in functie de lungimea traseului dorit si in final cablajul cu lipiturile deja realizate arata ca in figura urmatoare :

FIG.21 Procesul de lipire-constructie trasee

Acest lucru inseamna ca toate traseele integral sunt realizate sub aceasta metoda, neexistand conexiuni slab implementate si totodata neexistand fire de conexiune pe sub PCB care sa poata produce scurt-circuite. In faza de design a proiectului practic, in prima faza s-a realizat partea hardware si partea de programare iar in final, baza de sustinere a platformei robotice s-a dimensionat in asa fel incat toate modulele electronice sa poata incapea. De asemenea s-a luat in considerare si arcul de cerc descris de rotatia bratului mobil in asa fel incat sa nu interactioneze cu modulele electronice pentru a se evita deteriorarea ansamblelor si a scurt-circuitelor. Baza bratului de rotatie a fost realizata din mecanismul unui element rotativ tip roata mobila 360 grade, a carui ax trece prin baza de sustinere a platformei robotice. Bratul se continua apoi cu un element din aluminiu pe care este montat restul sistemului mecatronic.

Servomecanismele care au fost integrate in sistemul de fata sunt servomecanisme mini si micro ce sunt controlate de catre microcontrontroller in regim PWM si posibilitate de rotire 0-180 grade. Aceste au fost montate in sistem cu prindere in suruburi pe material FOREX, dupa incadrare si decupare prin taiere. Spre exemplu, primul servomecanism este integrat in sistem asa cum se poate observa si din figura urmatoare :

La mecanismul de rotire al bratului robotic, primul servomecanism prezentat si in figura alaturata nu este conectat direct la axul de rotatie al bratului ci miscarea impusa este transmisa prin intermediul a doua elemente de atenuarea miscarii (catre servomecanism), elemente realizate din material plastic.

FIG.22 Servomecanism baza-rotor

Prinderea acestor elemente de atenuare de servomecanism si respectiv de bratul rotor s-a realizat prin intermediul suruburilor si holsuruburilor.Miscarea impusa de servomcanism bratului robotic este limitata software (<180 grade) pentru a se evita deteriorarea servomecanismului. Asa cum se epoate observa si in figura de mai sus, elementul intermediar din Aluminiu face legatura intre servomecanism si bratul de mijloc realizat din material FOREX. Prinderea acestor doua elemente se realizeaza prin suruburi cu piulita.

Urmatorul servomecanism, denumit in proiect si servo middle sau servomecanismul central, este montat pe bratul din material de FOREX, proces executat in prima faza prin decupare si incadrare servomecanism si mai apoi prindere in suruburi.

Servomecanismul utilizat in aceasta articulatie este unul a carui putere este mult mai mare in comparatie cu celelalte servomecanisme deoarece acesta este responsabil pentru ridicarea greutatii pe brat. In acelasi mod, comanda acestui servomecanism se realizeaza prin transmiterea unui semnal de comanda PWM, procesat si generat de catre microcontroller in regim de intreruperi.

FIG.23 Servomecanism middle

Urmatorul element constitutiv din constructia btatului robotic il reprezinta bratul din Aluminiu angrenat se srvomencanismul mai sus descris. Acest brat este realizat din profil L din Aluminiu si are o greutate foarte mica dar rezistenta mecanica (indoire si torsiune) foarte mare. S-a ales materialul Aluminiu pentru constructia acestui brat deoarece vibratiile provenite de la sistem sunt preluate si atenuate mult mai bine decat ar fi facut-o FOREX-ul. Conectarea btatului la servomecanismul angrenant se realizeaza direct la axul acestuia prin prindere ferma in suruburi, asa cum este descris si in figura urmatoare :

FIG.24 Sistemul de prindere servomecanism-brat

Servomecanismul mai sus descris este de putere mai mare, comparativ cu celelalte, avand capabilitiatea de aproximativ 4 Kg forta.S-a optat pentru un servomecanism mai puternic din punct de vedere al torqe-ului, deoarce acesta este elementul principal prin care bratul este capabil sa ridice obiecte mai grele. Comanda acestui servomecanism este o comanda in impuls modulat in latime (PWM), impuls generat de catre microcontroller-ul PIC18F46K80 cu ajutorul timer-elor si a functiei de intrerupere. Totodata pe bratul realizat din material-Aluminiu sunt cablate si firele de alimentare si semnal ce provin de la servomecanism-ul gripper-ului si cel al articulatiei finale. S-a utilizat un material maleabil (culoare neagra) de tip plastic topic pentru securizarea firelor de alimentare si de semnal.

Articulatia finala este de asemenea realizata cu ajutorul unui servomecanism cu o capabilitate de 1.6Kg forta, care permite articularea bratului secundar pe verticala (0-180 grade), servomecanism care este la fel limitat software. Servomecanismul este direct conectat la bratul final si cel secunar prin suruburi. Firele de alimentare si cel de semnal provenite de la servomecanismul „ gripper”sunt pozitionate pe brate in asa fel incat sa permita acestora o miscare cat mai ampla, fara sa afecteze sistemul din punct de vedere motric. Servomecanismul ce angreneaza bratul robotic final este cel prezentat in figura urmatoare :

FIG.25 Servomecanism brat final

Ultimul mecanism component al bratului robotic este „gripper-ul” prin intermediul caruia este posibila manipularea obiectelor de catre utilizator prin intermediul comenzilor wireless. Mecanismul gripper a fost construit de la 0, utilizand ca material principal FOREX-ul si prelucrare prin taiere si polizare. Ca si etape de constructie, in prima faza a fost gandit mecanismul gripper-ului si apoi a fost pozitionat servomecanismul pe bratul final al robotului. Ulterior s-a montat un element intermediar din Aluminiu care face legatura dintre servomecanism si gripper si in final s-a realizat elementul de actionare din Aluminu prin intermediul caruia servomecanismul actioneaza gripper-ul. Elementul de actionare a fost construit prin prelucrearea unei folii de Aluminiu cu o dimensiune finala de 5cm(lungime) si 4mm latime. Gripper-ul este actionat intr-un mod secvential, acest lucru insemnand ca utilizatorul il poate inchide sau deschide progresiv prin comanda wirless bluetooth. In figura urmatoare se poate observa modul in care a fost pozitionat si implementat in sistem gripper-ul:

FIG.26. Mecanism gripper

2.2. DESCRIEREA HARDWARE A SISTEMULUI PE MODULE

FIG.27 Descrierea modulara a sistemului

1).Microcontroller-ul PIC18F46K80

fig.

Unitatea centrala de procesare a semnalelor digitale si analogice consta in microcontroller-ul PIC18F46K80 pe 8 biti ce lucreaza la o frecventa de 64Mhz si executa un numar de 16 milioane de instructiuni pe secunda. Tensiunea de alimentare a microcontroller-ului este de 5V, dar poate functiona de asemenea si la 3.3V. Microcontroller-ul ce integrat in acest sistem electronic are rolul de a procesa semnalul analogic provenit de la senzorul de tensiune si sa afiseze valoarea pe LCD-ul alfanumeric, sa comande motoarele de tractiune-directoare, sa comande cele 4 servomecanisme ale bratului, sa comunice wireless bluetooth cu utilizatorul si in final sa execute comenzile provenite de la utilizator.

2). LCD-ul alfanumeric

fig.

LCD-ul alfanumeric este utilizat in sistem pentru afisarea diferitelor mesaje de interes, a valorii tensiunii provenite de la senzorul analogic de tensiune dar si pentru diferite avertizari precum cea la scaderea tensiunii acumulatorilor sub un anumit prag. Spre exemplu in momentul in care tensiunea acumulatorilor este mai mica de 10V atunci pe LCD-ul alfanumeric se va afisa un mesaj de atentionare. LCD-ul alfanumeric comunica cu microcontroller-ul printr-un protocol de date ce contine 4 biti de date si 2 de control, asa cum va fi descris in urmatoarele capitole ale proiectului.

3). Modulul BLUETTOH

fig.

Modulul bluetooth utilizat este HC-05 si poate fi setat ca slave sau master iar principala functie a acestuia in sistem este de a prelua comenzile trimise de utilizator in timp real. Viteza de transfer a datelor intre modul bluetooth si micorcontroller este de 9600 baud (baudrate 9600 biti/sec). Alimentarea modulului bluetooth se realizeaza pcu tensiunea de 5V, dar acest modul poate fi alimentat si la tensiunea 3.3V. In cazul de fata, pentru ca si microcontroller-ul functioneaza la tensiunea de 5V, nu a fost necesara utilizarea translatoarelor logice de nivel de la 5 la 3.3V sau viceversa.

4). Modul dublu de stabilizare

fig.

Tensiunea de alimentare a tuturor moduleleor electronice din sistem are valoarea de 5V si este obtinuta prin intermediul elementului stabilizator pozitiv de tensiune de tip 7805, element ce garanteaza la iesire o tensiune stabilizata de 5V cu riplu mic si un curent maxim de 1.5A. Din cauza faptului ca in momentul actionarii motoarelor de curent continuu sau in momentul actionarii servomecanismelor, curentul consumat creste semnificativ, acest lucru duce la o scadere generala a tensiunii de alimentare pentru o scurta perioada de timp, moment in care microcontroller-ul va intra in secventa de reset. Acest lucru nu este dorit (resetarea sistemului in timpul functionarii) si exact din aceasta cauza, dupa mai multe experimente practice, s-a constat faptul ca separarea blocurilor de stabilizare pentru circuite si pentru motoare si servomecanisme elimina reset-ul microcontroller-ul. Se poate observa in figura descriptiva modulara de mai sus ca in sistem s-au implementat 2 elemente stabilizatoare pozitive de tensiune pentru a indeparta secventa nedorita de reset.

5). Modulul dublu punte H – L298

fig.

Modulul L298 este utilizat in sistenul de fata pentru comanda celor doua motoare DC cu rol de tractiune si directivitate. Prin intermediul acestui circuit integrat ce contine in structura sa interna 2 punti H, se realizeaza comanda independnta a celor 2 motoare si de aici posibilitatea platformei robotice de a se roti pe loc. Comunicatia circuitului L298 cu microcontroller-ul se realizeaza prin intermediul unui protoc de comunicatie pe 6 biti, dintre care 4 biti pentru directivitate si 2 biti pentru functiile de enable.

6). Conexiunea LCD & contrast

fig.

Asa cum a fost mentionat anterior in proiect, LCD-ul alfanumeric comunica cu microcontroller-ul prin intermediul unui protocol pe 7 biti, dintre care 4 biti sunt biti de date si 3 biti sunt utilizati in controlul datelor. De asemenea pe PCB-ul central al sistemului electronic se regaseste si un semireglabil prin intermediul caruia se poate varia contrastul de afisare pe display-ul alfanumeric.

7). Bus comuncatie driver L298

fig.

Prin intermediul bus-ului de comunicatie se transmit semnalele de comanda catre modulul dublu punte H de tip L298. Asa cum a fost amintit anteriror in cadrul proiectului, circitul L298 comunica cu microcontroller-ul prin intermediu unui protocol de 6 biti.

8). Power LED indicator

fig.

Aceste doua LED-uri de culoare verde sunt conectate la iesirea fiecarui stabilizator pozitiv de tensiune cu scopul de a indica buna functionare a acestora. LED-urile sunt alimentate la tensiunea stabilizata de iesire de 5V prin intermediul unor rezistori de polariza utilizati in scopul reducerii curentului de polarizare si, deci, a protectiei LED-urilor la supracurent.

9). Switch ON/OFF genereal

fig.

Acest swith este utilizat in sistemul electronic pentru intreruperea/alimentarea cu energie electrica a modulelor pe polul pozitiv de tensiune direct de la pachetul de acumulatori.

10). Mufa incarcare acumulatori

fig.

Mufa este utilizat doar pentu procesul de incarcare al acumulatorilor si este recomandat ca tensiunea aplicata la pinii acestei mufe sa fie progresiva si sa nu depaseasca valoarea de 12V. Totodata in permanenta trebuie monitorizat si curentul de incarcare consumat de acumulatori in ideea de a nu se depasi valoarea maxima de incarcare de 0.5A.

11). Servomecanism SG90

fig.

Servomecanismul SG90, asa cum a fost mentionat si anterior in cadrul proiectului, este utilizat in procesul de rotire a bratului robotic, intr-un arc de cerc descris pe aproximativ 100 grade.

12). Servomecanism S3003

Tipul acesta de servomecanism este diferit de celeleate utilizate, din punctul de vedere al puterii dezvoltate, putere care atinnge valoarea de aproximativ 4Kg/cm forta. S-a utilizat acest tip de servomecanism deoarece la ridicarea obiectelor este necesara o forta mai mare pentru angrenare.

Fig.

13). & 14). Motoare de curent continuu

Aceste motoare sunt utilizate nu numai in procesul de tractiune dar si in procesul de directivitate, oferind platformei robotice posibilitatea schimbarii directiei de inaintare dar si posibilitatea acesteia de a se roti pe loc. Cele doua motoare de curent continuu sunt motoare DC ce au integgrat in structura loc interna cate un reductor cu factor de 120 :1, acest luctu insemnand ca axul de iesire executa doar 1 rotatie raportat la axul motorului intern care realizeaza un numar de 120 de rotatii. In acest mod, puterea transferata la axul de iesire dinspre motorul DC va fi cu mult amplificata. Cele doua motoare de curent continuu sunt controlate in regim PWM de catre microcontroller-ul PIC18F46K80, semnalul PWM fiind aplicat modulului L298 (dubla punte H) care comanda mai departe cele motoarele DC. Consumul maxim de curent in regimul normal de functionare al platformei robotice nu depaseste valoarea de 250mA la tensiunea stabilizata de 5V.In orice caz, semnalul analogic corespondent semnalului PWM generat de microcontroller este cu mult mai mic decat valoarea maxima de 5V.

15). Pachetul de acumulatori

Fig.

Pachetul de acumulatori este compus din elemente/celule de tip Li-Ion ce genereaza o tensiune optima de 3.7V si sunt capabilesa genereze un curent de 2800mAh. Insumat, puterea pachetului de acumulatori este de aproximat 50W si permite platformei robotice sa functioneze in regim normal de lucru nu mia putin de 1h. Amplasarea pachetului de acumulatori este realizata in zona din fata a platformeicu scopul de a oferi o stabilitate sporita la deplasare dar si la manevrarea diferitelor obiecte.

2.3. Lanțul cinematic al sistemului

Bratul robotic insumeaza un numarde 3 grade de liberatate (DOF) iar schema de principiu a cinematicii bratului robotic este urmatoarea :

FIG.1 Schema cinematica brat

Bratul robotic al platformei este actionat asa cum a fost amintit si anterior in cadrul proiectului prin intermediul a 4 servomecanisme de tip RC care sunt comandate de catre microcontrontroller prin semnale modulate in durata de tip PWM. Micarile executate de articulatiile bratului sunt doar miscari cinematice de rotatie limitate software. Sistemul de prindere al bratului pe platforma robotica mobila este realizat prin intermediul unui ax de

FIG2. Miscarea de rotatie pe verticala

rotatie vertical ce executa o miscare de rotatie de 110 grade, miscare transmisa de la servomecanism la brat prin intermediul unor tije flexibile ce au rol de atenuare a miscarilor de feedback de la brat.Servomecanismul este de tip SG-90 si este capabil sa livreze o putere de aproximativ 1.6 kg forta, mecanismul de reductie integrat al acestuia este relizat din elemente din plastic iar miscare imprimata descrie un arc de cerc de maxim 180 de grade. Asa cum a fost precizat si anterior in proiect, in acest caz specific, motorul excuta o miscare de rotatie de 110 grade pe verticala, acest lucru insemnand 1 grad de libertate adugat in lantul cinematic (rotatie vericala brat). Prinderea elementelor mecanice ale bratului s-a realizat utilizand preponderent suruburi/saibe/piulite si holsuruburi iar servomecanismul este montat prin decupare FOREX si lipire servomecanism. S-a utilizat acest ansamblu din materiale de FOREX + Aluminiu in scopul reducerii grutatii totale a bratului robotic.

Urmatoarea articulatie a bratului robotic are la baza servomecanismul S3003 care are o putere dezvoltata mult mai mare decat a celorlate servomecanisme. Miscarea descrisa de ceasta articulatie este o miscare de rotatie pe axa Y care are o amplitudine de 100 grade si adauga sistemului inca un grad de libertate.

FIG.3 Articulatie middle

Asa cum se poate observa si din figura urmatoare, servomecanismul este montat pe bratul robotic prin decuparea materialului din FOREX si ulterior prindere in suruburi. Bratul mobil din aluminiu este conectat direct prin suruburi la axul de rotatie al servomecanismului.

FIG.4 Servo middle

Forta dezvoltata de acest servomecanism este cnosiderabil mai mare comparativ cu a celorlalte servomecanisme si anume de aproximatv 4.6 Kg-forta.

In figura de mai sus se poate observa modul incare servomecanismul final este conectat pe bratul robotic prin intemediul prinderilor in suruburi cu piulita si interconexiunilor din plastic. Acest servomecanism actioneaza bratul robotic pe directie verticala, oferind astfel sistemului un grad de libertate in plus. Arcul de cerc descris de miscarea acestui servomecanism este de 180 de grade, miscare ce este limitata de microcontroller in urma testarilor practice (0-180 grade)pentru a se evita deteriorarea ireversibila a acestora. Axul servomecanismului ce angreaneaza bratul final este conectat la bratul secundar(bratul de mijloc) iar corpul servomecanismului este conectat la bratul final, comanda servomecanismului fiind de tip PWM, la fel ca pentru toate servomecanismele.

FIG.5 Servo gripper

In figura de mai sus este descris ansablul brat-gripper si modul in care este actionat. Prinderile firelor de alimentare si semnal sunt dispuse pe componenta bratului robotic din aluminiu iar prinderile sunt realizate cu ajutorul materialului de tip plastic topit(de culoare neagra). Actionarea servomecanismului (SG-90) se realizeaza in mod secvential la inchidere si la deschidere prin comanda PWM aplicata acestuia. Mecanismul de angrenare a gripper-ului este realizat din material de aluminiu, material provenit dintr-un profil de Aluminiu. Deschiderea gripper-ului este de asemenea limitata software si are o plaja de valori de aproximativ 0-5cm, putand apuca obiecte, de preferat cu consistenta/densitate scazuta (ex. mingi burete, etc). Gradul de presiune aplicat de gripper catre un obiect este controlat de catre utilizator in mod secvential (atat timp cat utilizatorul tine butonul apasat, gripper-ul se inchide/deschide secvential).

2.4. Structura axelor de rotație a minirobotului mobil

2.5. Platforma mobilă a minirobotului

Fig. Platforma minirobotului mobil

Capitolul III

SISTEMUL DE COMANDĂ A MINIROBOTULUI MOBIL

Criterii pentru alegerea unui microcontroler

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). Sunt necesare circuite suplimentare;

2). Liniile I/O sunt suficiente ;

3). Există toate interfețele solicitate de aplicație și nu există interfețe în plus;

4). Există capacitatea de memorare suficientă: RAM, ROM;

5). Microcontroller-ul 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 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. Pentru o privire de ansamblu, in urmatoarea figura este descrisa schema bloc a unui microcontrolle/arhitectura.

FIG.28 Schema bloc a unui microcontroller

3.2. ARHITECTURA INTERNA A UNUI MICROCONTROLER

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 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 (pinout)

FIG.29 Descriere microcontroler PIC18F46K80

PARTICULARIZARE –DIAGRAMA BLOC UC- PIC18F46K80

In cazul de fata microcontroller-ul lucreaza la o frecventa de clock de 64Mhz iar tensiunea de alimentare este de 5V. Asa cum a fost mentionat anterior in proiect, in prima faza de proiectare s-a folosit si convertorul ADC al microcontroller-ului pentru achizitioanarea de semnale analogice provenite de la cei patru senzori ai sistemului (3 senzori analogici si 1 senzor digital). Dupa mai multe teste practice s-a confirmat ca citirea unui semnal PWM nu poate fi realizata cu un convertor ADC deoarece acesta va citi valoarea instantanee a tensiunii si nu valoarea medie. In cele ce urmeaza se prezinta schema bloc standard a microcontroller-ului folosit in cadrul acestui proiect.

Alimentarea microcontroller-ului se realizeaza cu tensiunea de maxim 5V, tensiune ce este asigurata de elementul stabilizator 7805, capabil sa stabilizeze si sa filtreze(prin intermediul condensatorilor de pe in-out) orice tensiune din intrare mai mica de 18V. Astfel in momentul in care in intrarea stabilizatorului pozitiv de tensiune se aplica o tensiune mai mare de 5V si mai mica decat 18V, la iesirea acestuia se va regasi in permanenta tensiunea stabilizata de 5V.

FIG.30 Descriere modulara microcontroler 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 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;

• Dispozitivele I/O nu ocupă spațiu de memorie;

• Decodificatorul de adrese pentru dispozitivele I/O este mai simplu;

Dezavantaje ale mapării în spații separate:

• instrucțiunile I/O sunt mai puțin flexibile în ;

• 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.

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 .

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.31 Microcontroler 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 capabilitatea de a executa un numar de 16 milioane de instructiuni pe secunda, lucru ce il recomanda in proiecte de acest gen. In urmatoarea figura este descrisa arhitectura de tip Harvard unde memoria de date si memoria de program sunt complete diferentiate, acest lucru fiind ajutand la marirea vitezei de procesare.

FIG.32 Arhitectura Harvard

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 – citireadin 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;

FIG.33 Executia unei instructiuni

In ceea ce priveste 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.34 Resursele microcontroller-ului PIC18F46K80

Micocontroller-ul PIC18F46K80 dispunde de urmatoarele sisteme implementate:

• 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

Functiile pinilor de I/O (datasheet)

FIG.35 Descriere pini I/O –PIC18F46K80

PINUL MCLR/Vpp

Acest prin are rolul de MASTER CLEAR OR RESET .

– 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.36 Conectare pin MCLR in circuit

CONVERTOARELE ADC

Intrările/ieșirile analogice și convertoarele A/D nu sunt considerate ca parte definită în contextul unui calculator; aceste elemente sunt importante în schimb atunci când considerăm un microcontroller. Prezența modulelor A/D și D/A în structura unui MC contribuie la “puterea”acestuia în aplicații deoarece interfațarea cu mediul presupune necesitatea de a prelucra sau de a elabora mărimi analogice. Convertoarele A/D sunt des întâlnite printre perifericele on-chip. Convertoarele D/A nu sunt întâlnite în mod uzual printre unitățile componente deoarece sunt relativ ușor implementate în exterior. Un convertor D/A simplu poate fi realizat folosind un timer în mod PWM și integrând pulsul în exterior cu un simplu circuit RC.

Convertoarele A/D integrate pe chip sunt convertoare cu aproximații succesive sau mai rar, convertoare cu integrare. Însușirile convertoarelor nu sunt deosebite; sunt convertoare lente în comparație cu cele implementate în circuite independente. Timpii de conversie obișnuiți sunt plasați în intervalul 10μs-25μs. Rezoluția este de 8, 10 sau 12 biți iar precizia de +/-1/2LSB. Modulul de conversie este prevăzut și cu un multiplexor analogic, astfel sunt disponibile mai multe canale de intrare. Unele MC sunt echipate și cu circuit de eșantionare/memorare. În cazul în care circuitul de eșantionare/memorare lipsește, semnalul analogic trebuie menținut constant pe durata unei conversii. Tensiunea de referință necesară convertorului poate fi generată în circuit sau dacă nu, este necesar să fie furnizată din exterior. În continuare, este prezentată o schemă bloc simplă a unui modul de conversie A/D. Circuitul analogic de intrare constă într-un multiplexor analogic, un circuit de eșantionare/memorare și un convertor A/D cu aproximații succesive. Tensiunea de referință pentru convertor și masa analogică sunt furnizate din exterior la pini speciali. Convertorul ADC al microcontroller-ului PIC18F46K80 are 11 intrari multiplexate si permite unui semnal analogic de a fi convertit intr-o valoare exprimata in digital pe un cuvant de 12 bit. Convertourul ADC are la baza un numar de 3 registri SFR prin intermediul carora se realizeaza setup-ul pentru achizitie:

• A/D Control Register 0 (ADCON0)

• A/D Control Register 1 (ADCON1)

• A/D Control Register 2 (ADCON2)

• A/D Port Configuration Register 1 (ANCON0)

• A/D Port Configuration Register 2 (ANCON1)

• ADRESH (the upper, A/D Results register)

• ADRESL (the lower, A/D Results register)

Registrul ADCON0 controleaza operatiile modulului A/D:

FIG.37 Descriere registru ADCON0

Prin intermediu registrului ADCON1 se configureaza tensiunea de referinta si trigger-ul special

FIG.38 Descriere registru ADCON1

Prin intermediul registrului ADCON2 se realizeaza configurarea clock-ului ce va triggera achizitia de semnale, justificarea (left – right) si achizitia programata a semnalelor:

FIG.39 Descriere registru ADCON2

Convertorul ADC al microcontroller-ului este un convertor de tip diferential, care masoara diferenta de tensiune dintre doua canale ADC si apoi este convertita intr-un semnal digital exprimat de 12 biti.

FIG.40 Conversia analogica in mod diferential

De asemenea acest convertor poate fi setat prin intermediul registrului ADCON1 <2:0>(bitii CHSN) ca sa lucreze in mod unitar, acest lucru insemnand ca modulul convertor ADC va masura diferenta de potential dintre pinul analogic de intrare si masa. Altfel spus, prin intermediul acestei setari (bitii CHSN = 0), intrarea negativa a canalului ADC este conectata la AVss, cum se poate observa si din urmatoarea figura :

FIG.41 Conversia analogica cu referinta la masa

Rezultatul final pe 12 bit este stocat in doi registri ADRESH si ADRESL iar un bit aditional indica semnul (daca valoarea este pozitiva sau negativa). In acesti registri se stocheaza rezultatul conversieri A/D pe 12 bit impreuna cu bitul (ADSGN) pentru semn. Perechea ADRESH si ADRESL are o reprezentare pe 16 bit iar bitul ADFM seteaza ce tip de justificare va fi folosit in conversie. In figura urmatoare este descris tipul de jsutificare :

FIG.42 Left-Right justified

Registrii ADRESH & ADRESL (left justified) au urmatoarea descriere:

FIG.43 Registrii numarator ADRESL si ADRESH (LEFT JUSTIFY)

Registrii ADRESH & ADRESL (right justified) au urmatoarea descriere:

FIG.44 Registrii numarator ADRESL si ADRESH (RIGHT JUSTIFY)

Diagrama bloc (convertor ADC) :

FIG.45 Diagrama bloc–convertor ADC

PROGRAMAREA MEMORIEI UC- PIC18F46K80

Programarea de tip ISP (In-System Programming) este o tehnică pentru programarea unui microcontroler după ce acesta a fost dispus pe placa de circuit. TehnicaICSP (In-Circuit Serial Progrmming) reprezintă o evoluție a tehnicii ISP dezvoltatăde către firma Microchip în scopul programării microcontrolerelor PICmicro TM OTP șiFlash. Utilizarea a doar doi pini de intrare/ieșire pentru transferul serial al datelor este mult mai ușoară și mai puțin intruzivă decât operarea normală a microcontroleru-lui.

Programatorul reprezintă instrumentul hardware care permite transferul un program într-un microcontroler. Acesta poate fi întîlnit într-o varietate de tipuri și forme. Procesul de scriere al unui program începe din momentul în care asamblorul generează codul hex compus din instrucțiuni în cod mașină. Codul hex este preluat intr-un fișier și transferat direct în memoria microcontrolerului. Pentru acesta este necesar dispozitivul hardware (programatorul) care este conectat atât la computerul generator alcodului hex (prin interfață serială RS232 sau USB), cât și la un număr de pini specifici ai microcontrolerului. Fiecare serie de microcontrolere sau de capsulă are un set diferit de pini care poartă denumirea de interfață/conector ICSP. Circuitul electronic al modulului contine o conexiune de tipul ICSP pentru a facilita scrierea memoriei microcontrolerului.Conectorul este plasat intr-o zona degajata a circuitului pentru a nu se afecta componentele electronice sensibile. Conexiunea ICSP contine 6 pini corespunzatori microcontrollerului:

(1)VPP(MCLRn) –reprezinta valoarea tensiunii de programare care este de obicei de 13V;

(2)Vcc-tensiunea de alimentare de 5V;

(3)GND- masa circuitului;

(4)PGD- conexiune de date (RB7);

(5)PGC- conexiune de clock (RB6);

(6)PGM- low voltage programming enable;

Mufa de programare de tip ICSP este pozitionata intr-o zona degajata a PCB-ului sistemului electronic pentru a facilita accesul utilizatorului in procesul de incarcare a fisierului .hex. Conectorul ICSP precum si conexiunea acestuia cu microcontrolerul PIC16F887A sunt descrise in figura urmatoare :

FIG.46 Conexiunea de programare (ICSP)

Scrierea memoriei microcontrolerului PIC18F46K80 s-a facut cu ajutorul programatorului PICKIT2 ce a fost realizat cu microcontrolerul PIC18f2550 si conectare pe portul USB iar programul utilizat in acest proces a fost software-ul “PICKIT2”, software destinat microcontrolerelor din familia PIC. Codarea propriuzisa si testarea functionalitatii sistemului electronic s-a realizat cu ajutorul compilatorului MikroC care, in urma compilarii cu succes genereaza fisierul .hex care va fi incarcat in microcontroller. Avantajul acestui protocol de scriere a memoriei ofera avantajul net ca microcontroller-ul nu mai trebuie scos de pe placa ci este programat direct.

Capitolul IV

DESCRIEREA MODULELOR ELECTRONICE COMPONENTE ALE MINIROBOTULUI MOBIL

4.1. SCHEMA ELECTRONICĂ GENERALĂ

FIG.78 Schema electronica generala

In cele ce urmeaza se va detalia modul de functionare a subansamblelor electronice componente ale platformei.

BLOCUL DE ALIMENTARE

FIG.79 Blocul de alimentare al sistemului electronic

In ceea ce priveste partea de alimentare a sistemului electronic s-a utilizat un circuit de stabilizare pe ramura pozitiva de tensiune , acest lucru insemnand ca indiferent de tensiunea de alimentare aplicata la intrarea acestuia, tensiunea din iesire va fi tot timpul constanta si de valoare 5V. In scopul filtrarii tensiunii de alimentare s-au utilizat condensatori de 100 de nF atat pe partea de intrare in modulul stabilizator , cat si in partea de iesire (5V). Condensatoarele de 100uF va filtra glich-urile tensiunii de alimentare la frcventa joasa iar condesatorii de valoare mai mica (100nF) vor filtra variatiile de frecventa mai mare ale tensiunii de alimentare. Un alt aspect ce trebuie mentionat este cel ca variatiile in frecventa sig lich-urile la frecventa mare sunt introduse in mare parte de catre microcontroller la executarea instructiunilor de lucru.

In scopul protectiei intregului modul electronic la o eventuala alimentare cu tensiune inversa , s-a utilizat o metoda simpla de protectie , si anume , introducerea in paralel cu tensiunea de alimentare a unei diode schottky in configuratie inversa (anodul conectat la GND). Astfel , cand polaritatea tensunii de alimentare este respectata , dioda se va comporta ca un contact deschis cu o rezistenta ohmica foarte mare.In momentul in care sistemul electronic s-a alimentat invers , dioda va intra in conductie si va inchide circuitul prin ea , nelasand ca inversa tensiune sa ajunga pe circuitul principal de procesare cu microcontroller. S-a ales diode schottky deoarce este mai rapida ca o diode normala redesoare si incepe sa intre in conductie de la tensiunea de aproximativ 0.3v :

FIG.80 Caracteristica de functionare – diode

De asemenea pentru a se indica faptul ca sistemul electronic este sub tensiune s-a integrat in sistemul de alimentare la iesirea stabilizatorului un LED de culoare albastra impreuna cu un resistor de 100 de ohm cu scop de limitare a curentului prin LED.. S-au utlizat doua elemente stabilizatoare de acest gen pentru a se evita resetarea microcontroller-ului in momentul cresterii consumului de curent la activarea motoarelor DC sau servomecanismelor. Acest lucru s-a determinat in mod empiric, atunci cand microcontroller-ul se reseta in momentul in care utilizatorul trimitea comenzi de directivitate catre platforma robotica. In momentul in care consumul de curent creste la actionarea motoarelor de curent continuu, tensiunea de alimentare scade proportional iar aceasta variatie este sesizata de microcontroller care raspunde cu un impuls de reset. In scopul evitarii acestei probleme s-a implementat in circuitul de alimentare un alt stabilizator pozitiv de tensiune care alimenteaza separat partea de actionare(motoare DC, servomecanisme).

PINUL MCLR

FIG.81 Conexiunea ICSO si pinul MCLR

Rezistorul ce se regaseste la pinul numarul 1( MCLR) al microcontrollerului este utilizat ca resistor de pull-up in scopul evitarii unei posibile resetari. Atunci cand pinul de MCLR este conectat la masa sau tensiunea de pe acesta scade sub o anumita valoare minima , se declanseaza mecanismul de resetare a sistemului, proces in care registri interni vor fi setati la valori initiale de startare. Pinul MCLR , pe langa functia de I/O si de reset , mai are si functia de pin de programare (VPP) si utilizat in functia de incarcare a codului software in microcontroller. Operatiunile de stergere si scriere in memorie sunt realizate , asa cum a fost mentionat si anterior in cadrul proiectului, prin intermediul comunicatiei ICSP.

MODULUL DE COMUNICATIE BLUETOOTH

Modulul bluetooth utilizat este de tipul HC-05, este setat la o viteza de transmisie a datelor de 9600 baud(biti/secunda) si este alimentat la tensiunea stabilizata de 5V. Ca si arie de acoperire, utilizatorul se poate conecta la acest modul prin intermediul smartphone-ului de la o distanta de maxim 10m. In cazul in care modulului wireless bluetooth i se ataseaza si o antena suplimentara, atunci aria de acoperire se va mari.In urmatoarea etapa se va analiza functionalitatea din punct de vedere electronic si in acest sens, modulul bluetooth este conectat la microcontroller asa cum este descris in figura urmatoare:

FIG.83 Conectarea modulului BT la microcontroller

fig. Modulul bluetooth HC-05

In linii mari , modulul bluetoooth se comporta ca o transmie normala de date pe protocol serial UART dar cu avantajul ca datele pot fi transmise / receptionate wireless prin radiofrecventa. In cazul de fata datele sunt trimise catre un terminal instalat pe un Smartphone si ofera avantajul unei comunicatii mobile la o distanta de peste 10 m. Frecventa de lucru a modulului Bluetooth este standard de 2.4 Ghz iar ca sensibilitate ajunge la -80dBm. Antena utilizata de acest modul este deja integrate de cablaj iar tensiunea de alimentare este cuprinsa intre 3.3V-5V. In cazul de fata , in faza de testare si mai apoi in faza de implementare, s-a utilizat tensiunea de alimentare de 5V deoarece se elimina astfel posibilele erori de nivele logice care pot devia de la diferenta de 5V la 3.3v. In ceea ce priveste vitezele de baudrate acceptate de modul , aceaste sint de 9600, 19200, 38400, 57600,115200,230400, 460800 bps. Cateva detalii tehnice referitoare la modulul Bluetooth sunt urmatoarele :

Descrierea functionalitatii pinilor (modul HC-05):

FIG.84 Descriere functionalitate pini

Descrierea comenzilor in modul AT, pentru setup-ul initial al modulului BT este urmatoarea :

In proiectul de fata , pentru setarea modulului Bluetooth mai sus descris , s-a utilizat un modul special de tip PL2303 care face posibila transmisia datelor sub protocol serial UART prin intermediul conexiunii de date USB :

FIG.85 Modulul PL2303

Iar interconexiunea de programare-setare a modulului HC-05 si PL2303 s-a realizat astfel :

FIG.86 Conectivitate bluetooth-PL2303

Totodata , pentru a putea intra in meniul modulului de comunicatii Bluetooth , pe langa acest modul PL2303 s-a utilizat si un terminal special care permite operatiunea de scriere-setare in modulul Bluetooth, si anume TERATERM.

FIG.87 GUI terminal programare comenzi AT

LCD-UL ALFANUMERIC 16×2

LCD-ul utilizat in acest proiect este unul de tip alfanumeric cu 2 linii si 16 coloane iar comunicarea cu microcontrollerul se realizeaza printr-o interfata de 6 biti. Alimentarea modulului LCD se face cu 5V, iar intensitatea luminoasa a pixelilor poate fi ajustata prin intermediul unei intrari de control. Aceasta intrare de control accepta o tensiune variabla, tensiune obtinuta prin intermediul unui divizor rezistiv ce are la baza un semireglabil de 10 kohm .Pinii de interfatare ai LCD-ului conform datasheet-ului sunt :

FIG.88 Caracteristici electrice modul LCD

Pentru comunicarea microcontroller-ului cu display-ul alfanumeric se utilizeaza 4 biti de date si 3 biti de control. Astfel pinul de RS este utilizat pentru ca display-ul sa recunoasca daca i s-a trimis o “comanda instructiune” sau o “data” de afisat. Pinul R/W este utilizat pentru a selecta daca urmeaza sa se afiseze sau sa se citeasca de pe display-ul alfanumeric. Pinul E reprezinta pinul de activare care permite executia tuturor acestor operatiuni , ceea ce inseamna ca doar atunci cand valoarea e 1L (5V) se permite citirea si interpretarea cuvantului de date (4 bit) primit in configuratie de tip paralel.

Cracteristici electrice:

FIG.89 Caracteristici electrice

Display-ul functioneaza la tensiunea maxima de 5V si este astfel complet compatibil pe nivele logice cu microcontroller-ul utilizat – PIC18F46K80. Schema electronica ce descrie conexiunea microcontroller-LCD este urmatoarea :

FIG.90 Conexiune LCD-microcontroller

Dupa cum se poate observa din schema electronica de mai sus pinul de RW este conectat in permanenta la masa circuitului, in acest mod LCD-ul fiind setat in permanenta pe functia de W(write). Prin variatia tensiunii la pinul Vo al LCD-ului se va modifica proportional cu rotatia semireglabilului contrastul pe display.

DRIVER-ul L298

Asa cum a fost mentionat si anterior in proiect , sistemul utilizeaza configuratia de “differential drive ”, ce inseamna ca motoarele sunt comandate independent unul fata de celalalt, permitand astfel rotirea pe loc. In acest caz, rotirea pe loc , un motor se va invarti intr-o directive iar celalat motor se va invarti in cealalta drectie , platforma fiind ajutata in mare masura si de roata mobila multidirectionala dispusa in spate, pe centru.Comanda motoarelor de curent continuu se realizeaza prin intermediul unui driver specializat ce are in structura sa interna 2 punti de tip H ce permit alimentarea intependenta a doua motoare cu posibilitate de comanda in regim PWM. Comanda in puls PWM este de o importanta majora in cadrul acestui proiect deoarece permite , pe langa rotirea in ambele sensuri, si modularea vitezei de rotatie.

La baza circuitului driver pentru motoarele DC sta circuitul integrat L298 ce are urmatoarea configuratie interna si parametri electrici :

FIG.91 Descriere circuit L298

Configuratia de comanda a circuitului L298 este urmatoarea :

FIG.92 Configuratia de comanda a circuitului

Deoarece motoarele de curent continuu functioneaza la o tensiune de alimentare de maxim 6 V , circuitul L298 este alimentat la tensiunea de 5V prin intermediul unui stabilizator pozitiv de tensiune. Din punctul de vedere al conectarii modulului L298 la microcontroller, aceasta se realizeaza asa cum reiese din urmatoarea figura :

FIG.93 Conectare L298 in circuit

In ceea ce priveste dispunerea modulului pe platforma robotica, aceasta este descrisa in figura urmatoare:

FIG.94 Dispunere modul L298 pe platforma robotica

In proiectul de fata, asa cum a fost mentionat si anterior in cadrul acestui proiect, comanda celor doua motoare de tractiune-directivitate se reazizeaza in regim PWM, ceea ce insemna ca microcontrollerul genereaza doua semnale de acest tip (pentru fiecare motor), semnale ce sunt aplicate pe ce doua intrari de EN ale circuitului L298. Pemnalul PWM este construit in regim de intreruperi prin intermediul TIMER-ului TIMER1 ce sare in secventa/functia de intrerupere cu o frecventa de 10 microsecunde Acest semnal PWM este realizat pe baza unui sistem numarator-comparator, unde in functia de intrerupere se contorizeaza in permanenta numarul de salturi si se compara cu un o valoarea de referinta, valoare ce semnifica „duty cycle-ul” semnalului PWM.

SENZORUL DE TENSIUNE

Senzorul de tensiune utilizat este un senor analogic rezistiv ce are la bazaprincipiul de functionare a divizorului rezistiv de tensiune. Acest senzor este conectat in partea de alimentare a modulelor electronice, masurand in acest mod direct tensiunea de pe acumulatori :

FIG. 95 Senzorul de tensiune

Senzorul de tensiune este compus din rezistorii de 4.7K pe ramura negativa de tensiune si un rezistor de 10K pe ramura pozitiva de tensiune. In acest mod, indiferent de tensiune din intrare, tensiunea de iesire va fi Vin/3 dar se recomanda ca aceasta tensiune de intrare(tensiunea acumulatorilor) sa nu depaseasca valoarea de 15V pentru a se evita deteriorarea ireversibila a circuitului stabilizator pozitiv de tensiune. In ceea ce priveste modul de citire a acestui semnal, microcontroller-ul achizitioneaza acest semnal pe pinul analogic de intrare RA0/AN0 -pinul 2, ceea ce insemna canalul 0 (AN0) al microcontroller-ului. Convertorul ADC este unul destul de performant avand o rezolutie de 1.22mV/bit la citire si lucrand in mod single (referinta la masa sistemului). In linii mari, la momentul citirii tensiunii provenite de la acumulatorii sistemului, prin intermediul divizorului rezistiv aceasta va fi impartita la 3 si va avea in final o valoare la pinul de intrare analogic al microcontroller-ului mai mica de 5V. Asttfel, in codul software, pentru determinarea valorii reale a tensiunii din intrare. In prima faza se inmulteste valoare digitala primita de la convertor cu factorul de rezolutie al acestuia si cu facorul de divizare al divizorului rezistiv de tensiune.Totodata in cadrul acestui proiect s-a implementat software si avertizarea la momentul scaderii tensiunii acumulatorilor sub un anumit prag, cu scopul de a se evita descarcarea excesiva a acesora in timp, acest lucru insemnand in final evitarea deteriorarii acumulatorilor.

Capitolul V

DESCRIEREA SOFTWARE, LIMBAJUL DE PROGRAMARE ȘI UTILIZREA APLICAȚIEI DE FUNCȚIONARE A MINIROBOTULUI MOBIL

5.1. DESCRIEREA SOFTWARE A SISTEMULUI

Asa cum a fost mentionat si anterior in cadrul acestui proiect, dezvoltarea/testarea proiectului s-a realizat cu ajutorul compilatorului MikroC iar programarea propriuzisa (incarcarea .hex-ului) a microcontroller-ului s-a efectuat cu programatorul PicKit2. Descrierea sistemului software va fi facuta pe module, explicandu-se totodata functionalitatea modulara:

In cadrul acestui proiect, in partea de preprocesare s-au utlizat asignari de tipul #define in scopul de a usura modalitatea de acces la registrele de tip PORTX ale microcontroller-ului. Asadar, considerand secventa de cod mai sus descrisa, prin instructiunea „#deine ENA LATB0” s-a realizat asignarea numelui ENA variabilei LATB.f0, astfel in codul sursa o comanda data pe registrul LATB, bitul 0 se va realiza prin accesarea numelui ENA. In acest mod accesul la acesti registri va fi considerabil mai usor.

Variabilele utilizate in cadrul acestui proiect sunt de diferite tipuri, incepand de la char pana la float. S-au utilizat si variabile de tip float pentru a creste precizia la citirea semnalelor analogice provenite de la senzorul analogic de tensiune:

Spre exemplu variabila „tensiune” este de tipul float exact in acest scop si anume pentru a mari precizia la calculul intern al tensiunii reale. Constantele de tip char reprezinta un patern format din numere, patern care este utilizat in crearea de caractere custom pe LCD-ul alfanumeric. In privinta LCD-ului alfanumeric, pentru accesarea functiilor predefinite in compilator este necesara asignarea pinilor de date si de control la pinii microcontroller-ului, acest proces realizandu-se prin maparea urmatoare :

Considerand secventa de cod de mai sus, se poate observa de exemplu, ca pinul RS este asignat LATC, bitul 5. Acest tip de asignare este realizat pentru toti pinii LCD-ului alfanumeric asa cum este descris mai sus.In urmatoarele secvente de cod se realizeaza definirea/declararea functiilor pentru citirea de pe canalul analogic si scrierea valorilor pe LCD-ul alfanumeric :

Prin definirea functiei „vois ADC_Set” se realizeaza setarea convertorului analog numeric ADC prin accesul si modificarea registrilor corespunzatori = ADCON0,ADCON1, ADCON2, registri specifici prin intermediul carora se contoleaza canalul multiplxat de pe care se va face citirea, modul de stocare in buffer-ul de 16 biti al rezultatului –lef or right justified, controlul timpilor de achizitie si nu in ultimul rand sursa clock-ului si frecventa acestuia. Definira caracterelor custom se realizeaza prin accesul la urmatoarea functie, unde se realizeaza accesul la registrii controller-ului LCD-ului dar si la memoria acestuia de tip CGRAM si CGROM:

In linii mari, la constructia unui caracter custom, procesul incepe prin a insera secvential datele provenite de la constantele char, care au fost amintite anterior. Functia de „loading” impreuna cu progess-bar-ul de la startup-ul proiectui este construita la fel, in mod secvential, utilizand caractere custom create, de tipul „caracter plin”, ceea ce insemna ca toti pixelii ariei de 5×8 sunt setati pe 1 logic. Functia implementata este urmatoarea:

Functiile utilizate incontrolul PWM al motoarelor DC de curent continuu, acceseaza cele 4

intrari (IN1-IN4) corespunzator pentru a imprima platformei directia de deplasare dorita:

In programul principal, codul sursa incepe prin definirea functiei”main”. Unde in prima instanta se reseteaza valorile pe motoare se pe servomecanisme :

Astfel, la startarea sistemului, comenzile trimise catre servomecanisme si catre driver-ul ce comanda motoarele de curent continuu vor fi resetate (0L). Urmatoarea etapa in codul sursa il reprezinta setarea parametrilor initiali ai clock-ului sistemului, deoarece microcontroller-ul va utiliza clock-ul intern de 64Mhz obtinut prin multiplicatorul de frecventa. Astfel registri apelati si modificati in acest scop sunt urmatorii(comform datasheet-ului) :

Secventa de cod urmatoare consta in setarea intitala a registrilor de directivitate TRISX , registrilor de mapare a port-urilor PORTX dar si apelul functiilor de intializare al convertorului ADC, al LCD-ului alfanumeric si nu in ultimul rand al modulului bluetooth:

Dupa cum se poate observa si din secventa de cod de mai sus, doar canalul ADC RA0/AN0 este setat ca input analogic, input analogic utilizat in citirea semnalului analogic provenit de la divizorul rezistiv de tensiune. Tensiunea de intrare in convertorul ADC pe canalul AN0 se incadreaza intr-o plaja de valori cuprinsa intre 0-5000mV, iar precizia citii acestui semnal este de 1.22 mV/bit. Setarea timer-ului TIMER1 este realizata in urmatorul mod :

Secventa de cod unde, pentru activarea TIMER-ului, TIMER1, se seteaza registrii globali de intrerupere –unde se realizeaza managmentul tuturor tipurilor de intrerupere (vezi registrul INTCON), registrul responsabil cu functia de activare a timer-ului, registrul pentru setarea flag-ului modificat la overflow-ul counter-ului format din cei doi registri numaratori TMR1H and TMR1L. Frecventa de salt in intrerupere a fost setata la 10 us, acest lucru insemnand ca in modul normal de functionare, la fiecare 10us, program counter-ul face salt in functia de intrerupere si executa secventa de cod. Timer-ul TIMER1 accesat, setat si utilizat in cadrul acestui proiect are utilitate in grnerarea semnaleleor PWM pentru cele 4 servomecanisme dar

si pentru comanda driver-ului L298. Mesajele afisate pe display-ul alfanumeric la startarea sistemului sunt desscrise de urmatoarea secventa de cod :

Pe display-ul alfanumeric se va afisa mesajul de „working” in timp ce se apeleaza secventele de autocentrare ale bratului robotic pentru toate servomecanismele componente:

Dupa ce toate servomecanismele componente ale bratului robotic se autocentreaza, urmeaza secventa de cod unde griperr-ul este actionat (inchis-deschis) de 2 ori. Urmatoarea secventa de cod executata este aceeia in care pe LCD se afiseaza mesajul de „waiting for peering” unde sistemul robotic astepta ca utilizatorul sa se conecteze la el. Dupa acest proces in care utilizatorul s-a conectat la sisitemul electronic, pe LCD se va afisa mesajul de „connected”, semnificand ca in acest moment utilizatorul este conectat la sistem si poate trimite instructiuni de executie.

Totodata pe display-ul alfanumeric se va afisa mesajul de „Tensiune” si se va afisa valoarea citita de pe convertorul ADC si mai apoi procesata :

Valoarea digitala citita de pe convertorul ADC este inmultita cu factorul de divizare si cu rezolutia convertorului (1.22mV/bit) sau in alte cuvinte, aceasta valoare este inmultita cu 3.82 si apoi impartita la 1000 pentru ca valoarea finala sa fie exprimata in V. Totodata in aceasta secventa se analizeaza valoarea tensiunii generata de pachetul de acumulatori si in cazul in care tensiunea scade sub valoarea de 9.5 V, pe LCD-ul alfanumeric se va afisa mesajul „INCARCATI !!!”. In ceea ce priveste partea de preluare a comenzilor de la utilizator, sistemul robotic isi va schimba directia de deplasare in funtie de valoarea primita prin comunicatia seriala asincrona de tip UART, valoare exprimata in format ASCII.

Urmatoarele secvente de cod sunt implementate pentru generarea valorii de reshold a duty-cycle-ului semnalului PWM pentru cele 4 servomecanisme. Astfel, la fiecare apasare a butonului corespunzator, valoarea de treshlod a dutycycle-ului se va incrementa si deci, semnalul de comanda pe servomecanisme se va modifica (1ms-1.5ms).

În functia de intrerupere propriu-zisa se genereaza semnalele PWM de comanda pentru modulul driver L298 dar si pentru cele 4 servomecanisme. Frecventa de salt in intrerupere este de 10us, ceea ce semnifica in termeni de PWM un pas de compunere. Semnalul PWM este construit pe baza unui numarator si a unui comparator, unde semnalul de comanda PWM este tinut in 1L pana in momentul in care devine egal cu valoarea incrementata provenita de la utilzator :

In secventa de final a functiei de intrerupere, se reseteaza flag-ul corespunzator PIR1.TMR1F iar cei doi registri responsabili cu numaratorul sunt adusi la valoarea intitiala, sistemul fiind acum pregatit de o noua intrerupere.

5.2. CODUL C REALIZAT CU COMPILATORUL MIKROC

#define ENA LATB.f0

#define in1 LATB.f1

#define in2 LATB.f2

#define in3 LATB.f3

#define in4 LATB.f4

#define ENB LATB.f5

#define servo_baza LATD.f6

#define servo_mid LATD.f7

#define servo_fin LATD.f5

#define servo_grip LATD.f4

unsigned int linie=0,valoare=0,coloana=0; // variabile utilizate in afisare pe LCD

char text[20];

char buffer [15];

char valoare_2_dec[15];

char recive, crestere_temp=0, scadere_temp=0, crestere_tensiune=0, scadere_tensiune=0, crestere_umiditate=0, scadere_umiditate =0, crestere_vit=0, scadere_vit=0; // utilizat la citire buffer UART pe receptie

char conversion_LCD[4];

int contor_grp=0, increment_grp=0,contor_ult =0, increment_ult=0, increment_mid=0, contor_mid=0, increment_baza=0, contor_baza=0, check_display=0, pwm_dc_motor= 0, contor =0,duty_cycle=0,i =0, j=0,off_all=0, umiditate =0, res=0, contor_rotatii=0, state_pin_int=0, cntr_final =0, m_s =0, contor_variatii =0, contor_variatii_tensiune=0, contor_final_anterior=0; // variabile utilizate in management semnal PWM

float temperatura =0, temperatura_anterioara=0, tensiune=0,tensiune_anterioara=0, m_s_f=0, umiditate_anterioara=0; // rezulatatul Vout in funcite de semnalul PWM

const char character0[] = {31,31,31,31,31,31,31,31}; // caracter custom – plin(functie loading)

const char character1[] = {24,24,7,8,8,8,8,7}; // grade celsius

const char character2[] = {7,3,5,8,4,2,4,8}; // sagetuta crestere

const char character3[] = {2,4,8,4,2,20,24,28}; // sagetuta descrestere

//–––––––-Setare conectivitate LCD–––––––––––––//

sbit LCD_RS at LATC5_bit;

sbit LCD_EN at LATC4_bit;

sbit LCD_D4 at LATD3_bit;

sbit LCD_D5 at LATD2_bit

sbit LCD_D6 at LATD1_bit;

sbit LCD_D7 at LATD0_bit;

sbit LCD_RS_Direction at TRISC5_bit;

sbit LCD_EN_Direction at TRISC4_bit;

sbit LCD_D4_Direction at TRISD3_bit;

sbit LCD_D5_Direction at TRISD2_bit;

sbit LCD_D6_Direction at TRISD1_bit;

sbit LCD_D7_Direction at TRISD0_bit;

//––––––––-declarere de functii––––––––––-//

void Lcd_data_write1 (int linie, int coloana, int valoare);

void ADC_Set();

//––––––––definire de functii–––––––––––//

void Lcd_data_write1 (int linie,int coloana, int valoare)

{

WordToStr(valoare, text);

Lcd_Out(linie, coloana , text);

}

void ADC_Set(){

ADCON0 = 0x00; // select channel 0 (AN0)

ADCON1 = 0; // reset registru ADCON1 in prima faza

ADCON2 = 0; // reset registru ADCON2 in prima faza

ADCON2.ADFM=1; // right justified

ADCON2.ACQT2=1; // 110 => 16 Tad (setare timp achizitie = 16 x Timp de conversie pe 1 bit

ADCON2.ACQT1=1;

ADCON2.ACQT0=0;

ADCON2.ADCS2=0; // 000 => FOSC /2

ADCON2.ADCS1=0; // 000 => FOSC /2

ADCON2.ADCS0=0; // 000 => FOSC /2

}

//––––––––––define caracter custom––––––––-//

void CustomChar(const char *def, unsigned char n, char pos_row, char pos_char){

char i ;

LCD_Cmd(64 + n * 8) ;

for(i = 0 ; i<=7 ; i++)

{

LCD_Chr_Cp(def[i]) ;

}

LCD_Cmd(_LCD_RETURN_HOME) ;

LCD_Chr(pos_row, pos_char, n) ;

}

//–––––––––define functie loading LCD––––––––//

void functie_loading(){

Lcd_out(1,1,"Loading data");

CustomChar(character0,0,2,1);

Delay_ms (80);

CustomChar(character0,0,2,2);

Delay_ms (80);

CustomChar(character0,0,2,3);

Delay_ms (380);

CustomChar(character0,0,2,4);

Delay_ms (500);

CustomChar(character0,0,2,5);

Delay_ms (260);

CustomChar(character0,0,2,6);

Delay_ms (150);

CustomChar(character0,0,2,7);

Delay_ms (200);

CustomChar(character0,0,2,8);

Delay_ms (160);

CustomChar(character0,0,2,9);

Delay_ms (115);

CustomChar(character0,0,2,10);

Delay_ms (280);

CustomChar(character0,0,2,11);

Delay_ms (500);

CustomChar(character0,0,2,12);

Delay_ms (500);

CustomChar(character0,0,2,13);

Delay_ms (200);

CustomChar(character0,0,2,14);

Delay_ms (80);

CustomChar(character0,0,2,15);

Delay_ms (80);

CustomChar(character0,0,2,16);

Delay_ms (530);

Lcd_Cmd(_Lcd_CLEAR) ;

}

void inainte (){

in1 = 0;

in2 = 1;

in3 = 0;

in4 = 1;

}

void inapoi (){

in1 = 1;

in2 = 0;

in3 = 1;

in4 = 0;

}

void dreapta (){

in1 = 0;

in2 = 1;

in3 = 1;

in4 = 0;

}

void stanga (){

in1 = 1;

in2 = 0;

in3 = 0;

in4 = 1;

}

void stop (){

in1 = 0;

in2 = 0;

in3 = 0;

in4 = 0;

}

void main() {

//––––reset pe motoare DC si servo

servo_baza=0;

servo_mid =0;

servo_fin =0;

servo_grip=0;

ENA=0;

ENB=0;

in1=0;

in2=0;

in3=0;

in4=0;

OSCCON = 0b01110000;

OSCTUNE.f6 = 1;

//––setari TRIS-reg directivitate––//

TRISA = 0b00000001; // intari analogice -citire tensiune

TRISC = 0b10000000; // RC5 = LED functii

TRISB = 0b00000000;

TRISD = 0b00000000;

TRISE = 0b00000000;

ADC_Set();

//––––––––––UART initialization–––––––––//

UART1_Init(9600); // Initialize UART module at 9600 bps

Delay_ms(100); // Wait for UART module to stabilize

//––––––––––LCD initialisation––––––––––//

Lcd_Init(); // functie de intitializre LCD

Lcd_Cmd(_LCD_CLEAR); // functie Clear display

Lcd_Cmd(_LCD_CURSOR_OFF); // functie Cursor off

Delay_ms(10);

//––––––––––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; // la fiecare 10-11 us sare in intrerupere (UPDATAT cu OSC)

TMR1L = 0b01011111;

PIE1.TMR1IE = 0; // enable Timer1 interrupt

//––––––––––mesaje intampinare la startarea sistemului––––––//

Lcd_Out(1,1, "–BRAT ROBOTIC–");

Delay_ms(5000);

Lcd_Cmd(_LCD_CLEAR); // functie Clear display

functie_loading();

Delay_ms(500);

Lcd_Out(1,1, "–SYSTEM OK–");

Delay_ms(3000);

Lcd_Cmd(_LCD_CLEAR); // functie Clear display

Lcd_Out(1,1, "autocentrare: ");

Lcd_Chr(1,16, '3');

Delay_ms(1000);

Lcd_Chr(1,16, '2');

Delay_ms(1000);

Lcd_Chr(1,16, '1');

Delay_ms(1000);

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "working…");

//–centrare servo baza

for (i=1; i<30;i++){ // 700=minimul ,1400=centrul (us)

servo_baza = 1;

Delay_us(1400);

servo_baza = 0;

Delay_ms(18);

}

increment_baza = 93; //prin teste

//–centrare servo middle

for (i=1; i<30;i++){ // 1940= centrul

servo_mid = 1;

Delay_us(1940);

servo_mid = 0;

Delay_ms(18);

}

increment_mid = 120;

//–centrare servo final

for (i=1; i<30;i++){ // 1600= centrul

servo_fin = 1;

Delay_us(1600);

servo_fin = 0;

Delay_ms(18);

}

increment_ult = 100;

//–centrare gripper

for (j=0; j<3; j++){

for(i=1; i<20;i++){ // 2000= maximul , 740 =minimul

servo_grip = 1;

Delay_us(2000);

servo_grip = 0;

Delay_ms(18);

}

for(i=1; i<20;i++){ // 2000= maximul , 740 =minimul

servo_grip = 1;

Delay_us(740);

servo_grip = 0;

Delay_ms(18);

}

}

increment_grp = 45;

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, " done ");

Delay_ms(2000);

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "wait for peering"); // astept ca utilizatorul sa se conecteze

while (UART1_Data_Ready() == 0) {

}

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "connected");

Delay_ms(1000);

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "Tensiune:"); // daca tensiunea >10.6 V, atunci afisare tensiune

Lcd_Chr(1,16,'V');

PIE1.TMR1IE = 1; // enable Timer1 interrupt

for (;;){

//1). –––––––––––VERIFICARE TENSIUNE–––––––––

tensiune = (ADC_Read(0)*0.00382);

FloattoStr(tensiune, text); // la fel pentru tensiune

text[5] =0;// de la a 5a pozitie a vectorului, fac 0 pentru ca sa am doa2 zecimale !!!

Lcd_out(1,10, text);

if (tensiune <= 9.5 ){ // daca tensiunea e < 10.6V, atunci mesaj de atenstionare

if (!check_display){ // variabila pentru afisare pe LCDdoar o singura data

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "Tensiune:"); // daca tensiunea >10.6 V, atunci afisare tensiune

Lcd_Chr(1,16,'V');

Lcd_Out(2,1, "INCARCATI !!!");

}

check_display = 1;

}

if (tensiune > 9.5 ){

if (check_display){

Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1, "Tensiune:"); // daca tensiunea >10.6 V, atunci afisare tensiune

Lcd_Chr(1,16,'V');

}

check_display = 0;

}

if (UART1_Data_Ready() == 1) { // if data is received

recive = UART_Read(); // buffer read

//–––-directie plaforma

if (recive == 48) // =0

inainte ();

if (recive == 49)

inapoi();

if (recive == 50) // =0

stanga ();

if (recive == 51)

dreapta();

if (recive == 52)

stop();

//–––-comanda rotor

if (recive == 53){

increment_baza = increment_baza +4;

if (increment_baza >= 120)

increment_baza =120;

}

if (recive == 54){

increment_baza = increment_baza-4;

if (increment_baza <= 45)

increment_baza =45;

}

//–––-comanda MIDDLE

if (recive == 55){

increment_mid = increment_mid +1;

if (increment_mid >= 150)

increment_mid =150;

}

if (recive == 56){

increment_mid = increment_mid-1;

if (increment_mid <= 72)

increment_mid =72;

}

//–––-comanda ULTIM

if (recive == 57){

increment_ult = increment_ult +1;

if (increment_ult >= 160)

increment_ult =160;

}

if (recive == 58){

increment_ult = increment_ult-1;

if (increment_ult <= 50)

increment_ult =50;

}

//–––-comanda GRIPPER

if (recive == 59){

increment_grp = increment_grp +2;

if (increment_grp >= 130)

increment_grp =130;

}

if (recive == 60){

increment_grp = increment_grp-2;

if (increment_grp <= 45)

increment_grp =45;

}

}

}

}

//––––––intrerupere generata cu TIMER1-pentru generare PWM–––//

void interrupt (){

LATE.f2= ~LATE.f2;

if (recive==59 || recive== 60){

contor_grp ++;

if(contor_grp<= increment_grp)

servo_grip = 1;

if((contor_grp > increment_grp) && (contor_grp <= (800-increment_grp)))

servo_grip = 0;

if(contor_grp > (800-increment_grp))

contor_grp = 0;

}

if (recive==57 || recive== 58){

contor_ult ++;

if(contor_ult <= increment_ult)

servo_fin = 1;

if((contor_ult > increment_ult) && (contor_ult <= (900-increment_ult)))

servo_fin = 0;

if(contor_ult > (900-increment_ult))

contor_ult = 0;

}

if (recive==55 || recive== 56){

contor_mid ++;

if(contor_mid <= increment_mid)

ervo_mid = 1;

if((contor_mid > increment_mid) && (contor_mid <= (900-increment_mid)))

servo_mid = 0;

if(contor_mid > (900-increment_mid))

contor_mid = 0;

}

if (recive==53 || recive== 54){

contor_baza ++;

if(contor_baza <= increment_baza)

servo_baza = 1;

if((contor_baza > increment_baza) && (contor_baza <= (1550-increment_baza)))

servo_baza = 0;

if(contor_baza > (1550-increment_baza))

contor_baza = 0;

}

if (in1 || in2 || in3 || in4){

pwm_dc_motor ++;

if (pwm_dc_motor <=750){

ENA =1;

ENB=1;

}

if (pwm_dc_motor >750 && pwm_dc_motor <= 2000){

ENA =0;

ENB=0;

}

if (pwm_dc_motor >2000)

pwm_dc_motor =0;

}

PIR1.TMR1IF = 0;

TMR1H = 0b11111111; // la fiecare 10-11 us sare in intrerupere (UPDATAT cu OSC)

TMR1L = 0b01011111;

}

5.3. APLICAȚIA DE FUNȚIONARE A SISTEMULUI

Pentru rularea aplicației de funcționare a minirobotului mobil pe un dispozitiv smartphone cu sistemul de operare android, se va descărca și instala aplicația software de pe magazin play (play store), cu numele MeArm Controller (a se vedea in figura de mai jos).

Fig. Aplicația MeArm

După instalare se va deschide aplicația și activa bluetototh-ul de pe smartphone, în același timp se va deschide pe modul pornit minirobotul așteptând a se face conexiunea dintre cele două dispozitive. Când se va deschide aplicația MeArm Controller de pe smartphone se va configura următoarele setări in „button mode” fiind necesară introducerea următoarelor valori pe fiecare comandă in parte (a se vedea in figura de mai jos), settings, button mode, conectivity. În urma acestor setări de configurație din aplicație va avea loc paritatea dintre minirobot și dispozitivul smartphone ce va duce implicit la funcționarea propiu-zisă a intreg sistemului.

Fig. Configurare setări

BIBLIOGRAFIE

[1] Ibrahim, Dogan, Advanced PIC microcontroller projects in C: from USB to RTOS with the PIC18F series/Dogan Ibrahim, ISBN-13: 978-0-7506-8611-2 (pbk. : alk. paper) 1. Programmable controllers. 2. C (Computer program language) I. Title. TJ223.P76I268 2008.

[2] Wilmshurst, Tim, Designing embedded systems with PIC microcontrollers:principles and applications, ISBN-13: 978-0-7506-6755-5, ISBN-10: 0-7506-6755-9, First edition 2007.

[3] D. W. Smith, PIC in PracticeA Project-Based Approach, ISBN 13: 978-0 75-066826-2, First published 2002, Reprinted 2003 (twice), 2005, Second edition 2006.

[4] Lucio Di Jasio, Tim Wilmshurst, Dogan Ibrahim, John Morton, Martin Bates, Jack Smith, D.W. Smith, and Chuck Hellebuyck, PIC Microcontrollers: Know It All , ISBN: 978-0-7506-8615-0, Jun2012.

[5] Jean Labrosse, Jack Ganssle, Tammy Noergaard, Robert Oshana, Colin Walls, Keith Curtis,

Jason Andrews, David J. Katz, Rick Gentile, Kamal Hyder, and Bob Perrin, Embedded Software: Know It All, ISBN: 978-0-7506-8583-2, First edition 2012.

[6] Jack Ganssle, Tammy Noergaard, Fred Eady, Lewin A.R.W. Edwards, David J. Katz, Rick Gentile, Ken Arnold, Kamal Hyder, and Bob Perrin, Embedded Hardware: Know It All, ISBN: 978-0-7506-8584-9, April 2006.

[7] Praphul Chandra, Daniel M. Dobkin, Alan Bensky, Ron Olexa, David Lide, and Farid Dowla, Wireless Networking: Know It All , ISBN: 978-0-7506-8582-5.

[8] Microchip, Compiled Tips ‘N Tricks Guide, 2009 Microchip Technology Inc, DS01146B

[9] John Morton , The PIC Microcontroller:Your Personal Introductory Course

Third edition, ISBN 0 7506 66641, First published 1998,Second edition 2001,Third edition 2005

[10] JOSÉ BRAZ, HELDER ARAÚJO, BRUNO ENCARNAÇÃO Informatics in Control, Automation and Robotics I, ISBN-10 1-4020-4136-5 (HB), 2006

[11] Stroustrup, Bjarne, The C++ programming language / Bjarne Stroustrup.—Fourth edition., ISBN 978-0-321-56384-2, QA76.73.C153 S77 2013

[12] Brown, Marty. Power supply cookbook / Marty Brown.—2nd ed. p. cm, ISBN 0-7506-7329-X, TK7868.P6 B76 2001

[13] Z. Yuanyuan, X. Kai, L. Deshi, Monitoring Technologies in Mission-Critical Environment by Using Wireless Sensor Networks – cap 11, Wireless Sensor Networks – technology and applications, Edited by Mohammad A. Matin, ISBN 978-953-51-0676-0, 2012, http://dx.doi.org/10.5772/1100

[14] Yi-Wei Ma, Jiann-Liang Chen, Yueh-Min Huang, Mei-Yu Lee, An Efficient Management System for Wireless Sensor Networks, Sensors Journal, no 10, 11400-11413; doi:10.3390/s101211400, 2010

[15] O. Diallo, JJPC. Rodrigues, M. Sene, Real-time data management on wireless sensor networks: A survey, Journal of Network and Computer Applications, May, 2012; 35; 3; p1013-p1021

[16] W. Znaidi, M. Minier, Key establishment and management for WSNs, Telecommunication Systems. Jun2012, Vol. 50 Issue 2, p113-125. 13p. DOI: 10.1007/s11235-010-9391-2.

[17] G. Fersi, W. Louati, M. Ben Jemaa, Distributed Hash table-based routing and data management in wireless sensor networks: a survey, Wireless Networks (10220038). Feb2013, Vol. 19 Issue 2, p219-236. 18p. DOI: 10.1007/s11276-012-0461-0.

[18] I.F. Akyildiz, W. Su*, Y. Sankarasubramaniam, E. Cayirci, Wireless sensor networks: a survey, Computer Networks 38 (2002) 393–422

[19] Waspmote, http://www.libelium.com/products/waspmote/, accesed in 15.03.2013

Online:

[20] online MikroC forum https://forum.mikroe.com/

[21] official MikroC website https://www.mikroe.com/

Similar Posts