Lucrare de licență [307624]

Universitatea Politehnica Timișoara

Facultatea de Mecanică

Departamentul de Mecatronică

Lucrare de licență

Accelerometrul pentru automobil

Coordonator Student

ș.l.prof.dr.ing Diaconu Aurel Popa Vlăduț Dorin

Timișoara 2017

CUPRINS

CAPITOLUL I

INTRODUCERE ÎN MECATRONICĂ…………………………………………………………………………..5

1.1.Scurt istoric………………………………………………………………………………………………..5

1.2.Generalitațiile mecatronicii…………………………………………………………………………6

1.3.Produse mecatronice…………………………………………………………………………………..6

1.4.Structura sistemului Mecatronic…………………………………………………………………7

1.5.Exemple pentru sisteme mecatronice: industria automobilului…………………….8

CAPITOLUL II

SENZORI INTELIGENȚI…………………………………………………………………………………………..9

2.1.Scurt Istoric……………………………………………………………………………………………….9

CAPITOLULIII

ACCELEROMETRU PENTRU AUTOMOBIL……………………………………………………………11

3.1.Funcționare………………………………………………………………………………………………11

3.2.Partea practică………………………………………………………………………………………….12

3.3.Codul Arduino de funcționare…………………………………………………………………..13

CAPITOLUL IV

ACCELEROMETRUL…………………………………………………………………………………………………18

4.1.Generalități ……………………………………………………………………………………………..18

4.2.Acceleromentru biaxial MEMSIC 2125 (cu 2 axe) X,Y………………………………19

4.2.1.Caracteristici…………………………………………………………………………………20

4.2.2.Specificații……………………………………………………………………………………20

4.2.3.Mod de funcționare………………………………………………………………………..21

4.2.4.Definirea pinilor……………………………………………………………………………21

4.2.5.Protocolul de comunicare……………………………………………………………….22

4.3. Accelerometrul MX2125 – Mod de funționare…………………………………………..24

4.4. Accelerometru MMA8452 (cu 3 axe) X,Y,Z………………………………………………25

4.4.1.Introducere…………………………………………………………………………………..25

4.4.2.Materiale necesare………………………………………………………………………..25

4.4.3.Sugestii de lectură…………………………………………………………………………26

4.4.4.Cerințe privind alimentarea cu tensiune…………………………………………..26

4.4.5.Selectarea adresei Jumper……………………………………………………………….26

4.4.6.Exemplu de cuplare……………………………………………………………………….27

4.4.7.Conectare simplă…………………………………………………………………………..27

4.4.8.Schimbarea nivelului……………………………………………………………………..28

4.5. Senzori Accelerație…………………………………………………………………………………..29

4.5.1. ADXL335……………………………………………………………………………………30

4.5.2. Cod Arduino ……………………………………………………………………………….30

CAPITOLUL V

ARDUINO………………………………………………………………………………………………………………………….32

5.1.Scurt Istoric……………………………………………………………………………………………..32

5.2.Hardware ………………………………………………………………………………………………..33

5.3.Plăcuțe oficiale………………………………………………………………………………………….34

5.3.1.Exemple de plăcuțe Arduino…………………………………………………………..34

5.4.Shield-uri………………………………………………………………………………………………….36

5.5.Software…………………………………………………………………………………………………..36

5.6.Exemplu de program………………………………………………………………………………..37

5.7 Dezvoltare………………………………………………………………………………………………..37

5.8.Placa Arduino Leonardo…………………………………………………………………………..37

5.8.1. Prezentare generală………………………………………………………………………37

5.8.2. Specificații tehnice……………………………………………………………………….38

5.8.3. Putere…………………………………………………………………………………………39

5.8.4. Intrare și ieșire……………………………………………………………………………..39

5.8.5. Comunicare………………………………………………………………………………….40

5.8.6. Programare………………………………………………………………………………….41

5.8.7. Resetare automată (software) și inițializare bootloader……………………..41

5.8.8. Protecție la supracurent USB………………………………………………………….42

5.8.9. Caracteristici fizice……………………………………………………………………….42

CAPITOLUL VI

SENZOR DE ACCELEROMETRU MMA8452……………………………………………………….43

6.1.Senzorul MMA8452………………………………………………………………………………….43

6.2.Caracteristici tehnice………………………………………………………………………………..43

CAPITOLUL VII

DISPLAY-UL SERIAL LCD………………………………………………………………………………………44

7.1. Generalități……………………………………………………………………………………………..44

7.2. Produse cu LCD-URI………………………………………………………………………………45

7.3. Construirea circuitului pentru LCD serial………………………………………………..46

7.4. Testarea LCD–ului…………………………………………………………………………………47

7.5. Programarea LCD-ului pentru a primi mesaje de la Basic Stamp……………..49

CAPITOLUL VIII

REALIZAREA PROIECTULUI………………………………………………………………………………..51

8.1. Activități………………………………………………………………………………………………….51

Activitatea #1……………………………………………………………………………………….51

Activitate #2…………………………………………………………………………………………51

Activitatea #3……………………………………………………………………………………….53

Activitatea #4……………………………………………………………………………………….53

8.1.2. Componente necesare……………………………………………54

Activitatea #5……………………………………………………………………………………….54

8.1.3.Studiu de accelerație ale autovehiculului……………………….54

8.1.4.Piese, echipamente și circuite……………………………………55

8.1.5.Procedură…………………………………………………………………………..58

CAPITOLUL IX

BIBLIOGRAFIA ……………………………………………………………………………………………………….60

Capitolul I

Introducere în Mecatronică

1.1. Scurt Istoric

Termenul "mecatronică" a fost utilizat pentru prima dată în anul 1975 de către concernul japonez Yaskawa Electric Corporation , fiind o prescurtare a cuvintelor Mecanică-Electronică-Informatică.La început, mecatronică a fost înțeleasă ca o completare a componentelor mecanicii de precizie, aparatul de fotografiat cu blitz fiind un exemplu clasic de aplicație mecatronică.Cu timpul, noțiunea de mecatronică și-a schimbat sensul și și-a extins aria de definiție: mecatronica a devenit știință inginerească bazată pe disciplinele clasice ale construcției de mașini, electrotehnicii, electronicii și informaticii. Scopul acestei științe este îmbunătățirea funcționalității utilajelor și sistemelor tehnice prin unirea disciplinelor componente într-un tot unitar.Totuși, mecatronica nu este același lucru cu automatica sau cu automatizarea producției. Aceștia sunt termeni care apar și în afara domeniului MECATRONICĂ, dar sunt și incluși în el. Mecatronica poate fi definită ca o concepție novatoare a tehnicii de automatizare pentru nevoile ingineriei și educației. Mecatronica s-a născut ca tehnologie și a devenit filosofie care s-a răspândit în întreaga lume. În ultimii ani, mecatronica este definită simplu: știința mașinilor inteligente.

Ca o concluzie, se poate spune că mecatronica este o sferă interdisciplinară a științei și tehnicii care se ocupă în general de problemele mecanicii, electronicii și informaticii. Totuși, în ea sunt incluse mai multe domenii, care formează baza mecatronicii, și care acoperă multe discipline cunoscute, cum ar fi: electrotehnică, energetică, tehnică de cifrare, tehnică microprocesării informației, tehnica reglării și altele.

1.2. Generalitațiile mecatronicii

Apariția mecatronicii este rezultatul firesc al evoluției în dezvoltarea tehnologică. Sistemele mecatronice sunt caracterizate de faptul că stochează, procesează și analizează semnalele obținute și execută sarcini adecvate.Se consideră că primul utilaj complet din punct de vedere al conceptului mecatronic a fost mașină-unealtă comandată numeric (CNC) pentru producția elicelor de elicopter, construită la Massachusetts Institute of Technology din SUA, în 1952.

Dezvoltarea informaticii la începutul anilor 70 a fost marcată de apariția microprocesorului, caracterizat printr-o înaltă fiabilitate și flexibilitate deosebită, oferind în același timp gabarit și preț scăzut, toate acestea au permis înlocuirea elementelor electronice analogice și de decizie clasice, sistemele electronice devenind astfel mai complexe dar în același timp mai ușor de utilizat.

Această etapă poate fi numită a doua generație a mecatronicii.Mecatronica a început să se dezvolte în mod dinamic după anii '80, perioadă în care era deja proaspăt definită, iar conceptul suferea permanent perfecționări. A fost o perioadă de dezvoltare în direcția obținerii elementelor integrate, menite să asigure pe deplin controlul utilajelor, mașinilor și sistemelor complexe. Acesta a fost începutul celei de a treia generații a mecatronicii, al cărei obiect de interes sunt sistemele multifuncționale și cu o construcție complexă.

1.3. Produse mecatronice

Printre produsele mecatronice întâlnite în mod curent se număra și imprimantele, copiatoarele din noua generație, mașinile de cusut și de tricotat cu comandă numerică, motorul cu ardere internă controlat electronic, sistemele antifurt, sistemele antiderapante (ABS) și pernele de aer din tehnică automobilistică, roboții și manipulatoarele, echipamentele medicale, inclusiv protezele de înaltă tehnologie.

Tot produse mecatronice sunt și camerele video miniaturale, CD-playere și alte micromașini, dar și mașinile agricole mari și cele stradale din noua generație, sistemele cu gabarit mare și liniile de producție automate. Producătorii de automobile creează tot mai des autovehicule mecatronice dotate cu sisteme de execuție complicate, programate și comandate prin calculator.

În prezent, cel mai complex sistem mecatronic din lume este cel care asigură închiderea și deschiderea canalului de acces către portul din Rotterdam, elementele sistemului având o întindere de peste 300 m.Utilajele mecatronice sunt ansambluri care integrează elemente componente simple sau complexe ce îndeplinesc diferite funcții, acționează în baza unor reguli impuse. Principala lor sarcină este funcționarea mecanică, deci producerea de lucru mecanic util, iar esența lor este posibilitatea de a reacționa inteligent, printr-un sistem de senzori, la stimulii exteriori care acționează asupra utilajului luând deciziile corespunzătoare pentru fiecare situație.

Trăsăturile caracteristice ale utilajelor mecatronice sunt următoarele:

Multifuncționalitatea, adică posibilitatea de a realiza diferite procese tehnologice, de exemplu prin schimbarea programului. Inteligența, reprezentând capabilitatea mașinii de a comunica cu mediul și de a lua decizii. Flexibilitatea, adică posibilitatea de a modifica fără dificultăți majore construcția utilajului pe etape de proiectare, producție sau exploatare, de exemplu prin folosirea construcției modulare.

