Comanda Unui Motor de Curent Continuu cu Bluetooth

PROIECT DE DIPLOMĂ

Ion-Alexandru Pitigoi

COORDONATOR ȘTIINȚIFIC

Sef lucrari doctor inginer Catalin Constantin Cerbulescu

Iulie 2016

CRAIOVA

Comanda unui motor de curent continuu cu Bluetooth

Ion-Alexandru Pitigoi

COORDONATOR ȘTIINȚIFIC

Sef lucrari doctor inginer Catalin Constantin Cerbulescu

Iulie 2016

CRAIOVA

DECLARAȚIE DE ORIGINALITATE

[anonimizat], student la specializarea Electronică Aplicată din cadrul Facultății de Automatică, Calculatoare și Electronică a Universității din Craiova, certific prin prezenta că am luat la cunoștință de cele prezentate mai jos și că îmi asum, în acest context, originalitatea proiectului meu de licență:

cu titlul Comanda unui motor de curent continuu cu Bluetooth,

coordonată de Șef lucrări doctor inginer Cătălin Constantin Cerbulescu,

prezentată în sesiunea Iulie 2016.

La elaborarea proiectului de licență, se consideră plagiat una dintre următoarele acțiuni:

reproducerea exactă a cuvintelor unui alt autor, dintr-o altă lucrare, în limba română sau prin traducere dintr-o altă limbă, dacă se omit ghilimele și referința precisă,

redarea cu alte cuvinte, reformularea prin cuvinte proprii sau rezumarea ideilor din alte lucrări, dacă nu se indică sursa bibliografică,

prezentarea unor date experimentale obținute sau a unor aplicații realizate de alți autori fără menționarea corectă a acestor surse,

însușirea totală sau parțială a unei lucrări în care regulile de mai sus sunt respectate, dar care are alt autor.

Pentru evitarea acestor situații neplăcute se recomandă:

plasarea între ghilimele a citatelor directe și indicarea referinței într-o listă corespunzătoare la sfârșitul lucrării,

indicarea în text a reformulării unei idei, opinii sau teorii și corespunzător în lista de referințe a sursei originale de la care s-a făcut preluarea,

precizarea sursei de la care s-au preluat date experimentale, descrieri tehnice, figuri, imagini, statistici, tabele et caetera,

precizarea referințelor poate fi omisă dacă se folosesc informații sau teorii arhicunoscute, a căror paternitate este unanim cunoscută și acceptată.

Data, Semnătura candidatului,

PROIECTUL DE DIPLOMĂ

REFERATUL CONDUCĂTORULUI ȘTIINȚIFIC

În urma analizei lucrării candidatului au fost constatate următoarele:

În concluzie, se propune:

Data, Semnătura conducătorului științific,

REZUMATUL PROIECTULUI

Comanda unui motor de curent continuu cu Bluetooth, este realizat cu ajutorul unui circuit destul de simplu și anume cu ajutorul unui motor de cc, o plăcuță Arduino Uno R3 pentru controlul vitezei și direcției de rotație, un modulator Bluetooth pentru controlul la distanță și un telefon cu sistem android cu care vom comanda motorul.

Realizăm circuitul prin conectarea motorului la ieșirea dispozitivului Arduino, apoi conectăm modulatorul Bluetooth prin intermediul căruia vom da comenzile dispozitivului Arduino pentru controlul motorului. Pentru a ne conecta cu ajutorul telefonului la dispozitivul Arduino, este necesa să facem pentru început o aplicație android pe care mai apoi să o instalăm pe telefonul mobil, iar apoi prin intermediul aplicației putem da comenzile dispozitivului Arduino pentru controlul motorului.

Termenii cheie: mediul de testare, Arduino Uno R3, modulator Bluetooth, motor cc, telefon mobil, aplicație android.

CUPRINSUL

1 Introducere 1

1.1 Scopul 1

1.2 Motivația 1

2 Convenții De redactare 2

2.1 Cerințe generale 4

2.2 Structura documentului Error! Bookmark not defined.

2.3 Dimensiunile lucrării Error! Bookmark not defined.

2.4 Elemente de tehnoredactare Error! Bookmark not defined.

2.5 Formulele matematice Error! Bookmark not defined.

2.6 Ilustrațiile Error! Bookmark not defined.

2.6.1 Figurile Error! Bookmark not defined.

2.6.2 Tabelele Error! Bookmark not defined.

2.6.3 Legenda (unei figuri/tabele) Error! Bookmark not defined.

3 Termeni de utilizare Error! Bookmark not defined.

3.1 Autorii Error! Bookmark not defined.

3.2 Licența de utilizare Error! Bookmark not defined.

4 Concluzii Error! Bookmark not defined.

5 Bibliografie Error! Bookmark not defined.

6 Referințe web Error! Bookmark not defined.

A. Codul sursă Error! Bookmark not defined.

B. Site-ul web al proiectului Error! Bookmark not defined.

C. CD / DVD Error! Bookmark not defined.

Index Error! Bookmark not defined.

LISTA FIGURILOR

Figura 1. Selectarea prin click dreapta a opțiunii „Update field” Error! Bookmark not defined.

Figura 2. Actualizarea întregului tabel Error! Bookmark not defined.

LISTA TABELELOR

Tabelul 1. Nume de utilizatori și valorile rezumat ale parolelor acestora Error! Bookmark not defined.

Introducere

Scopul

Scopul alegerii acestui proiect este comandare unui motor cu ajutorul unui dispozitiv, pe care oamenii i-l folosesc în fiecare zi și anume telefonul mobil sau chiar si cu laptopul sau orice dispozitic ce foloseste bluetooth. Se dorește ca în viitor să se poate controla cât mai multe aparate sau dispozitive de orice fel, cu ajutorul a unui singur device; de aceea m-am gandit sa aleg telefonul mobil.

Motivația

Tema aleasă, Comanda unui motor de curent continuu cu Bluetooth a fost aleasă deoarece acest tip de motor este foarte întâlnit în aplicațiile cu roboți, iar comanda acestora de la distanță este o metodă foarte întâlnită și folosită în zilele noastre. În zilele noastre, telefonele mobile au început să acapareze totul. Putem cu ajutorul unui telefon mobil să citim, să ascultăm muzică, să supraveghem, să controlăm orice (Televizoare, aparate de aer condiționat, proiectoare, calculatoare), să facem fotografii sau filmări sau chiar să navigăm oriunde cu ajutorul GPS-ului. De aceea am ales să fac o lucrare despre comanda unui motor cu ajutorul unui telefon mobil, pentru că reprezintă un dispozitiv care ne ușurează viața continuu.

Una dintre deplasările frecvente ale motorului este cea într-o singură direcție, cu viteze diferite, alese dintr-o gamă cât mai diversă. S-a ales deci o temă în care se dorește acționarea corespunzătoare a unui motor de curent continuu de la distanță pentru a obține o variație a turației între 0 și o valoare maximă, cu un număr foarte mare de stări intermediare.

Comanda PWM a motorului asigură o reglare a vitezei motorului într-o gamă foarte largă, cu un consum energetic redus. Implementarea algoritmului se face folosind microcontrolere. Soluția aleasă este una care optimizează la maxim consumul energetic necesar comenzii motorului dar asigură în același timp o flexibilitate și o adaptabilitate crescută pentru respectiva schemă de comandă. Modificând algoritmul scris în microcontroller se poate comanda motorul cu viteză variabilă, în funcție de diverși factori externi sau în ambele direcții de deplasare.

Tema propusă se referă la controlarea unui motor de curent continuu cu ajutorul unui microcontroller, a unui modul bluetooth și un telefon mobil. Prin controlul unui motor se înțelege atât reglajul turației cât și sensului de rotație. Gradul de dificultate al proiectului este scăzut.

Comanda unui motor de cc cu Bluetooth

Prezentare generală

Acest proiect are la bază un circuit nu foarte complex, cu componente destul de des întâlnite în electronică, însă circuitul în sine are un rezultat destul de surprinzător pentru amatorii de tehnologie. La prima vedere circuitul pare simplu, dar pentru realiarea acestui proiect este nevoie să înțelegem fiecare componentă foarte bine; trebuie să știm ce face fiecare parte a fiecărei componente prezente.

Pentru început trebuie să știm exact cum funcționează un motor de curent continuu și să putem să facem diferența cu unul de curent alternativ. Următorul pas este să căutăm exact caracteristicile de care avem nevoie pentru realizarea proiectului, iar pentru asta este necesar să facem căutării destul de avansate pentru a nu achiziționa componente de care nu avem nevoie sau care nu pot să îndeplinească cerințele noastre.

Pentru realizarea proiectului am decis să folosesc următoarele componente:

– Un motor de curent continuu cu o tensiune maximă de alimentare de 6 V și care pornește la o tensiune minimă de 2,5v;

– Un driver PWM pentru motor (L293D);

– Un Conector Bluetooth Mate Silver pentru Arduino (clasă 2) care funcționează pe o rază de până la 10 m;

– O platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit, Arduino Uno R3. Aceasta este folosită pentru comanda întregului circuit;

– O sursă de tensiune pentru alimentarea circuitului. În cazul meu am folosit o baterie de 9V.

În acest proiect am realizat un circuit prin intermediu căruia, cu ajutorul oricărui dispozitiv cu o tehnologie bluetooth putem să controlăm viteza și turația unui motor de curent continuu, fără a mai fi nevoie să ne conectăm cu alte cabluri sau dispozitive, fără alte mecanisme sau tehnologii. Singurele componente folosite sunt cele menționate mai sus.

Principiul de funcționare nu este deloc complicat, tot ceea ce trebuie să facem este să alimentăm circuitul și să ne conectăm la modulatorul bluetooth, iar apoi să dăm comenzile necesare motorului.

Componenta principală, cu care este realizat montajul și prin intermediul căruia funcționează este Arduino UNO o platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm/5.3 cm – în cea mai des întâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

Placa Arduino UNO se conectează la portul USB al calculatorului folosind un cablu de tip USB A-B. Poate fi alimentată extern (din priză) folosind un alimentator extern. Alimentarea externă este necesară în situația în care consumatorii conectați la placă necesită un curent mai mare de câteva sute de miliamperi. În caz contrar, placa se poate alimenta direct din PC, prin cablul USB.

Arduino este una dintre cele mai simplu de utilizat platforme cu microcontroller. Ne putem gândi la el ca la un minicalculator (are puterea de calcul a unui computer obișnuit de acum 15 ani), fiind capabil să culeagă informații din mediu și să reacționeze la acestea.

În jurul lui Arduino există un ecosistem de dispozitive extrem de bine dezvoltat. Orice fel de informație ți-ai dori să culegi din mediu, orice fel de conexiuni cu alte sisteme ai avea nevoie, există o șansă foarte mare să găsești un dispozitiv pentru Arduino capabil să îți ofere ceea ce ai nevoie. Astfel, dacă discutăm despre preluarea de informații din mediu, mai jos sunt doar câteva exemple de senzori: senzori ce determină nivelul de alcool în aerul respirat, senzor de incediu, gaz GPL, monoxid de carbon, accelerații ale dispozitivelor în mișcare, curent consumat de diverse dispozitive casnice, forța de apăsare, gradul de rotire, cartele RFID, distanțe, nivel de iluminare, direcția nordului, prezența umană, sunet, temperatură, umiditate, presiune atmosferică sau video. Dacă ne referim la posibilitatea de a ne conecta cu alte sisteme, există plăci de rețea Ethernet pentru Arduino capabile să comunice informații prin Internet, dispozitive capabile să transmită date prin conexiune radio, plăci de rețea WIFI, dispozitive GSM pentru Arduino (capabile să trimită/recepționeze SMS-uri, să inițieze apeluri de voce sau să trimită date prin rețeaua 3G) sau conectori Bluetooth pentru conectarea Arduino cu telefonul mobil sau laptop. În zona mecanică, există motoare de curent continuu (utilizate pentru robotică), motoare pas cu pas (utilizate de obicei în zona industrială) sau servomotoare, controlate foarte exact. Pentru afișarea informațiilor preluate, există ecrane LCD pentru Arduino, începând cu cele mai simple (LCD text cu 16 caractere) până la ecran LCD grafice.

