Robot Destinat Folosirii In Cazul Interventiei In Zone Periculoase Pentru Om
Introducere
Lucrarea de față își propune să prezinte modul în care a fost realizat și programat un robot destinat folosirii în cazul intervenției în zone periculoase pentru om.În cazul acestei cercetari au fost verificate câteva variante constructive de structuri robot cu microcontroller ,fiind aleasă cea mai convenabilă sub raport preț/siguranța în funcționare/simplitate constructivă.Dimimensiunile acestui robot permit explorarea unor spatii innaccsebile omului.
Proiectul realizat de mine ,modul telecomandat cu modulație de frecvență, are în componența sa un terminal Bluetooth,astfel încât să pot transmite date de prin intermediul unui terminal Bluetooth aflat încorporat în telefonul mobil sau tableta către senzorii externi ai robotului.Toata partea logica se desfașoară în interiorul telefonului mobil,fiind efectuată o aplicație care rulează pe sistemul de operare Android.Robotul nu face decât să preia informații de la senzori și să interpreteze comenzile primite de la dispozitivul partener.
Construcția totală a aparatului (doar parte hardware,fără soft) a durat aproximativ 3 luni deoarece majoritatea componentelor au fost comandate din străinătate și transportul durează în general destul de mult.
PCB-ul a fost făcut manual prin metoda de transfer UV al cablajului,iar componentele au fost lipite apoi cu un ciocan de lipit.Tot acest proces a durat doua saptămâni pentru tot asamblul electronic.
Pentru programarea microcontrolerului am folosit uneltele de dezvoltare puse la dispoziție de Arduino® gratuit pe situl http:// http://arduino.cc/en/main/software. Arduino Uno® este un mediu de dezvoltare bazat pe celebra platformă open source C++, care permite dezvoltarea și editarea facilă a programelor și algoritmilor. Cu ajutorul compilatorului inclus în platformă, programul compilează și construiește un program din limbaj C în cod mașină specific microcontrolerului ATMega328® folosit în proiect. De asemenea, tot în acest mediu de dezvoltare este posibilă programarea precum și debuggingul software-ului pe microcontroler cu ajutorul unui programator sau emulator.
Din microcontroler am folosit modulele UART, timere, precum și întreruperile disponibile pentru aceste module pentru a putea scrie un algoritm performant de control al robotului.
Dezvoltarea software-ului a durat aproximativ 3 luni, fiind începută imediat după terminarea proiectării parții hardware, dar înainte de a o avea realizată fizic 100%. Primii pași au reprezentat configurarea perifericelor microcontrolerului și stabilirea unei structuri schelet, precum și a câtorva mașini de stare pe care acesta să ruleze.
1.2Studiul roboților
Roboții sunt unul din lucrurile indispensabile funcționării societații umane a secolului contemporan.Aceștia fiind întâlniți în arii de interes precum divertisment,comunicații ,medicină ,transporturi sau agricultură ămbunatățesc perfomanțele umane din punct de vedere cantitativ și calitativ.
Un robot este considerat un operator mecanic sau virtual,artificial.Este un sistem compus din mai multe elemente:mecanică,senzori și actuatori și un mecanism de direcționare ce are grijă ca robotul să-și indeplineasca obiectivul cu succes,evaluând informațiile senzorilor.Mecanismul reglează motoarele si planifică mișcările ce vor fi efectuate.Pentru a prelua date si pentru a le pune in aplicare un robot are nevoie de senzori și elemente de execuție(actuatori).
Conceptul de roboți își are rădăcinile îin epoca antică în mituri și legende,cum ar fi in Iliada lui Homer unde este descr is că zeul meșteșugarilor și al metalurgiei Hefaistos putea face din aur servitori mecanici cu asemănare umană ce puteau vorbi.Deasemenea putem găsi astfel de referiri și in legendele evreiești și ale vikinngilor unde sunt descriși oameni uriși făcuți din lut și animați cu ajutorul magiei creați spre a ajuta oamenii la muncile grele.Aceștia erau văzuți ca soluția pentru dezvoltarea societații umane și Homer chiar specula că existența acestora ar putea duce la abolirea sclaviei.
Din secolul al X-lea umanitatea a simțit nevoia de a avea dispozitive care să realizese anumite sarcini in locul omului ,și care,pentru nu a inspira un sentiment de teamă ,au făcut astfel încât acestea să arate căt mai apropiat omului.Astfel in 1088,în China a fost construi primul ceas mecanizat care avea figurine înfățișând oameni (manechini)care indicau ora și băteau clopotele.Ceva timp mai târziu ,unul ditre primii roboți cu chip uman a fost pictat de înșuși Leonardo Da Vincii în jurul anului 1495.
Odata cu revoluția industrială care a avansat foarte mult datorita cererii umanitații au apărut si roboții moderni începând să evolueze din ce în ce mai mult ,fapt care a dus la crearea de mici motoare compacte ce puteau pune în mișcare mașinării mari folosite în industrie.Astfel dupa 1920,apare ideea de a crea mașinarii automate de mărime umană ce pot imita mișcările omului așa cum au fost văzuți in legende.La sfârșitul celui de al Doilea Război Modial s-au pus bazele inteligenței artificiale,cercetarea fiind făcută de mai multe grupuri de interes.Pe de-o parte au fost ingineri precu Nobert Wiener,Alan turing și Claude Shannon uar pe de altă parte psihologi precum Walter Pitts și Warrn McCulloch.
Prima utilizare a roboților a fost în fabrici ,aceștia fiind roboți industriali.Ei erau nișste mașinarii fixe capabile să producă bunuri fără asistență umană avâand fiecare un rol fix in procesul de producție.Roboții industriali controlați și roboți care utilizează inteligența artificială au început să fie construiți începând cu anul 1960.
De asemenea ,nevoia de a avea roboți s-a amplificat și nevoia lor de a arăta cât mai uman a putut lua alte direcții.Începând cu anii 1980 Texas Instruments a făcut cercetare în crearea unor bombe și rachete inteligente din punct de vedere electronic.In industrie roboții au luat încet dar sigur locul oamenilor în producție,lărgind astfel posibilitățile și scăzând costurile,lucriri pe care oamenii nu le pot face fizic,sunt rezolvate de roboți cu precizie maximă.
În prezent roboții se împart în doua mari categorii după utilizarea lor:roboți autonomi cu funcționare generală și roboți dedicați.
Roboții autonomi cu funcționare generală pot îndeplini o varietate de funții independent.Un robot autonom este un robot care efectuează comportamente sau sarcini,cu un grad ridicat de autonomie ,care este deosebit de dorit in domenii cum ar fi explorarea spațiului,curățarea pardoselilor,peluze cosit,tratarea apelor uzate ,livrarea bunurilor și serviciilor.Precum computerele ,aceștia se pot conecta la diferite rețele ,li se pot schimba sau altera partea software și li se pot atașa accesorii pentru a le crește utilitatea.Roboții autonomi de uz general pot să recunoască obiecte sau persoane,funcțiile lor fiind însă limitate când aceștia trebuie să rezolve situații noi,de care nu s-au lovit în trecut.
Roboții dedicați sunt cei industriali,aceștia sunt in general imobili și au o funcție specifică în uzine cum ar fi :sudură,lipire,împachetare,amplasare componente electronice în locații specifice cu precizie maximă.Aceștia sunt utilizați în multe sarcini care pentru oamenii ar fi plictisitoare ,murdare sau periculoase cum ar fi explorarea altor planete,a vulcanilor,curățarea unor țevi lungi ce conțin materiale periculoase,dezamorsare de bombe etc.
1.3Aplicație Maze Solving Robot V3
Datorită evoluției tehnologice roboții din zilele noastre au ajuns să facă o serie de activițati cât mai apropiate de activitațile umane .Acesti roboți pot fi folosiți în situații periculoase în care operatorul uman nu poate ajunge sau este foarte periculos pentru om să intervină.
Un model de robot mobil este si Maze Solvin Robot V3,o aplicație ce poate fi regasita in toate țarile din întreaga lume. Pentru construcția robotului Patrick McCabe un student al [anonimizat] Massachusett, Cambridge a dezvoltat în mediul de proiectare AutoCAD platforma de bază sau șasiul robotului fiind alcătuit din două placi montate împreună cu ajutorul unor distanțiere. S-a ales ca material plexiglas (material termoplastic rigid, transparent cu o foarte bună transmisie luminoasă), urmând sa fie prelucrat prin debitare cu laser.
De șasiu în partea de sus a punții de jos au fost atașate două motoare de curent continuu, având în componența lor un reductor 30:1 din roții metalice și o tensiune de alimentare de 6V. Roțile din plastic cu anvelope de silicon ce măsoară în diametru 32 mm. se pot atașa prin simplă apăsare pe arborele motorului.
Fig. 1.16 – Șasiul, motoreductoarele și roțile
În scopul de a face un robot cât mai simplu și cu un aspect cât mai plăcut a trecut la integrarea celor două circuite imprimate, Really Bare Bones Board prezentată în figura 1.17 (RBBB – care folosește un microcontroler ATmega328 produs de către firma Atmel) și un driver creat de el în mediul de proiectare Eagle (figura 1.18)., în unul singur.
Noul circuit este de fapt un Arduino la care a fost adăugat un driver SN754410 pentru motoare. După cum se observă în figura 1.19 ca ieșiri au fost păstrate doar cele pentru senzori și motoare. Un alt avantaj care a fost adăugat la aceast circuit, este accesul la pinii de ENABLE ai driverului. Aceștia sunt conectați la modulatoarele PWM de la microcontroler care permit un control asupra vitezei robotului.
Pe pinul 13 al microcontrolerului există, de asemenea, un led care poate fi folosit pentru depanare.
Fig. 1.17 – RBBB „Board”
Really Bare-Bones Board a fost proiectat pentru a fi un mic și ușor de asamblat, Arduino adresâdu-se în special studenților și persoanelor care crează un prototip. Placa poate fi conectată la un „breadboard”, sau poate fi integrată în proiecte mari sau mici, cum ar fi jucării, aparate mici, proiecte ușor de transportat.
RBBB include toate funcțiile pe care le oferă celălalte placi Arduino cu excepția limitărilor fizice.
Fig. 1.18 – PCB driver
Au fost adăugați trei pini pentru o sursă de alimentare în comutație (Pololu Adjustable Boost Regulator) care oferă două plaje de reglare, de la 2.5V până la 9.5V și de la 4V până la 25V. Pentru acest robot s-a ales prima plajă de valori. Motoarele și driverul au fost alimentate la o tensiune de 6V.
A mai fost adăugată înca o ieșire digitală lângă ieșirile analogice care permite ledurilor IR de pe bara de senzori (Pololu QTR-8A Reflectance Sensor Array) care permite controlul acestora.
Alimentarea robotului este realizată cu ajutorul unui suport de patru acumulatori tip AA. De asemenea suportul are încorporat un comutator care ajută să închidem și să deschidem conexiunea dintre cele patru celule și circuit.
Fig. 1.19 – Noul circuit și sursa de alimentare în comutație Pololu
Robotul a fost programat folosind regula de stanga precizată anterior, în final există o funcție care reface cel mai scurt drum calculat de către robot[12][13][14].
Fig. 1.20 – Robotul “Maze Solving Robot V3” dezvoltat de Patrick McCabe
Capitolul II Modul telecomandat:
2 1.Analiza microcontrolerului
În ceea ce privește roboți din zilele noastre,majoritatea sunt controlați de cel puțin un microcontroler .Acesta este creierul robotului,el ne asigura conectivitatea ditre toate elementele electronice și mecanice și faptul că acestea funționeaza împreună spre îndeplinirea sarcinii dorite.Toată partea decizională are loc aici,unde prin analizarea outputului de la senzori are loc alocarea acțiunilor pentru îndeplinirea sarcinii.Robotul poate fi programat sa realizeze mai multe funcții daca are în componența s-a un microcontroler destul de performant.În general microcontrolerul poate fi programat în diferite limbaje de programare,cel mai utilizat limbaj contemporant este C-ul sau asembler-ul.
Un microcontroler este un sistem întreg amplasat pe o singură capsula mică.El este cunoscut sub numele de system on a chip pentru că el conține o unitate de procesare,memorie și periferice de intrare/iesire programabile.Cu toate aceste componente încorporate îl putem numi un sistem embedded .El poate lucrua si fără un sistem de operare,chiar dacă are o memorie foare mică,fiind necesar doar un program de o complexitate scăzuta ușor de creat și implementat.
Un al concept cheie al microcontrolerului este cel al întreruperilor ,funcție care îi permite acestuia să răspundă în timp real la orice factor perturbator ce acționează asupra sistemului.Întreruperile sunt defapt niște schimburi în fluxul de control ,care nu sunt cauzate de programul care se execută,ci de alte cauze,aflate deobicei în legatură cu operațiile I/O.
Altă caracteristică importantă a unui microcontroler care este cheia pentru controlul unui robot este reprezentată de pinii de intrare/ieșire. Aceștia sunt configurabili prin programul încărcat pe microcontroler să fie ori în stare de input ori în stare de output depinzând de ce dorim să conectăm la ei. Dacă aceștia se afla în starea de input pot fi folosiți ca să citim valorile primite de la senzori, sau dacă se afla în stare de output pot fi folosiți la controlarea dispozitivelor externe cum ar fi motoarele și LEDurile.
Depinzând de mărimea robotului pe care dorim să îl construim putem alege ca placa PCB să conțină microcontrolerul sau dacă dorim să simplificăm proiectarea putem folosi un modul pre construit cu pinii și oscilatorul de cuarț deja configurat. În acest caz am ales să folosim un 8
microprocesor pe care îl integram pe plăcuța PCB; acesta este un procesor de tip ATMega 324P deoarece este suficient de performant pentru acest robot.
2.1.1 Microcontrolerele AVR
AVR este un microprocesor cu o arhitectura RISC,fiind produs de Atmel.Arhitecuta microprocesorului a fost proiectata de o mână de oameni educați la o universitate norvegiana de științe.Microcontrolerul are integrat pe o singură capsulă oscilatorul, memoria program, o memorie RAM, numărătoare, interfețe de comunicație și periferice de program intrare/ieșire. De asemenea microcontrolerul poate avea în structura sa blocuri analogice cum ar fi: modulatoare PWM ,convertoare analog numerice de 8, 10 sau 12 biți, comparatoare analogice, , etc.
Microcontrolerele mai noi, au în structura lor o memorie de date integrată de tip RAM pe care o folosesc pentru variabile și o memorie de tip EEPROM pentru stocarea constantelor.
La fel ca microprocesoarele, unele tipuri de microcontrolere pot adresa o memorie program și o memorie RAM, externe.Microcontrolerele care au în componența s-a o memorie FLASH s-au dezvoltat foarte rapid din cauza prețului redus de cost si modul de utilizare foarte simplu,care duce la reducerea timpului de proiectare. Aceasta poate fi ștearsă și înscrisă de un numar foarte mare de ori, suficient pentru punerea la punct a oricărei aplicații, prețul unui microcontroler cu memorie flash încorporată fiind de cațiva dolari, însa cu un program de aplicație acesta se poate vinde cu un preț până la 100 de ori mai mare.
Aceste tipuri de microprocesoare folosesc o arhitectura de tip Harvard,tipic microcontrolerelor RISC, cu o memori de 12 ,14,16 biti,codul de program se executa intr-un singur ceas, iar procesarea informațiilor se face utilizând parelelismul, având posibilitatea de a înscrie programul de aplicație direct în circuit. Înscrierea în circuit ISP („ in system programming) se face pe interfața serie SPI.
O altă importanță a acestor familii de microcontrolere este consumul mic de energie.Tensiunile de alimentare au valori cuprinse intre 1.8 si 5V.Procesorul activ poate consuma 1,1mA la o frecvențpăde 1MHz și la o tensiune de alimentare de 3V.
O famillie de microcontrolere cu arhitectură RISC din seria AVR a firmei Atmel care cuprinde și microcontrolerul ales de mine, este: ATmega48A, ATmega48PA, ATmega88A, ATmega88PA, ATmega168A, ATmega168PA, ATmega324, ATmega328P[15].
2.1.2 Microcontrolerul ATMega324
Microcontrolerul Atmege324 este un circuit electronic integrat produs de compania Atmel.El are la bază un set de instrucțiuni AtmelAVR.
Microcontrolerul ATMega324 poate fi inclus perfect în aplicații de comanda a roboților mobili,industriali,controlul motoarelor,senyori de consum redus,chei electronice,industria automobilelor e.t.c.
Acesta este un microcontroler de înaltă performanta,CMOS low-power pe 8 biți ,bazat pe arhitectura AVR RISC.Cu ajutorul performanței de 1MIPS pe MHz,pentru executarea unor instrucțiuni puternice intr-un singur moment de tact,microcontrolerul îi permite oricărui inginer sau desinger de sistem să optimizeze consumul de putere contra vitezei de procesare.
Atmega324 foloseste o arhitectură RISC avansată,prezinta 131 de instrucțiuni în set,majoritatea executându-se într-un singur ciclu de ceas.Contine 32 de regiștri de uz general pe 8 biți ,acest fapt reprezintă modul de organizare al memorie ,capacitatea de procesare fiind de până la 20MIPS la 20 MHz.
Memoria nevolatilă de anduranță ridicată este împarțită în: 32KB de memorie nevolatilă(FLASH) de program auto programabilă din care 0.5KB sunt ocupați de bootloaderul de arduino,1KB de memorie EEPROM –memorie de date ce trebuie să fie salvate când nu mai exista alimentare cu energie electrică ,2KB de memorie internă SRAM-memorie de date folosită de un program în timpul executării sale.
Microcontrolerul este dotat cu 23 de linii generale intrare/iesire grupate în trei porturi:PORTUL B,PORTUL C,PORTUL D,aceasta fiind conexiunea fizică între microcontroler și lumea de afară, 6 canale PWM (OC0A, OC0B, OC1A, OC2A, OC1B, OC2B), USART serial-programabil, 6 canale ADC cu acuratețe pe 10 biți.
Fig. 2.5. – Microcontrolerul ATmega328
Microcontrolerul are o interfață serial,ADC cu 6 canale(8 canale în TGFP și pachete MLF) cu acuratețe de 10 biți.Cronometru este în timp real,dar oscilatorul este separat.Mai conține numărătoare pe 8 biți(T0,TOSC1)care sunt flexibile cu moduri de comparare. Atmega324 are și un cronometru pe 16 biți(T1) de supraveghere cu oscilator inter.Pentru a economisi putere a fost integrat un port serial SPI.
Dispune de cinci moduri de somn: modul Standby, modul ADC Noise Reduction, modul Idle, modul Power-down, modul Power-save.
Modul Standby – funcționează doar oscilatorul în timp ce restul dispozitivului este în repaus.
Modul ADC Noise Reduction – oprește unitatea centrală și toate modulele de I/O cu excepția numărătorului asincron si ADC-ul pentru a minimaliza zgomotul de comutație din timpul conversiei
Modul Idle – oprește unitatea centrală în timp ce permite SRAM-ului, cronometrelor numărătoarelor, porturilor SPI și sistemului de întrerupere să funcționeze.
Modul Power-down – salvează conținutul registrelor dar îngheață oscilatorul, făcând incapabile orice alte funcții ale cipului până la următoarea întrerupere sau resetare de hard.
Modul Power-save – numărătorul asincron continuă să funcționeze, fapt ce permite utilizatorului să mențină o bază în timp ce restul dispozitivului este în repaus[16].
Portul B este un port de intrare/ieșire bidirectional pe 8 biți cu rezistoare interne selectate pentru fiecare bit.
Port C (PC0…PC5) este un bidirecțional I/O pe 8 biți cu rezistoare interne selectate pentru fiecare bit.
PC6/RESET – atât timp cât conținutul RSTDISBL este programat, PC6 este folosit ca pin de I/O, caracteristicile sale fiind diferite față de ceilalți pini ai portului C.
ATMega 328 este un microcontroler CMOS cu consum redus de putere pe 8 biți ce are la bază o arhitectură AVR RISC îmbunătățită. Prin executarea de instrucțiuni puternice într-un singur ciclu de ceas ATMega 328 atinge capacități de procesare de 1 MIPS pe MHz permițând celui ce face designul de sistem să optimizeze consumul de putere versus putere de procesare.
Figura II-2 Schema bloc a microcontrolerului ATMega 324
Nucleul AVR combină un set de instrucțiuni bogat cu 32 de regiștrii de uz general. Toți 32 de regiștrii sunt direct conectați la unitatea aritmetrico – logică (ALU), astfel permițând ca 2 regiștrii independenți să fie accesați printr-o singură instrucțiune executată într-un singur ciclu de ceas. Astfel arhitectura rezultată este mult mai eficientă din punct de vedere al codului și în același timp îi permite capacități de procesare de până la 10 ori mai rapide decât la microcontrolerele CISC convenționale.
Microcontrolerul ATMega 324 are următoarele facilități: 8 KBytes de memorie Flash de program cu capacități de Read-While-Write (citire în timp ce se scris în memorie), memorie EEPROM de 1KBytes, memorie SRAM de 2 Kbytesm 23 de linii generale de input/output, 32 de regiștri de uz general, 3 timere/countere flexibile cu moduri de comparare, întreruperi interne și externe, un programator serial USART, o interfață serială orientată pe biti 2-wire, un port serial SPI, un ADC de 10 biți pe 6 canale, un Watchdog programabil cu oscilator intern și 5 moduri de prezervare a puterii programabile din software. În modul IDLE acesta oprește CPU-ul, dar în același timp permite funcționarea în continuare a memoriei SRAM, a timerelor/counterelor, a USART, a interfeței serial, a portului SPI și a sistemului de întreruperi. Modul Power-Down salvează conținutul regiștrilor, dar îngheață activitatea oscilatorului, dezactivând orice altă funcție din chip până când se înregistrează următoarea întrerupere sau următorul reset hardware. În modul Power-Save, timerul asincron continuă să funcționeze, permițând astfel utilizatorului să mențină o evidență a timpului cât timp restul dispozitivului este într-un mod de hibernare. Modul ADC Noise Reduction oprește CPU-ul și toate modulele de I/O cu excepția timerului asincron și a convertorului ADC, pentru a minimiza zgomotul de comutație din timpul converșilor ADC. În modul Standby, oscilatorul cu cristal continuă să funcționeze, în timp ce restul dispozitivului este într-o stare de hibernare. Aceasta permite o pornire foarte rapidă a dispozitivului în caz de nevoie, împreună cu un consum de putere redus.
Dispozitivul este produs folosind tehnologia de densitate ridicată a memoriei nonvolatile deținută de Atmel. ISP Flash-ul de pe chip permite memoriei de program să fie reprogramată în sistem printr-o interfața SPI seriala, printr-un programator convențional de memorie nonvolatila sau utilizând un program de bootare ce rulează în core-ul AVR. Programul de bootare poate folosi orice interfața să descarce programul în memoria flash destinată aplicației. Partea software din flashul de bootare că continuă să funcționeze cât timp memoria flash destinată aplicației este updatata, furnizând cu adevărat operațiunea de Read-While-Write (de citire a memoriei în timp ce se scrie în această). Prin combinarea unui CPU de tip RISC de 8 biți cu memoria de sistem Flash auto programabilă furnizează o soluție foarte flexibilă și eficiență din punct de vedere al costului pentru multe aplicații embedded.
Comparație între memoria procesoarelor familiei AVR pe 8 biți
Această secțiune prezintă mai în detaliu arhitectura miezului AVR în general. Funcția principală a miezului CPU (UCP) este de a asigura execuția corectă a programului. Din această cauză acesta trebuie să acceseze memoria, să facă calcule, să controleze perifericele și să se ocupe de funcționarea întreruperilor.
Figura II-3 Diagrama bloc a arhitecturii AVR
Pentru a maximiza performanța și paralelismul, nucleul AVR utilizează o arhitectură Harvard cu memorii separate și magistrala pentru program și date. Instrucțiunile în memoria de program sunt executate cu un singur nivel de pipeline. Cât timp o instrucțiune este executată, următoarea instrucțiune este găsită în memoria de program și adusă. Acest concept permite 14
instrucțiunilor să fie executate în fiecare ciclu de ceas. Memoria de program este o memorie Flash inclusă în sistem, reprogramabilă.
Nucleul AVR prezintă o metodă de acces rapid la cei 32 de regiștri de uz general de 8 biți care utilizează un singur semnal de ceas pentru timpul de acces. Acesta permite că operațiile în Unitatea Aritmetico Logică (ALU) să fie executate într-un singur ciclu de ceas. Într-o operație ALU tipică doi operanzi sunt scoși din fișierele de regiștrilor, operația între cei doi este executată și rezultatul este stocat înapoi în regiștri, toate acestea într-un singur ciclu al ceasului.
Șase dintre cei 32 de regiștri de 8 biți sunt utilizați ca trei regiștri de pointare a adresei pe 16 biți utilizați pentru adresarea spațiului de date permițând astfel un calcul eficient al adreselor. Unul dintre acei trei regiștri poate fi utilizat ca un pointer de adresă pentru căutarea în tabelele de adresa ale memoriei flash.
Unitatea ALU permite operații aritmetice și logice între regiștri sau între o constantă și un registru. Operații care conțin date dintr-un singur registru pot fi de asemenea executate de către ALU. După o operație aritmetică, registrul de stare este updatat pentru a reflecta informația care este rezultatul operației.
Parcurgerea fluidă a codului de program este asigurată de salturi condiționate și necondiționate și de către instrucțiuni de apelare care au permisiunea de a accesa direct întreg spațiul de adrese. Majoritatea instrucțiunilor AVR au formatul cuvântului pe 16 biți, iar fiecare adresă de memorie de program conține o instrucțiune de 16 sau 32 de biți.
Spațiul memoriei Flash de program este împărțit în două secțiuni: secțiunea pentru codul de bootare și secțiunea pentru programele aplicației. Ambele secțiuni au biți de blocare dedicați pentru a sigură protecție de scriere sau citire. Instrucțiunea SPM care scrie în secțiunea pentru programele aplicație trebuie să fie găsită în secțiunea programului de bootare.
În timpul întreruperilor și a apelării de subrutine, adresa de întoarcere la secțiunea de cod principală numită și numărător de program (PC- program counter) este reținută într-o stivă. Stiva este regăsita propriu-zis în memoria de date generală din SRAM, deci prin consecință mărimea ei este limitată numai de mărimea totală a memoriei SRAM și utilizarea acesteia. Toate programele de utilizator trebuie să inițializeze stiva (SP- stack pointer) în rutină de reset (înainte ca orice subrutină sau întrerupere să fie executată). Pointerul de stivă SP este accesibil pentru citire/scriere în spațiu input/output I/O. Datele din memoria SRAM pot fi accesate cu ușurință prin cele cinci moduri de adresare existente în arhitectura AVR. Toate spațiile de memorie din arhitectura AVR sunt liniare.
Un modul flexibil de întreruperi are regiștri de control în spațiul I/O cu un bliț global de întreruperi existent în registrul de stare. Toate întreruperile au un vector de întreruperi și un tabel de întreruperi. Întreruperile au prioritatea stabilită în concordanță cu poziția vectorului lor de întreruperi: cu cât adresa acestuia este mai mic cu atât întreruperea are o prioritate mai mare.
Spațiul de memorie I/O conține 64 de adrese pentru funcțiile de periferice ale CPU cum ar fi regiștri de control, SPI, funcții I/O. Memoria I/O poate fi accesată direct sau indirect cu ajutorul locațiilor spațiului de date de la 0x20 la 0x5F. Adițional ATMega 328 are un spațiu de adrese I/O extins de la 0x60 la 0xFF unde doar următoarele instrucțiuni pot fi folosite: ST/STS/STD și LD/LDS/LDD.
Implementarea microcontrolerului ATMega 324
în cadrul modului telecomandat
2.2 Funcționarea circuitului de alimentare
O altă parte importantă din componența unui robot este sursa de tensiune prin care este alimentat tot sistemul și datorită căreia robotul prinde viață. Deoarece acumulatorul pe care îl folosim are tensiunea de 1.5V și intensitatea de 100 mA trebuie ca între acesta și circuitele care dorim să le alimentăm să întrepunem un regulator de tensiune care va transforma tensiunea de la intrare într-o tensiune de 6V pe care noi putem să o utilizăm. Cu tensiunea rezultată putem alimenta atât microcontrolerul cât și sensorii și driverele de motor.
Circuitul integrat utilizat la acest robot este LM3490IM5-3.3.care se implementează conform figurii II-5.
Figura II-5: Proiectarea sursei de alimentare
In figura 4 este prezentat modul dorit de proiectare al surei de alimentare pentru ca aceasta să funcționeze la parametrii doriți.Design-ul ne cere în modul specific amplasarea condensatorilor în acest fel și cu aceste valori,puși atât pe intrarea cât si pe ieșirea regulatorului de tensiune și au rolul de a filtrat tensiunea de elemente parazite care ar putea duce la oscilația tensiunii cu care se va aliementa circuitul nostru:Cout trebuie să fie de cel puțin 0.1uF pentru a se menține stabilitatea.Această valoare poate fi crescută fără margine pentru a se menține tensiunea de ieșire la valoarea dorită în timpul regimurilor tranzitorii.Acesta trebuie să fie localizat cât mai aproape de regulatorul de tensiune.Condensatorul trebuie să aibă parametrii de operare în funcție de temperatură în aceiasi parametri cu cei ai regulatorul pentru o bună funcționare.Această oscilație nu va apărea pe un voltmetru deoarece acestea au viteza de reacție mică,dar dacă analizăm semnalul cu un osciloscop punem observa că tensiunea are o oscilație de frecvență mare în lipsa condensatoarelor.
LM3490IM5-3.3 este un regulator pozitiv de tensiune ce are încorporează abilitatea de a scoate la ieșire un curent de 1mA cu o cădere de tensiune de obicei de 6V pe toată gama de temperatură suportată. Deasemenea acesta prezintă posibilitatea de a reduce curentul de masă când diferența dintre tensiunea de intrare și cea de ieșire depășește 3V.
Bateriile
În lucrarea mea am folosit drept acumulatorii patru baterii …..de 1.5V ca să rezulte o tensiune de 6V de care am nevoie, pentru ca circuitul meu să-mi funcționeze .
Alessandro Volta a construit și a descris prima baterie electrochimică, gramada voltaic în 1800. Aceasta a fost o stivă de plăci de cupru și zinc, separate de saramură îmbibată discuri de hârtie, care ar putea produce un curent constant pentru o perioadă considerabilă de timp. Volta nu a apreciat că tensiunea era din cauza reacțiilor chimice. El a crezut ca celulele sale au fost o sursă inepuizabilă de energie și că efectele de coroziune asociate la electrozii au fost o simplă bătaie de cap, mai degrabă decât o consecință inevitabilă a funcționării lor, Michael Faraday a arătat în 1834.
O baterie electrică este un dispozitiv format din două sau mai multe celule electrochimice care transformă energia chimică stocată în energie electrică. Fiecare celulă conține un terminal pozitiv, sau catod, și un terminal negativ, sau anod.
Fig, simbolul electric
Electroliți permite ionilor să se deplaseze între electrozi și terminalele, care permite curentului să treacă din bateria de a efectua munca. Bateriile vin în multe forme și mărimi, de la celulele miniatura utilizate pentru alimentarea ajutoare și ceasuri auditive , baterii de dimensiunea unei camere care oferă energie în modul standby pentru centrale telefonice și centre de date de calculator. Bateriile au mult mai mici specific de energie (energie pe unitatea de masă) decât combustibilii comune, cum ar fi benzina. Acest lucru este oarecum compensată de eficiența mai mare a motoarelor electrice în producerea de lucru mecanic, în comparație cu motoarele cu ardere.
Bateriile convertesc energia chimică direct în energie electrică.O baterie este formată dintr-un numar mare de celule voltaice.Fiecare celulă la rândul este este formată din două jumătăți de celule conectate în serie cu un electrolit conductor conținând anioni și cationi.O jumătate de celulă include electrolit și electrodul negativ,cealaltă jumătate de celulă include electrolit si electrodul pozitiv.Reacțiile redox dau putere bateriei.În timpul încărcării cationii se reduc ,se adaugă electroni,în timp ce anioni sunt oxidați electronii sunt eliminați la anod pe timpul descărcării.Electrozii nu se ating reciproc ,dar sunt legați electric de electrolit.Unele celule folosesc electroliți diferiți pentru fiecare jumatate de celulă.Un separator permite ionilor să curgă între jumatățile de celule,dar în același timp previne și amestecarea electroliților.Fiecare jumătate de celulă are o forță electromotoare care determină trecerea curentului electric din interiorul celulei către exterior.Forța electrică este cunoscută ca fiind tensiunea la bornele bateriei și se măsoară în volți.Tensiunea terminală a unei celule care nu este nici încărcată nici descărcată se numește tensiune de circuit deschis.
O celulă ideala are rezistența internă neglijabilă ,ceea ce duce la menținerea unei tensiuni constante până la epuizarea energiei din baterie.Dacă tensiune și rezistența sunt reprezentate grafic în funcție de timp,graficele rezultate sunt de obicei o curbă,forma curbei variind în funcție de chimia și aranjamentul intern angajat.
Tensiunea dezvoltată peste terminalele depinde de eliberarea de energie a reacțiilor chimice produse de electrozi și electrolit.
O celulă voltaic pentru scopuri demonstrative. In acest exemplu, cele două jumătăți de celule sunt legate printr-un separator punte de sare care permite transferul de ioni.
Bateriile pot fi clasificate în doua forme:baterii primare și baterii secundare.Bateriile primare transformă ireversibil energia chimică în energie electrică,în cazul în care furnizarea de reactivi este epuizată,energia nu mai poate fi ușor restaurată la baterie.Bateriile secundare pot fi reîncărcate ,ele pot avea reacții chimice ale acestora inversate prin furnizarea de energie electrică spre celulă,restabilind aproximativ compoziția lor originală.Aceste tipuri de baterii nu sunt reîncărcabile pe termen nelimitat,deoarece se pierde electrolitul și coroziunea internă.
O celulă uscată folosește un electrolit pastă,cu suficientă umiditate pentru a permite trecerea curentului.Spre deosebire de o celulă umedă,o celulă uscată poate funcționa în orice orientare fără verse,deoarece nu conține lichid liber ,făcându-l potrivit pentru echipamente portabile. Prin comparație, în primele celule umede au fost de obicei recipiente de sticlă fragile cu tije de plumb agățat din partea de sus deschisă și necesare o manipulare atentă, pentru a evita scurgerile. Baterii plumb-acid nu au atins siguranța și portabilitatea celulei uscat până la dezvoltarea bateriei gel. O celulă uscată comună este bateria de zinc-carbon, numit uneori celula uscat Leclanché, cu o tensiune nominală de 1,5 volți, aceeași ca bateria alcalină (deoarece ambele utilizează aceeași combinație dioxid de zinc-mangan).
Un standard de celule uscate cuprinde un anod de zinc, de obicei sub forma unui vas cilindric, cu un catod de carbon sub formă de tijă centrală. Electrolitul este clorura de amoniu în formă de pastă lângă anod zinc. Spațiul care rămâne între catodul electrolitic și carbon este preluat de un al doilea pastă care conține clorură de amoniu și dioxid de mangan, urmă acționând ca un depolariser. In unele desene, clorura de amoniu se înlocuiește cu clorură de zinc.
fig 3 Desenul unei celule uscate(1. capac alama, 2. sigiliu de plastic, 3. spatiu de expansiune, 4. carton poros, 5. zinc, 6. tija de carbon, 7. amestec chimic.)
Baterii de unică folosință pierd de obicei 8-20 la sută din taxa lor originală pe an, atunci când este păstrată la temperatura camerei (20-30 ° C). Acest lucru este cunoscut sub numele de "auto-descărcare de gestiune" rata, și se datoreaza reacțilori chimice care au loc in interiorul celulei, chiar atunci când nu este aplicată nici o sarcină. Rata reacțiilor adverse este redusă pentru bateriile care sunt depozitate la temperaturi mai scăzute, deși unele pot fi deteriorate de îngheț.
În proiectul meu am ales să folosesc baterii de unică folosiță cu o tensiune de 1.5V cu o durată de funcționare de cinci ore.
3. Utilizarea și funcționarea motoarelor
Pentru ca robotul să se poată deplasa sau să își poată mișca vreun membru trebuie să amplasăm și să controlăm diverse motoare care au atașate fie roți care pot servi ca principalul mijloc de locomoție sau diverse roți zimțate care pot produce deplasarea unui braț sau strângerea unui clește.
Motoarele sunt dispozitive care în funcție de funcția robotului pot fi ori hidraulice, ori electrice. Motoarele hidraulice sunt folosite la roboții care au rolul de a acționa asupra unor obiecte de greutate mare, deoarece motoarele electrice nu pot face față la asemenea sarcină. Acestea din urmă sunt în schimb folosite când vine vorba de sarcini care au nevoie de exactitate mare, de precizie, deoarece ele pot fi controlate la un nivel mult mai bun decât motoarele hidraulice.
De obicei pentru a alimenta un asemenea motor avem nevoie de o tensiune de până la 20V și un curent între 500 mA și 8A, iar comandă lor necesită un curent de 20 mA, deci pentru a le putea controla pe circuitul nostru este nevoie de un montaj special cunoscut în mod uzual ca o punte H descrisă în Figură II-1.
Figura II-11: Proiectarea Punții H
O punte H este un circuit electronic care permite unei tensiuni să fie aplicată pe un consumator în orice direcție. Aceste circuite sunt folosite deseori în robotică sau alte aplicații asemănătoare pentru a permite unui motor de curent continuu să se rotească atât înainte cât și înapoi (în sens invers). Punțile H sunt disponibile ca și circuite integrate, sau pot fi construite din componente distincte. 22
Termenul de punte H este derivat din reprezentarea grafică uzuală a circuitului. O punte H este construită din patru comutatoare (mecanice sau electronice, în cazul nostru niște tranzistoare). Când comutatoarele T1 și T4 (conform Figurii II-3a) sunt închise, iar T2 și T3 sunt deschise o tensiune pozitivă va fi aplicată asupra motorului. Prin deschiderea T1 și T4 și închiderea T2 și T3, aceasta tensiune este inversată, permițând astfel o operare opusă a motorului.
Utilizând figura de mai sus observăm că comutatoarele T1 și T2 nu ar trebui niciodată să fie închise în același timp, deoarece asta ar cauza un scurt circuit la sursa de tensiune. Aceiași condiție se aplică și pentru comutatoarele T3 și T4.
Motoarele utilizate la construcția robotului meu au schimbător de viteze încorporat ceea ce le face mult mai puternice decât omologii lor fără această facilitate.
Astfel dacă particularizăm circuitul din Figura II-11 pe cazul nostru particular, când pentru comutatoare folosim tranzistoare, putem spune că el funcționează în felul următor: dacă tranzistorii T1 și T4 sunt în regim normal de funcționare, curentul de la sursa de alimentare alimentează motorul. În acest timp tranzistoarele T2 și T3 sunt în blocare și putem să ne gândim la ele ca și cum nu ar exista în circuit. Prin alegerea perechii de tranzistoare care va funcționa și care va fi în blocare controlăm direcția tensiunii care străbate motorul. Deoarece motoarele cu magneți permanenți își schimbă direcția de rotire în funcție de tensiunea ce îi străbate putem controla dacă motoarele noastre se învârtesc înainte sau înapoi, deci putem controla sensul de deplasare a robotului. Dacă ne gândim la mișcare și robotul nostru are cel puțin 2 roți, fiecare atașată unui motor controlat de o punte H, putem să controlăm mișcarea astfel: pentru ca robotul să meargă înainte la ambele punți H activăm tranzistoarele T1 și T4, dacă dorim că robotul să meargă înapoi activăm doar tranzistoarele T2 și T3, iar dacă dorim că acesta să se întoarcă la o punte H activăm T1 și T4, iar la cealaltă T2 și T3. Turația motorului este dată de factorul de umplere a semnalului PWM dat de microcontroller. Cu cât factorul de umplere este mai mare cu atât turația este mai mare. Prin extensie dacă ne gândim la mișcarea robotului dacă ambele motoare funcționează în același sens, dar unul are o turație mai mare și celălalt mai mică, robotul va avea o traiectorie curbată.
Figura II-12: Stările Punții H
Aranjamentul punții H este folosit în general să inverseze polaritatea motorului, dar de asemenea aranjamentul poate fi folosit și pentru frânarea motorului, unde motorul ajunge la o oprire rapidă, când terminalele motorului sunt supuse unui scurt circuit, sau să i se permită motorului un mers în gol până la oprire, când motorul este efectiv deconectat de la circuit.
Tabelul din Figura II-13 sumarizează aceste operații cu T1 -> T4 ce corespund Figurii II-
Figura II-13: Tabelul de stări ale Punții H
O punte H este de obicei construită folosind dispozitive de polaritate opusă cum ar fi PNP BJT-uri (tranzistoare bipolare de joncțiune) sau MOSFET-uri (tranzistoare cu semiconductor de metal-oxid cu efect de câmp) pe canal P conectate la o magistrală de tensiune mare și NPN BTJ-uri sau MOSFET-uri pe canal N conectate la o magistrală de tensiune mică.
Proiectarea cea mai eficienta cu MOSFET-uri folosește MOSFET-uri de canal N atât pe partea ridicată cât și pe partea scăzută deoarece în mod uzual au o treime din rezistență de ON a unui MOSFET pe canal P. Aceasta necesită un design mai complex deoarece porțile parții înalte ale MOSFET-urilor trebuie să fie acționate pozitiv, cu privire la sursa de alimentare de curent continuu.
Modul cel mai utilizat de control al motoarelor este prin folosirea circuitului integrat SGS Thompson L298N care încorporează 2 punți H într-o singură capsulă, deci cu acest circuit se pot controla simultan independent 2 motoare.
Figura II-14: Circuitul integrat L298
Circuitul L298 trebuie să aibă pinii conectați la alimentarea de la baterie, pinul de tensiune de referință la 5V adică la tensiunea de pe placă PCB, un pin la masă și 6 pini trebuie să fie conectați la microcontroler la pinii de ieșire digitali ai acestuia prin care va primi comenzile de funcționare. Cei 6 pini legați la microcontroler sunt de fapt 2 perechi de 3 pini, pentru cele 2 punți H încorporate ce au următoare semnificație: enable motor, direcția A (înainte) și direcția B (înapoi). Pinul care va intra în circuitul L298 trebuie conectat la un pin digital de ieșire al microcontrolerului care suportă funcția de PWM ceea ce înseamnă că poate trimite un semnal dreptunghiular al cărui factor de umplere poate fi modificat după nevoile noastre pentru a determina viteză de rotație a motorului. Deasemenea pentru ca întregul circuit de comandă al motoarelor să funcționeze în mod corect trebuie adăugată o punte de diode care să absoarbă fluctuațiile de tensiune create de motor când își schimbă sensul de funcționare. Această punte de diode este creată prin amplasarea pentru fiecare din tranzistorii din puntea H a unei diode în sens invers tranzistorului. La robotul meu am folosit dioda de tip 1N54.
Motoarele de curent continuu
Un motor de curent continuu este una dintre clasele de mașini electrice care transformă energia electrică de curent în energie mecanică.Cele mai frecvente tipuri se bazează pe forțele produse de câmpuri magnetice.Aproape toate tipurile de motoare de curent continuu au un mecanism intern,fie electromecanic sau electronic,pentru a schimba direcția fluxului de curent în partea motorului.Cele mai multe tipuri de motoare produc mișcarea de rotație,un motor linear produce direct forța și mișcarea în linie dreapta.
Motoarele de curent continuu au fost primul tip de motoare utilizate pe scară largă, deoarece acestea au fost alimentate direct de la sistemele de energie electrica existente.Viteza unui motor de curent continuu poate fi controlată într-un domeniu larg,folosind o tensiune de alimentare variabilă sau prin schimbarea puterii curentului în înfășurării sale de câmp.Motoarele mici de curent continuu sunt utilizate în instrumente,jucării și aparate.Motoarele mai mari de curent continuu sunt utilizate în propulsia vehiculelor electrice,lift și dispozitive de ridicare sau în mori.Apariția de electronică de pute a făcut înlocuirea motoarelor de curent continuu cu motoare de curent alternativ ,posibile în multe aplicații.
O bobină de sârmă care funcționează cu curent ,generează un câmp electromagnetic aliniat cu centrul bobinei.Direcția și amploarea câmpului magnetic produs de bobină poate fi schimbat cu direcția și magnitudinea curentului care curge prin ea.Un motor de curent continuu simplu are un set staționar de magneți în stator și o armătură cu mai multe fire izolate îmfășurate în jurul unui miez moale de fier,care sunt concentrate în câmpul magnetic.Înfășurările au de obicei mai multe spire în jurul miezului,iar în motoarele mai mari pot exista mai multe căi de curent în paralel.Capetele înfășurarii firului sunt conectate la un comutator.
La un nivel ridicat de putere,motoarele de curent continuu sunt aproape întotdeauna răcite cu aer.Viteza unui mototr de curent continuu poate fi controlă prin modificarea tensiunii aplicate la armătură.Introducerea rezistenței variabile în armatura circuitului controlează viteza circuitului,Motoarele moderne sunt adesea controlate de siteme electronice de putere care reglează tensiunea de "tocare" a curentului continuu în si în afara circuitelor care au tensiune mai mică.
Dacă puterea externă este aplicată unui motor de curent continuu se comportă ca un generator de curent continuu.Aceasta funcție este uitilizată pentru a încetini și reîncarca bateriile pe mașina hibrid și mașinile electrice sau pentru a reveni electricitate înapoi la rețeaua electrică folosită pe o mașina stradă sau o linie electrică de tren alimentat atunci când încetinește.
În general, sunt similare în construcție cu generatoarele de curent continuu. Ele pot, de fapt să fie descrise ca generatoare care „funcționează invers”. Când curentul trece prin rotorul unui motor, este generat un câmp magnetic care generează o forță electromagnetică, și ca rezultat rotorul se rotește. Acțiunea periilor colectoare și a plăcuțelor colectoare este exact aceiași ca la generator. Rotația rotorului induce un voltaj în bobinajul rotorului.
Acest voltaj indus are sens opus voltajului exterior aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rezultat este aproape egal cu cel indus. Curentul este mic, și viteza motorului va rămâne constantă atât timp cât asupra motorului nu acționează nici o sarcină, sau motorul nu efectuează alt lucru mecanic decât cel efectuat pentru învârtirea rotorului.
Când asupra rotorului se aplică o sarcină, voltajul va fi redus și un curent mai mare va putea să treacă prin rotor. Astfel, motorul este capabil să primească mai mult curent de la sursa care îl alimentează, și astfel să efectueze mai mult lucru mecanic.
Deoarece viteza rotației controlează trecerea curentului prin rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Când rotorul se află în repaus, el, efectiv, nu are nici o rezistență, și dacă voltajul normal este aplicat, va trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul.
Mijloacele obișnuite pentru prevenirea acestor accidente este folosirea în serie a unei rezistențe, la început, împreună cu rotorul, pentru a limita curentul până când motorul începe să dezvolte un curent suficient. Pe parcurs ce motorul prinde viteză, rezistența este redusă treptat, fie manual ori automat.
Viteza cu care un motor cu curent continuu funcționează, depinde de puterea câmpului magnetic care acționează asupra rotorului, cât și de curentul rotorului. Cu cât este mai puternic câmpul magnetic, cu atât este mai mică rată rotației necesare să creeze un curent secundar necesar pentru a contracara curentul aplicat. Din acest motiv viteza motoarelor cu curent continuu poate fi controlată prin variația câmpului curentului.
Motoarele folosite sunt de tip curent continuu, tip reductor cu raport de transmisie 30:1, alimentate la o tensiune de 6V, dar le pot rula și la o tensiune între 3-9V, o intensitate de 120mA (fără sarcină).
Dezvoltă un cuplu de 0.6 Kg*cm și 1000 rot/min.
Fig. 2.10 – Motor electric MICRO METAL 30:1
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Robot Destinat Folosirii In Cazul Interventiei In Zone Periculoase Pentru Om (ID: 163399)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