Posibilitatea de a fi conduce de la distanță, ceea ce impune cunoașterea și utilizarea unor interfețe complexe de comunicare. Evoluție permanentă, datorită dinamicii cerințelor pieței și a posibilităților tehnologice de execuție.Un important aspect al mecatronicii este acela ca mașinile și utilajele mecatronice sunt exemplu al imitării naturii. Principala caracteristică a utilajelor mecatronice este capacitatea de a se adapta în permanență la condițiile externe și de a da informații (sub forma semnalelor mecanice, electrice, pneumatice, optice, etc) printr-o automatizare de nivel ridicat.

Sistemele mecatronice sunt dotate cu senzori și traductoare care preiau semnalele din mediu, cu sisteme programate de transformare și interpretare a acestor semnale și dispozitive de comunicație, precum și cu elemente de execuție care acționează corespunzător asupra mediului.

1.4. Structura sistemului Mecatronic

1.5. Exemple pentru sisteme mecatronice: industria automobilului

sistemul antișoc ABS (Antilock Brake System) – anii 1970;

sistemul de control al tracțiunii TCS (Traction Control System) la

mijlocul anilor 1970;

sistemul de control al dinamicii automobilului VDC(Vehicle Dynamics

Control) – anii 1990. Similar sistemului TCS + facilitǎțile oferite de un

senzor de accelerație lateralǎ pentru asigurarea direcției de rulare

CAPITOLUL II

SENZORI INTELIGENȚI

2.1. Scurt istoric

Cuvântul “senzor” este derivat din cuvântul latin sentire care înseamnă “a percepe”. Termenul"senzor inteligent", a apărut pentru prima dată în lucrarea lui Tracy Allen intitulată „Senzori Aplicati” , cunoscută sub numele „Măsurătorile Pămantului”. Tracy Allen a încorporat senzorul inteligent în termometru digital DS 1620, pe care l-a construit pentru a simplifica măsurarea temperaturii microcontrolerului. Acest senzor poate memora setările primite de la un microcontroler, având și funcția de termostat. În contrast cu senzorii inteligenți, primii senzori concepuți sunt dispozitive sau materiale care au unele proprietăti electrice, care, se schimbă atunci când au loc unele modificări fizice. Întreaga viață a unei persoane, de la naștere la moarte, ar putea fi cândva înregistrată de o rețea de senzori inteligenți. Un senzor inteligent trebuie să facă mai mult decât să dea un răspuns corect sau să comunice într-un format digital-un senzor inteligent adaugă valoare datelor, în sensul de a permite sau suportă procese distribuite și de a lua decizii.

Facilitățile dorite de la un senzor inteligent pot include:

-autoidentificarea;

-autodiagnosticarea;

-“conștiența timpului”, în sensul marcării timpului corelat cu canalul de pe care se colectează datele;

-“conștiența locației”, în sensul marcării poziției spațiale pentru fiecare canal;

-funcții de ordin superior ca: prelucrare de semnale, colectare și stocare de date, detectarea evenimentelor și raportarea lor, fusiunea datelor, adică a măsurărilor provenite de la canale multiple;

-conformitatea cu standarde de comunicație a datelor și protocoale de control a corectitudinii acestora.

Trăim într-o lume a senzorilor de tot felul. Poate că, de aceea, de cele mai multe ori, se spune despre ființe, sau chiar obiecte, că sunt senzoriale, senzuale chiar. Sau poate invers. Oricum ceea ce doresc să spun în continuare are referire la senzori, alții însă decât cei creați de natură și pentru corpul omenesc. Se pare că aceștia nu mai ajung, și atunci omul, în profunda sa incăpățânare pentru înțelepciunea ce și-o atribuie, s-a gândit să mai realizeze și alții. Nimic rău în asta, ba chiar dimpotrivă, putem spune că au devenit absolut indispensabili lui homo sapiens al mileniului trei, adică, de fapt, lui homo tehnologicus.

O definiție a senzorilor, pe înțelesul tuturor elevilor, ar trebui să sune așa: Senzorii sunt dispozitive care convertesc (transformă) o mărime fizică într-un semnal de tip informațional. E adevărat și (mai ales) pentru senzorii creați de natură pentru noi, oamenii. Dar pentru cei artificiali, creați de noi și pentru noi, oamenii, semnalul informațional poate fi tip electric, mecanic, optic. Introducerea acestui semnal într-un echipament de prelucrare automată a datelor (cel mai cunoscut fiind calculatorul electronic) mărește, după prelucrarea specifică a datelor, valoarea de utilizare a semnalului, acesta putând fi folosit într-un circuit de comandă, dirijare sau control. Așa s-au născut sistemele: de comandă, dirijare, control.

O definiție de dicționar atribuie cuvântului “senzor” semnificația de “dispozitiv care detectează o schimbare într-un stimul fizic și o transformă într-un semnal care poate fi măsurat sau înregistrat”. Se poate folosi cuvântul “senzor” pentru elementul sensibil însuși. Exemplificare: Putem spune că un termistor este un “senzor”. În contrast cu senzorii inteligenți, primii senzori concepuți sunt dispozitive sau materiale care au unele proprietăți electrice, care, se schimbă atunci când au loc unele modificări fizice.

În interiorul fiecărui senzor inteligent există unul sau mai mulți senzori primitivi și circuitele de sprijin. Lucrul care face un senzor inteligent să fie "inteligent" este partea electronică aditională.

Electronica face acești senzori capabili să realizeze următoarele operații:

• Procesarea de valori măsurate în cantități semnificative

• Comunicarea măsurătorilor cu semnale digitale

• Luarea decizilor și inițierea unei acțiuni, pe bază anumitor condiții, independent de un microcontroller

• Amintirea calibrării sau setării pentru configurare

Capitolul III

ACCELEROMETRU PENTRU AUTOMOBIL

3.1. Funcționare

O idee relativ simplă, dar de efect, bazată pe un accelerometru, o placă Arduino și câteva led-uri (prinse sau nu în bordul mașinii). Atunci când accelerezi sau când iei curbe cu viteză, accelerometrul detectează accelerațiile atât pe direcția de înaintare a mașinii, cât și pe axă laterală (perpendiculara pe direcția de înaintare). Informațiile culese de accelerometru sunt afișate pe un panou cu led-uri. Obținem astfel, un dispozitiv care ne oferă informații despre accelerația mașinii noastre, atât pe direcția de înaintare cât și pe direcția laterală.Numărul de led-uri depinde de noi. În configurația de mai jos, eu am ales 13 led-uri, montate în cruce. Atunci când mașina stă pe loc (sau se deplasează pe un drum drept, cu viteză uniformă), stă aprins doar led-ul din centru. În momentul în care accelerezi, se aprind gradual led-urile pe direcția verticală, iar atunci când iei o curbă, se aprind led-urile orizontale. Ca să fie mai spectaculos, putem monta led-uri de culoare diferită. În centru, și cele 4 led-uri care înconjoară centrul, sugerez led-uri verzi, apoi led-uri galbene, iar pe exterior led-uri roșii. Evident, la fel de simplu putem opta pentru un afișaj LCD,obținând astfel valori numerice.

4.1.1 Schema accelerometrului pentru automobil

3.2. Partea practică

Avem mai multe variante de a monta led-urile. Spre exemplu, putem folosii led-uri brick și o placă din plexiglass negru sau gri, în care dăm găuri exact pe dimensiunea led-urilor. Montăm apoi fiecare led în gaura lui (eventual punem o picătură de SuperGlue), lăsând placa led-ului pe partea inferioară a plăcii de plexiglass. Astfel, pe partea superioară a plăcii de plexiglass (cea care se vede) vom avea vizibile doar 13 led-uri (pentru ca plăcuțele led-urilor sunt prinse pe partea inferioară a plăcii de plexiglass și nu se văd).Altă variantă (dacă suntem dispuși să facem câteva modificări în bordul mașinii) ar fi să dăm câteva găuri direct în bord, și să montezi led-urile direct, fără a mai folosi placa de plexiglas. Efectul va fi net superior, dar ne trebuie ceva curaj să găurim bordul mașinii. În afară de led-uri, mai avem nevoie de o placă Arduino și de un accelerometru. Putem alege orice accelerometru la îndemână. Ideal ar fi un accelerometru cu o gamă de măsură în gamă a câțiva g, în ideea de a avea totuși precizie. Spre exemplu, ADXL335 (măsoară +/- 3g), BMA180 (poate fi configurat să măsoare în gamă +/- 4g), ADXL345 sau MMA8452Q (măsoară în gama +/- 4g) sunt toate alegeri excelente. De departe, cel mai simplu de utilizat este ADXL335, care funcționează în mod analogic. Din acest motiv vom folosii mai departe în acest proiect.

Conexiunile între componente sunt destul de simple. Singurul lucru despre care merită să vorbim este conectarea led-urilor la Arduino. Dacă am ales să folosim Arduino Mega, atunci avem suficienți pini de conectare pentru led-uri, tot ce avem de făcut este să conectăm cele 14 fire de GND (13 led-uri + accelerometru) împreună și să le conectezi la pinul GND al plăcii Arduino, apoi să conectăm pinii IN ai led-urilor la câte un pin digital al Arduino (să spunem că alegem pinii de la 2 la 14) și în final să conectăm accelerometrul ADXL335 așa cum este descris în secțiunea dedicată acestuia (să spunem că am ales porturile analogice 0, 1 și 2). Dacă însă alegem să folosim un Arduino UNO, va trebui să folosim un mic artificiu pentru a putea conecta cele 13 led-uri la cei 12 pini digitali ai Arduino UNO (pinii de la 2 la 13, pentru ca pinii 0 și 1 sunt cei folosiți pentru programarea plăcii și nu este bine să ne atingem de ei). Artificiul despre care vorbim se referă la faptul că oricare pin analogic al plăcii Arduino UNO poate fi folosit și pe post de pin digital. Pur și simplu, pinul analogic 0 va fi adresat că pinul digital 14, pinul analogic 1 va fi adresat că pinul digital 15, și tot așa (dacă vrem să aprindem led-ul legat la pinul digital 0, vom folosi digitalWrite(14, 0) – după ce în setup am setat corect pinul – pinMode(14, OUTPUT) )

Recapitulând, codul de mai jos corespunde următoarele configurații hardware :

Arduino LEONARDO

MMA8452

5 led-uri brick verzi

4 led-uri brick galbene

4 led-uri brick roșii

conectarea led-urilor la pinii Arduino ca în poză de mai jos (led-ul din centru la pinul digital 2, led-ul din dreapta lui la pinul digital 3, led-ul de deasupra lui la pinul digital 12, și tot așa).