Componenta prin care putem să dăm comenzile către Arduino este Modulatorul Bluetooth, prin intermediu căruia trimitem comenzile din telefon sau orice dispozitiv, la fel cum am putea să o facem dacă am avea microcontroller-ul legat direct la un computer. Acest modem Bluetooth funcționează excelent cu Arduino. Este foarte simplu de utilizat, pur și simplu datele scrise pe pinii RX/TX sunt disponibili la receptor – din acest punct de vedere putem considera ca și cum pinii RX/TX sunt conectați prin fire obișnuite între emițător și receptor.

Modemul dispune de un modul de clasă 2 RN-42, simplu de utilizat și are regulatoare de tensiune pe placă, astfel încât poate fi alimentat între 5V și 6 V.

Pentru a putea să controlez motorul în ambele direcții, am folosit driver-ul PWM L293D, care este defapt un driver de curent cu 4 punți H. Acesta este făcut special pentru a putea bidirectiona un curent de până la 600 mĂ și o tensiune de la 4,5V până la 36V. Acesta a fost conceput pentru relee, motoare pas cu pas, cât și pentru aplicații ce folosesc curenți sau tensiuni mari.

Toate intrările driver-ului L293D sunt compatibile TTL. Fiecare ieșire este de tipul totel-pole, cu tranzistor de sincronizare Darlington și pseudo sursa Darlington. Driver-ul este activ în perechi cu pinii 1 și 2 sau 3 și 4. Atunci când o intrare este activă și pinul asociat acesteia este activ; când un pin este dezactivat și pinul asociat acestuia este dezactivat.

L293D este cea mai ușoară calea pentru construirea unui driver pentru motoare deoarece trebuie doar să lipim firele de la motorașe la integrat, pini de control la microcontroler, și pini de alimentare la baterie.

Pinul16(Vcc1) se alimentează la o tensiune de 5V.

Pinul8(Vcc2) se alimentează la o tensiune maximă de 24V, acesta este pinul de la care motoarele primesc curent.

Pini4,5,13,12 sunt GND, deci îi conectăm pe toți 4 între ei și apoi îi conectați la minusul sursei de alimentare pentru Vcc1 și Vcc2.

Pinul1(1,2EN) este pinul de ENABLE pentru primul motoraș și se conectează la microcontroler sau la Vcc1, în funcție de programul pe care îl folosim pentru a controla primul motoraș.

Pini3,6(1Y, 2Y) sunt pini care se conectează la un motoraș DC.

Pini2,7(1A, 2A) sunt pini de control pentru un motoraș care se conectează la microcontroler.

Pinul9(3,4EN) este pinul de ENABLE pentru al doilea motoraș, care se conectează la microcontroler sau la Vcc1, în funcție de programul pe care îl folosiți în controlarea celui de al doilea motoraș.

Pini14,11(4Y, 3Y) sunt pini care se conectează la un al doilea motoraș DC.

Pini15,10(4A, 3A) sunt pini de control pentru cel de al doilea motoraș, care se conectează la microcontroler.

Pinul1 și pinul 9 (pinii de enable) sunt ca un fel de întrerupătoare; pinul1 când este străbătut de un curent electric cu o tensiune de 5V permite curentului electric să ajungă la primul motor, cât timp nu este străbătut de un curent electric, acesta nu permite mișcarea motorului deoarece nu mai permite curentului electric să ajungă la motor. Pinul 9 face același lucru numai că pentru al doilea motor.

Pinul2, pinul7, pinul15 și pinul10 (1A, 2A, 4A, 3A) sunt pini de control a celor 2 motoare; dacă dorim ca două motoare să meargă într-o direcție, trebuie ca pinul2(1A) și pinul15(4A) să aibă aceeași valoare.

Pentru realizarea circuitului, am folosit o placă Breadboard 82x52x10mm pentru o funcționare cât mai corectă a proiectului și pentru a putea introduce cât mai ușor noi componente/dispozitive în circuitul realizat de mine. În cazul în care doresc să inserez un al doilea motor, un senzor sau chiar un afișaj, cu ajutorul acestei plăci se poate mult mai rapid și mai ușor față de circuit clasic cu lipituri.

CARACTERISTICI TEHNICE

2.2.1 Motorul de curent continuu

NOȚIUNI GENERALE

Motorul de curent continuu s-a impus fată de motorul de curent alternativ prin posibilitatea reglării comode și în limite largi a turației; există în schimb dezavantajul prezenței colectorului ce limitează puterea ce se poate scoate din mașină.

Dacă în locul unei singure spire se plasează pe rotor o înfășurare de curent continuu cu legături scoase la colector, pulsațiile tensiuni culese la perii se reduc sensibil, cu atât mai mult cu cît numărul de lamele ale colectorului între două perii consecutive este mai mare, încât se obține o tensiune practic continuă.

ELEMENTE CONSTRUCTIVE DE BAZĂ

Motorul de curent continuu are două părți principale :

-statorul, partea fixă, ce reprezintă inductorul mașinii;

-rotorul, partea mobilă sau partea indusă ce se rotește în interiorul statorului.

Elementele statorului sunt: carcasa ce cuprinde jugul statoric, polii principali și auxiliari, scuturile, lagărele, colierul de susținere a periilor.

Rotorul cuprinde miezul feromagnetic crestat pe care este plasată înfășurarea indusului, colectorul, arborele, ventilatorul.

Jugul statoric (1) se realizează din fontă sau oțel. De el sunt fixați polii principali (2) pe care sunt plasate înfășurările de excitație (3) și polii auxiliari (4) cu înfășurările de comutație (5). Miezurile polilor se execută din tolc de oțel electrotehnic strânse prin nituri sau din oțel masiv. în tălpile polilor principali uneori se practică crestături în care se introduc conductoarele înfășurării de compensație.

Elementele constructive de bază ale unei mașini de curent continuu.

Rotorul este format din arborele (6) pe care se fixează miezul indusului (7) prevăzut cu crestături deschise sau semiînchise în care se plasează înfășurarea inclusului legată la colectorul (8) prin intermediul stegulețelor (9). Miezul inclusului se face din tole de oțel electrotehnic de 0,5 mm izolate între ele printr-o peliculă de lac sau un strat de oxid. Pentru îmbunătățirea condițiilor de răcire, tolele se grupează în pachete de 40—100 mm între care se lasă canale radiate de ventilație de 8 — 10 mm. Mașinile mici au un singur pachet de tole. Tolele marginale se iau cu grosimea de 1 mm din motive de rezistență mecanică. Colectorul este format din ansamblul lamelelor (10) izolate între ele cu mică sau micanită și rigidizate din punct de vedere mecanic prin intermediul butucului colectorului (11) și a inelului de strîngere al colectorului (12). Sistemul lamelelor se izolează de elementele de fixare prin cilindri și conuri de micanită.

Colierul de susținere a periilor (13) cuprinde un butuc cu mai multe brațe (14) în care se fixează portperiile ce permit așezarea periilor pe colector într-o poziție convenabilă. Brațele sunt izolate prin cilindrii izolanți de butuc. Toate portperiile de aceeași polaritate se leagă galvanic și legăturile se scot la placa de borne a mașinii.

Mașinile mici și mijlocii se execută de obicei cu lagăre fixate in scuturile (15).

MĂRIMI NOMINALE

Mărimile nominale sunt cele corespunzătoare regimului nominal de funcționare a-l mașinii și sunt precizate pe plăcuța mașinii(motorului). La generatoare se normalizează tensiunile dc 115 V, 230 V, 460 V iar la motoare tensiunile de 110 V, 220 V, 440 V.

PROCESELE DE BAZĂ DIN MAȘINA DE CURENT CONTINUU

PROCESUL DE REACȚIE AL INDUSULUI

La mersul în gol, câmpul magnetic 0 din întrefierul unei mașini de curent continuu, este determinat de înfășurarea de excitație și are, dacă se neglijează prezența crestăturilor, o repartiție dreptunghiular-curbilinie .

La funcționarea în sarcină a mașinii și înfășurarea indusului determină un cîmp magnetic, numit cîmp magnetic de reacție al indusului ce se închide prin jugul rotoric, întrefier și tălpile polare. Se consideră că mașina funcționează ca generator și periile sunt în axa neutră, pentru sensul de rotație adoptat, este stabilit sensul curentului în conductoare, același cu al tensiunilor electromotoare induse și este redat spectrul liniilor cîmpului magnetic de reacție, a cărui axă de simetrie coincide cu linia periilor. Se observă că liniile cîmpului magnetic de reacție se închid prin talpa polară, astfel incât magnetizează mașina sub o jumătate de talpă polară și o demagnetizează sub cealaltă jumătate. Când axa câmpului de reacție coincide cu axa q a mașinii, câmpul se numește transversal. Dacă se consideră conductoarele continuu repartizate pe periferia indusului, se obține pentru solenație o repartiție triunghiulară continuă ; solenația trece prin zero

a — cimpul magnetic al mersului In gol ; b — cimpul magnetic dc reacție ai indusului.

Pentru porțiunea de sub talpa polară unde întrefierul este constant, rezultă că la altă scară curba solenației reprezintă și curba inducției magnetice, pentru porțiunea interpolara întrefierul crescînd sensibil, intervine o scădere a inducției magnetice.

Dacă mașina este nesaturată, repartiția inducției magnetice rezultante in întrefier , prin însumarea curbelor lui ,. Ca urmare a acțiunii magnetizante sub o jumătate de piesă polară și demagnetizate sub cealăltă jumătate, a solenației de reacție a indusului, curba repartiției componentei radiale a inducției magnetice în întrefier se deformează și are loc o rotire a axei neutre fizice (în sensul rotației la motor, în sens opus la generator), așa încât în dreptul axei neutre geometrice q, timpul magnetic devine diferit de zero ; cum solenația de reacție are în mod egal un efect magnetizant și demagnetizant, fluxul polar al mașinii nu se modifică.

Dacă mașina este saturată nu se mai poate, aplica principiul suprapunerii efectelor. În acest caz trebuie determinată curba solenației rezultante (a înfășurărilor inductorului și indusului) și corespunzător, stabilit cîmpul în fiecare punct. Pentru un punct plasat în zona inducțiilor magnetice mari din întrefier, curba P de integrare traversează porțiuni saturate ale circuitului magnetic. Tensiunea magnetică a pieselor polare și dinților rotorului unde liniile cîmpului de excitație și reacție se însumează crește, ceea ce se traduce prin creșterea lui și implicit, al lui =. Ca urmare, nu mai atinge valorile date de însumarea grafică ci repartiția pentru porțiunea saturată urmează curba reprezentată. Acțiunea magnetizantă a reacției de indus nu echilibrează integral acțiunea de magnetizare așa în cât la o mașină saturată, fluxul polar al mașinii se reduce la funcționarea în sarcină.

În concluzie, la plasarea periilor în axa neutră a mașinii, reacția de indus
are un caracter deformant al cîmpului magnetic din întrefier la mașina nesaturată și un caracter deformant și demagnetizant la mașina saturată

Acțiunea cîmpului magnetic de reacție transversală este deformantă, acțiunea cîmpului de reacție longitudinală ce urmează același traseu cu câmpul inductor este magnetizantă sau demagnetizantă după sensul de rotire al periilor. La decalarea în sensul rotației indusului este demagnetizantă, altfel magnetizantă.

În mod normal periile se plasează în axa neutră geometrică așa încât reacția longitudinală nu intervine.