3.3. Codul Arduino de funcționare

#define PRAG_X_1 0.5

#define PRAG_X_2 1

#define PRAG_X_3 2

#define PRAG_Y_1 0.5

#define PRAG_Y_2 1

#define PRAG_Y_3 2

#define SMOOTH_X 0.4

#define SMOOTH_Y 0.4

void setup(){

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

pinMode(11, OUTPUT);

pinMode(12, OUTPUT);

pinMode(13, OUTPUT);

//pinul analogic A5 poate fi adresat ca pin digital 19

pinMode(19, OUTPUT);

//led-ul din centru va sta aprins tot timpul

digitalWrite(2, HIGH);

}

float oldAccX;

float oldAccY;

void loop() {

float accX = smooth(readAcc(0), SMOOTH_X, oldAccX);

float accY = smooth(readAcc(1), SMOOTH_Y, oldAccY);

//led-urile pe directie orizontala, din dreapta

if (accX > PRAG_X_1){

digitalWrite(3, HIGH);

}

else {

digitalWrite(3, LOW);

}

if (accX > PRAG_X_2){

digitalWrite(4, HIGH);

}

else {

digitalWrite(4, LOW);

}

if (accX > PRAG_X_3){

digitalWrite(5, HIGH);

}

else {

digitalWrite(5, LOW);

}

//led-urile pe directie orizontala, din stanga

if (accX < – PRAG_X_1){

digitalWrite(6, HIGH);

}

else {

digitalWrite(6, LOW);

}

if (accX < -PRAG_X_2){

digitalWrite(7, HIGH);

}

else {

digitalWrite(7, LOW);

}

if (accX < -PRAG_X_3){

digitalWrite(8, HIGH);

}

else {

digitalWrite(8, LOW);

}

//led-urile pe directie verticala, din partea de sus

if (accX > PRAG_X_1){

digitalWrite(9, HIGH);

}

else {

digitalWrite(9, LOW);

}

if (accX > PRAG_X_2){

digitalWrite(10, HIGH);

}

else {

digitalWrite(10, LOW);

}

if (accX > PRAG_X_3){

digitalWrite(11, HIGH);

}

else {

digitalWrite(11, LOW);

}

//led-urile pe directie verticala, din partea de jos

if (accX < – PRAG_X_1){

digitalWrite(12, HIGH);

}

else {

digitalWrite(12, LOW);

}

if (accX < -PRAG_X_2){

digitalWrite(13, HIGH);

}

else {

digitalWrite(13, LOW);

}

if (accX < -PRAG_X_3){

digitalWrite(19, HIGH);

}

else {

digitalWrite(19, LOW);

}

}

float readAcc(int port) {

int value=analogRead(port);

int miliVolts=map(value,0,1023,0,3300)-3300/2;

float acc=(float)miliVolts/360;

return acc;

}

float smooth(float data, float filterVal, float smoothedVal) {

if (filterVal > 1) {

filterVal = .99;

}

else if (filterVal <= 0){

filterVal = 0;

}

smoothedVal = (data * (1 – filterVal)) + (smoothedVal * filterVal);

return (float)smoothedVal;

}

Codul de mai sus citește valoarea celor două accelerații (pe direcția înainte și pe direcția laterală) și apoi aprinde led-urile corespunzătoare celor două valori. După citire, valorile accelerațiilor sunt filtrate trece-jos pentru a obține un răspuns mai lent. Filtrarea se face de către funcția smooth. Dacă eliminăm funcția smooth, vom obține un răspuns extrem de rapid, dificil de remarcat cu ochiul liber. Printr-o filtrare trece-jos, led-urile se vor schimba mai lent. Cât de lent se schimbă led-urile este controlat de valorile parametrilor SMOOTH_X și SMOOTH_Y. Cu cât valorile acestor parametrii sunt mai apropiate de unu, cu atât led-urile reacționează mai lent. Cu cât valorile sunt mai apropiate de zero, cu atât led-urile reacționează mai rapid. Nivelurile la care se aprind led-urile sunt de asemenea preconfigurate la începutul programului (PRAG_X_1, PRAG_X_2 …). Aceste prag-uri definesc nivelurile la care se aprinde și se stinge fiecare led în parte. În cazul folosirii accelerometrului ADXL335, pe care măsoară valori ale accelerației între 0 și 3 g, pragurile vor fi și ele setate între 0 și 3. Mai departe, tot ceea ce face codul de mai sus este să compare valorile accelerațiilor cu pragurile prestabilite și să aprindă sau să stingă fiecare led. Astfel, spre exemplu, pentru led-ul conectat la portul digital 3 (imediat în dreapta led-ului din centru), avem următoarea secvență :

if (accX > PRAG_X_1){

digitalWrite(3, HIGH);

}

else {

digitalWrite(3, LOW);

}

Capitolul IV

ACCELEROMETRUL

4.1. Generalități

Accelerația masoară cât de repede se modifică viteza în intervalul de timp. Așa cum un vitezometru este un instrument care masoară viteza, la fel un accelerometru este un dispozitiv care masoară accelerația. Putem utiliza abilitățile accelerometrului pentru a sesiza accelerația pentru a măsura o mare varietate de mărimi care sunt utile în conducerea roboților și altor dispozitive electronice.

Se pot măsura:

• Accelerația

• Înclinarea și unghiul înclinării

• Rotirea

• Vibrațiile

• Coliziunea

• Gravitația

Accelerometrele sunt deja utilizate în domeniul tehnic la controlul mașinilor, al echipamentelor specializate, precum și în aplicații tehnice mai puțin complexe.

Exemple:

• Roboți care își mențin echilibrul în mod independent

• Joystick-uri cu înclinare

• Pilot automat la avioane

• Sisteme de alarmă la mașini

• Detectarea ciocnirii/ activarea airbag-urilor

• Monitorizarea mișcării umane

• Instrumente de măsurare a nivelului

În trecut, accelerometrele erau de dimensiuni mari, greu de integrat și foarte scumpe ceea ce făcea ca integrarea lor în sistemele electronice și robotizate să nu fie foarte dorită. Toate acestea s-au schimbat datorită evoluției sistemelor micro-electro-mecanice( MEMS ). Tehnologia MEMS este responsabilă pentru creșterea continuă a numărului de dispoztive cu rol mecanic integrate pe cipuri de silicon.

Oamenii simt în mod natural accelerația pe trei axe, înainte/înapoi, stânga/ dreapta și sus/ jos.Înainte înapoi este senzația de accelerare sau decelerare. Stânga dreapta implică virajele, sus/ jos este ceea ce simțim când urcăm sau coborâm scări.

Sus jos este un mod în care simțim gravitația. Când suntem pe pământ, oamenii simt gravitația ca fiind legată de propria lor greutate.În cădere liberă ,gravitația se simte ca lipsă a greutații proprii. În fizică, gravitația este definită ca forma a accelerației. Când un obiect este pe pământ, gravitația este numită și accelerație statică. Când obiectul se rostogolește ,gravitația este numită accelerație dinamică.

În loc să simtă ca și oamenii pe 3 axe, acclerometrul MX2125 simte accelerația pe 2 axe. Acceleratia pe care o simte depinde foarte mult de poziția în care este plasat. Dacă este ținut într-un anumit sens, el poate simți înainte/înapoi sau sus/jos.Două axe sunt suficiente pentru a sesiza accelerația în multe dintre aplicațiile descries mai sus. Totuși, putem monta un al doilea accelerometru pentru a sesiza a treia axă.

4.2. Acceleromentru biaxial MEMSIC 2125 (cu 2 axe) X,Y

Memsic 2125 este un accelerometru termic cu preț scăzut capabil să măsoare înclinarea, coliziunea, accelerația static sau dinamică, rotirea și vibrația cu o eroare de +/- 3g pe două axe. Firma Memsic oferă produsul 2125 IC într-un format gata de montat pe circuit. Parallax montează circuitul pe un mic PCB oferind o conectare I/O ( Input/ Output ) așa încât poate fi ușor integrat pe o placă de circuit sau în standul de testare a prototipului.

4.2.1. Caracteristici

• Măsoară cu o eroare de +/- 3 g pe fiecare axă

• Conectare cu 6 pini pe placă

• Ieșire analogică a temperaturii ( Tout pin )

• Funcționare pentru temperature cuprinse între 0 si 70 °C

4.2.2. Specificații

• Cerințe de alimentare de la 3.3 la 5 V, intensitatea curentului< 5mA

• Comunicare: TTL/CMOS compatibil cu PWM cu frecvența de 100 Hz

• Dimensiuni 0.42 x 0.42 x 0.45 in

(10.7 x 10.7 x 11.8 mm)

• Funcționează între 0 și 70°C

Aplicații

• Sesizează înclinarea și accelerația pe 2 axe utilă în conducerea robotului autonom

• Controlul înclinarii R/C sau pilot automat

• Sesizarea mișcării/ lipsei mișcării la senzorul de alarmă

• Unghiul de înclinare al axei și sesizarea poziției

4.2.3. Mod de funcționare

Memsic 2125 are o încăpere umplută cu gaz cu un element de incălzire în mijloc și 4 senzori de temperature în jurul marginilor sale. Când accelerometrul este la nivel, punga de gaz încălzit se ridică în partea superioară a încăperii ,astfel toți senzorii vor măsura aceeași temperatură.

Înclinând acceletometrul, gazul încălzit se va deplasa mai aproape de unul dintre cei 4 senzori. Comparând temperaturile celor 4 senzori, atât accelerația static cât și cea dinamică pot fi sesizate.Memsic 2125 convertește valorile măsurate ale temperaturilor în semnale(impulsuri ) care sunt ușor de măsurat și interpretat de către microcontrolere.

4.2.4. Definirea pinilor

4.2.5. Protocolul de comunicare

Fiecare axă are o ieșire PWM de 100 Hz în care accelerația este proporțională cu fracția tHx/Tx.În practică, am aflat că Tx este constantă astfe lîncât se pot obține rezultate valide prin simpla măsurare a lui tHx. Acest lucru este ușor de obținut prin comanda PULSIN a mediului Basic Stamp sau cu ajutorul numărătorului Propeller de pe cip.

Cu Vdd alimentat cu 5 V , 50% din ciclul de lucru corespunde la 0 g, dar acesta va varia cu fiecare unitate individual în intervalul 48.7 % – 51.3 %. Această compensare poate fi diferită când utilizăm o tensiune de alimentare egală cu 3.3 V.

PWM- pulse width modulation – modulare înlățime a pulsului

Programul, SimpleTilt.bs2, măsoară doar lățimea de puls, ceea ce este durata lui tHx, pentru fiecare din axe. Valorile măsurate sunt afișate în editorul de depanare al Basic Stamp.Dacă rulăm programul și înclinăm accelerometrul, vom vedea că valorile pentru fiecare axă se vor modifica.

Odată, accelerometrele erau instrumente mari, ciudate și costisitoare.Nu se pretează la proiecte electronice și robotice.Toate acestea s-au schimbat datorită apariției sistemelor de microelectromecanică MEMS.Tehnologia MEMS este responsabilă pentru un număr din ce în ce mai mare de dispozitive mecanice anterior proiectate chiar pe chips-uri de siliciu.

Oamenii simt în mod natural accelerația pe trei axe: înainte / înapoi, stânga / dreapta și sus jos. Gândește-te doar la ultima oară când erai pe scaunul pasagerului unei mașini pe un drum colinar și curbil. Accelerarea înainte / înapoi este senzația de accelerare și de încetinire. Accelerarea la stânga / la dreapta te fac .În loc de cele trei axe pe care oamenii le simt, accelerometrul MX2125 sesizează accelerația pe două axe. Accelerația pe care o simte depinde de modul în care este poziționat. Ținând-o într-un fel, poate să simtă înainte / înapoi și stânga / dreapta. Dacă o ținem într-un mod diferit, acesta poate sesiza sus / jos și înainte / înapoi. Două axe de accelerare sunt suficiente pentru multe dintre aplicațiile enumerate mai devreme. În timp ce putem monta și monitoriza întotdeauna un al doilea accelerometru pentru a capta această a treia axă, accelerometrele cu trei axe sunt, de asemenea, comunee să ne aplecăm când facem rotiri, iar accelerația în sus este ceea ce am simțit că trecem peste dealuri.

4.3. Accelerometrul MX2125 – Mod de funționare

Designul lui MX2125 este uimitor de simplu. Are o cameră de gaz cu încălzire element în centru și patru senzori de temperatură în jurul marginii sale. La fel cum se ridică aerul cald și chiuvetele mai reci, același lucru se aplică gazelor calde și reci. Dacă ținem încă accelerometrul, tot ceea ce simte este gravitația și înclinarea acestuia ne dă un exemplu de modul în care simțim accelerația statică. Când menținem nivelul accelerometrului, buzunarul de gaz fierbinte se ridică la centrul superimpensului camerei accelerometrului, iar toți senzorii vor măsura aceeași temperatură. În funcție de modul în care înclinăm accelerometrul, gazul fierbinte se va colecta mai aproape de unul sau poate doi senzori de temperatură.

4.4. Accelerometru MMA8452 (cu 3 axe) X,Y,Z

4.4.1. Introducere:

Freescale MMA8452Q este un accelerometru capabil de procesare micro-prelucrat cu rezoluție de 12 biți inteligent, cu putere redusă, cu trei axe. Este perfect pentru orice proiect care are nevoie de orientare sau de mișcare. Am luat acel accelerometru și l-am blocat pe o bordură pentru a face interfața cu micul pachet QFN un pic mai ușor.MMA8452Q este doar un accelerometru solid cu 3 axe. Suportă trei intervale sensibile de selectare: ± 2g, 4g sau 8g. Este un senzor digital – comunicând printr-o interfață I2C – pentru a obține date fiabile și fără zgomot, folosind doar două microfoane de microcontroler pentru a interacționa cu accelerometrul.

4.4.2. Materiale necesare:

Pentru a urmări împreună cu acest tutorial, componentele cele mai unice de care avem nevoie sunt:

MMA8452Q Breakout Board – Acesta este un loc bun pentru a începe (cu excepția cazului în care avem de gând să-bug-bug-uri mici IC în sine.Arduino Board – Ar trebui să putem folosii orice placă Arduino pe care o avem la îndemână – Arduino Uno, RedBoard, Pro, Mega, … orice.

Resistoarele de 330Ω – presupunând că utilizăm un microcontroler de 5V, acestea vor ajuta la protejarea MMA8452Q de tensiunile extra-spec, lovind pinii. De asemenea, vom avea nevoie de un fel de interconectare între Breakout și Arduino.

Un cablu de sârmă și jumperi sunt întotdeauna un combo ușor.În cele din urmă, va trebui să lipim un conector la izbucnirea MMA8452Q.

4.4.3. Sugestii de lectură

Înainte de a continua cu acest tutorial, vă recomandăm să fiți oarecum familiarizați cu conceptele din aceste tutoriale:

Accelerometru de bază – Acesta este un primer excelent pe accelerometre – cum funcționează și de ce sunt folosite.

I2C – O introducere în protocolul de comunicare pe care îl vom folosi pentru a ne face să vorbim cu MMA8452Q.

Accelerometru Ghid de cumpărare – Dacă nu suntem siguri care accelerometru este cel mai bine pentru tine, a verifica acest ghid.

Nivelurile logice – MMA8452Q este un dispozitiv de 3.3V, deci dacă utilizăm un microcontroler de 5V (cum ar fi Arduino) va trebui să acordăm atenție nivelurilor de logică.

4.4.4. Cerințe privind alimentarea cu tensiune:

Alerta mare aici este că MMA8452Q are o tensiune maximă de 3.6V – acea gamă se aplică atât sursei de alimentare, cât și pinilor I2C. Dacă utilizăm senzorul într-un sistem de 3.3V putem să-l conectăm chiar înăuntru, dar dacă îl utilizăm cu un dispozitiv de 5V (cum ar fi un Arduino Uno), este necesar un anumit nivel de schimbare între dispozitive.

Din fericire, nu avem nevoie de prea multă putere pentru a face munca MMA8452Q. În modul normal de funcționare se poate solicita oriunde între 7 și 165 μA.

4.4.5. Selectarea adresei Jumper:

MMA8452Q dispune de o adresă I2C selectabilă – doar în cazul în care executați mai multe MMA8452Q pe aceeași magistrală (sau poate să avem un conflict de adresă). Pentru a selecta adresa, un pin de pe accelerometru – "SA0" – poate fi legat fie la putere, fie la masă.

Bordul breakout include un jumper, pe partea din spate, pentru a ajuta la legarea acestui pin mare sau scăzut.Implicit, jumperul este deschis, ceea ce va duce la înălțimea pinului SA0 (există o rezistență pe partea superioară a plăcii pentru a ajuta la îndeplinirea acestei sarcini). Dacă închidem jumperul, aplicând o mică bobină de lipire pentru a conecta ambele plăcuțe împreună, SA0 va fi tras la sol.

Pentru cele mai multe cazuri de utilizare, în cazul în care utilizăm numai un MMA8452Q, putem lăsa acest jumper neatins. În acest caz, adresa I2C va fi 0x1D.

4.4.6. Exemplu de cuplare

Înainte de a putea conecta tabloul de bord într-un panou sau îl putem conecta la ceva,va trebui să lipiți conectorii sau cablurile la pinii de rupere. Ce anume am lipit în tablă depinde de modul în care o vom folosii.

Dacă intenționăm să folosim panoul breakout într-un panou de bord sau într-un perforator similar de 0.1 ", vă recomandăm să lipiți anteturile drepte în știfturi (există și anteturi lungi, dacă aveți nevoie de ele).

Dacă intenționăm să montăm breakout-ul într-o carcasă strânsă, vă recomandăm să lipiți firele (blocate sau solid-core) direct în pinii.De asemenea, putem achiziționa MMA8452Q cu anteturi deja lipite în pauză.

4.4.7. Conectare simplă

Vom folosii Arduino pentru a comunica cu MMA8452Q și pentru a interpreta datele de la senzor. Deoarece folosim I2C, avem nevoie doar de două fire între Arduino și accelerometru (în afară de putere și de sol).

Iată legătura:

Pur și simplu trebuie să furnizăm accelerometru cu putere (3.3V și GND), apoi să conectăm liniile SCL și SDA între dispozitive. O pereche de rezistențe de 330Ω în serie pe fiecare linie I2C va ajuta la efectuarea unor schimbări de nivel simplu. Dacă dorim o schimbare mai avansată a nivelului.

4.4.8. Schimbarea nivelului

Deoarece tensiunea maximă a lui MMA8452Q este de 3.6V, va trebui să facem niște schimbări de nivel între arduino și accelerometru. Alimentarea accelerometrului de pe șina de 3.3V a lui Arduino este un început bun, dar va trebui să adăugăm și o protecție pe liniile SDA și SCL. În exemplul de cuplare de mai sus, am folosit o pereche de rezistoare serie pe liniile SDA și SCL. Această versiune a "nivelului de schimbare" funcționează într-o mână, dar, dacă dorim o configurație mult mai fiabilă de schimbare a nivelului, vă recomandăm să utilizați un schimbător de nivel mai robust între plăci. Există o mulțime de plăci de schimbare a nivelului logic disponibile.

De exemplu, aici este o conexiune folosind un bi-directional Logic Level Shifter între Arduino și accelerometru:

Sau, dacă dorim doar să renunțăm complet la deplasarea nivelului, putem utiliza un arduino Pro (sau Pro Mini) de 3.3V și putem rula întregul sistem la 3.3V. Așa cum cineva care a construit electronica.

4.5. Senzori Accelerație

Senzorii de accelerație detectează (destul de evident :), accelerația. Se pot folosi pentru măsurare a accelerațiilor instantanee pe care le înregistrează un element în mișcare, sau pentru a detecta direcția verticală (pe baza accelerației gravitaționale g, care are întotdeauna direcția verticală). Orice smartphone are deja încorporat un accelerometru (pe lângă multe alte dispozitive), care accelerometru este folosit pentru rotirea automată a ecranului atunci când întorci telefonul. Atunci când rotești telefonul,accelerația gravitațională a Pământului (care întotdeauna are direcția verticală) îsi schimbă orientarea în raport cu telefonul (pentru că telefonul se rotește), si astfel poziția telefonului este detectată.De asemenea, un accelerometru este utilizat pentru a sesiza mișcarea. De exemplu, în cazul unui joystick WII, accelerometrul pe 3 axe din interiorul acestuia simte mișcarea mâinii si mișca jucătorul de pe ecran in consecință (ca o mică paranteză, un pic mai târziu vom vedea cum putem conecta direct la Arduino joystick-ul WII).

Din punct de vedere al conectării la Arduino, există două tipuri de accelerometre : cu conectare analogică si cu conectare I2C. Cele cu conectare analogică folosesc pinii analogici ai Arduino (câte un pin pentru fiecare axă). Cele cu conectare I2C folosesc cei doi pini I2C (SDA si SCL, care în cazul Arduino sunt conectați la pinii analogici 4 si 5). Ca principiu general, accelerometrele digitale (cu conectare pe I2C) sunt mai exacte și mai puțin afectate de zgomot decât cele analogice. Accelerometrele cu conectare analogică sunt însă cu mult mai simplu de folosit.

Un alt parametru al unui accelerometru este scala acestuia. Spre exemplu, ADXL335 poate măsura de la -3g până la 3g (are o scală de 6g). Altele, cum ar fi LIS331, au o scală selectabilă din software (maxim -24g până la 24g). Ca regulă, cu cât scala este mai mică, cu atât precizia este mai mare.

În funcție de proiect, vom avea de ales un accelerometru cu o scală suficient de mare încat să poată măsura întreaga gamă de accelerații pe care le vom întâlni, dar nu cu mult mai mare de atât, ca sa păstrăm totuși precizia.

Banda unui accelerometru ("bandwidth") determină de câte ori pe secundă poate fi citit senzorul de către Arduino. Un accelerometru cu o bandă de 100 Hz poate fi citit de 100 de ori pe secundă.Din punct de vedere al numărului de axe citite, există accelerometre cu o axă, cu două, sau cu trei axe. Cele cu trei axe sunt cel mai des întâlnite.

4.5.1 ADXL335

ADXL335 este unul dintre cele mai simple de utilizat accelerometru pe 3 axe. Este un accelerometru analogic, ceea ce înseamnă că informația este transmisă către Arduino sub forma unuisemnal analogic a cărui tensiune variază direct proporțional cu accelerația. ADXL335 poate măsura accelerații in gama +/- 3 g (adică de trei ori mai mult decât accelerația gravitațională obișnuită). Conectarea la Arduino este foarte simplă. Se conectează pinul VCC al ADXL335 la pinul 3.3 V

Arduino (ADXL335 funcționează la 3.3V si nu la 5V, cum am întâlnit până acum), se conectează pinul GND al ADXL335 la pinul GND al Arduino, și se conectează pinii X, Y si Z ai ADXL335 la trei pini analogici ai Arduino (să spunem pinul analogic 0, 1 si 2). În afara acestor pini mai rămâne o singură conexiune de făcut – pinul 3.3 al Arduino la pinul AHREF al Arduino – . În acest mod, valorile date pe pinii X, Y si Z de către ADXL335 sunt raportate la tensiunea maximă de 3.3 V.

4.5.2 Cod Arduino

void setup() {

Serial.begin(9600);

analogReference(EXTERNAL);

}

void loop() {

float xAcc=readAcc(0);

float yAcc=readAcc(1);

float zAcc=readAcc(2);

Serial.print("Acceleratie X: ");

Serial.print(xAcc,DEC);

Serial.print("Acceleratie Y: ");

Serial.print(yAcc,DEC);

Serial.print("Acceleratie Z: ");

Serial.print(zAcc,DEC);

Serial.println();

delay(50);

}

float readAcc(int port) {

int value=analogRead(port);

int miliVolts=map(value,0,1023,0,3300)-3300/2;

float acc=(float)miliVolts/360;

return acc;

}

Interesant în codul de mai sus este "analogReference(EXTERNAL)", în rutina setup. Acest lucru setează ca referința de tensiune pentru toate porturile analogice acea tensiune externă pusă pe pinul AHREF (noi în acest exemplu am pus acolo 3.3 V). Mai departe, valoarea citită de pe portul analogic (intre 0 si 1023) este procesată pentru a fi transformată într-o valoare de accelerație, exprimată ca multiplu al accelerației gravitaționale "g".Ca să testezi că funcționează corect, mișcă accelerometrul în aer. În funcție de orientarea acestuia în raport cu accelerația gravitațională (care este întotdeauna verticală), vom obține valori diferite pe cele trei axe X, Y si Z.

Capitolul V

Arduino

5.1. Scurt Istoric

Arduino este o companie open-source care produce atât plăcuțe de dezvoltare bazate pe microcontrolere, cât și partea de software destinată funcționării și programării acestora. Pe langă acestea include și o comunitate uriașă care se ocupă cu creația și distribuirea de proiecte care au ca scop crearea de dispozitive care pot sesiza și controla diverse activități sau procese în lumea reală.

Proiectul este bazat pe designul plăcilor cu microcontroler produse de câțiva furnizori, folosind diverse tipuri de microcontrolere. Aceste plăci pun la dispoziția utilizatorului pini I/O, digitali și analogici, care pot fi interferați cu o gamă largă de plăcuțe numite scuturi (shield-uri) și/sau cu alte circuite. Plăcile au interfețe de comunicații seriale, inclusiv USB pe unele modele, pentru a încărca programe din calculatorele personale. Pentru programarea microcontrolerelor, Arduino vine cu un mediu de dezvoltare integrat (IDE) bazat pe proiectul Processing, care include suport pentru limbaje de programare ca C și C++.

Primul Arduino a fost lansat în 2005, având că țintă asigurarea unei soluții ieftine și simple pentru începători și profesioniști spre a crea dispozitive capabile să interacționeze cu mediul, folosind senzori și sisteme de acționare. Cele mai comune exemple sunt dispozitivele pentru utilizatorii începători precum: roboții simpli, termostatele și/sau detectoarele de mișcare.

Plăcuțele Arduino sunt disponibile comercial sub formă preasamblată sau sub forma unor kituri de asamblat acasă (do-it-yourself). Specificațiile schemelor sunt disponibile pentru orice utilizator, permițând oricui să fabrice plăcuțe Arduino. Adafruit Industries estimase la mijlocul anului 2011 că peste 300.000 de plăcuțe oficiale Arduino au fost produse, iar în 2013 700.000 de plăcuțe oficiale erau în posesia utilizatorilor.

Arduino a început în 2005 ca un proiect al unui student al Institutului de Interacțiune a Designului din Ivrea, Italia. La acea vreme studenții foloseau o plăcuță de dezvoltare BASIC Stamp care costau 100 de dolari, ceea ce era considerat foarte scump pentru studenți. Massimo Banzi, unul dintre fondatori, era student la Ivrea. Numele "Arduino" provine de la un bar din Ivrea, locul unde o parte din fondatori obișnuiau să se intalnească.

Studentul columbian Hernando Barragán a creat platformă de dezvoltare Wiring care a servit ca bază pentru Arduino. După finalizarea platformei Wiring, mai multe versiuni, mai light și mai ieftine , au fost create și puse la dispoziția comunităților open-source. Din echipa inițială Arduino au făcut parte Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino și David Mellis.

5.2. Hardware

O plăcuță Arduino este compusă dintr-un microcontroler AtmelAVR de 8-, 16- sau 32-biți (deși începând cu 2015 s-au folosit microcontrolere de la alți producători) cu componente complementare care facilitează programarea și încorporarea în alte circuite. Un aspect important la Arduino este că acesta dispune de conectori standard, care permit utilizatorului să conecteze plăcuța cu procesorul la diferite module interschimbabile numite shield-uri. Unele shield-uri comunică cu Arduino direct prin pinii digitali sau analogici, dar altele sunt adresabile individual prin magistrală serială I²C permițând utilizarea mai multor module în paralel.

Pană în anul 2015 plăcuțele Arduino oficiale au folosit cipuri Atmel din seria megaAVR, în special ATmega8, ATmega168, ATmega328, ATmega1280 și ATmega2560, iar în 2015 au fost adăugate cipuri de la alți producători. O multitudine de alte procesoare au fost folosite de dispozitive compatibile Arduino. Multe plăcuțe includ un regulator liniar de 5 V și un oscilator cu cuarț de 16 Mhz (sau un rezonator ceramic în unele variante), deși anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 Mhz și nu necesită regulator, datorită restricțiilor de formă. Un microcontroler instalat pe Arduino vine preprogramat cu un bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație cu alte dispozitive care necesită programatoare externe. Acest aspect face Arduino o soluție simplă, permițând programarea de pe orice computer ordinar. În prezent, bootloader-ul optiboot este bootloader-ul implicit instalat pe Arduino UNO.

La nivel conceptual, când se folosește mediul de dezvoltare integrat Arduino, programarea tuturor plăcuțelor se face prin conexiune serială. Implementarea acesteia diferă în funcție de versiunea hardware. Unele plăcuțe Arduino au implementate convertoare de nivel logic pentru a realiza conversia între nivelele logice RS-232 și cele TTL. Plăcutele Arduino din prezent sunt programate prin USB, având integrate cipuri de conversie USB-serial, cum ar fi FTDI FT232. Unele modele UNO, mai noi, folosesc un cip AVR separat programat să funcționeze ca un convertor USB-serial, care poate fi reprogramat printr-un port ICSP dedicat. Alte variante, cum ar fi Arduino Mini și versiunea neoficială Boarduino, folosesc adaptoare detașabile USB-serial, cabluri, Bluetooth sau alte metode.

Plăcuța Arduino are expuși mulți dintre pinii de intrare/ieșire ai microcontrolerului, pentru ca aceștia să fie folosiți de alte circuite. Diecimila, Duemilanove și UNO oferă 14 pini digitali de intrare/ieșire, dintre care 6 pot produce semnale PWM și 6 intrări analogice care, de asemenea, pot fi folosite că intrări/ieșiri digitale. Acești pini sunt accesibili prin partea superioară a plăcuței, prin intermediul unor barete mamă cu pasul între pini de 2,54 mm.

5.3. Plăcuțe oficiale

Plăcuțele originale Arduino erau produse de compania italiană Smart Projects.O parte dintre plăcuțele cu brandul Arduino au fost proiectate de companiile americane SparkFun Electronics și Adafruit Industries. 16 versiuni de hardware Arduino au fost produse în scop comercial până la această dată.

5.3.1. Exemple de plăcuțe Arduino:

√ Diecimila in Stoicheia

√ Duemilanove

√ Uno

√ Leonardo

√ Mega

√ MEGA 2560 R3

√ Nano

√ Due

√ Yun

Arduino Diecimila

Arduino Duemilanove

Arduino Mega

Arduino Uno

Arduino Yun

Arduino Due

Arduino Nano

Arduino Leonardo

5.4. Shield-uri:

Arduino și plăcuțele Arduino,compatibile folosesc plăcuțe de expansiune cu circuite imprimate numite shield-uri, care se conectează la pinii disponibili pe Arduino. Shield-urile au capacități de a controla motoare, GPS, Ethernet, LCD sau de prototipare. Un număr de shield-uri pot fi create în regim de amator(DIY).

5.5. Software:

Programele Arduino pot fi scrise în orice limbaj de programare cu un compilator capabil să producă un cod masină binar. Atmel oferă un mediu de dezvoltare pentru microcontrolerele sale, AVR Studio și mai nou, Atmel Studio.

Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație cross-platform, scrisă în Java. Acesta își are originile în mediul de dezvoltare pentru limbajul de programare Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța Arduino. Un program scris în IDE pentru Arduino se numește sketch.

Arduino IDE suportă limbajele de programare C și C++ folosind reguli speciale de organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul Wiring, care oferă multe proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris în C/C++ este compus din două funcții care sunt compilate și legate cu un set de program main , într-un program executabil cu o execuție ciclică:

• setup(): o funcție care este rulată o singură dată la începutul programului, când se inițializează setările.

• loop(): o funcție apelată în mod repetat până la oprirea alimentării cu energie a plăcuței.

După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de dezvoltare Arduino trimite comandă către programul avrdude pentru a converti codul executabil într-un fișier text codat hexazecimal, care poate fi încărcat în placa Arduino de un program de încărcare.

5.6. Exemplu de program

Un program Arduino tipic pentru un programator începător face ca un LED să se aprindă intermitent. Acest program este încărcat pe placă, în mod normal, de către producător. În mediul de dezvoltare Arduino, utilizatorul ar trebui să scrie un astfel de program după cum urmează.

Multe plăcuțe Arduino conțin un LED, împreună cu un rezistor în serie, între pinul 13 și masă (GND), ceea ce este un amănunt util pentru multe teste.

5.7. Dezvoltare

Arduino are o platformă hardware open-source: referințele de design pentru Arduino sunt distribuite sub licență Creative Commons Attribution Share-Alike 2.5 și sunt disponibile pe site-ul Arduino. Schemele și fișierele de producție sunt și ele disponibile. Codul sursă pentru IDE este disponibil sub GNU General Public License, version 2.

5.8. Placa Arduino Leonardo

5.8.1. Prezentare generală

Arduino Leonardo este un microcontroler bazat pe ATmega32u4 (datasheet). Dispune de 20 de intrări / ieșiri digitale (dintre care 7 pot fi utilizate că ieșiri PWM și 12 ca intrări analogice), un oscilator de cristal de 16 Mhz, o conexiune micro USB, o mufă de alimentare, un antet ICSP și un buton de resetare. Conține tot ceea ce este necesar pentru a susține microcontrolerul. Pur și simplu conectați-l la un computer cu un cablu USB sau alimentați-l cu un adaptor AC-to-DC sau o baterie pentru a începe.Leonardo diferă de toate plăcile anterioare prin faptul că ATmega32u4 are built-în comunicare USB, eliminând necesitatea unui procesor secundar. Acest lucru permite că Leonardo să apară pe un computer conectat ca mouse și tastatură, în plus față de un port serial / COM virtual (CDC).

5.8.2. Specificații tehnice

√Microcontroler ATmega32u4

√ Tensiune de operare 5V

√ Tensiune de intrare (recomandată) 7-12V

√ Tensiunea de intrare (limite) 6-20V

√ Inele digitale I / O 20

√ Canalele PWM 7

√ Canale de intrare analogice 12

√ Curent continuu pe pin I / O 40 mA

√ Curentul DC pentru pinul de 3.3V 50 mA

√ Memorie Flash 32 KB (ATmega32u4) din care 4 KB folosită de bootloader

√ SRAM 2,5 KB (ATmega32u4)

√ EEPROM 1 KB (ATmega32u4)

√ Ceas de viteză 16 MHz

√ Lungime 68,6 mm

√ Lățime 53,3 mm

√ Greutate 20 g

5.8.3. Putere

Arduino Leonardo poate fi alimentat prin conexiunea micro USB sau cu o sursă externă de alimentare. Sursa de alimentare este selectată automat.

Alimentarea externă (non-USB) poate proveni fie de la un adaptor AC-la-DC (perete-wart), fie de la o baterie. Adaptorul poate fi conectat prin conectarea unui conector pozitiv central de 2,1 mm în mufă de alimentare a plăcii. Conductorii de la o baterie pot fi inserați în anteturile de știri Gnd și Vin ale conectorului POWER.

Pinii de alimentare sunt după cum urmează:VIN. Tensiunea de intrare la placă Arduino când utilizează o sursă externă de alimentare (spre deosebire de 5 volți de la conexiunea USB sau de la altă sursă de alimentare reglată). Putem furniza o tensiune prin acest pin sau, dacă furnizăm tensiunea prin mufă de alimentare, accesând-ul prin acest pin.

-5V. Sursă de alimentare regulată folosită pentru alimentarea microcontrolerului și a altor componente de pe placă. Acest lucru poate veni fie de la VIN prin intermediul unui regulator de bord, fie poate fi furnizat de USB sau de o altă sursă de alimentare cu 5V reglată.

-3V3. O sursă de 3.3 volți generată de regulatorul de la bord. Rezistența curentului maxim este de 50 mA.

-GND. Pini de legătură.

IOREF. Tensiunea la care acționează pinii I/ O ai plăcii (adică VCC pentru placă). Acesta este 5V pentru Leonardo.

5.8.4. Intrare și ieșire

Fiecare din cele 20 de pinuri digitale de pe Leonardo pot fii folosiți ca intrare sau ieșire, utilizând funcțiile pinMode, digitalWrite și digitalRead . Aceasta funcționează la 5 volți. Fiecare pin poate furniza sau primi un maxim de 40 mA și are un rezistor intern de tracțiune (deconectat în mod implicit) de 20-50 kOhm. În plus, unii pini au funcții specializate:

Serial: 0 (RX) și 1 (TX). Folosit pentru a recepționa (RX) și a transmite (TX) datele TTL serial folosind capacitatea de serie hardware ATmega32U4. Reținem ca la Leonardo, clasă Serial se referă la comunicația USB (CDC).Pentru seria TTL pe pinii 0 și 1, utilizați clasă Serial1. TWI: 2 (SDA) și 3 (ȘCL). Suportați comunicarea TWI utilizând bibliotecă Wire.

Întreruperi externe: 3 (întrerupere 0), 2 (întrerupere 1), 0 (întrerupere 2), 1 (întrerupere 3) și 7 (întrerupere 4). Acești pini pot fi configurați pentru a declanșa o întrerupere la o valoare scăzută, o margine în creștere sau în scădere sau o schimbare a valorii. Consultăm funcția attachInterrup t () pentru detalii.

PWM: 3, 5, 6, 9, 10, 11 și 13. Asigurați ieșirea PWM pe 8 biți cu funcția analogWrite ().

SPI: pe antetul ICSP. Acești pini acceptă comunicarea SPI utilizând biblioteca SPI.

Reținem că pinii SPI nu sunt conectați la nici unul dintre pinii I / O digitali, deoarece aceștia sunt pe Uno. Acestea sunt disponibile numai pe conectorul ICSP. Aceasta înseamnă că dacă avem un scut care utilizează SPI, dar NU are un conector ICSP cu 6 pini care se conectează la antetul ICSP cu 6 pini, scutul nu va funcționa.

LED-ul: 13. Există un LED încorporat conectat la pinul digital 13. Când pinul este HIGH, LED-ul este pornit, când pinul este LOW, este oprit.

Intrări analogice: A0-A5, A6-A11 (pe stifturile digitale 4, 6, 8, 9, 10 și 12). Leonardo are 12 intrări analogice, numite A0 pană la A11, toate acestea putând fi utilizate și că I/ O digitală. Pinii A0-A5 apar în aceleași locații ca și pe Uno. Intrările A6-A11 se află pe știfturi digitale 4, 6, 8, 9, 10 și, respectiv, 12. Fiecare intrare analogică furnizează 10 biți de rezoluție (adică 1024 valori diferite). În mod implicit, intrările analogice măsoară de la masă pană la 5 volți, deși este posibil să modificăm capătul superior al domeniului lor folosind funcția AREF pin și funcția analogReference.

Există și câțiva alți pini pe tablă:

AREF. Tensiunea de referintă pentru intrările analogice. Folosit cu analogReference ().

Reset. Aducem această linie LOW pentru a reseta microcontrolerul. În mod obișnuit, pentru a adăuga un buton de resetare la scuturile care blochează pe cel de pe placă.

A se vedea și apărea între pinii Arduino și porturile ATmega32u4.

5.8.5. Comunicare:

Leonardo dispune de o serie de facilități pentru a comunica cu un calculator, cu un alt Arduino sau cu alte microcontrolere. ATmega32U4 oferă comunicație serială UART TTL (5V), disponibilă pe pinii digitali 0 (RX) și 1 (TX). De asemenea, 32U4 permite comunicație serială (CDC) prin USB și apare ca un port virtual pentru software-ul de pe computer. Cipul funcționează și ca un dispozitiv USB 2.0 cu viteză maximă, utilizând drivere standard USB COM. Pe Windows, este necesar un fișier .inf. Software-ul Arduino care include un monitor serial care permite transmiterea de date textuale simple către și de la bordul Arduino. LED-urile RX și TX de pe placă vor clipi când datele sunt transmise prin conexiunea USB la computer (dar nu și pentru comunicația serială pe pinii 0 și 1). O bibliotecă SoftwareSerial permite comunicarea serială pe oricare dintre stifturile digitale ale lui Leonardo.

ATmega32U4 suportă, de asemenea, comunicarea I2C (TWI) și SPI. Software-ul Arduino include o bibliotecă Wire pentru simplificarea utilizării magistralei I2C; Consultând documentația pentru detalii. Pentru comunicarea SPI, utilizăm bibliotecă SPI. Leonardo apare ca o tastatură și mouse-ul generic și poate fi programat să controleze aceste dispozitive de intrare utilizând clasele de tastatură și mouse.

5.8.6. Programare:

Leonardo poate fi programat cu software-ul Arduino (descărcare). Selectăm "Arduino Leonardo din meniul Tools> Board (în funcție de microcontrolerul de pe placă dvs.) Pentru detalii, consultați referințele și tutorialele ATmega32U4 de la Arduino Leonardo vine preburnat cu un bootloader care ne permite sa folosim un cod. Folosirea unui programator hardware extern.Acesta comunică folosind protocolul AVR109.Putem, de asemenea, ocoli bootloader-ul și programând microcontrolerul prin intermediul antetului ICSP (În-Circuit Serial Programming) utilizând arduino ISP sau similar, vedem aceste instrucțiuni pentru detalii.

5.8.7. Resetare automată (software) și inițializare bootloader:

În loc să solicite o apăsare fizică a butonului de resetare înainte de încărcare, programul Leonardo este conceput astfel încât să poată fi resetat prin software-ul care rulează pe un computer conectat. Resetarea este declanșată atunci când portul serial / COM (virtual) al lui Leonardo (CDC) este deschis la 1200 baud și apoi închis. Când se întamplă acest lucru, procesorul se va reseta, rupând conexiunea USB la computer (ceea ce înseamnă că portul virtual serial / COM va dispărea). După resetarea procesorului, bootloader-ul începe, rămanând activ timp de aproximativ 8 secunde. De asemenea, bootloader-ul poate fi inițiat prin apăsarea butonului de resetare de pe Leonardo.

Reținem că atunci când placă va porni mai întâi, va trece direct la schița utilizatorului, dacă este prezentă, mai degrabă decât inițierea incărcătorului de boot.

Datorită felului în care Leonardo se ocupă de resetare, este mai bine să lăsam software-ul Arduino să încerce să inițieze resetarea înainte de încărcare, mai ales dacă avem obiceiul de a apăsa butonul de reset înainte de al încărca pe alte plăci. Dacă software-ul

nu poate reseta placă, putem porni întotdeauna încărcătorul de boot apăsând butonul de resetare de pe placă.

5.8.8. Protecție la supracurent USB:

Leonardo are o polifuză resetabilă care protejează porturile USB ale computerului de supracurent. Deși majoritatea calculatoarelor oferă protecție proprie internă, siguranță oferă un strat suplimentar de protecție. Dacă pe portul USB este aplicată o valoare mai mare de 500 mA, siguranța va rupe automat conexiunea pană când scurtcircuitul sau suprasarcină vor fi eliminate.

5.8.9. Caracteristici fizice:

Lungimea și lătimea maximă a plăcilor Leonardo PCB sunt de 2,7 și respectiv 2,1 inci, iar conectorul USB și mufa de alimentare se extind dincolo de dimensiunea anterioară. Patru găuri de șurub permit placa să fie atasată la o suprafată sau la o carcasă. Reținem că distanța dintre stifturile digitale 7 și 8 este de 160 mil (0,16 "), nu este un multiplu uniform al distanței de 100 de milii a celorlalte ace.

Capitolul VI

Senzor de accelerometru MMA8452

6.1. Senzorul MMA8452

6.2. Caracteristici tehnice:

• Tensiune de alimentare modul: 3V-5V;

• Curent consumat: 6uA-165uA, în funcție de modul de operare;

• Măsoară accelerația pe cele 3 axe cu următoarele range-uri: ±2g/±4g/±8g;

• ODR de la 1.56Hz la 800Hz;

• Output digital la 12 biți;

• Sensivitate: 1024 counts/g;

• Comunicație I2C;

• Posibilitate de detectare automată a miscării.

Dimensiuni: 14.5 x 20.5mm.

Modulul cu accelerometru digital MMA8452 oferă o precizie înaltă la un consum foarte mic de curent, de maxim 165uA. De asemenea, oferă comunicație I2C la frecvențe de până la 400kHz, adresele fiind selectabile în funcție de pinul SA0.Produsul este potrivit aplicațiilor dumneavoastră în care avem nevoie să detectăm înclinația sau, filtrând datele de accelerație. De exemplu, putem detecta mișcarea, șocuri sau orientarea în spațiu a unui obiect.

Capitolul VII

DISPLAY-UL SERIAL LCD

7.1. Generalități :

Display-ul serial LCD afisează informații trimise de un senzor, într-un format lizibil. Are multe utilizări, în unele aplicații, fiind tot ce contează. Termometrul digital este un exemplu care poate fi găsit în multe gospodării. În interiorul fiecărui termometru digital, există o sondă de temperatură, un microcontroler și un afișaj cu cristale lichide (LCD) pentru afișarea măsurărilor.

Microcontrolerul și LCD-ul serial prezentate în figură 4.1. pot asigura microcontrolerului și afișarea de elementele pentru acest tip de produs. Această configurare este de asemenea utilă pentru afișarea de măsurători mobile, care să permită să ne deconectăm placă de la PC și să testăm senzorii inteligenți.

Figura 7.1: Basic Stamp,Placa de Educație și LCD serial Parallax

Activitățile din acest capitol introduc unele utilizări pentru LCD-uri, cum ar fi conectarea la placa de bază, pornirea/oprirea, plasarea cursorului și afișarea de text și cifre.

7.2. Produse cu LCD-URI

Produsele prezentate în figura 5.2, utilizeaza LCD-uri.Sunt ușor de citit, iar cele mai mici au un consum redus de energie.

Figura 7.2.1 Produse cu LCD-uri

Terminalul de depanare este o fereastră care se poate utiliza pentru a face computerul să afișeze mesajele pe care le primește de la Basic Stamp. Aceasta este deosebit de utilă pentru afișarea mesajelor de diagnostic și valorile variabilelor, făcând mai ușoară izolarea programelor cu defecțiuni.

Este de asemenea, un instrument pentru testarea circuitelor, senzorilor. Terminalul de depanare are un dezavantaj și acesta este conexiunea prin cablu serial.

Figura 7.2.2. LCD Parallax Serial (2×16)

LCD Parallax Serial 2×16 are două rânduri de câte 16 caractere pentru afișarea mesajelor. Acesta este controlat de comenzi primite de la Basic Stamp. Basic Stamp trimite mesajele de la un singur pin de I/E conectat la intrarea LCD-ului.

7.3. Construirea circuitului pentru LCD serial

Conectarea LCD-ului la placă de bază se realizează foarte ușor, după cum se arată

în figură 4.4. Este nevoie doar de a face trei conexiuni: una pentru putere, pentru masă,

și una pentru semnal. Pinul LCD-lui RX este de semnal și trebuie conectat la un

pin I/E. Pinul LCD-lui GND trebuie conectat la Vss, precum și pinul LCD-ului de 5 V trebuie conectat la Vdd.

Etape:

• Se deconectează placa educațională de la sursă de energie.

• Se conectează Vss-ul plăcii educaționale la pinul GND al LCD-ului.

• Se conectează soclul P14 la pinul RX al LCD-ului.

• Se conectează soclul Vdd al plăcii la pinul de 5V al LCD-ului

Figura 7.3.1: Diagrama schematică și cabluri

7.4. Testarea LCD –ului

Odată cu conexiuni electrice și unele programe de testare simple PBASIC pentru

LCD serial Parallax, aceasta introduce comanda SEROUT. De asemenea, demonstrează cum

DEBUG este doar un caz special de SEROUT. Acest lucru este deosebit de util pentru lucrul cu LCD-ul serial pentru că se pot utiliza multe dintre argumentele de comandă DEBUG și se pot folosi la comandă SEROUT pentru a controla și a formata informațiile de pe LCD .

Piese necesare:

(1) LCD Serial 2 × 16

(2) Fire Jumper

LCD-ul are un modul de auto-testare care se poate utiliza pentru a asigură funcționalitatea și corectitudinea setării contrastului. Figură 4.5. arată partea din spate a modulului LCD. Comutatoarele (SW1 și SW2) sunt pentru modul de auto-testare, și există un potențiometru pentru "MAJORARE CONTRAST."

Figura 7.4.1. Modulul LCD- vedere spate

Etape:

• Se deconectează placa de bază de la sursă

• Se setează SW1 închis

• Se setează SW2 închis

• Se reconectează placa la sursă

Figura 7.4.2 Setarea întrerupătoarelor pentru autotestare

• La reactivare LCD-ul afișează textul "Parallax Inc "pe linia de sus (Line 0) și" www.parallax.com" pe linia de jos (Linia 1), după cum puteți vedea, în figură 4.3.

• Dacă ecranul este neclar, există o ajustare de contrast,un potențiometru, prezentat în figură 4.7. care se poate roți cu o șurubelniță. În cazul în care afișajul este deja clar și toate caracterele arată bine, nu este nevoie de reglaje. În cazul în care caracterele sunt neclare, sau apar în pătratele gri, ajustarea potențiometrului ar trebui să ajute.

• Se reglează contrastul potențiometrului, dacă este necesar.

Figura 7.4.3. Potențiometru. Ajustare contrast

7.5. Programarea LCD-ului pentru a primi mesaje de la Basic Stamp

Comunicarea serială implică o anumită frecvență. Aceasta este numărul de biți per secundă pe care emițătorul îi transmite iar receptorul trebuie să recepționeze datele pe aceiași frecvență.Basic Stamp se programează să transmită mesaje LCD-ului la o frecvență de 9600 biți pe secundă. Se utilizează aceleași întrerupătoare folosite și la modul de autotestarea a LCD-ului.

Etape:

• Se deconectează placa de bază de la sursa de energie

• Se menține SW1 setat închis

• Se setează SW2 pe poziția deschis ca in figura 4.8

• Se reconectează placa de bază la sursa de energie

Ecranul va rămâne gol pâna când se va programa Basic Stamp 2 să comande LCD-ul .

Figura 7.5.1. Setarea frecvenței la 9600 bps

Figura 7.5.2. prezintă tabelul de comenzi pentru diferite frecvențe amplasat pe spatele

LCD-ului. Pentru setarea altor frecvențe se vor ajusta SW1 și SW2 conform datelor din tabel.

Figura 7.5.2.Setarea întrerupătoarelor pentru diferite frecvențe

Capitolul VIII

Realizarea Proiectului

8.1. Activități

Există trei tipuri de proiecte în acest capitol. Primul tip este o aplicație directă Hardware și programe care au fost utilizate în capitolele anterioare. Al doilea tip necesită Datalogging-ul măsurătorilor de accelerație și, prin urmare, mai multe activități sunt dedicate programului de datalogging. Al treilea tip necesită datalogging pentru a afla ce fel de măsurători pe care le face accelerometrul le va raporta. Apoi, pe baza rezultatelor datalogging, va avea suficiente informații pentru a scrie un program pentru a face dispozitivul să funcționeze în mod fiabil.

ACTIVITATEA # 1

Urcarea pe vârful unui obiect pentru a măsura înălțimea acestuia nu este întotdeauna convenabilă, practică,sau chiar în siguranță. Această activitate introduce un nou mod de a utiliza o parte din accelerometru,măsurătorile dezvoltate în Capitolul 3 pentru a face măsurătorile de înălțime dintr-o perspectivă sigură la punct pe teren.

ACTIVITATEA # 2: Înregistrare și redare

Cu proiectele de accelerometru, va fi adesea necesar să înregistrăm și să redăm o mulțime de măsurători accelerometrice. În unele cazuri, înregistrarea valorii este funcția dorită,cum ar fi datalogging-ul cum o mașină se ocupă de un rând. În alte cazuri, cum ar fi detectarea omului ,mișcarea pe jos, va fi necesar să înțelegem care sunt măsurătorile .Un program poate fi scris care urmărește pașii.

În ambele cazuri, înregistrarea și redarea măsurătorilor de accelerație sunt un ingredient necesar.Această activitate introduce un program care demonstrează modul de înregistrare, redare și ștergere a valorilor stocate în porțiunea neutilizată a memoriei programului EEPROM BASIC Stamp.

Exemplu de program: EepromDataStorage.bs2

Acest exemplu de program afișează un meniu cu trei variante în primirea terminalului de depanare,fereastra din figura 6-2. Introducând C în transmiterea terminalului de depanare,fereastră, valorile din memoria EEPROM rezervate pentru stocare sunt șterse. Dacă R este tastat,programul înregistrează valorile introduse în fereastra de primire în EEPROM. Dacă D esteTastat, sunt afișate valorile stocate în EEPROM.

Figura Activitate 2

Faceți clic pe fereastra de scanare Terminal Debug.√ Tip R, apoi introduceți unsprezece valori între -100 și 100. Apăsați pe Enter, atunci când vi se solicită după valoarea a unsprezecea, pentru a reveni la meniu.

-Introduceți D și verificați dacă valorile introduse sunt afișate corect.Apasă tasta pentru a reveni la meniu.

-Introduceți tasta C pentru a șterge memoria.

-Tip D pentru a verifica dacă valorile memoriei au fost șterse (setate la zero).

ACTIVITATEA #3

Dacă ați pus deoparte un octet de EEPROM, acesta vă poate oferi posibilitatea de a selecta dintre cât mai multe 256 de moduri diferite de program. În următorul exemplu de program, vom folosi doar două moduri: Un mod de meniu și un mod care sare la o datalogging după o mică întârziere. Aici este o DATE directiva care numește un octet EEPROM resetare și inițiază valoarea stocată de acest octet la zero.

ACTIVITATEA #4

În această activitate, vom adăuga un piezospeaker la circuitul de accelerometru existent. Apoi,vom modifica programul astfel încât acesta să ofere un instrument de înregistrare la distanță care să fie ușor de operat. Piezospeakerul va fi la îndemână pentru a indica numărătoarea inversă, începerea și oprirea ,circuitul accelerometrului va fi același în capitolul # 3, iar piezospeakerul va fi adăugat sub el pe panză.

8.1.2. Componente necesare

-(1) Memsic 2125 Accelerometru

-(2) rezistoare de 220 Ω

-(1) piezospeaker

-(4) sârme de legătură

√ Construcția circuitelor de accelerometru și piezospeaker prezentate în figura 8.1

ACTIVITATEA # 5

8.1.3. Studiu de accelerație ale autovehiculului

Această activitate demonstrează modul de utilizare a programului DatalogAcceleration.bs2 din activitatea anterioară de analiză a forțelor de accelerație pe o mașină cu comandă radio (RC) în timpul variației de manevre. Această activitate demonstrează, de asemenea, modul în care aceste date sunt înregistrate, forțele de accelerație pot fi utilizate pentru a urmări și a calcula viteza și poziția mașinii. Cu toate că echipamentele și calculele efective sunt mai mult implicate, determinând poziția de la măsurătorile succesive de accelerare este o componentă a ghidării inerțiale a sistemeleor utilizate în rachete și nave spațiale.

8.1.4. Piese, echipamente și circuite

În plus față de piesele pentru Activitatea # 4, vom avea nevoie de o mașină RC și un controler, care sunt incluse în setul Smart Sensors and Applications Parts. Diagramele de circuite care ar trebui să fie construite pe bordul nostrum sunt la începutul activității # 4 în acest capitol.

Hardware și configurare

Figura 6-4a arată o mașină RC ieftină, care poate fi obținută în multe magazine de hobby .Figura 6-4b arată cum a fost montată placa. Picioarele cauciucului au fost applicate pe partea inferioară a panoului într-un mod care a împiedicat oricare dintre cele electrice.Conexiunile de la intrarea în contact cu oricare dintre componentele metalice ale mașinii RC.O altă opțiune ar fi folosirea unei benzi duble pentru a fixa placa pe acoperiș.

Figura 8-4a: Mașină RC cu înregistrator de date de accelerare

Figura 8-4b. prezintă un grafic al măsurătorilor axei y ale accelerometrului ca și mașină

Accelerat înainte, încetinit până la oprire și apoi accelerat înapoi. După afișarea în terminalul de depanare, au fost umbrite, copiate și lipite in Notepad Windows. De acolo, au fost importate în foaia de calcul Microsoft Excel Program și apoi graphed.

Motivul pentru care accelerația înainte este negativă se datorează faptului că axa de detectare ym este îndreptată la partea din spate a mașinii RC, așa cum se arată în figura 6-6. Deci, pe măsură ce mașina se accelerează înainte,accelerația este negativă. Când o mașină încetinește, ea se accelerează înapoi. Acest lucru este prezentat în Figura 6-5. În primul rând, mașina accelerează înainte, apoi a aplicat frânele și a încetinit (decelerat). Măsura y a fost pozitivă, deci accelerația a fost negativă.

După o scurtă oprire, mașina accelerează în spate. Observa asta Y este din nou pozitiv. Apoi, atunci când încetinește (decelerează) de la viteza înapoi pentru a opri din nou, mașina este, de fapt, accelerarea înainte, iar măsura y este negativ din nou.

Dacă conduci o mașină, când mașina accelerează înainte, simți că scaunul împinge inainte. Ei bine, dacă faceți o virare ascuțită, partea stângă a mașinii vă împinge dreapta. Asta pentru că accelerați bine pe măsură ce vă întoarceți. Acest lucru este prezentat în Figura6-7, care ilustrează modul în care un obiect poate călătorii înainte cu o viteză constantă și pentru a o face să se întoarcă, ea trebuie întotdeauna să se accelereze în spre centrul cercului.

Figura 6-8 prezintă un grafic al măsurătorilor axei x ale accelerometrului, așa cum este mașina RC, mai întâi condus în cercuri de cotitură la stânga, apoi în cercuri întoarse la dreapta.

Observați cum este axa x măsurarea arată o accelerație pozitivă, deoarece cercurile de mașină RC merg spre stânga și negativ accelerația pe măsură ce cercul mașinii se îndreaptă spre dreapta.

Figura 6-9 arată modul în care este orientată axa x a accelerometrului și accelerarea acestuia măsoară. Pentru o întoarcere la stânga, mașina se accelerează spre stânga, ceea ce este pentru accelerometru o măsurare a accelerației pozitive pe axa x. Când se întoarce la dreapta, accelerarea este în direcția opusă a axei x pozitive, astfel încât măsura axei x să fie negativă.

8.1.5. Procedură

Procedura pentru măsurarea și apoi graficul accelerației mașinii RC este după cum urmează.

Atașați-vă bordul la masina RC.

Descărcați DatalogAcceleration.bs2 în Ștampila BASIC.

Setați mașina într-o zonă deschisă și apăsați / eliberați butonul Reset al plăcii.

Așteptați numărătoarea inversă pentru a indica faptul că a început procesul de înregistrare.

Conduceți mașina prin aceste manevre, în aproximativ 15 secunde:

Accelerați mașina înainte, apoi opriți.

Accelerați mașina înapoi, apoi opriți.

Acționează într-o figură-opt.

Când bordul bifează din nou (după aproximativ cincisprezece secunde) înseamnă

Dataloggingul sa încheiat. Conectați placa la computer.

Din nou, reporniți DatalogAcceleration.bs2.

Faceți clic pe fereastra de transmisie a terminalului de depanare.

Introduceți D pentru a afișa datele.

Folosiți mouse-ul pentru a umbla în titlurile tabelului și la toate măsurătorile din

Debug Terminalul albastru Primiți fereastra de ferestre. (Nu umbriți în meniu.)

Apăsați CTRL + C pentru a copia înregistrările.

Deschideți Notepad.

Faceți clic pe Editați și selectați Paste.

Salvați fișierul.

Următoarele instrucțiuni explică modul de importare a fișierului .txt în Microsoft Excel 2002 și scrieți-l. Dacă utilizați un program de foi de calcul diferit, cuvintele cheie precum spațiul

Delimitată, complotul XY scatter poate oferi informații despre cum să-l realizați cu dvs.

Software specializat pentru foi de calcul.

În Excel, faceți clic pe Fișier și selectați Deschidere.

În câmpul tip fișiere, selectați Toate fișierele (*. *).

Găsiți fișierul .txt salvat cu notepad, selectați-l și faceți clic pe butonul Deschidere.

În Expertul pentru importarea textului Pasul 1, faceți clic pe butonul radio delimitat, apoi pe Următorul.

Faceți clic pe caseta de bifare de lângă Spațiu pentru a indica faptul că fișierul este delimitat de spațiu.

Asigurați-vă că este și caseta de bifare pentru caseta "Separați consecutive delimitatori ca unu"

Apoi faceți clic pe Următorul.

Asigurați-vă că este selectat butonul radio pentru formatul general de date coloană, apoi faceți clic pe finalizarea.

Capitoul IX

Bibliografie

[1] Dolga V, Sisteme de achiziții de date,interfețe si instrumentație virtual,Editura Politehnica,Timișoara 2008

[2] Dolga.V, Senzori si traductoare,Editura Eurobit Timișoara 1999

[3] Matieș.V,Tehnologie si educație mecatronică,Editura Economică Preuniversitară,Cluj-Napoca 2001

[4] Bogdanov.I, Conducerea Roboților ,Editura Orizontului Universitare Timișoara 2009

[5] http://www.parallax.com 03.06.2017

[6] Smart Sensors and Applications,Student Guide,vs1.0,PDF,Parallax 03.06.2017

[7] https://en.wikipedia.org/wiki/Accelerometer 03.06.2017

[8] https://learn.sparkfun.com/tutorials/mma8452q-accelerometer-breakout-hookup-guide

03.06.2017

[9] https://www.arduino.cc/en/Tutorial/Blink 05.06.2017

[10] https://www.arduino.cc/en/Main/Software 06.06.2017

[11] https://create.arduino.cc/projecthub/search?q=accelerometer 12.06.2017

[12]https://www.arduino.cc/en/Main/ArduinoBoardLeonardo 14.06.2017

[13] https://www.arduino.cc/en/Tutorial/Blink 20.06.2017

Similar Posts