Reacția de indus este un proces dezavantajos din următoarele motive :

-se micșorează tensiunea la bornele mașinii în sarcină, față de mersul în gol (ca urmare a reducerii fluxului polar) ;

-tensiunea dintre două lamele de colector, dependentă de valoarea locală a inducției magnetice din întrefier, poate lua la funcționarea în sarcină (ca urmare a deformării curbei cîmpului magnetic), valori de 1,6—2 ori mai mari ca cele de la mersul în gol; dacă se depășesc 35 V, există posibilitatea producerii în condiții determinate (ca de exemplu, prezența prafului de cărbune între lamele etc.) a unui arc electric. Dacă acesta cuprinde și lamelele vecine se poate extinde între două perii de polarități opuse și produce „cercul de foc, Ia colector“, ce pune în scurt-circuit rețeaua și mașina, împrejurare deosebit de periculoasă;

-cresc pierderile în fier, proporționale aproximativ cu pătratul inducției magnetice.;

-determină o rotație a axei neutre fizice, ceea ce influențează defavorabil, funcționarea mașinii.

Pentru eliminarea acestor dezavantaje se urmărește compensarea reacției de indus într-o mașină electrică. în acest sens :

-se prevede în niște crestături închise sau semiînchise practicate în tălpile polare, o înfășurare de compensație K formată din bare străbătute de curent încât să determine o solenație egală și de sens opus sole- nației indusului. Ca urmare, câmpul dc reacție transversal este anulat pe toată lungimea tălpii polare (câmpul magnetic creat de curentul din indus se reduce la un cîmp de dispersie ce nu traversează întrefierul). Pentru ca această cornmpensare să se producă automat, indiferent de sarcină, înfășurarea de compensație se conectează în serie cu înfășurarea indusului;

-se plasează între polii principali, în axele transversale, poli auxiliari sau poli de comutație a căror înfășurare C determină o astfel de solenație încât nu numai să anuleze câmpul magnetic al mașinii din axa q stabilit ca urmare a reacției de indus, ci să determine în axa neutră un câmp magnetic de sens opus, necesar funcționării. Ca și înfășurarea de compensație, înfășurarea polilor auxiliari sc conectează în serie cu indusul.

Înfășurarea de compensație scumpește mașina și de regulă se utilizează la mașini mari, cu regimuri grele de funcționare; cu poli auxiliari sunt dotate chiar mașinile de curent continuu de mică putere.

La metodele indicate se adaugă și altele ce urmăresc în principiu creșterea reductanței magnetice, pe calea câmpului de reacție transversal al indusului.

PROCESUL DE COMUTAȚIE

În teoria înfășurărilor de curent continuu, s-a văzut că bobinele prin rotirea indusului, trec continuu dintr-o cale de curent în alta. Cât timp bobina este într-o cale de curent, este străbătută de curentul constant , la trecerea în altă cale, curentul schimbă de semn. Procesul ce are loc ca urmare a modificării curentului unei bobine la trecerea dintr-o cale de curent în alta de la + ia la — ia, obligatoriu cum rezultă din principiul de funcționare la mașina de curent continuu, se numește procesul de comutație, iar durata lui, perioada de comutație Tc.

In momentul schimbării căii de curent, capetele bobinei sunt puse în scurtcircuit prin perie (la înfășurarea buclată) sau prin perii de aceeași polaritate (la înfășurarea ondulată).

Fie Rb, Lb, rezistența și inductivilatea de dispersie a bobinei, Rx rezistența legăturii dintre înfășurare și lamela de colector și RP1, RP2 rezistențele de trecere dintre perie și lamela 1 respectiv 2. Aplicând legea inducției electromagnetice pentru curba T, de-a lungul căreia se închide curentul i, se obține

+ ( + ) ( +i) — ( + ) ( — i) = ∑ue

unde ∑ue = uer + uc

1. Se consideră viteza de deplasare a colectorului vc = 0, așa îneît Sue s 0. Dacă se neglijează rezistența R, în general cu atît mai redusă cu cît mașinile sînt de puteri mai mari se obține

curentul prin bobina ce comută variază linear în timp (curba 1 din fig. 1.9), se zice că avem o comutație lineară. Dacă R ≠ 0, de semn tot la t — (curba 2). Acest mod de comutație se numește comutație de rezistență.

2. Se consideră și Sue ≠ 0. Fie mai întâi Ugc = 0 (periile sînt în axa neutră fizică). Cum t.e.m. indusă uer se opune variației curentului prin bobină, curentul i schimbă de semn la un timp .

Pentru uec ≠ 0 curbele de comutație se modifică în cazul t.e.m. uec de același sens cu uer, efectul de întârziere se accentuează, dacă uec este de sens contrar cu uee dar |uec | < |uer| se reduce efectul de întârziere și la| uec | = |uer | se obține o comutație de rezistență pentru | uee | > |uer | și de sens contrar, curentul schimbă aemnul la un timp.

La comutații foarte întârziate sau foarte accelerate (curbele 4, 6) se poate ca la t — Tc să nu avem

i = ia și ruperea curentului i1 se face cu arc electric sub muchia de ieșire a periei, așa încât aceste cazuri extreme nu sunt acceptabile.

Apreciem comutația unei mașini după scânteierea ce se produce la contactul dintre perie și colector.

ECUAȚIILE MOTORULUI DE CURENT CONTINUU.

STABILITATEA FUNCȚIONĂRII

O mașină de curent continuu funcționează ca motor, când primește pe la borne putere electrică și cedează la arbore putere mecanică. Ca și generatorul, după excitație motoarele se clasifică în : motoare cu excitație derivata (paralel), cu excitație serie și cu excitație mixtă (compund).

Curentul I debitat unei rețele exterioare de tensiune U de generatorul este, I =. Dacă cuplul mecanic la arbore din activ, devine cuplu rezistent, turația rotorului scade și curentul debitat î-si schimbă de semn (Ue= -U), așa încât mașina absoarbe putere electrică din rețea. La inversarea sensului curentului prin conductoarele indusului, forța tangențială electromagnetică F schimbă de sens și cuplul electromagnetic M din rezistent devine inotor, acționând în sensul rotației (mașina trece în regim de motor). Scăderea turației și creșterea corespunzătoare a curentului absorbit și cuplului electromagnetic motor, au loc până ce cuplul electromagnetic echilibrează cuplul rezistent util la arbore M2 Ia care se adaugă și cuplul de pierderi M0; ecuația de echilibru a cuplurilor la funcționarea mașinii de curent continuu ca motor în regim staționar, capătă forma

M – M2 + Mg

Ecuația, de mișcare, ținând cont de sensurile cuplurilor ce intervin este de forma

unde

M2 = Mz -f Mg

Un motor funcționează stabil la turația n în care M = M2 dacă la orice modificare întâmplătoare a turației, apare un cuplu dinamic ce determină revenirea în punctul inițial de funcționare. a, P punctul de intersecție al caracteristicilor M — f(n), Mr = f(n) și n' turația corespunzătoare regimului staționar.

CARACTERISTICILE DE PORNIRE

În procesul pornirii interesează curentul absorbit, cuplul electromagnetic dezvoltat și modul lor de variație în timp, variația vitezei și durata pornirii, economicitatea pornirii.

PORNIREA PRIN CONECTARE DIRECTĂ LA REȚEA

Această metodă de pornire se aplică la motoarele de putere mică (pînă la circa 6 kW). Ecuațiile ce descriu comportarea motorului de curent continuu în regim tranzitoriu în cazul general au forma

ue=

S-au notat prin ua, uex valorile momentane ale tensiunilor la bornele indusului și înfășurării de excitație.

Se are în vedere motorul derivație alimentat cu o tensiune constantă, în acest caz, ua = uex = U. În prima și cea de a treia ecuație, inductivitățile La, Le ale înfășurării indusului și înfășurării de excitație s-au introdus sub semnul derivată întrucât sunt mărimi variabile cu sarcina (ca urmare a modificării saturației mașinii). Având în vedere valoarea redusă a lui La și faptul că în general se modifică în limite restrânse, se poate admite cum se consideră în continuare.

Ecuațiile sunt scrise în ipoteza că periile sunt în zona neutră astfel că axele înfășurărilor de excitație și indusului sunt normale și inductivitatea mutuală a înfășurărilor este nulă.

Se observă că pe lângă regimul tranzitoriu mecanic determinat de variația turației n apare și un regim tranzitoriu electromagnetic determinat de variația curenților și fluxurilor prin înfășurarea de excitație și a indusului: cele două regimuri se suprapun și se condiționează reciproc, constituind un regim tranzitoriu unic electromagnetic.

Cât timp M<Mr, n= 0 și curentul absorbit este dat de relația

Curbele curentului din indus și turație! în procesul tranzitoriu de pornire prin conectare directă la rețea.

Soluția ecuației indică o variație exponențială a curentului absorbit cu constanta de timp Ta = relativ redusă, către valoareea finală Imax= , importantă având în vedere valoarea redusă a rezistenței totale R a înfășurării indusului. Acest curent este periculos pentru motor, din motive termice și de comutație și pentru rețea dacă aceasta este de putere redusă.

Simultan cu creșterea curentului indusului, crește și cuplul electromagnetic și pentru M>Mr, rotorul intră în turație, cu atât mai repede cu cât momentul de inerție al maselor în rotație J este mai mic; la n≠0 apare și uej≠0, de sens contrar curentului absorbit care nu mai urmează variația exponențială: după ce capătă o valoare maximă de pornire IP, începe să scadă continuu și în final ia valoarea Al.

Cu cât mașina pornește mai repede, cu atât Ip se îndepărtează de valoarea periculoasă Imax. Cuplul electromagnetic este determinat atât de curentul ia al indusului, cât și de fluxul polar 𝛟 și motorul pornește cu atât mai repede, cu cât este mai puternic excitat. Din acest motiv, la conectarea motoarelor cu excitație derivata trebuie ca în prealabil înfășurarea de excitație să fie alimentată (altfel se întârzie stabilirea câmpului magnetic al mașinii ca urmare a constantei de timp relativ mari a circuitului de excitație și curentul Iv crește).

La motorul serie R și La înglobează și rezistența respectiv inductivitatca înfășurării serie. La creșterea importantă a curentului, crește sensibil fluxul polar 𝛟 și din acest motiv motorul serie pornește cel mai repede.

2.2.2 Microcontrolerul

Privit din exterior, microcontrolerul mid-range, este un circuit integrat ordinar cu 8 până la 68 de pini având diferite tipuri ale capsulei. Din punct de vedere al apartenenței la domeniul electronicii analogice sau digitale, este un hibrid conținând atât elemente analogice (eșantionare-memorare, convertoare analogic-digitale, comparatoare, referințe de tensiune) cât și elemente digitale complexe specifice microprocesoarelor și sistemelor de dezvoltare (memorie RAM-volatilă, memorie EEPROM-nevolatilă, temporizatoare, regiștrii cu funcții variate: Puls With Modulation – modulație cu lărgime de puls, Universal Synchronous Asynchronous Receiver Transmiter – transmițător/receptor universal sicron/asincron etc.).

Ceea ce deosebește esențial un microcontroler de un circuit integrat analogic sau digital este faptul că el nu valorează aproape nimic atât timp cât nu este programat, mai mult, neprogramat nu funcționează nici măcar oscilatorul acestuia! Programul software îi conferă aceluiași sistem cu microcontroler, puterea de a avea utilități diferite deși schema hardware rămâne aproape neschimbată.

Avantajul unui microcontroler flash față de unul clasic One Time Programable sau cu ștergere prin expunere la radiație ultravioletă, este posibilitatea de a rescrie memoria program a acestuia de cel puțin 10000 de ori. Dacă programul nu funcționează din prima încercare (e miracol dacă funcționează!) avem posibilitatea modificării acestuia și rescrierea lui în memoria program a microcontrolerului. Inevitabil, editarea și testarea unui program, necesită cunoștințe medii de programare și existența unor dispozitive ajutătoare numite “unelte de dezvoltare”. Acestea sunt: programatorul, editorul, compilatorul, simulatorul, bootloaderul, și eventual emulatorul.

– Programatorul (compus din hardware+software) transferă fila hexagesimală rezultată în urma compilării filei sursă (programul scris de utilizator), în memoria program a microcontrolerului, de asemenea poate programa memoria EEPROM și “fuzibilele” de configurare ale microcontrolerului. Fuzibilele sunt conținute în registrul configuration word și conțin informații variate privind oscilatorul, protecția memoriei, reset-ul, etc.

– Editorul permite scrierea codului sursă a programului utilizator. Este un program software evoluat ce rulează pe PC și ușurează scrierea programului jal sau assembler.

– Compilatorul transformă codul sursă în cod hexagesimal standardizat, recunoscut de microcontroler.

– Simulatorul este un program software în care se importă fila hexagesimală și/sau codul sursă și care permite verificarea pas cu pas a corectitudinii acestuia, inspectând regiștrii ce “mimează” funcționarea microcontrolerului.

– Bootloaderul (compus din hardware+software) transferă rapid codul hexazecimal în microcontroler, utilizând un program rezident de boot ce rulează în microcontroler și un program software în PC. Este util doar la faza de prototip a unui produs cu microcontroler, deci inevitabil și în procesul de învățare al utilizării microcontrolerului.

– Emulatorul (compus din hardware+software) este un înlocuitor fizic pentru microcontroler și se află sub directa coordonare în timp real a PC-ului, conectorul emulatorului se introduce direct în soclul microcontrolerului utilizat de aplicația noastră, înlocuindu-l la faza de testare a programului.

Fără a avea acces la instrumentele de dezvoltare ce implică atât hardware cât și software (programator, emulator, bootloader) care de obicei sunt scumpe, începătorul într-ale microcontrolelor poate să se descurce foarte bine construindu-și singur minimul de accesorii necesare și să finalizeze într-un timp record aplicația dorită.

Ajutorul neprețuit pe care acesta îl are este rețeaua WEB.

CONSTRUCȚIA PROGRAMATORULUI

Programatorul este dispozitivul indispensabil orcărui specialist în “embedded software” adică software dedicat aplicației ce conține un hardware inteligent.

Programatorul se compune dintr-un modul electronic ce realizează interfațarea între calculatorul PC și aplicația conținând microcontrolerul, și un program software ce rulează pe PC într-un sistem de operare preferat de utilizator. După modul de conectare la calculator pot fi definite trei tipuri de programatoare, ce poartă denumirea celor care le-au imaginat pentru prima dată: programatorul paralel (sau de tip David Tait) tratat și în nota de aplicație elaborată de Microchip AN-589 [1], programatorul serial (există divergențe de opinii privind numele primului “inventator” al acestui tip de programator, este cunoscut pe internet ca JDM, NOPPP, PONY) și programatorul USB [20]. Programatoarele pot fi destinate pentru prototipuri sau pentru producția de serie.

Rolul programatorului este acela de a transfera în memoria program a microcontrolerului, fila hexa ce conține munca dvs. în format compilat. Deoarece este necesară multă experiență pentru a crea un program funcțional “în doi timpi și trei mișcări”, experiență care se dobândește în ani de muncă, numărul înscrierilor succesive într-un microcontroler poate atinge zeci sau chiar sute de ori până la obținerea efectului scontat.

Este evident că visul orcărui utilizator de microcontrolere este utilizarea unui programator simplu de utilizat și care să solicite numărul minim de manevre.

2.2.3 Comanda motoarelor de curent continuu cu microcontroler

 Într-un sistem mecatronic, microcontrolerele formează partea logică de comandă sau decizie iar motoarele, partea de execuție. Partea de comandă operează cu nivele de tensiuni de 5V și puteri mici iar partea de execuție cu tensiuni și puteri mai mari. Interfața dintre cele două parți ale sistemului se face prin circuit de amplificare care are frecvent și rolul de separare galvanică între cele două sisteme.

Datorită tensiunii si curentului de valori foarte mici furnizate la iesirea microcontrolerelor, este nevoie de circuite de amplificare pentru acționarea motoarelor de curent continuu. O schemă simplă si eficientă pentru comanda acestor motoare este reprezentată de “puntea H” (în engleză H-bridge).

Schema de acționare electric de mai sus este realizată pe baza unor întrerupătoare de tip transistor, GTO etc. Puntea este construită din patru întrerupătoare, acționate pe diagonală.Când întrerupătorul S1 si S4 sunt închise (si întrerupătoarele S2 si S3 sunt deschise), o tensiune pozitivă va fi aplicată motorului. Prin deschiderea întrerupătoarelor S3 si S4 si închiderea lui S2 si S3, această tensiune este inversată, făcând posibilă rotirea motorului în sensul opus.

Aranjarea de tip punte H este în general folosită pentru a inversa polaritatea motorului, însă poate fi folosită și pentru frânarea motorului (motorul se opreste brusc datorită scurtcircuitării terminalelor sale) sau pentru a lăsa motorul să se rotească liber până la oprire.

În funcție de puterea cerută pe sarcină, punțile H pot fi construite din componente electronice sau se găsesc într-un singur circuit integrat. Dacă puterea cerută pe sarcină este mare, peste ordinal Amperilor, se vor folosi dispozitive semiconductoare de execuție: tranzistoare, GTO, eventual tiristoare. De cele mai multe ori aceste dispozitive nu se pot lega direct la ieșirile microcontrollerului, prin rezistențe, ca în circuitul de ma jos, ci au nevoie de amplificatoare de putere.

Dacă puterea cerută pe sarcină este mică, maxim de ordinul sutelor de mA/A, se pot folosi circuite integrate specializate, ale căror ieșiri vor fi legate direct sau prin diverse interfețe la motor.

Circuitul integrat L293D pot comanda motoare alimentate cu max 35V si 600 mA. Fiecare din cele două punți H are două terminale de intrare (INput) si un terminal de activare (Enable). Când terminalul EN este legat la 5V puntea H este activă. Dacă intrarea IN1 este în 1 logic (+5V) iar intrarea IN2 este în 0 logic (0V), motorul se roteste; dacă stările celor două intrări sunt inversate, motorul se va roti în sens contrar. Când ambele intrări sunt în 0 logic motorul se opreste iar dacă ambele sunt în 1 logic atunci axul motorului este frânat. Un exemplu de conectare a circuitului L293 la microcontroler este prezentat în figura de mai jos.

Schema este valabilă pentru acele motoare care se pot lega direct la ieșirile circuitului L293. Condiția este ca curentul maxim debitat de către circuit să poată acționa motorul și să permit crearea unui cuplu mecanic suficient pentru acționarea arborelui motor.

2.2.4 Arduino UNO R3

O plăcuță Arduino este compusă dintr-un microcontroler Atmel AVR 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 magistrala serială I²C permițând utilizarea mai multor module în paralel. Până î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.[7]

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ăcuțele 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.O plăcuță Arduino cu descrierile pinilor I/O

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

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

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

Începând de sus, există 14 pini digitali de intrare / ieșire (I/O – input/output). Aceștia operează la o tensiune de 5 volți și pot fi controlați cu una din funcțiile pinMode(), digitalWrite() și digitalRead(). Fiecare pin poate primii sau trimite o intensitate de maxim 40 mA și au o rezistență internă între 20-50 kOhmi (default deconectată). În afară de semnalul standard I/O, unii dintre pini mai au și alte funcții specializate, care sunt descrise mai jos:

(serial) RX – pin serial, utilizat în special pentru recepția (intrare – Rx) datelor seriale asincrone (asynchronous serial communication) Protocolul serial asincron este o metodă foarte răspândită în electronică pentru a trimite și recepționa date între dispozitive. Acest protocol este implementat în dispozitiv numit UART (Universal Asynchronous Receiver/Transmitter)

(serial) TX – pin serial, utilizat pentru trimiterea datelor asincrone (ieșire – Tx). TTL vine de la transistor-transistor logic.

(External Interrupts) întrerupere externă. Acest pin poate fi configurat pentru a declanșa o întrerupere la o valoare mică, un front crescător sau descrescător, sau o schimbare în valoare. Vezi detalii despre posibile comenzi la attachInterrupt()

(External Interrupts + PWM) întrerupere externă. Identic cu pinul 2. Suplimentar, toți pinii marcați cu semnul ~ pot fi folosiți și pentru PWM (pulse with modulation)

(I/O) pin standard intrare/iesire

(PWM) poate furniza control de ieșire pe 8-bit pentru controlul PWM.

(PWM + SPI) – suportă comunicare prin interfața serială (Serial Peripheral Interface). SPI-ul are patru semnale logice specifice iar acest pin se foloseste pentru SS – Slave Select (active low; output din master). Pinii SPI pot fi controlați folosind libraria SPI.

(PWM + SPI) – suportă SPI, iar acest pin se folosește pentru MOSI/SIMO – Master Output, Slave Input (output din master)

(SPI) – suportă SPI, iar acest pin se folosește pentru MISO/SOMI – Master Input, Slave Output (output din slave)

(LED + SPI) – suportă SPI, iar acest pin se folosește pentru SCK/SCLK – Ceas serial (output din master). De asemenea, pe placă este încorporat un LED care este conectat la acest pin. Când pinul este setat pe valoarea HIGH este pornit, când are valoarea LOW este oprit.

(GND) – împământare. Aici se pune negativul.

(AREF) – Analog REFference pin – este utilizat pentru tensiunea de referință pentru intrările analogice. Se poate controla folosind funcția analogReference().

(SDA) – comunicare I2S

(SCL) – comunicare I2S

Jos, există o serie de 6 pini pentru semnal analogic, numerotați de la A0 la A5, fiecare din ei poate furniza o rezoluție de 10 biți (adică maxim 1024 de valori diferite). În mod implicit se măsoară de la 0 la 5 volți, deși este posibil să se schimbe limita superioară a intervalului lor folosind pinul 15 AREF și funcția analogReference(). De asemenea, și aici anumiți pini au funcții suplimentare descrise mai jos:

standard analog pin

standard analog pin

standard analog pin

standard analog pin

(SDA) suportă comunicarea prin 2 fire (I2S (I-two-C) sau TWI (Two wire interface)). Acest pin este folosit pentru SDA (Serial Data) la TWI.

(SCL) identic cu pinul 4, doar că acest pin este folosit pentru SCL (Serial Clock) la TWI. Pentru controlul TWI se poate folosi librăria Wire.

Lângă pinii analogici de jos mai există o secțiune de pini notată POWER. Mai jos sunt prezentați începând de lângă pinul analog A0:

Vin – intrarea pentru tensiune din sursă externă (input Voltage)

GND – negativul pentru tensiune din sursă externă (ground Voltage)

GND – negativ. Se folosește pentru piesele și componentele montate la arduino ca și masă/împământare/negativ.

5V – ieșire pentru piesele și componentele montate la arduino. Scoate fix 5V dacă placa este alimentată cu tensiune corectă (între 7 și 12 v)

3.3V – ieșire pentru piesele și senzorii care se alimentează la această tensiune. Tensiunea de ieșire este 3.3 volți și maxim 50 mA.

RESET – se poate seta acest pin pe LOW pentru a reseta controlerul de la Arduino. Este de obicei folosit de shield-urile care au un buton de reset și care anulează de obicei butonul de reset de pe placa Arduino.

IOREF – este folosit de unele shield-uri ca referință pentru a se comuta automat la tensiunea furnizată de placa arduino (5 volți sau 3.3 volți) (Input/Output Refference Voltage)

pin neconectat, este rezervat pentru utilizări ulterioare (la reviziile următoare ale plăcii probabil).

Comunicarea cu calculatorul, altă placă arduino sau alte microcontrolere se poate realiza fie prin portul USB (și este văzut ca un port standard serial COMx), fie prin pinii 0 și 1 (RX și TX) care facilitează comunicarea serială UART TTL (5V). Folosind librăria SoftwareSerial se poate face comunicații seriale folosind oricare din pinii digitali. Pentru comunicarea I2C (TWI) este inclusă o librărie Wire. Pentru comunicarea SPI se poate folosi librăria SPI.

După cum vedeți în imaginea de mai sus, placa mai are o serie de pini marcați ICSP (In-Circuit Serial Programming). Acești pini pot fi folosiți pentru reprogramarea microcontrolerului, sau ca pini de expansiune cu alte microcontrolere compatibile. Sunt conectați standard și se poate folosi un cablu de 6 fire (MOSI, MISO, SCK, VCC, GND, și pinul RESET) la fel ca în imagina de pe wikipedia (vezi linkul de la ICSP de mai sus).

2.2.5 Modulația PWM

Termenul de PWM vine din limba engleză de la Pulse Witdh Modulation și înseamnă că avem un semnal modulat în lățimea impulsurilor de comandă. Ca să fim mai expliciți putem spune că un astfel de semnal PWM constă în codarea informației în lățimea impulsului obținut. Factorul de umplere al unui semnal PWM se calculează cu relația D (fu) =Ti/T, unde Ti este durata impulsului și T perioada semnalului.

Deci, putem astfel să observăm că fiecare procent al unui astfel de semnal reprezintă o valoare importantă în aplicația pe care o dorim cu un astfel de semnal spre deosebire de semnalul TTL care poate să aibă doar două stări. (high, low).

Semnalele PWM sunt semnale de comandă a unor tranzistoare de putere, folosite în cadrul unor convertoare în comutație.

Un modulator PWM are rolul de a comanda un comutator și este o parte importantă și complexă a unui regulator de tensiune în comutație.

Principiul de realizare a unui astfel de modulator PWM constă în alcătuirea unei scheme electronice care să conțină:

– Generator în dinte de fierăstrău

– Amplificator de eroare

– Comparator

O diagramă simplificată pentru realizarea semnalului PWM este prezentată în figură următoare.

Circuit simplificat pentru realizarea semnalului PWM

După cum se poate observa și în figură de mai sus acest modulator PWM constă dintr-un generator în dinte de fierăstrău (saw-tooth generator), un amplificator de eroare și un comparator.

Frecvența generatorului este setată de valoarea constantei de timp RC.

Amplificatorul de eroare compară tensiunea de referință și semnalul de reacție. Semnalul de reacție este obținut, de obicei, printr-o divizare a tensiunii de ieșire. Dacă considerăm că Vf este semnalul de reacție și VRef este tensiunea de referință și Vf = βV0, deoarece Vf = VRef, V0 = VRef/β.

Funcționare:

Tensiunea de la ieșirea amplificatorului de eroare este comparată cu valoarea semnalului în dinte de fierăstrău. Dacă ieșirea acestuia este mai mare decât valoarea dintelui de fierăstrău atunci la ieșirea comparatorului vom avea ‘1’ logic adică Ton. Dacă ieșirea amplificatorului este mai mică decât valoarea dintelui de fierăstrău atunci la ieșirea comparatorului vom avea ‘0’ logic adică Toff.

Dacă tensiunea de ieșire tinde să crească, atunci tensiunea de reacție va crește peste tensiunea de referință, astfel tensiunea de ieșire a amplificatorului de eroare va scădea rezultând astfel o durată mai mică pentru care la ieșirea comparatorului vom acea ‘1’ logic. Dacă tensiunea de ieșire scade atunci la ieșire comparatorului vom avea o durată mai mare de ‘1’ logic. Această modificare a lățimi impulsurilor în funcție de tensiunea de ieșire este datorată factorului de umplere (duty-cicle).

În cazul în care tensiunea de ieșire este constantă această este menținută de reacția negativă la valoarea dorită.

2.2.6 Tehnologia Bluetooth

Generalități 

În 1998, cinci companii importante (Ericsson, Nokia, IBM, Toshiba și Intel) au format un grup, numit Bluetooth SIG (Special Interest Group), pentru a crea o tehnologie care să nu necesite licență destinată conexiunilor universale fără fir între dispozitivele mobile. Rezultatul este Bluetooth, o tehnologie ce a luat numele regelui care în secolul al X-lea a unit triburile de războinici Vikingi. Adoptarea acestui nume reprezintă o recunoaștere a rolului deosebit pe care companiile nordice l-au avut în dezvoltarea tehnologiei Bluetooth.

Bluetooth reprezintă un standard pentru comunicații radio pe distanțe scurte. Principalele trei scopuri avute în vedere încă din faza de proiectare sunt: dimensiuneredusa, consum minim, preț scăzut. Tehnologia a fost proiectată pentru a fi simplă și pentru a deveni un standard de facto în conexiunile fără fir.

Specificațiile Bluetooth

Primele specificații referitoare la Bluetooth au apărut în februarie 2001 sub denumirea de Bluetooth A urmat apoi în 2003 Bluetooth 1.2 Specification. Specificațiile sunt compuse din două părți: nucleul și profilele.

Specificațiile nucleului

Specificațiile nucleului definesc toate nivelele din stiva protocolului Bluetooth. Stiva protocolului Bluetooth diferă în anumite privințe de modelul clasic, OSI. Aceste diferențe provin în principal din condiția impusă Bluetooth-ului de a suporta conectivitate ad-hoc între nodurile participante la care se adaugă cerință de consum redus și necesitatea implementării protocolului pe dispozitive care au resurse limitate, dispozitive pe care nu s-ar putea implementa modelul OSI.

Stiva protocolului Bluetooth și structura chip-ului Bluetooth

Nivelul radio (RF) se află la baza stivei. Specificațiile interfeței sale definesc caracteristicile transmisiunii radio, banda de frecvență, structura canalelor, nivelele admise ale puterii de emisie și nivelul de sensibilitate al receptorului.

Al doilea nivel este 17217u2024r baseband. Acest nivel se ocupă cu partea fizică a Bluetooth-ului (PHY) și controlul accesului la mediu (MAC). Acestea implica sarcini cum ar fi descoperirea dispozitivelor (device discovery), formarea legăturii, comunicație sincronă sau asincronă cu dispozitivele conectate.

Dispozitivele conectate trebuie să schimbe între ele unele mesaje de control pentru configurarea și managementul conexiunilor. Structura acestor mesaje este definită la nivelul link manager protocol (LMP). Entitatea funcțională care are rolul de a îndeplini funcțiile acestui nivel se numește managerul legăturii (link manager).

Un aspect care conferă unicitate Bluetooth-ului îl reprezintă integrarea într-un singur chip Bluetooth a părții radio și a părții de control. Un chip bluetooth poate fi conectat cu procesorul dispozitivului gazdă folosind ca interfețe USB, UART sau un PC-card. În specificațiile nivelului controler interfață cu dispozitivul gazdă (Host Controller Interface – HCI) se definește o metodă de interfațare independentă pentru comunicarea cu chip-ul Bluetooth. Procesorul dispozitivului gazdă comunică cu modulul Bluetooth folosind comenzi HCI. Nivelul HCI este parte a stivei Bluetooth dar nu constituie un nivel de comunicație peer-to-peer, cu un alt dispozitiv Bluetooth, din moment ce comenzile HCI și mesajele de răspuns nu folosesc legătura radio.

Nivelul de control al legăturii logice și protocolul de adaptare (logical link control and adaptation protocol – L2CAP) poate fi considerat ca fiind Link layer-ul pentru Bluetooth. Acest nivel se ocupă de multiplexarea, reasamblarea și segmentarea pachetelor. În mod uzual nivelul L2CAP și nivelele superioare sunt implementate software. L2CAP livrează pachetele recepționate de la nivelele superioare către destinatar. Dispozitivele Bluetooth pot stabili o legătură L2CAP de îndată ce sunt unul în raza celuilalt. Un dispozitiv client trebuie să descopere mai întâi serviciile oferite de un dispozitiv server.

Nivelul protocolului de descoperire a serviciilor (Service discovery protocol – SDP) definește mijloacele prin care dispozitivul client poate descoperi atât serviciile oferite cât și atributele serviciilor. Design-ul nivelului SDP a fost optimizat pentru Bluetooth. Acesta definește doar mecanismul de descoperire, neincluzând metodele de accesare a acestor servicii.

Specificațiile nivelului RFCOMM definesc o metodă de emulare a conexiunii prin cablu RS-232 peste legătura radio Bluetooth. RFCOMM suportă aplicații derivate din aplicațiile care utilizau portul COM pentru a realiza comunicații peer-to-peer (de exemplu protocoalele point-to-point – PPP, inclusiv TCP/IP).

Legătura radio

 Bluetooth-ul operează în bandă ISM la 2,4 GHz. Majoritatea țărilor alocă o lățime de bandă de 83,5 MHz (excepție face Japonia). În interiorul acestei benzi sunt definite 79 de canale radio (23 de canale în Japonia) distanțate la 1 MHz. În prezent se fac eforturi pentru a alinia toate țările la această definire a benzii pentru Bluetooth astfel încât tehnologia să poată deveni una globală.

Bluetooth este un sistem care folosește tehnica spectrului împrăștiat cu salt în frecvența. Această înseamnă ca purtătoarea face salturi în frecvența acoperind întreg spectrul de 79 de canale, folosind o secvență de salt pseudo-aleatoare. Rata uzuală a salturilor, 1600 salturi pe secundă, asigură o foarte bună protecție la interferențe în bandă de 2,4 GHz.

Exemplificarea unei transmisiuni cu salt în frecvența

Un alt avantaj al salturilor rapide în frecvența îl reprezintă lungimea mică a pachetelor de date. Astfel dacă un pachet nu este recepționat corect de un dispozitiv se solicită retransmisia pachetului. Cu siguranță retransmisia se va face pe o altă frecvență, în funcție de secvența de salt stabilită. Acest caz este ilustrat unde pachetele dispozitivului 1 (căsuțele roșii) și pachetele dispozitivului 2 (căsuțele verzi) folosesc la anumite momente de timp aceeași frecvență, rezultând coliziuni. Această situație poate să apară și atunci când un dispozitiv non-Bluetooth folosește o parte din banda alocată Bluetooth-ului.

Exemple de pachete de date transmise pe unul, trei sau cinci sloturi temporale.

Intervalul de comutare de 220μs care succede pachetele este necesar efectuării saltului în frecvența. Pentru emisie și recepție se folosesc sloturi temporare succesive. Lungimea nominală a unui slot este de 625μs. În mod normal un pachet de date ocupă un singur slot dar poate ocupa și trei sau cinci sloturi. În cazul pachetelor multi-slot frecvența de emisie rămâne aceeași până când întregul pachet este transmis. Când se utilizează pachete multi-slot rata de bit este mai mare deoarece este nevoie doar de un singur header și un singur interval de comutare de 220μs (switching time) în fiecare pachet. Pe de altă parte, scade robustețea deoarece într-un spectru aglomerat pachetele lungi se pot transmite cu erori.

Viteza legăturii, de 1Mbps, poate fi ușor atinsă folosind o modulație GFSK. O tehnică de modulație mai complexă ar conduce la atingerea unor rate de bit mai ridicate dar ar complica structura părții radio a Bluetooth-ului și implicit ar crește costurile de producție.

În general partea radio este cel mai costisitor element al interfeței cu o rețea wireless. În receptoarele radio tipice filtrele, oscilatoarele și mixerele procesează semnalul de intrare la frecvență înalta. Asemenea circuite sunt costisitoare. Pentru a reduce costurile specificațiile Bluetooth recomandă trecerea semnalului de intrare pe o frecvență intermediară mai mică (aproximativ 3 MHz), frecvență care permite realizarea unor filtre integrate folosind tehnologia CMOS. Trecerea pe o frecvență intermediară mai mică creează însa alte probleme cum ar fi reducerea sensibilității receptorului. Sensibilitatea recomandată a receptorului Bluetooth este de minim -70dB.

Rețele de tip piconet și scatternet

Un grup de dispozitive Bluetooth care folosesc același canal pentru a comunica între ele poartă numele de piconet. Așa cum se observă un piconet este o rețea cu o configurație de tip stea. Dispozitivul central are rolul de master celelalte dispozitive funcționează ca slave (sclav). Un rol important al master-ului este acela de a stabili secvența de salt în frecvența. Această secvența se stabilește pseudo-aleatoriu, în principiu pornind de la numărul care reprezintă adresa masterului și de la un alt număr generat aleatoriu de către master. Toate dispozitivele slave din fiecare piconet sunt sincronizate cu ceasul master-ului și urmează schema de salt stabilită de acesta. Un master poate deservi simultan maxim șapte sclavi activi. Astfel o rețea de tip piconet poate fi formată din două, trei, până la opt dispozitive din care unul singur poate fi master. Dispozitivele slave nu pot comunica direct între ele, ci doar cu masterul. Masterul poate comunica cu oricare dintre sclavi.

O rețea de tip scatternet poate fi formată prin conexiunea a două sau mai multe rețele tip piconet Atunci când un dispozitiv face parte din mai multe piconet-uri el va trebui să se sincronizeze, de fiecare dată, cu piconet-ul cu care comunică la un anumit moment. Un dispozitiv poate fi sclav în două piconet-uri diferite sau master într-un piconet și sclav în altul dar nu poate fi master pentru mai mult de un piconet.

O caracteristică proprie rețelelor Bluetooth este dinamismul. Rețelele Bluetooth sunt rețele ad-hoc, care se formează, se modifică și se dizolvă permanent

Exemple de rețele de tip piconet și scatternet

A) piconet format din două dispozitive

B) piconet format din mai multe dispozitive

C) scatternet constituit din trei piconet-uri

Procedura de căutare de dispozitive (inquiry) și cererea de conectare (paging)

Conectarea cu un anumit dispozitiv se realizează prin intermediul unui mesaj de tip page. Pentru a trimite un mesaj page (procedură numită paging) masterul trebuie să cunoască adresă sclavului către care face cererea de conectare. Această adresă se obține cu ajutorul unui mesaj de tip inquiry.

Starea implicită a unui dispozitiv Bluetooth este numită standby mode. În această stare dispozitivul ascultă la intervale de 1,28 secunde eventualele mesaje inqury sau page. De fiecare dată sunt ascultate pe rând 32 de frecvențe pe care este posibil să se primească unul din mesajele amintite anterior.

Prin mesajul inquiry masterul trimite un cod numit inquiry access code. Celelalte dispozitive răspund trimițând informații despre identitatea lor și despre ceasul propriu. După aceasta urmează o procedură de căutare de servicii utilizată pentru a determina ce fel de servicii oferă fiecare dispozitiv prezent în raza masterului.

În timpul procedurii de paging, pe baza informației despre identitatea și ceasul fiecărui dispozitiv masterul determină și trimite sub forma mesajului page un cod de acces și o secvență de activare a sclavului (wake-up sequence). Un astfel de mesaj va fi trimis de master pe cele 32 de frecvențe destinate acestei proceduri astfel: inițial mesajul este transmis pe primele 16 frecvențe de 128 de ori iar dacă nu se primește nici un răspuns se continuă transmiterea mesajului pe celelalte 16 frecvențe tot de 128 de ori. Timpul maxim de așteptare a răspunsului la mesaj este de 2,56 secunde.

În urma procedurilor inquiry și page se realizează conexiunea între master și sclavi

Procedurile inquiry și page duc la stabilirea unei conexiuni

Transferul de date. Canalul piconet

Imediat ce s-a format o rețea de tip piconet, comunicația între master și sclav (i) poate începe. Canalul comun pe care se face comunicația se numește canalul piconet. Acest canal este împărțit în intervale de timp de câte 625μs, fiecare slot folosind o altă frecvență de transmisie. Canalul este partajat între master și sclavi folosind o schemă de tipul salt în frecvența/divizare duplex în timp (frequency-hop/time-division-duplex FH/TDD) în care comunicația în sensul master-slave și slave-master se desfășoară pe rând. Pentru transferul de date pe un canal piconet se pot defini două tipuri de legături: legătura asincronă (Asynchronous Connectionless Link – ACL) sau legătura sincronă (Synchronous Connection Oriented Link – SCO). Legătură de tip ACL este cu comutare de pachete și, desigur, se folosește pentru transmisia datelor sub formă de pachete. Debitul maxim pentru această legătură, folosind pachete multislot, este de 723 kbps într-un sens de transmisie și 57,6 kbps în celălalt sens, masterul fiind cel care controlează viteza de transmisie pe fiecare sens. Pentru conexiuni punct la punct, simetrice, cu comutare de circuite, se folosește legătura SCO (uzual pentru transmisia de voce). Debitul pentru această legătură este de 64 kbps.

Cel mai adesea datele sunt trimise sub formă de pachete. Un astfel de pachet poate să aibă o lungime de 1, 3 sau 5 sloturi temporale. Fiecare pachet este compus din trei părți: codul de acces (access code), header-ul și datele utile (payload). Partea care conține datele utile poate avea între 0 și 2745 biți. Sunt admise și pachete de control care să fie compuse doar din codul de acces sau doar din codul de acces și header.

Codul de acces conține informații referitoare la destinatarul pachetului iar headerul conține informații referitoare la pachet (tipul pachetului, sursa, corecția erorilor, etc).

Formatul unui pachet standard.

Specificațiile profilelor

 Producătorii pot folosi serviciile oferite de stiva Bluetooth pentru a crea o varietate de aplicații. Deoarece interoperatibilitatea este crucială pentru funcționarea Bluetooth-ului, Bluetooth SÂG a elaborat specificațiile profilelor. Profilele reprezintă modele de utilizare a tehnologiei Bluetooth. Acestea descriu principalele aplicații Bluetooth și dispozitivele cărora la sunt adresate.

 Profilele definesc protocoalele care suportă un anumit model de utilizare. Unele profile se pot baza pe altele, între ele existând o relație de interdependentă. De exemplu trei profile (File Transfer Profile, Object Push Profile și Synchronization Profile) sunt definite pe baza Generic Object Exchange Profile.

Aparatele Bluetooth implementează diferite seturi de profile. Pentru ca un dispozitiv să suporte un anumit profil acesta trebuie implementeze trăsăturile obligatorii ale profilului respectiv.

Relațiile de interdependentă dintre profilele Bluetooth

Conform specificațiilor Bluetooth profilele se pot grupa astfel: profile generale, profile orientate pe model de utilizare și profile adiționale. În continuare se va prezenta fiecare grupă de profile.

Profilele generale

Generic Access Profile definește procedurile generale legate de descoperirea dispozitivelor Bluetooth (procedurile idle mode) și aspecte legate de managementul legăturii și conectarea dispozitivelor Bluetooth (procedurile connecting mode). Tot în acest profil sunt definite procedurile legate de diferitele nivele de securitate. Mai mult, acest profil include formatul uzual al cererilor pentru parametrii accesibili nivelului interfață utilizator. Toate dispozitivele Bluetooth trebuie să suporte acest profil.

Service Discovery Application Profile definește trăsăturile și procedurile unei aplicații ce rulează pe un device Bluetooth, necesare pentru a descoperi serviciile oferite de un alt dispozitiv Bluetooth.

Serial Port Profile definește caracteristicile obligatorii pentru dispozitivele Bluetooth, necesare pentru a putea emula conexiuni seriale peer-to-peer prin cablu, folosind nivelul RFCOMM.

Generic Object Exchange Profile specifică protocoalele și procedurile care vor fi folosite de aplicații care presupun schimbul de obiecte.

Profile orientate pe model de utilizare

 Cordless Telephony Profile și Intercom Profile definesc caracteristicile și procedurile obligatorii pentru interoperabilitatea dintre unitățile active în modul de utilizare "three-in-one phone" (același telefon poate fi folosit ca telefon fix fără fir, walkie-talkie și telefon celular). Cordless Telephony Profile este folosit când telefonul este conectat prin Bluetooth la o stație de bază pentru telefonia fixă (cazul telefoanelor fixe cordless). Intercom Profile implementează modul de folosire "walkie-talkie" între două telefoane fixe echipate cu module Bluetooth.

 Dial-up Networking Profile descrie cum se poate folosi un telefon celular sau un modem wireless, împreuna cu un PC, pentru a realiza transferuri de date prin conectarea la un server pentru accesul dial-up la Internet sau pentru alte servicii dial-up.

 Fax Profile descrie modul în care un PC poate folosi un telefon celular ca modem wireless pentru fax. Astfel se pot trimite și recepționa fax-uri direct pe computer.

 Headset Profile stabilește cerințele necesare pentru că dispozitivele Bluetooth să suporte atașarea unui dispozitiv de tip hands-free fără fir. Aceste dispozitive pot fi utile în cazul telefoanelor mobile, PDA-urilor și al laptop-urilor.

 LAN Access Profile stabilește cum pot accesa dispozitivele echipate cu Bluetooth o rețea de tip LAN folosind PPP (Point-to-Point Protocol) bazat pe RFCOMM (protocol Bluetooth care emulează interfața RS-232). Tot aici se specifică cum poate fi utilizat același mecanism PPP, pentru a crea o rețea formată din două aparate echipate cu module Bluetooth.

 File Transfer Profile stabilește cadrul care îi permite unui utilizator să caute și să editeze obiecte (fișiere și dosare) localizate pe un alt dispozitiv Bluetooth și să transfere obiecte între cele două dispozitive. Cele mai folosite dispozitive pentru astfel de operațiuni sunt PC-urile, notebook-urile și PDA-urile.

Object Push Profile furnizează descrieri ale mijloacelor prin care utilizatorii pot trimite, primi sau face schimb de obiecte simple, de exemplu cazul schimbului de cărți de vizită între laptop-uri, PDA-uri sau telefoane mobile.

Synchronization Profile specifică modalitățile prin care se poate realiza sincronizarea automată a datelor (de obicei a notelor din agendă) atunci când un dispozitiv intră în raza de acoperire a unui PC dotat cu placa Bluetooth.

Profile adiționale

Inițial în specificațiile Bluetooth s-au definit treisprezece profile, descrise anterior. Pentru a garanta interoperabilitatea în cazul unei arii lărgite de aplicații, grupul de lucru Bluetooth SÂG a specificat noi profile, definite separat, după cum urmează:

Generic Audio/Video Distribution Profile (GAVDP) definește un grup generic de protocoale și proceduri cu rolul de a distribui informație audio/video folosind canale ACL.

Advanced Audio Distribution Profile (A2DP) definește distribuția de informație audio/video de înalta calitate mono sau stereo pe canale ACL. A2DP se bazează pe GAVDP.

Audio/Video Remote Control Profile (AVRCP) definește transmisia unui semnal A/V de control, activat de utilizator, către un dispozitiv Bluetooth.

Basic Imaging Profile (BIP) este un profil bazat pe OBEX care permite dispozitivelor să negocieze dimensiunea și tipul codării datelor de tip imagine care sunt schimbate.

Basic Printing Profile (BPP) este un profil bazat pe OBEX care permite printarea mail-urilor, mesajelor sau a unor documente direct de pe dispozitivele mobile.

Hardcopy Cable Replacement Profile (HCRP) este un profil ușor de implementat pentru printarea și scanarea oricărui tip de document. HCRP este implementat direct peste L2CAP evitând supraîncărcarea cu OBEX sau RFCOMM.

Bluetooth Extended Service Discovery Profile (ESDP) for Universal Plug and PlayTM (UPnPTM) este un profil destinat descoperirii altor dispozitive care suportă servicii UPnP și recepționării informațiilor despre aceste servicii.

Hands-Free Profile (HFP) definește cazul când un mobil poate fi folosit împreuna cu un dispozitiv de tip hands-free. HPF asigură mijloacele realizării legăturilor de voce și de control între cele două dispozitive.

Human Interface Device Profile (HÂD), stabilește cadrul de utilizare a tastaturilor Bluetooth, a dispozitivelor destinate jocurilor (de exemplu un joystick wireless) și a dispozitivelor de monitorizare la distanță.

Common ISDN Access Profile definește modul în care aplicațiile pot accesa ISDN prin Bluetooth.

Personal Area Networking Profile (PAN) definește rețelele personale bazate pe IP. Acest protocol asigură suport și pentru punctele de acces ale rețelei (de exemplu LAN sau GSM).

SIM Access Profile (SAP) definește modalitatea în care poate fi accesată o cartelă SIM prin intermediul unei legături Bluetooth.

Securitatea unei conexiuni Bluetooth

Sistemul de securitate al tehnologiei Bluetooth include atât autentificare cât și confidențialitate și are la bază algoritmul de criptare SAFER+. La origini acesta este un cifru bloc dar în cazul Bluetooth-ului este implementat ca cifru stream. Versiunea pe 128 de biți folosită de Bluetooth este considerată ca fiind foarte solidă.

Există patru metode pentru a asigura securitatea unei legături Bluetooth:

· Autentificarea, prin care se verifică identitatea fiecărui dispozitiv din rețea;

· Pairing, este o procedură prin care se autentifică două dispozitive, bazată pe stabilirea de comun acord a unei parole care se introduce de către utilizatorii ambelor dispozitive. În urma procedurii de pairing cele două dispozitive apar unul celuilalt ca fiind sigur (trusted). Procedura de pairing pentru două dispozitive se realizează o singură dată, nefiind necesară la următoarele conexiuni între cele două dispozitive.

· Autorizarea, este procesul prin care se decide care dispozitiv din raza de acoperire are sau nu voie să acceseze un anumit serviciu.

· Criptarea, asigură confidențialitatea datelor trimise. Se folosește o cheie cu lungimea între 8 și 128 biți.

Prin aplicație, se poate specifica care dintre metodele de securitate se aplică unei anumite legături.

2.2.7 Puntea H

Puntea H este necesară pentru controlul motoarelor de curent continuu în roboți. Cu aceasta putem schimba sensul de rotație al motorului, să frânăm, și să îl lăsăm liber. Schimbarea sensului de rotație al unui motor se poate face cu butoane (mecanic), dar într-un robot nu se poate așa ceva. Deoarece vrem să fie acționat de la distanță, sau să fie autonom. Acesta este controlat de regulă de un microcontroler (PIC, Atmega) sau platforme care conțin microcontrolere (Arduino).

Modul de realizare a unei punți H este de două feluri:

– Circuite integrate specializate (L293, L298, LMD18200 etc.)

– Componente discrete (tranzistori bipolari și MOSFET) și circuite integrate care să asigure legătura între semnalele provenite de la Arduino sau orice altă platformă, de regulă acestea fiind semnale logice de nivel TTL (5V sau 3.3V), dar care nu au curent foarte mare debitat (maxim 10mA).

Argumente asupra avantajelor și dezavantajelor folosirii circuitelor integrate:

Avantajele folosirii circuitelor integrate specializate cu punte H:

– Simplitatea întregului circuit și a puținelor componente externe, are ca efect micșorarea întregului cablaj și poate fi folosit în spații înguste. Desigur această micșorare restricționează folosirea unor puteri mari în cadrul punții H. Aceste circuite integrate sunt limitate în tensiune (de regulă mai mult de 55V-60V, la un curent de 3A RMS) și este maximul puterii dezvoltate cu circuite integrate. Trecerea curentului prin această punte determină și disiparea puterii care aduce încălzirea joncțiunii.

– Unele integrează și partea de protecție logică, asigură conversia semnalelor TTL într-un cuvânt conțin partea logică și partea de putere.

Dezavantajele folosirii circuitelor integrate specializate cu punte H:

– Limitarea puterii datorată tipului de tranzistor indiferent că este MOSFET sau BIPOLAR folosit în cadrul circuitului integrat. MOSFET-ul din cadrul integratului este realizat cu tehnologie DMOS întâlnită foarte des în integrate chiar și de amplificare audio, ce suportă tensiuni de maxim 60V.

– Costul ridicat , iar dacă avem mai mult de 2 motoare deja costul devine semnificativ. Cu același cost se poate realiza o punte H care să suporte puteri necesar controlului unui motor de scuter electric.

– Circuitele integrate L293 și L298 suportă puteri mici dar aceasta sunt realizate pe tehnologie BJT adică puntea H este realizată cu tranzistori bipolari aceastia având tensiunea de saturație mult mai mare decât un MOSFET, produc încălzirea lor și implicit a pierderii de putere, adică scăderea eficienței întregului circuit.

În continuare, prezentăm o schemă ce utilizează componente discrete în loc de circuite integrate specializate cum ar fi L298.

Aceasta este o punte H, ce conține protecție la fenomenul de străpungere al tranzistorilor denumit și shoot-through așa cum este denumit în articolele din afara țării. Este realizată cu tranzistori de tip Darlington TIP122 și TIP127. Fenomenul de străpungere chiar dacă există este mult mai mic la tranzistorii bipolari, deoarece aceștia au rolul de a amplifica curentul din baza acestuia. Dacă tranzistorul are un factor de amplificare să spunem 500, atunci cu un curent de 1mA în bază vom avea un curent de ieșire (pe colector) de 500mA. Astfel chiar dacă s-ar deschide toți, vom avea același curent pentru toți. Important este să nu se depășească aria sigură de funcționare ("safe operating area" sau "SOA"). Această schemă prezentată mai oferă un avantaj major: acela de a absorbi un curent foarte mic din sursa de comandă, adică pinii sau conectorii W1 și W2. Acești pini pot fi ieșirile unui microcontroler sau platforme de dezvoltare. Cu un curent absorbit de către porțile logice HC00 și LS02 de ordinul microamperilor, plecând de la 5-25 uA, nu vor exista probleme în defectarea platformei de dezvoltare. Curenții mai mari apar atunci când există comutații foarte rapide în frecvență, de exemplu 100khz, atunci când folosim metoda modulației în impulsuri pentru controlul vitezei unui motor de curent continuu (motor dc sau cc – abrevieri uzuale în domeniul virtual).

Modul de realizare a unei punți H (punte H dc sau punte H cc, punte H MPP) este:

– Punte H tranzistori

– Punte H mosfet

– Punte H circuite integrate

Desigur în cea mai mare măsură cablajul imprimat proiectat pentru puntea H, afectează performanța acesteia, în funcție de nivelul curentului care trece prin aceasta, frecvența de comutație și tensiunea de alimentare. Un cablaj imprimat care nu ține cont de masele semnalului și masele de putere, care vor fi conectate în același punct, dar și lățimea traseului eventual cositorirea acestuia dacă este cel de putere cum ar fi zona tranzistorilor (drenă, sursă), nu este obligatorie cositorirea dar aduce un avantaj.

Modul de funcționare

După cum am mai spus, componenta principală pentru comanda motorului este platforma Arduino Uno, platformă ce are în componența sa un microcontroller ATmega328P ce poate fi programat folosind limbajul de programare C++. Platforma arduino dispune de asemenea și de un program software conceput exact pentru programarea acestuia. Programul este destul de simplu cu o interfață prietenoasă, ușor de folosit. Tot ceea ce trebuie să facem este să respectăm niște reguli destul de simple: să indentificam portul pe care se află platforma, să scriem codul de comandă, să îl compilăm pentru a verifica dacă există erori de sintaxă și apoi să îl încărcăm în memoria acesteia prin intermediul butonului upload.

Pentru că programul scris de mine să funcționeze a trebuit să urmez pașii corecți pentru ca microcontrollerul să poată să știe exact ceea ce vreau eu să execut.

Mai jos voi prezenta pe scurt cum funcționează acest program.

Pentru a funcționa, trebuie să îi spunem microcontroller-ului exact de unde să înceapă, iar în cazul nostru trebuie să declarăm variabilele folosite și librăria din care programul poate să ia datelele necesare:

#include <SoftwareSerial.h>

int bluetoothTx = 2;

int bluetoothRx = 3;

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

int motorPin1 = 6; // pin 2 on L293D IC

int motorPin2 = 5; // pin 7 on L293D IC

int enablePin = 4; // pin 1 on L293D IC

int state;

int flag = 0;

Librăria „SoftwareSerial.h” este folosită pentru a recunoaște modulatorul Bluetooth. Am ales să folosesc alți pini bluetooth deoarece pini predefiniti TX și RX de cele mai multe ori pot să intre în conflict cu datele transferate din computer. În cazul meu atunci când conectăm modulatorul la acești pini, platformă nu mai știa de unde trebuie să primească comenzile necesare și efectiv se blocă. Așadar am ales să folosesc pentru introducerea datelor din modulator pini 2 și 3 al platformei Arduino, apoi prin comanda „SoftwareSerial bluetooth (bluetoothTx, bluetoothRx)” am explicat programului că acei pini se vor comporta ca și TX, respectiv RX.

Atunci când folosim „//” tot ceea ce scriem după aceea se consideră doar un comentariu, adică programul nu va rula ceea ce este scris după acestea, ci este folosit doar pentru ne ajută pe noi sau pe alți programatori să înțelegem ce am vrut să facem acolo.

Următorul pas este de a declara pinii folosiți pentru celelate componente, în cazul meu pentru driver-ul ce controlează motorul. Am ales să folosesc pinul 4 ca și pin ENABLE pentru L293D iar pinii 5, respectiv 6 pentru a controla motorul stânga sau dreapta în funcție de caz.

Prin comanda „int state” am declarat faptul că va exista o variabilă „state” care care va spune exact starea în care trebuie să fie motorul.

După declararea variabilelor este nevoie să setăm fiecare pin și să explicăm programului cum trebuie să funcționeze circuitul.

void setup() {

// seteaza pinii de iesire:

pinMode(motorPin1, OUTPUT);

pinMode(motorPin2, OUTPUT);

pinMode(enablePin, OUTPUT);

// seteaza enablePin high pentru ca motorul sa porneasca:

digitalWrite(enablePin, HIGH);

// setam comunicatia seriala la 9600 bits pe secunda:

Serial.begin(9600);

bluetooth.begin(115200);

bluetooth.print("$$$");

delay(100);

bluetooth.println("U,9600,N");

bluetooth.begin(9600);

}

Sintaxa „void setup ()” se referă la inițializarea setărilor iar ceea ce este cuprins între „{” și „}” reprezintă setările inițiale ale circuitului. Primul lucru care trebuie să îl facem este să setăm pinii platformei arduino și să declarăm care sunt de intrare, ieșire și eventual starea în care se vor afla.

Am setat pinii 4,5 și 6 să fie pini de ieșire, care efectiv vor alimenta motorul. Pinul 4 este folosit ca și pin ENABLE și vă trebuii să fie alimentat tot timpul pentru alimentarea motorului, iar pini 5 și 6 vor fi folosiți pentru alimentare în funcție de direcția de rotație a motorului dorită.

Am ales pinii 5 și 6 deoarece cum am explicat și înainte platforma arduino dispune de 6 pini digitali cu alimentare PWM, iar acestea sunt 2 dintre ei. Este necesar ca acești pini să dispună de PWM pentru a controla viteza de rotație a motorului.

După ce am stabilit că pinul 4 este alimentat permanent setăm rata de transfer la 9600 de bits pe secundă.

Din fabrică, chip-ul Bluetooth are rata de transfer configurată la 115 200. Dacă avem nevoie să îl utilizăm la un baud rate mai scăzut (de exemplu pentru un device care nu este suficient de rapid pentru a ține pasul), putem folosi codul de mai jos. Codul de mai jos utilizează o conexiune de tip serial clasic între Arduino și Bluetooth, și înainte de a-l utiliza în vreun fel (rutina "setup") îi trimite comenzile necesare pentru a-l configura la 9600 pentru sesiunea curentă. Un avantaj față de utilizarea conexiunii Software Serial este faptul că în acest fel comunicare dispune de un buffer hardware. De aceea am folosit Codul:

bluetooth.begin(115200);

bluetooth.print("$$$");

delay(100);

bluetooth.println("U,9600,N");

bluetooth.begin(9600);

Prin care facem transferul de la 115 200 bits la 9600 bits pe secundă.

După ce am declarat setările inițiale, trebuie să dăm comnezile care ne sunt necesare pentru realizarea proiectului, prin comanda „void loop ()” care inițializează o buclă infinită prin intermediu căreia putem să îi dăm comenzile care trebuie executate.

Primul pas este:

void loop() {

if (bluetooth.available()) {

state = bluetooth.read();

char toSend = (char)bluetooth.read();

Serial.print(toSend);

flag = 0;

}

//if some date is sent, reads it and saves in state

else if (Serial.available()) {

state = Serial.read();

char toSend = (char)Serial.read();

Serial.print(toSend);

bluetooth.print(toSend);

flag = 0;

}

Unde inițializăm bucla de comandă urmând ca apoi să îi dăm comenzile necesare. Primul pas este să verifice dacă este valabil chipul bluetooth sau coneziunea serială prin intermediul unui cablu de date. Dacă conexiunea este valabilă, variabila „state” va fi dată de către comenzile primite de la bluetooth (state = bluetooth.read ();) urmând ca și caracterul primit să fie transmis că și o comandă iar apoi să fie afișat pe ecran.

În cazul în care conexiunea bluetooth nu este valabilă dar este detectată o conexiune serială (else if (Serial.available ())) variabilă „state” vă primii valoare de la conexiunea serială (state = serial.read();). Totuși cele 2 conexiuni pot să ruleze și în paralel, comenzile pot să fie date de ambele conexiuni și afișate pe ambele conexiuni prin intermediu liniilor de cod „serial.print (toSend); bluetooth.print(toSend);”.

Acum am terminat cu inițializarea tuturor setărilor de care aveam nevoie, este timpul să îi spunem microcontroller-ului cum vrem să trimită comenzile către motor, iar în funcție de starea care o dorim, prin intermediu unor sintaxe „if (){..}” dăm comenzile dorite.

Prima comandă care o dorim este să putem să punem motorul în repaus, adică să-l oprim:

if (state == '0') {

digitalWrite(motorPin1, LOW); // set pin 2 on L293D low

digitalWrite(motorPin2, LOW); // set pin 7 on L293D low

if (flag == 0) {

Serial.println("Motor: off ");

bluetooth.print("Motor: off ");

flag = 1;

Dacă Arduino primește valoarea „0” se va inițializa starea (state) 0 și se vor rula comenzile „digitalWrite” unde atât pinul 1 cât și pinul 2 vor lua valoarea „LOW” adică 0 binar, ceea ce înseamnă că nici unul din aceștia nu vor fi alimentați. Caz în care pe ecranul telefonului și/sau computerului se va afișa prin intermediu comenzii „Serial.println("Motor: off "); bluetooth.print("Motor: off ");” un mesaj cu textul „Motor: off”, iar motorul va fi oprit.

În cazul în care dorim că motorul să se rotească în dreapta se vor executa sintaxele următoare în funcție de viteza dorită:

else if (state == '1') {

analogWrite(motorPin1, 100);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: start right ");

bluetooth.print("Motor: start right ");

flag = 1;

}

}

În cazul acesta, dacă dăm comanda „1” motorul va începe să se rotească din dreapta, deoarece pinu 2 primește comanda „digitalWrite (motorPin2, LOW);” va lua din noi valoarea 0 logic, iar pinul 1 care primește comanda „analogWrite (motorPin1, 100);” va fi alimentat cu o tensiune suficientă pentru a pornii să se rotească. Prin comanda „analogWrite” putem să setăm o anumită frecvență pinului, dar numai în cazul în care acesta dispune de PWM, în cazul comenzii „digitalWrite” pinul poate să primească doar valorile logice 0 sau 1, adică spunem dacă vrem să fie alimentat sau nu.

În cazul în care state =1 motorul pornește în dreapta iar pe afișaj va apărea mesajul „Motor: start right”. Pentru a mării viteza acestuia, am folosit sintaxele:

else if (state == '2') {

analogWrite(motorPin1, 150);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: 2/4 speed right ");

bluetooth.print("Motor: 2/4 speed right ");

flag = 1;

}

}

else if (state == '3') {

analogWrite(motorPin1, 200);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: 3/4 speed right ");

bluetooth.print("Motor: 3/4 speed right ");

flag = 1;

}

}

else if (state == '4') {

analogWrite(motorPin1, 255);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: full speed right ");

bluetooth.print("Motor: full speed right ");

flag = 1;

}

}

Atunci când este rulată sintaza de mai sus, în funcție de ce valoare primește „state”, motorul se vă rotii cu o anumită viteză în funcție de caz: pentru „2” pinul 1 primește o valoare de 150, pentru „3” o valoare de 200, iar pentru „4” valoarea maximă de 255. Acestea sunt variantele pentru sensul de rotație în dreapta, iar în funcție de valoare se va afișa unul din mesajele dorite: Motor: 2/4 speed right; Motor: 3/4 speed right; sau Motor: full speed right.

În cazul în care dorim că motorul să se rotească în partea stângă avem sintaxa:

if (state == '5') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 100);

if (flag == 0) {

Serial.println("Motor: start left ");

bluetooth.print("Motor: start left ");

flag = 1;

}

}

În acest caz atunci când state=5, pinul 1 primește o valoare logică 0 sau 1, în cazul nostru „LOW” adică este oprit, iar pinul 2 primește valoarea „100” adică poate să înceapă să se rotească, iar după începerea sensului de rotație să afișeze mesajul „Motor: start left”.

Pentru a mării viteza avem sintaxele:

else if (state == '6') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 150);1

if (flag == 0) {

Serial.println("Motor: 2/4 left ");

bluetooth.print("Motor: 2/4 speed left ");

flag = 1;

}

}

else if (state == '7') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 200);

if (flag == 0) {

Serial.println("Motor: 3/4 speed left ");

bluetooth.print("Motor: 3/4 speed left ");

flag = 1;

}

}

else if (state == '8') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 255);

if (flag == 0) {

Serial.println("Motor: full speed left ");

bluetooth.print("Motor: full speed left ");

flag = 1;

}

}

În acest caz, la fel ca și în cazul precedent unde motorul se rotea din partea dreaptă, în funcție de valorile primite (6,7,8) motorul se vă rotii cu o viteză de 150,200, respectiv 255 și se vor afișa mesajele: Motor: 2/4 speed left; Motor: 3/4 speed left; Motor: full speed left.

Concluzii

Autorul prezintă concluziile sale…

Bibliografie

[AUREL77]- Mașini electrice, Editura SCRISUL ROMÂNESC, Craiova, 1977

[VASILE06]- Microcontrolere pentru toț, editia a 2-a, Editura Mâna Autorului, 2006

Referințe web

Recomandăm și aici respectarea regulilor enunțate pentru secțiunea 5.

[Alm08] – Pedro de Almeida, Patrik Fuhrer, Documentation Guidelines for Diploma and Master Thesis, Universitatea din Fribourg, Elveția, 2008, disponibil on-line la adresa http://diuf.unifr.ch/drupal/softeng/teaching/guidelines

[Olt07] – Th. Olteanu, C. Albu, Ghid pentru redactarea lucrării de diplomă sau a disertației de masterat, Universitatea Română de Arte și Științe „Gheorghe Cristea”, 2007, disponibil via web la adresa http://www.ugc.ro/tpl/GHID REDACTARE DIPLOMA LICENTA.pdf

Codul sursă

#include <SoftwareSerial.h>

int bluetoothTx = 2;

int bluetoothRx = 3;

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

int motorPin1 = 6; // pin 2 on L293D IC

int motorPin2 = 5; // pin 7 on L293D IC

int enablePin = 4; // pin 1 on L293D IC

int state;

int flag = 0;

void setup() { // sets the pins as outputs:

pinMode(motorPin1, OUTPUT);

pinMode(motorPin2, OUTPUT);

pinMode(enablePin, OUTPUT); // sets enablePin high so that motor can turn on:

digitalWrite(enablePin, HIGH); // initialize serial communication at 9600 bits per second:

Serial.begin(9600);

bluetooth.begin(115200);

bluetooth.print("$$$");

delay(100);

bluetooth.println("U,9600,N");

bluetooth.begin(9600);

}

void loop() {

if (bluetooth.available()) {

state = bluetooth.read();

char toSend = (char)bluetooth.read();

Serial.print(toSend);

flag = 0;

}

//if some date is sent, reads it and saves in state

else if (Serial.available()) {

state = Serial.read();

char toSend = (char)Serial.read();

Serial.print(toSend);

bluetooth.print(toSend);

flag = 0;

}

// if the state is '0' the DC motor will turn off

if (state == '0') {

digitalWrite(motorPin1, LOW); // set pin 2 on L293D low

digitalWrite(motorPin2, LOW); // set pin 7 on L293D low

if (flag == 0) {

Serial.println("Motor: off ");

bluetooth.print("Motor: off ");

flag = 1;

}

}

else if (state == '1') {

analogWrite(motorPin1, 100);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: start right ");

bluetooth.print("Motor: start right ");

flag = 1;

}

}

else if (state == '2') {

analogWrite(motorPin1, 150);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: 2/4 speed right ");

bluetooth.print("Motor: 2/4 speed right ");

flag = 1;

}

}

else if (state == '3') {

analogWrite(motorPin1, 200);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: 3/4 speed right ");

bluetooth.print("Motor: 3/4 speed right ");

flag = 1;

}

}

else if (state == '4') {

analogWrite(motorPin1, 255);

digitalWrite(motorPin2, LOW);

if (flag == 0) {

Serial.println("Motor: full speed right ");

bluetooth.print("Motor: full speed right ");

flag = 1;

}

}

else if (state == '5') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 100);

if (flag == 0) {

Serial.println("Motor: start left ");

bluetooth.print("Motor: start left ");

flag = 1;

}

}

else if (state == '6') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 150);1

if (flag == 0) {

Serial.println("Motor: 2/4 left ");

bluetooth.print("Motor: 2/4 speed left ");

flag = 1;

}

}

else if (state == '7') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 200);

if (flag == 0) {

Serial.println("Motor: 3/4 speed left ");

bluetooth.print("Motor: 3/4 speed left ");

flag = 1;

}

}

else if (state == '8') {

digitalWrite(motorPin1, LOW);

analogWrite(motorPin2, 255);

if (flag == 0) {

Serial.println("Motor: full speed left ");

bluetooth.print("Motor: full speed left ");

flag = 1;

}

}

}

CD / DVD

Autorul atașează în această anexă obligatorie, versiunea electronică a aplicației, a acestei lucrări, precum și prezentarea finală a tezei.

Index

B

Bibliografie 48

C

CUPRINSUL viii

L

LISTA FIGURILOR ix

LISTA TABELELOR x

R

Referințe web 49

Similar Posts