Evoluția tehnologică cât și dorința omului de a-și ușura activitatea zilnică a dus la apariția dispozitivelor controlate prin voce. Un dispozitiv… [305688]

Introducere

Evoluția tehnologică cât și dorința omului de a-și ușura activitatea zilnică a dus la apariția dispozitivelor controlate prin voce. Un dispozitiv controlat prin comenzi vocale(VCD-voice command device) este controlat prin intermediul vocii umane . [anonimizat], utilizatorii pot acționa ușor aparatele cu mâinile ocupate sau în timp ce execută alte sarcini. [anonimizat], precum mașinile de spălat care permit consumatorilor să modifice funcțiile de spălare ale mașinii prin comenzi vocale sau telefoane mobile cu funcție de apelare prin comandă vocală.

VCD-[anonimizat], indiferent de accentul sau dialectul folosit . [anonimizat] , [anonimizat] o conversație naturală. Acestea pot recunoaște aproximativ 50 de comenzi și pot înregistra mesaje audio cu o durată maximă de 2 minute. VCD-[anonimizat], [anonimizat], call centere și motoare de căutare precum Google.

În 2007, [anonimizat] a vorbirii. [anonimizat] a întâlnit o varietate de dispozitive cu comenzi vocale. Adițional, Google a creat un motor de recunoaștere a [anonimizat] a lansat Siri . Dispozitivele comandate prin voce devin accesibile într-o gamă largă și de asemenea sunt create modalități inovatoare de utilizare a vocii umane .

Capitolul I. Scurt istoric al metodelor de recunoaștere a vorbirii

1.1 Introducere în domeniu

Încă din cele mai vechi timpuri comunicarea prin voce a reprezentat modalitatea dominantă prin care oamenii au creat legături sociale și au schimbat informație. [anonimizat]-media și reprezintă încă principalul mijloc de informare a oamenilor.

Dacă până nu demult limbajul vorbit reprezenta o [anonimizat], [anonimizat].

[anonimizat], [anonimizat], precum interfețele grafice acționate cu ajutorul claviaturilor sau altor dispozitive specifice. [anonimizat], este de așteptat ca acestea să poată fi in totalitate inlocuite prin interfețe vocale.

[anonimizat], [anonimizat]. [anonimizat], interfețele grafice sunt inutilizabile. [anonimizat] cu interfețele grafice se remarcă printr-o relativă lipsă de fiabilitate: de plidă, claviaturile calculatoarelor personale au o durată de viață relativ scurtă, comparativ cu microfoanele și difuzoarele.

Totuși, deși o prea mare generalitate a interfețelor comandate prin voce nu a fost atinsă, pentru domenii bine precizate de activitate, într-un context de mediu bine cunoscut și urmărit cu strictețe, aplicațiile ce cuprind intefețe vocale sunt deja realizate, existând și produse comerciale în acest sens.

O interfață vocală om – mașină trebuie să includă mai multe componente, printre care cel puțin un sistem de recunoaștere a vorbiri și unul de sinteză a vorbirii. Totuși, aceste două componente nu sunt suficiente în sine pentru a asigura o fiabilitate suficientă unei interfețe audio om – mașină. O componentă vizând înțelegerea și dialogul propriu-zis este esențială pentru a asigura gestiunea interacțiunilor cu subiectul uman; o bază de cunoștințe este de asemenea necesară pentru a ghida sistemul în interpretarea enunțurilor rostite de subiectul uman și prentru a-i putea permite alegerea acțiunii potrivite, în acord cu dorințele utilizatorului.

Pentru toate aceste componente există destul de multe provocări, de pildă robustețea la condițiile de mediu, flexibilitatea cu privire la domeniul de utilizare ales, ușurința integrării în sistemele de calcul existente.

Prelucrarea limbajului vorbit se referă la tehnologiile legate de recunoașterea vorbirii, sinteza vorbirii pornind de la text, precum și înțelegerea limbajului vorbit. De asemenea, recunoașterea vorbitorului se poate include în acest domeniu. După cum am afirmat mai sus, orice sistem de recunoaștere a limbajului vorbit trebuie să cuprindă cel puțin trei componente: un sistem de recunoaștere a vorbirii, care să realizeze conversia semnalului vocal in enunțuri, un sistem de sinteză a vorbirii, care să transforme un enunț scris in semnal vocal inteligibil pentru subiectul uman, precum și un sistem de înțelegere a limbajului vorbit, care să asigure asocierea enunțurilor unor acțiuni precizate.

Pentru toate aceste trei componente există puncte comune, dar și diferențe specifice, în ceea ce privește tehnologiile de implementare utilizate. Reguli create manual au fost dezvoltate pentru sisteme de prelucrare a limbajului vorbit, dar succesul obținut a fost relativ modest. De aceea, abordările statistice, plecând de la date în sine, au fost încercate, iar rezultatele au început să devină interesante.

Abordările statistice actuale constau în esență în modelarea semnalului vocal prin utilizarea unor algoritmi statistici bine definiți, care pot să extragă in mod automat conoștințe din date. Abordarea aceasta plecând de la date poate fi privită ca o problemă de recunoaștere a formelor.

Pe de altă parte, abordările bazate pe reguli nu trebuie excluse. Teoretic, dacă există un set de reguli suficient de bun, pentru o sarcină dată, abordările statistice nu sunt necesare. Problema este deci aceea a stabilirii unui set consistent de reguli pentru o problemă precizată, iar la momentul actual nu există, din câte știm, suficiente cunoștinte pentru a putea produce un set complet de reguli consistente. Deocamdată, credem, aceste seturi de reguli pot fi construite iterativ, plecând de la abordările statistice existente. Prin urmare, abordările statistice și cele bazate pe reguli pot fi privite drept modalități complementare de a înzestra un sistem informatic cu capacitatea gestionării cunoștințelor.

1.2. Descoperiri în domeniul sintezei vorbirii de-a lungul timpului

Cercetările din domeniul recunoașterii automate a vorbirii au început imediat după a doua jumătate a secolului XX.

Cele mai timpurii încercări de a construi un sistem de recunoaștere automată a vorbirii datează din deceniul șase al secolului XX, când comunitatea științifică a încercat să realizeze sisteme de recunoaștere plecând de la ideile fundamentale ale acusticii și foneticii. Astfel, în 1952, a fost construit un sistem de recunoaștere a cifrelor rostite izolat de către un singur vorbitor. Sistemul se baza pe măsurarea rezonanțelor spectrale din timpul zonelor sonore ale fiecărei cifre. În 1956, , s-a încercat recunoașterea a zece cuvinte monosilabice, rostite de către un singur vorbitor. Și acest sistem utiliza măsurători spectrale (realizate cu ajutorul unui banc de filtre analogice) pe porțiunile sonore. În 1959, la University College din Marea Britanie, s-a încercat construirea unui sistem de recunoaștere a fonemelor ce avea ca scop identificarea a patru vocale și nouă consoane. Decizia de recunoaștere se lua comparând spectrul acestor foneme cu un set de referințe spectrale păstrate într-o bază de date. Tot în anul 1959, Laboratories s-a construit un alt sistem de recunoaștere a cuvintelor de forma “b-<vocală>-t”, independent de vorbitor. Și în acest caz a fost utilizat un analizor spectral bazat pe un banc de filtre analogice.

Figură Analizor spectral

Deceniul șapte a fost martorul apariției și publicării multor idei fundamentale în domeniul recunoașterii vorbirii. Începutul este reprezentat de afirmarea unor laboratoare japoneze care iși propuneau proiectarea și implementarea unui hardware dedicat acestui domeniu. Primul sistem japonez cunoscut în lume a fost realizat Laboratory din Tokyo și a constat în esență într-un circuit digital dedicat pentru recunoașterea vocalelor. Și acest sistem, ca și cele de peste ocean, conținea un analizor de spectru realizat cu ajutorul unui banc de filtre. În 1962, din Kyoto, a fost construit un sistem hardware de recunoaștere a fonemelor. Ca noutate, sistemul a fost printre primele ce au folosit o segmentare a semnalului vocal, precum și o statistică a trecerilor prin zero pe segmentele de semnal obținute. În 1963, a fost implementat un sistem hardware de recunoaștere a cifrelor. Acesta din urmă a condus la un program de cercetare îndelungat, concretizat în deceniul opt prin multe realizări remarcabile în domeniu.

Tot în deceniul șapte au fost inițiate două proiecte de anvergură care au avut implicații importante pe termen lung în cercetările din domeniul recunoașterii vorbirii. Primul dintre acestea a fost inițiat de RCA Laboratories și își propunea soluții concrete pentru problemele legate de variabilitățile temporale ale semnalului vocal (debite binare diferite pentru vorbitori diferiți la rostirea acelorași enunțuri). Astfel a fost dezvoltat un set de metode de normalizare în timp bazate pe posibilitatea de detecție a începutului și sfârșitului enunțurilor, ceea ce a avut drept efect reducerea drestică a erorilor de recunoaștere. În aceeași perioadă, în Uniunea Sovietică, a fost propusă folosirea unei metode de programare dinamică în vederea alinierii temporale a două rostiri ale aceluiași enunț; astfel a apărut algoritmul DTW. Totuși, aceste idei au rămas cu desăvârșire necunoscute în Occident, până prin deceniul nouă după ce metodele respective fuseseră deja propuse și implementate.

În deceniul opt cercetările în domeniul recunoașterii vorbirii s-au axat în principal pe recunoașterea cuvintelor izolate, pionii marcanți în acest sens fiind Uniunea Sovietică, Japonia și Statele Unite ale Americii. Cercetările savanților ruși au determinat progrese importante ale metodelor bazate pe potrivirea modelelor (“template matching”), în timp ce japonezii au demonstrat eficiența metodelor de programare liniară. În același timp, americanii au arătat cum analiza prin predicție liniară, folosită deja cu succes la codarea semnalului vocal, poate fi utilizată cu succes și în domeniul recunoașterii vorbirii. De asemenea, &T Bell Laboratories au fost începute cercetări în domeniul recunoașterii independent de vorbitor, dar rafinarea algoritmilor a durat mai mult de un deceniu.

Deceniul nouă a fost extrem de prolific în privința algoritmilor și chiar metodologiilor folosite. Multe dintre ideile apărute atunci sunt utilizate cu succes și astăzi. În acest deceniu atenția s-a mutat asupra recunoașterii cuvintelor legate; au fost concepuți un număr mare de algoritmi complecși în vederea recunoașterii cuvintelor legate, independent de vorbitor. Acești algoritmi sunt astăzi bine puși la punct și utilizați pe scară largă. Scopul urmărit a fost crearea unui sistem capabil să recunoască șiruri de cuvinte foarte des folosite (de pildă, cifre). Realizări remarcabile s-au înregistrat la NEC Laboratories, Bell Laboratories, sau Joint Speech Research Group.

În paralel, tot in deceniul nouă, s-a observat o tendință spre utilizarea metodelor de modelare statistică a categoriilor clasificate (de exemplu, enunțuri scurte, cuvinte, foneme, vorbitori), prin aplicarea modelelor Markov ascunse (HMM – “Hidden Markov Models”), ale căror baze matematice fuseseră puse cu circa două decenii in urmă, , Dragon Systems etc. Cele mai notabile eforturi în domeniu s-au concretizat în implementarea, spre sfârșitul deceniului, la Carnegie Mellon University, a sistemului Sphinx. Acesta a fost, după știința noastră, primul sistem din lume care a încercat o abordare practică a problemei recunoașterii vorbirii continue, independent de vorbitor.

Deceniul zece se remarcă prin răspândirea metodelor statistice de recunoaștere a vorbirii bazate pe modele Markov ascunse și în Europa, precum și prin situarea recunoașterii vorbirii continue în centrul cercetărilor în domeniu. Astfel, în perioada 1993- fost dezvoltat în Marea Britanie, sistemul de recunoaștere a vorbirii continue, vocabular mare, independent de vorbitor, numit HTK (“Hidden Markov Modelling Toolkit”). Acest sistem constituie astăzi unul dintre cele mai utilizate instrumente software în cercetările și aplicațiile în domeniul recunoașterii vorbirii continue. Totuși, sistemul Sphinx s-a dezvoltat spectaculos, atingând un nivel de maturitate care să-i permită intrarea în domeniul comercial. Aceasta s-a petrecut în 1995, când Microsoft a cumpărat sistemul produs de echipa de la Carnegie Mellon, pentru a-l comercializa sub numele de Microsoft Whisper (“Windows Highly Intelligent Speech Recognition”), integrându-l apoi în mediul de dezvoltare de aplicații în domeniu, disponibil odată cu sistemul de operare Windows XP.

Deceniul unsprezece (în care ne aflăm la momentul redactării acestei lucrări) se remarcă, pe de-o parte, prin continuarea preocupărilor legate de utilizarea metodelor statistice pentru recunoașterea vorbirii continue, iar, pe de altă parte, prin includerea și a altor componente perceptuale (de exemplu,imagini), în vederea realizării unor aplicații având ca țintă conversația multimodală om-calculator.

Aceasta deoarece s-a constatat că limitând complexitatea sistemelor strict la recunoașterea vorbirii, performanțele nu se pot, teoretic, ameliora peste o rată de recunoaștere de circa 97%. Prin urmare, se încearcă includerea și a altor tipuri de informații, pentru a “ajuta” sistemul în sarcina de recunoaștere. În acest sens, se pot remarca eforturile laboratorului CLIPS, de Fourier, Grenoble, Franța, concretizate în implementarea ideii de “smart room”, în 2004, adică o încăpere dotată cu senzori acustici, vizuali, termici etc, care să asiste îngrijirea medicală a oamenilor bolnavi sau a bătrânilor.

Capitol II.Fundamente teoretice

2.1 Domeniile tehnologiei vorbirii

2.1.1 Recunoașterea automată a vorbirii

De foarte multe ori problema recunoașterii vorbirii este formulată în termenii unui model matematic sursă-canal, inspirat din teoria clasică a informației, insă noi nu vom insista asupra acestei abordări bine cunoscute, preferând să accentuăm aspectele practice legate de implementarea unui asemenea sistem.

Un sistem tipic de recunoaștere a vorbirii este constituit din câteva blocuri esențiale, după cum se arată in figura 2. Aplicațiile se interfațează cu decodorul pentru a obține rezultatele recunoașterii, rezultate care ar putea fi folosite pentru adaptarea altor componente ale sistemului. Modelele acustice cuprind reprezentarea cunoștințelor cu privire la aspectele acustice și fonetice ale semnalului vocal, la variabilitatea condițiilor de achiziție (microfon) și de mediu (zgomot), la diferențele legate de genul și dialectul vorbitorilor etc. Modelele lingvistice se referă la cunoștințele pe care sistemul le are cu privire la probabilitatea de apariție și la secvențierea posibilă a cuvintelor identificate. Multe semne de întrebare există în privința aspectelor legate de caracteristicile vorbitorilor, stilul și “cadența” vorbirii, recunoașterea segmentelor de semnal vocal, cuvintele posibile, cuvintele probabile, cuvintele necunoscute, variațiile gramaticale, interferențe, zgomote, accent aparte pentru vorbitorii non-nativi relativ la o anumită limbă etc. Un sistem de recunoaștere a vorbirii care să se poată impune trebuie să trateze de o manieră satisfăcătoare cel puțin toate aspectele precizate mai sus.

Figură Arhitectura unui sistem de recunoaștere a vorbirii

Semnalul vocal este prelucrat în modulul “Prelucrare de semnal”, care realizează extragerea unor vectori acustici care vor fi furnizați blocului “Decodare”. Acesta folosește atât modelele acustice cât și pe cele lingvistice pentru a genera secvența cea mai probabilă de cuvinte, în sensul maximizării probabilității posterioare pentru un set de vectori de parametri precizați. Decodorul poate de asemenea să ofere informații blocului de “Adaptare”, care să realizeze “calarea” modelelor acustice pe anumiți vorbitori, sau a celor lingvistice pe anumite domenii de expresie sau de activitate. Aceasta, pentru a permite creșterea performanțelor sistemului, în contexte cu totul particulare: un anumit subiect uman, o sarcină de recunoaștere bine precizată.

2.1.2 Sinteza automată a vorbirii

Prin sinteză automată a vorbirii se înțelege îndeobește generare de semnal vocal pornind de la un text dat, de exemplu de la o claviatură. Sarcina unui sistem de sinteză a vorbirii poate fi considerată ca recunoaștere a vorbirii, dar privită în oglindă: generarea vorbirii, de o calitate cât mai apropiată de cea a vorbirii umane, plecând de la orice text de intrare dat.

Ca observație importantă, se poate afirma că, spre deosebire de recunoașterea vorbirii, sinteza nu este atât de dependentă de domeniul de cunoștințe vizat. Totuși, conversia enunțurilor scrise în semnal vocal nu este trivială. Chiar dacă se pot păstra pe suport electronic dicționare imense, sistemul de sinteză tot s-ar afla în fața problemei ridicate de existența milioanelor de acronime sau de nume proprii. Mai mult, pentru ca vorbirea sintetizată să aibă o calitate apropiată de a celei umane, componentele de bază ale unui sistem de sinteză a vorbirii sunt prezentate in figura 3.

Figură Arhitectura unui sistem de sinteză a vorbirii

Componenta “Analiză de text” aduce textul într-o formă în care acesta să poată fi rostit, adică, printre altele, îl normalizează în timp, în sensul dilatării sau comprimării anumitor segmente, pentru a produce o vorbire cât mai naturală. Textul de intrare poate fi etichetat sau nu. Etichetarea este utilă pentru a asista analiza textului, analiza fonetică și analiza prozodică. Componenta “Analiză fonetică” realizează conversia textului prelucrat anterior în secvența de foneme corespunzătoare acestuia. Blocul “Analiză prozodică” adaugă informații legate de frecvența fundamentală (în engleză, “pitch”) și de duratele de pronunție ale fonemelor. În fine, componenta “Sinteză a vorbirii” utilizează secvența de foneme etichetată de către blocul anterior, pentru a genera forma de undă corespunzătoare.

Diferite aplicații cunosc într-o măsură mai mare sau mai mică structura și conținutul textului ce se dorește sintetizat, prin urmare unele dintre componentele indicate în figura 1.2 pot lipsi. De pildă, unele aplicații pot avea unele cerințe (relativ laxe) legate de frecvența fundamentală. Acestea pot fi indicate prin etichete introduse corespunzător în textul scris. Unele aplicații pot să cunoască deja structura și conținutul textului de sintetizat, prin urmare blocul “Analiză de text” poate lipsi.

Dacă aplicația dispune de un dicționar care să cuprindă transcrierile fonetice ale tuturor cuvintelor din textul de sintetizat, blocul “Analiză fonetică” poate de asemenea să lipsească. De asemenea, blocul “analiză prozodică” poate lipsi dacă informația legată de frecvența fundamentală este disponibilă din alte surse.

2.1.3 Codarea vorbirii

Codarea semnalului vocal nu reprezintă în sine o ramură a tehnologiei vorbirii, fiind mai curând o aplicație în domeniul prelucrării numerice a semnalelor. Din acest motiv, nu vom insista asupra codării vorbirii, deși unii autori consideră altminteri .

Totuși, codarea vorbirii este o etapă necesară în aplicațiile ce vizează recunoașterea sau sinteza vorbirii. Ea se referă la tehnici de compresie a informației conținute în semnalul vocal, în vederea transmiterii ca atare a acestuia, sau a unor prelucrări ulterioare, specifice aplicațiilor de recunoaștere sau sinteză a vorbirii.

Ideea fundamentală din “spatele” codării semnalului vocal este încercarea de a elimina redundanța acestuia, în vederea compactării informației cuprinse in el. Scopul codării este reprezentat, pe de o parte, de transmiterea semnalului vocal în condițiile utilizării unei benzi de transmisiune cat mai mici (implementare: codec-urile), iar, pe de altă parte, de ușurarea sarcinilor mașinii de calcul în aplicațiile ce vizează utilizarea informației cuprinse în vorbire (implementări: scoaterea semnalului de sub zgomot, eliminarea variabilităților intra-enunț sau intra-vorbitor, in funcție de aplicația vizată).

Spre deosebire de alte domenii ale tehnologiei vorbirii, codarea vorbirii se bucură, în lume, de o îndelungată tradiție, înregistrând progrese menite să asigure o fiabilitate sporită metodelor utilizate pentru aceasta. Maturitatea atinsă de domeniul codării vorbirii s-a concretizat într-o serie de standarde, emise de organisme internaționale importante.

2.1.4 Înțelegerea automată a vorbirii

Indiferent de sarcina concretă a interfețelor om – calculator comandate prin voce, o componentă care să realizeze înțelegerea limbajului vorbit poate crește de o manieră netă performanțele. Acesta deoarece un sistem de înțelegere a vorbirii poate interpreta în context enunțurile rostite, determinand în acest fel executarea unor acțiuni corespunzătoare textului “de intrare”.

Cunoștințe lexicale, sintactice și semantice trebuie să concure la ameliorarea interacțiunii dintre nivelele de analiză acustică, fonetică și lingvistică, în vederea reducerii incertitudinii legate de natura și conținutul enunțurilor prin care subiectul uman “abordează” mașina de calcul.

Cunoașterea vocabularului caracteristic, a tiparelor sintactice probabile și a relației între acestea și un set precizat de acțiuni, pentru o aplicație dată, stau la baza oricărui sistem de înțelegere a limbajului vorbit.

O schemă a unui sistem tipic de înțelegere a limbajului vorbit este arătată in figura 4. Un astfel de sistem cuprinde, de regulă, un sistem de recunoaștere a vorbirii și unul de sinteză, o componentă de interpretare a enunțurilor, pentru a confrunta rezultatele recunoașterii vorbirii cu un set de tipare semantice. Setul de tipare semantice poate fi construit (și actualizat incremental) cu ajutorul unei componente de analiză a discursului, care să determine contextul unui anumit enunț și să dezambiguizeze sensul său. Componenta de dialog reprezintă “inima” sistemului; ea asigură comunicarea între aplicație și celelalte module.

Figură Arhitectura unui sistem de înțelegere a vorbirii

Dacă majoritatea componentelor sistemului pot fi generice în totalitate sau parțial, componenta “Dialog” controlează “conversația” acestor blocuri, dar în relație cu acțiunea concretă de îndeplinit. Această componentă este răspunzătoare pentru menținerea ideii pe care sistemul o are asupra enunțurilor “vehiculate” între el și interlocutorul uman.

Informația legată de conținutul discursului este esențială pentru interpretarea semantică a enunțurilor în context.

Acest domeniu nu se mai află strict sub umbrela tehnologiei vorbirii; prelucrarea limbajului natural concură cu semiotica, psihologia socială și retorica, într-o abordare tehnologică pentru care stricta pregătire tehnică a specialiștior este departe de a fi suficientă.

2.1.5 Recunoașterea automată a vorbitorului

Recunoașterea vorbitorului este întrucâtva complementară recunoașterii vorbirii, deoarece ea are ca scop discriminarea subiecților umani pe baza informației extrase din vocile acestora. Prin urmare, în sarcina recunoașterii vorbitorului nu interesează ce se spune, ci cine spune.

Direct derivată din domeniul strict al recunoașterii vorbitorilor este abordarea ce încearcă segmentarea documentelor audio în raport cu un set de vorbitori, încercând un răspuns la întrebarea: cine spune și când spune; ceea ce se spune fiind irelevant.

Există două subclase de aplicații de recunoaștere a vorbitorului: verificarea vorbitorului, care își propune să determine dacă un enunț aparține sau nu unui anumit subiect uman, și identificarea vorbitorului, care încearcă să realizeze o corespondență între o voce necunoscută și identitatea unui subiect uman dintr-un set dat. Întrucat în cazul verificării vorbitorului decizia este de tip binar, iar în cazul identificării este de tip N-ar (unde N este numărul de potențiali candidați, deci numărul de vorbitori ale căror identități sunt cunoscute), este de așteptat ca performanțele obținute în procesul de verificare să fie superioare celor obținute în procesul de identificare.

Din punctul de vedere al gradului de control asupra materialului vocal utilizat, sistemele de recunoaștere a vorbitorului pot fi dependente de text, sau independente de text. În primele, semnalul vocal disponibil în etapa de antrenare și în cea de testare provine din același text. În această situație, metodele de programare dinamică (algoritmi precum DTW – “Dynamic Time Warping”, sau distanța Levenshtein) pot fi aplicate pentru a realiza alinierea în timp a fragmentelor de semnal vocal. In cazul sistemelor independente de text, alinierea dinamică nu mai este utilizabilă, însă metodele statistice pot fi folsite cu succes.

În figura 5 este sugerată arhitectura generică a unui sistem de recunoaștere a vorbitorului.

Figură Arhitectura unui sistem de recunoaștere a vorbitorului

Dată fiind complexitatea vocii umane și dependența acesteia, pe de o parte, de starea emoțională a subiecților și, pe de altă parte, de condițiile de mediu (raport semnal – zgomot etc.), s-a constatat că există diferențe importante între fragmentele de material vocal provenite de la același vorbitor, dar achiziționate la momente de timp diferite. Prin urmare, alegerea atentă a caracteristicilor acustice care vor fi utilizate în procesul de recunoaștere este crucială. Aceste caracteristici trebuie să accentueze diferențele inter-subiect și să le atenueze pe cele intra-subiect, dar stabilitatea lor în timp este o condiție esențială.

Deși in trecut algoritmii de tip DTW sau construirea unor modele aglomerative pentru subiecți (de exemplu, cuantizarea vectorială) au fost opțiunile preferate in proiectarea aplicațiilor de recunoaștere a vorbitorului, în prezent, ca și în domeniul recunoașterii vorbirii, metodele statistice prin care se modelează subiecții umani câștigă tot mai mult teren.

2.3 Microcontroller-e

2.3.1 Scurtă introducere

Având în vedere evoluția din punct de vedere istoric a operației de comandă a unui proces putem contura imaginea unui microcontroller. Se poate afirma că un microcontroller este un sistem utilizat în speță pentru a comanda și a prelucra stări de la un proces sau de la diferite aspecte din mediul înconjurător. Dimensiunile controller-elor erau foarte mari la început, dar odată cu dezvoltarea microprocesoarelor dimensiunile acestor echipamente s-au redus. Procesul de reducere a dimensiunilor s-a extins, astfel că toate componentele unui controller au fost integrate pe același chip. În acest mod a luat naștere calculatorul pe un singur chip, microcontroller-ul care este specializat pentru implementarea operațiilor de control. [2]

În sens larg, un controller se referă la o structură electronică realizată pentru a putea controla un proces sau, o interacțiune cu mediul exterior, nefiind necesar ca operatorul uman să intervină. La inceput pentru realizarea controler-elor se foloseau tehnologii pur analogice, utilizandu-se componente electromecanice și/sau componente electronice.

Microcontroller-ele care fac referire la tehnica numerică modernă au fost realizate inițial pe baza logicii cablate (cu circuite integrate numerice standard SSI (Small Scale Integration- care au aproximativ 10 porți) și MSI (Medium Scale Integration-între 10 și 100 porți)) și a unei electronici analogice uneori complexe, dezavantajele fiind dimensiunile mari, consumul energetic pe măsură și, din păcate, o fiabilitate care lăsa de dorit.[3]

Avantajele folosirii unui controller într-o aplicație fac referire la reducerea semnificativă a numărului de componente electronice precum și reducerea costului proiectării și dezvoltării unui produs .

2.3.2 Aspecte generale ale unui microcontroller

Microcontroller-ul este un calculator ce include un microprocesor fiind destinat aplicațiilor de control și nu calcului de uz general. Numele dispozitivului este sugestiv astfel, cuvântul „micro” se referă la dimensiunea redusă a chip-ului, iar controller indică faptul că acest dispozitiv este proiectat pentru aplicații de control a unor evenimente, obiecte. Scopul proiectării microcontroller-elor este de a obține o dimensiune redusă a chip-ului, reducerea costurilor și includerea de spațiu de memorie și I/O pe chip.

Un microcontroller conține în același circuit integrat cel puțin:

UCP

Memorie

I/O

Orice aparat pe care îl utilizăm astăzi are integrat în el un microcontroller. Se poate deduce faptul că aparatele pe care le utilizăm și care realizează cel puțin una din operațiile de comandă, afișare informații sau stocare conțin un microcontroller. Un exemplu la îndemână este un automobil care are integrat cel puțin un microcontroller pentru comanda motorului mașinii sau pentru a comanda alte sisteme din interiorul autovehiculului. Printre exemple se numară și calculatoarele în care microcontroller-ele se găsesc în tastatură, imprimante și alte periferice.

Schema generală simplificată a unui microcontroller este redată în figura 6. După cum se poate observa din figură, pentru funcționarea unui microcontroller sunt necesare programe care se stochează în memoria sa proprie. Acest sistem de calcul include o unitate centrală, oscilator pentru tact, memorie și dispozitive de intrare-ieșire. Intrările pot fi analogice sau digitale, de regulă semnalele provenind de la diferiți senzori sau de la comutatoare. Ieșirile sunt de obicei diode cu LED, motoare, relee, etc.

Microprocesoarele sunt utilizate în PC-uri, laptop-uri, servere, unde flexibilitatea, compatibilitatea software și performanța sunt criterii care trebuie îndeplinite. Spre deosebire de microprocesoare, microcontroller-ele sunt specializate pe aplicații în dauna flexibilității. Minimul de resurse necesare pe care ar trebui să le includă un microcontroler sunt următoarele:

unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem

memorie locală tip ROM/PROM/EPROM/FLASH (eventual și una de tip RAM)

un sistem de întreruperi

I/O – intrări/ieșiri numerice (de tip port paralel)

un port serial de tip asincron și/sau sincron, programabil

un sistem de timere-temporizatoare/numărătoare programabile

Este posibil ca la acestea să fie adăugate, la un preț de cost avantajos, caracteristici specifice sarcinii de control care trebuie îndeplinite:

un sistem de conversie analog-digitală (una sau mai multe intrări analogice)

un sistem de conversie digital analogic și/sau ieșiri PWM (cu modulare în durată)

un comparator analogic

memorie de date nevolatilă de tip EEPROM

un ceas de gardă (timer de tip watchdog)

facilități pentru optimizarea consumului propriu

2.3.3 Arhitectura unui microcontroller

Microcontroller-ul fiind un caz particular de calculator (specializat pentru operații I/O, realizat pe un singur chip) conține cele cinci componentele de bază: unitate de control, unitate aritmetică și logică, unitate de memorie, unitate de intrare și unitate de ieșire(system I/O).

Unitatea centrală de prelucrare (UCP) este compusă din unitatea de control și unitatea aritmetică și logică. Magistrala internă (bus) leagă între ele componentele microcontroller-ului. Pe magistrală se vehiculează semnale de adresă, semnale de date și semnale de control. Performanța unui microcontroller este determinată și de mărimea magistralelor. Cu ajutorul magistralei de adrese unitatea centrală de prelucrare (UCP) selectează o locație de memorie sau un dispozitiv I/O, iar magistrala de date întreține schimbul de date între UCP și memorie sau dispozitivele I/O. Între UCP și memorie se transferă atât date cât și instrucțiuni (se pot transfera pe o singură magistrală de date sau pe magistrale de date distincte). În acest sens sunt definite două arhitecturi: arhitectura von Neumann în care se utilizează un bus unic pentru circulația datelor și a instrucțiunilor și arhitectura Harvard în care există un bus separat pentru circulația datelor și a instrucțiunilor. La primul tip de arhitectură accesul este mai lent, pe când la arhitectura Harvard performanțele de viteză sunt mai mari, dar și structura acestei arhitecturi este mai complexă. [2]

2.3.4 Aplicații ale microcontroller-elor

Microcontrollerele au un spectru larg de utilizări, aplicațiile în care acestea sunt integrate fac parte din categoria așa numitelor “embedded systems” (sisteme încapuslate). În acest caz existența unui sistem integrat/încorporat este aproape transparentă pentru utilizator.

Aplicațiile în care aceste microcontrollere sunt utilizate sunt multiple, printre domenii enumerându-se:

“industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.)

electronică de consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice, etc.)

aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare)

controlul mediului și climatizare (sere, locuințe, hale industriale)

industria aerospațială

mijloacele moderne de măsurare – instrumentație (aparate de măsură, senzori și traductoare inteligente)”

2.3.5 Familii de microcontrollere

Microcontroller-ele sunt produse într-o mare diversitate în care există totuși elemente comune. Prin utilizarea unui nucleu comun au fost definite de-a lungul anilor mai multe familii de microcontroller-e. Toți membrii unei anumite familii de microcontroller-e folosesc același nucleu care este constituit dintr-o unitate centrală și o serie de periferice și interfețe. Din punct de vedere al programatorului, toți membrii unei familii folosesc același set de instrucțiuni, permit aceleași moduri de adresare și folosesc aceleași registre. Diferențele care apar între membrii unei familii se referă în primul rând la echiparea chip-ului cu memorie (tipul de memorie utilizat și la capacitatea memoriei), la frecvența de clock folosită pentru UCP sau în interfețele on-chip și perifericele on-chip suplimentare față de cel mai simplu reprezentant al familiei. Modul de conectare a semnalelor la pin, tipul capsulei circuitului integrat subliniază o altă diferență între membrii unei familii. Cele mai importante familii de microcontroller-e sunt prezentate în continuare fiind luate în considerare însușirile lor caracteristice:

INTEL 4048 cu o structură Harvard modificată, a fost primul microcontroller apărut pe piața, astăzi fiind utilizat în multe aplicații datorită prețului său redus.

INTEL 8051 (MCS-51) reprezintă a doua generație de microcontroller-e pe 8 biți a firmei Intel și, la ora actuală pe piață, este familia care se vinde cel mai bine. I8051 are o structură Harvard modificată cu spațiu de adresare diferit pentru program și date. Acest tip de microcontroller folosește un procesor boolean prin care se pot realiza operații complexe la nivel de bit, iar în funcție de rezultate se pot face salturi.

INTEL 80C196 (MCS-96) este un microcontroller pe 16 biți care admite un tact până la 50MHz și reprezintă a treia generație de microcontroller-e produsă de compania Intel. Are o arhitectură von Neumann, conține blocuri aritmetice pentru înmulțire și împărțire, lucrează cu șase moduri de adresare, convertor analog numeric, generator PWM și timer watchdog.

INTEL 80186 și 80188 sunt microcontroller-e propuse de Intel ca versiuni ale popularelor microprocesoare 8086 și 8088 care au fost integrate în primele calculatoare IBM PC XT. Provenind din clasele 8086/8088 ele conțin pe același chip două canale DMA, două număratoare(timere), un sistem de întreruperi și un bloc de refresh pentru memoria RAM. Un avantaj al utilizării acestor microcontroller-e este că se pot folosi unelte de dezvoltare, precum compilatoare, asambloare de la PC-uri. Spațiul mare de adresare specific PC-urilor reprezintă un alt mare avantaj.

MC14500 a fost primul microcontroller realizat de Motorola. Caracteristicile acestuia erau: capsulă de 16 pini(mică), 16 instrucțiuni, arhitectură RISC cu calea de date de un bit.

Motorola 6805 se bazează pe procesorul 6800 și are o arhitectura von Neumann, așadar are un singur bus pentru circulația datelor și a instrucțiunilor. O parte din microcontroller-ele din această familie conțin convertoare A/D, canale seriale și sintetizatoare de frecvență cu buclă PLL.

Motorola 68HC11 este un microcontroller cu o arhitectură von Neumann, având 8 biți de date și 16 biți de adresă. Conține memorie EEPROM sau OTP, linii digitale I/O, numărătoare/temporizatoare, convertoare A/D, canale seriale de comunicații sincrone și asincrone.

PIC(MicroChip) fac parte din categoria microcontroller-erelor cu arhitectură RISC fiind primele aparute. Numărul de instrucțiuni este redus semnificativ în comparație cu microcontroler-ele 8048(33 instrucțiuni față de 90). Consumul redus, viteza mare, prețul mic și dimensiunea redusă a chip-ului au impus MC PIC pe piață. Există trei linii de astfel de microcontroller-e: low range, middle range și high range(acestea se diferențiază prin lungimea cuvântului de programare și prin alte beneficii legate de structură).

COP400 (NationalSemiconductor) este un microcontroller pe 4 biți integrat în capsule de 20-28 pini unde tensiunile de alimentare sunt cuprinse în intervalul 2,3V-6,0V.

COP800 (NationalSemiconductor) este un microcontroller pe 8 biți care este înzestrat cu MICROWIRE, UART, RAM, ROM, sistem de întreruperi, comparator, ceas de gardă, generator PWM, convertor analog/numeric cu 8 canale de prescalare, mod de așteptare și HALT, un trigger Schmitt și oferă protecție la scăderea tensiunii de alimentare.

HPC (NationalSemiconductor) sunt microcontroller-e de mare performanță pe 16 biți și cu o arhitectură von Neumann. Se diferențiază prin canale seriale HDL(High Level Data Link Control) și elemente DSP (Digital Signal Processor), la o tensiune de alimentare de 3,3V. Aceste tipuri de microcontroller-e își găsesc utilizarea în domeniul telecomunicațiilor, imprimate laser, hard discuri și aplicații militare.

AVR sunt microcontroller-e care au la bază un procesor RISC cu o arhitectură Harvard. Pe baza acestui nucleu compania Atmel a dezvoltat mai multe familii de microcontroller-e cu diferite structuri de memorie și de interfețe I/O destinate diferitelor clase de aplicații.

2.3.6 Module PWM

Un semnal PWM (Puls Width Modulation) este folosit în multe aplicații; comanda motoarelor de curent continuu sau comanda surselor de alimentare pot fi amintite ca principale aplicații. În figura 7 este reprezentat un semnal PWM.

Figură Semnalul PWM

Semnalul PWM este un semnal periodic la care se poate modifica în mod controlat factorul de umplere. Modulele timer au resursele necesare generării unui semnal cu factor de umplere variabil. Deoarece, după cum am mai amintit, semnalul PWM este utilizat în aplicații există module timer dedicate acestei funcții; modulele PWM. Un modul PWM poate genera mai multe semnale modulate. Structura unui canal PWM este reprezentată în figura 8.

Figură Structura unui canal PWM

Registrul de prescalare generează clock-ul pentru un numărător. Clock-ul de numărare este programabil. Conținutul numărătorului este comparat cu cel al registrului PWM. Cât timp rezultatul comparației este mai mic sau egal, se va genera un unu logic la ieșirea PWM. Dacă rezultatul comparației este mai mare, se va genera la ieșirea PWM un zero logic. Dacă registrele comparate sunt de opt biți factorul de umplere poate fi între 1/256 și 1. Un canal PWM odată programat va genera la ieșire semnalul periodic continuu, fără intervenția unității centrale. Ca și la celelalte componente funcționale, în ceea ce privește global modulele timer (includem și modulele watchdog și PWM) vor fi prezentate în încheiere câteva criterii de apreciere:

numărul de canale timer și dimensiunea registrului de numărare;

flexibilitaea timere-lor, mecanisme implementate;

existența unui ceas de gardă (watchdog);

numărul de canale PWM și dimensiunea registrului PWM.

2.4 Standardul Bluetooth

Bluetooth (BT) definește un set de protocoale de comunicație, bazate pe standardul IEEE 802.15.1, pentru comunicații la mică distanță, în banda nelicențiată de 2.4 GHz (2.402,…, 2.483,5 GHz).

Pentru securitatea transmisiei și îmbunătățirea calității comunicației se adoptă saltul de frecvență FHSS (1600 salturi pe secundă), pe 79 purtătoare cu banda fiecare de 1 MHz.

Pot fi formate rețele ad-hoc mici (piconet) pe principiul master – slave, în care un master poate comunica cu maximum 7 echipamente slave. Toate elementele din rețea folosesc aceeași frecvență, dar se definesc sloturi de timp (de câte 625 µs ) masterul transmițând în sloturile impare iar elementele slave transmit în sloturile pare. Legătura între echipamente poate fi PTP (Point To Point) sau de difuzare PTM (Point To Multipoint). Un cadru BT, cu lungimea de maximum 2871 biți, are în componență un cod de acces și sincronizare de 72 biți, un heder de 54 biți și datele propriu-zise cu dimensiunea maximă de 2745 biți.

În funcție de versiunea protocolului de comunicație se obțin diverse debite maxime de transfer. Astfel versiunea 1.2 permite un debit de 1 Mbps (practic 723 kbps) , versiunea 2 permite 3 Mbps (practic 2.1 Mbps) iar versiunea 3 și 4 permit un debit de până la 24 Mbps.

Distanțele pe care operează echipamentele Bluetooth depind de puterea de emisie, care putere se încadrează în una din clasele din tabelul din figura 9.

Figură Caracteristicile Claselor Bluetooth

Se constată că puterea maximă a dispozitivelor Bluetooth este mică în comparație cu alte echipamente (250 mW în cazul UTMS-CMDA, 1W pentru GSM1800/1900 și 2 W pentru GSM850/900).

Domeniul de aplicații al tehnologiei BT se referă în principal la comunicația pe distanțe scurte, acolo unde nu se justifică utilizarea echipamentelor (cu fir) spre exemplu de tipul USB.

Prin comparație tehnologia WiFi (în competiție cu BT) se folosește pentru transmisia de date, voce și video pe distanțe scurte, de până la 300 m.

2.5 Dioda Schottky

Dioda Schottky (numită după fizicianul german Walter H. Schottky), este o diodă semiconductoare formată din joncționarea semiconductor-metal. Are o tensiune de deschidere foarte mica și o viteză de comutație foarte mare. Detectoarele de tip cat`s whisker(primele diode construite, descoperite în 1874 de către Karl Ferdinand Braun) folosite în redresoarele de putere timpurii sunt diodele cu contact punctiform ce pot fi considerate precursoarele diodei Schottky. În România acestea erau cunoscute sub numele de galene(plumb în formă cristalină naturală folosit în construcția acestor diode).

Figură Simbolul diodei Schottky

Valoarea tipică a tensiunii de deschidere a unei diode de siliciu este de 600-700 mV, în timp ce valorile tensiunii de prag ale unei diode Schottky sunt situate între 150 și 450 mV. Această propietate permite viteze mari de comutație și o eficiență energetică sporită.

Figură Diferite tipuri de diode

Joncțiunea diodei Schottky este formată între un metal și un semiconductor, creând o barieră de tip Schottky(în loc de o joncțiune p-n semiconductoare ca în diodele convenționale). Metalele folosite de obicei la construcția diodei Schottky sunt molibdenul, platina, cromul sau tungstenul și anumite siliciuri(de exemplu siliciura de paladiu sau cea de platină), în timp ce semiconductorul utilizat în mod uzual este cel de siliciu de tip n. Metalul are funcția de anod, iar semiconductorul de tip n acționează drept catod al diodei. Această barieră Schottky are ca rezultat atât comutarea foarte rapidă, cât și scăderea tensiunii de deschidere.

Figură Imagine detaliată a joncțiunii metal-semiconductor

Alegerea structurii de tip metal-semiconductor determină tensiunea de prag a diodei. Ambele cristale semiconductoare de tip n și p pot dezvolta bariere Schottky. Cu toate acestea, semiconductorul de tip p are de obicei o tensiune de deschidere mai mică. Deoarece curentul de polarizare inversă crește dramatic cu coborârea tensiunii de deschidere, limitând reducerea oricât de mult a acesteia, semiconductorii de tip p sunt rar folosiți.

Figură Construcția unei diode Schottky

Dacă dopajul semiconductorului crește, lățimea regiunii de epuizare scade. Sub o anumită lățime, purtătorii de sarcină pot migra prin regiunea de epuizare. La nivele mari de dopaj, joncțiunea nu se mai comportă ca un redresor și devine un material ohmic(cu comportament rezistiv). Semiconductorul poate fi astfel utilizat pentru formarea simultană a contactelor ohmice și a diodei.

Diferența cea mai semnificativă dintre diodele cu joncțiune P-N și cele Schottky este lipsa timpului de recuperare inversă, când diode trece din stare de conducție în stare de blocare. În dioda P-N, timpul de recuperare variază de la ordinul microsecundelor la mai puțin de 100ns pentru diodele rapide. Diodele Schottky nu au un timp de recuperare, deoarece nu există o regiune de epuizare a purtătorilor de sarcină liberi la nivelul joncțiunii metal-semiconductor. Timpul de comutare este de aproximativ 100ps în cazul diodelor de semnal mic și până la zeci de nanosecunde pentru diode speciale de putere de mare capacitate. Cu ajutorul diodelor Schottky, comutarea este în esență ”instantanee”, cu o încărcare ușoară capacitivă, ce are efect asupra semnalelor de frecvență foarte ridicată.

Figură Caracteristica statică a diodei Schottky în comparație cu dioda cu joncțiune P-N și dioda cu contact punctiform

Valorile cele mai evidente ale diodelor Schottky sunt valorile relativ scăzute ale tensiunii de străpungere și curenții relativ mari în regim de polarizare inversă. Pentru diodele Schottky cu o joncțiune metal – siliciu, tensiunea de străpungere este de obicei mai mică de 50 V.

Unele modele speciale de tensiune mai mare sunt disponibile(200 V este considerată tensiune inversă ridicată).

În timp ce tensiunile de străpungere mai mari sunt realizabile, diodele Schottky astfel realizate ar prezenta o tensiune de deschidere comparabilă cu diodele standard. Astfel de diode Schottky nu ar avea nici un avantaj cu excepția vitezei mari de comutație.

Diodele Schottky construite din carbură de siliciu au un curent invers mult mai scăzut decât diodele Schottky din siliciu, precum și o tensiune de străpungere mai mare. Carbura de siliciu are o conductivitate termică ridicată, iar temperatura are o influență redusă asupra caracteristicilor sale de comutație. Cu un ambalaj special, diodele Schottky realizate din carbură de siliciu pot funcționa la temperaturi de joncțiuni de peste 500 Kelvin ceea ce permite răcirea pasivă în dispozitivele în aplicațiile aerospațiale.

Capitolul 3. Etapele realizării unui vehicul comandat vocal

3.1 Puncte de interes în proiectarea vehiculului

Selectarea unui microcontroller capabil să execute comenzi PWM

Selectarea unui driver de motoare care să respecte comenzile primite de la Arduino

Proiectarea și realizarea driver-ului de motoare

Selectarea unui modul bluetooth suficient de performant pentru transmisia telefon-vehicul

Selectarea unor motoare destul de puternice pentru a pune vehiculul în mișcare

Selectarea unei metode de comandare și anume comandă vocală

3.2 Stabilirea caracteristicilor vehiculului

Scopul vehiculului comandat vocal este acela de a fi capabil să execute comenzi primite de la telefon prin intermediul Bluetooth. Astfel, vehiculul trebuie să meargă înainte, înapoi, să vireze la dreapta și la stânga, și să se oprească. Microcontroller-ul, prin comenzile PWM transmise cu ajutorul shield-ului la motoare, face posibilă execuția operațiilor respective. Puntea H dublă, integrată în driver, are un rol esențial în modul de funcționare. Schimbarea sensului curentului prin puntea H va facilita schimbarea direcției de mișcare a vehiculului. Atunci când ambii curenți vor trece în același sens, vehiculul se va mișca înainte sau înapoi, în funcție de comanda primită. Pentru a executa virajele, vom folosi conceptul utilizat de obicei la mijloacele de transport șenilate. Pentru a vira la dreapta, curentul va trece prin puntea H corespunzătoare motoarelor din partea stângă în sensul de mers pentru comanda înainte, iar prin puntea H corespunzătoare motoarelor din partea dreaptă în sens de mers pentru comanda înapoi. Pentru virajul la stânga se inversează sensul curenților prin punțile H din cazul virajului la dreapta. De asemenea, microcontroller-ul, după ce va executa comanda de viraj, va avea memorată comanda anterioară, astfel continuându-și mișcarea înainte sau înapoi, sau în caz de staționare, se va opri.

3.3 Selectarea componentelor

3.2.1 Microcontroller-ul

Pentru controlul motoarelor am ales placa de control Arduino Uno V3, care are ca microcontroller integratul ATmega328p produs de Arduino. Placa este echipată cu o serie de pini de intrare și ieșire atât analogici cât și digitali care pot fi conectați la diferite plăci de dezvoltare și alte circuite. Placa conține 6 pini analogici și 14 pini digitali. Este programabilă cu ajutorul aplicației Arduino IDE prin intermediul unui cablu USB de tip B. Poate fi alimentată de un cablu USB sau de o baterie de 9 volți, deși suportă tensiuni între 7 și 20 de volți. Este asemănătoare cu Arduino Nano și Leonardo.

Figură Modulul Arduino V3

Specificații tehnice:

Microcontroller-ul care a fost ales pentru realizarea proiectului se numește ATMega328P și e produs de către firma Atmel. Acest tip de microcontroller oferă o gamă largă de funcții și există multe unelte de dezvoltare pentru soft-ul intern al chip-ului.

Figură Microcontroller-ul ATMega328P

ATmega328P este un microcontroller pe 8 biți și este bazat pe arhitectura AVR RISC (Reduced Instruction Set Computing). Folosind acest tip de arhitectură, microcontroller-ul are un set redus de instrucțiuni (131), iar reducerea instrucțiunilor are avantajul că salvează și spațiu în microprocesor. Procesorul AVR combină un bogat set de instrucțiuni cu 32 de registre de uz general. Cele 32 de registre de uz general sunt direct conectate la unitatea aritmetică și logică (ALU-Arithmetic Logic Unit), fapt ce permite ca două registre independente să fie accesate printr-o singură instrucțiune într-un singur moment de tact. Prin această arhitectură se ating performanțe de aproape 10 ori mai mari decât la microcontroler-ele CISC obișnuite. Pentru a maximiza performanța, AVR utilizează o arhitectură Harvard care presupune existența memoriilor separate pentre date și instrucțiuni.

Caracteristici ale microcontroller-ului ATMega328P conform foii de catalog:

Producător :ATMEL

Tip circuit integrat: AVR microcontroller

Tip capsulă: PDIP

Număr pini: 28 pini

Capaciate memorie EEPROM: 1 Kbytes

Capaciate memorie Flash: 32 Kbytes

Capaciate memorie Flash: 2 Kbytes

Număr de intrări/ieșiri: 23

Dimensiunea regiștrilor: 8 biți

Număr timere: 2 timere/countere de 8 biți și unul de 16 biți

Număr de converoare analog digitale:1 CAD (6 canale)

Canale PWM: 6

Sistem de întreruperi interne și externe

Watchdog

Modul USART pentru comunicație serială

Interfață serială SPI

Comparator analogic pe chip

Moduri de funcționare economice

Temperatura de operare: -40 ° C la +85 ° C

Tensiune de alimentare: 1.8-5.5V [10]

ATMega328P dispune de 28 de pini, dintre care doar 23 de pini pot fi utilizați pentru programarea microcontroller-ului. Pinii VCC și GND sunt utilizați pentru alimentarea chip-ului cu tensiune de la rețeaua de alimentare. Ceilalți 3 pini: AVCC, AREF și GND sunt folosiți pentru alimentarea convertorului analog-digital. În figura 17 se prezintă configurația pinilor microcontroller-ului conform cu specificațiile din foaia de catalog.

În figura 18 se prezintă diagrama bloc a microcontroller-ului pe 8 biți ATMega328P.

Figură Schema bloc a microcontroller-ului

Convertorul analog–digital de pe acest microcontroller are rezoluție de 10 biți ceea ce înseamnă că ia valori între 0-1023. Dacă tensiunea de referință este de 5V, acest lucru se traduce în faptul că cea mai mică schimbare de tensiune la intrare este de 5V/1023=0.00488V sau 4,88 mV.

Există mai multe posibilități de alegere a referinței de tensiune pentru convertorul analog-digital: referință externă prin pinul AVcc, internă egală cu 1.1V sau internă egală cu Vcc. Acest lucru se realizează din software prin setarea biților REFS1 și REFS0 din registrul ADMUX (ADC Multiplexer Selection Register).

Acest convertor dispune de un număr de 6 canale de intrare și se poate citi doar un singur canal la un moment dat. Rezultatele obținute în urma citirii sunt stocate în regiștrii ADCH și ADCL, regiștrii de câte 8 biți. Întrucât, rezultatul obținut de la ADC este pe 10 biți, se vor folosi ambii regiștrii pentru memorarea rezultatului. Pentru realizarea acestui lucru se folosește bitul 5 ADLAR din registrul ADMUX al cărui rol este de a selecta varianta de stocarea a valorii citite în cei doi regiștrii. Se folosesc 4 biți (MUX3…0) pentru a selecta canalul de unde va fi citit semnalul.

Microcontroller-ul dispune de o interfață serială USART (Universal Synchronous/Asynchronous Receiver/Transmitter) care este un standard de comunicare serială sincronă sau asincronă între diverse dispozitive. Comunicația poate fi unidirecțională sau bidirecțională și se poate lucra în modul master/slave. În cazul comunicației unidirecționale, există un singur transmițător și un receptor (sau invers), iar în cazul bidirecțional, pe o legătură se realizează transmisia și pe altă legatură recepția. Dacă este vorba de o comunicație sincronă se utilizează o legatură prin care se stabilește același semnal de tact între emițător și receptor.

Masterul reprezintă dispozitivul care transmite date, iar slave-ul este cel care recepționează datele. Funcțiile masterului sunt de a stabili formatul cuvântului și frecvența ceasului. Slave-ul trebuie să recepționeze date care au același format cu datele transmise de master și trebuie să lucreze la aceeși frecvență ca și masterul.

În cazul microcontroller-ului ATMega328P, USART este împărțită în 3 blocuri: generatorul de clock și părțile de transmisie și recepție. Receptorul este partea cea mai complexă a modulului USART datorită ceasului său și unității de recuperare a datelor. Pe lângă unitatea de recuperare, receptorul mai cuprinde un verificator de paritate, o logică de control, un registru de șiftare și două buffere de primire. Generatorul de ceas generează ceasul de bază atât pentru emițător cât și pentru receptor.

Un cadru serial este definit ca fiind un caracter de biți de date cu biți de sincronizare (biți de start și stop), și opțional un bit de paritate pentru verificarea erorii. Modul USART acceptă toate cele 30 de combinații pentru un cadru:

Un bit de start

5, 6, 7, 8 sau 9 biți de date

Un bit de paritate pară /impară sau fără bit de paritate

1 sau 2 biți de stop

Un cadru începe cu bitul de start urmat de bitul cel mai puțin semnificativ. Când un cadru întreg este transmis, el poate fi urmat de un cadru nou sau comunicația poate fi trecută într-o stare de inactivitate. În figura 19 sunt exemplificate combinațiile posibile pentru formatul cadrului.[10]

Figură Structura cadrului la USART

Semnificația biților:

St- bit de start, întotdeauna cu nivel jos

P- bit de paritate(impar/par)

Sp- bit de stop,î ntotdeauna cu nivel sus

Idle- nu există comunicare pe linie

Figură Semnificația pinilor

3.2.2 Selectarea driver-ului de motoare

Pentru a controla un motor de curent continuu este necesară o punte H ce permite controlul atât al vitezei de rotație, cât și sensul acesteia. O punte H este constituită din patru elemente de comutație, în special tranzistoare, cu terminalele motorului situate în centru, având o formă similară cu cea a literei H. Puntea H funcționează prin activarea a două elemente de comutație astfel încât să permită trecerea curentului de la alimentare către masă prin consumator.

Figură Principiul de funcționare al punții H

Pentru driver-ul de motoare am ales integratul L298N. L298N este un circuit integrat monolitic cu 15 pini fabricat sub formă Multiwatt sau PowerS020. Este un driver în punte H dublă ce suportă tensiuni și curenți de valoare mare, proiectat să accepte standardele nivelelor logice TTL și să conducă sarcini inductive cum ar fi releele, solenoidele, motoare de curent continuu și motoare pas cu pas. Furnizează două intrări de activare pentru a porni sau opri dispozitivul indiferent de semnalul de intrare. Emitorii tranzistorilor inferiori ai fiecărei punți sunt interconectați, iar terminalele externe corespunzătoare pot fi utilizate pentru conectarea unui rezistor de detecție externă. O intrare adițională de alimentare este furnizată pentru un nivel logic de tensiune mai scăzut.

Figură Diagrama bloc a L298N

Avantaje:

Tensiune de alimentare : până la 46 V

Curent continuu maxim: 4A

Tensiune de saturație scăzută

Tensiunea de intrare logică ”0” de maxim 1.5 V (imunitate mare la zgomot)

Figură Specificații tehnice L298N

Figură Configurația pinilor pentru L298N

3.2.3 Proiectarea și realizarea driver-ului de motoare

Pentru proiectarea driverului de motoare am folosit programul Target 3001!. Acesta este un program de tip ECAD pentru scheme PCB. Primul pas pentru realizarea driver-ului este proiectarea cablajului imprimat. Cu ajutorul Target 3001! am realizat schema electrică a cablajului, care este reprezentată în figura 25:

Figură Schema electrică a driver-ului

Următorul pas a fost convertirea acestuia în PCB, aranjarea convențională a componentelor pe placă astfel încât să fie compatibilă cu Arduino și trasarea circuitelor. După realizarea acestor operații am obținut schemele din figura 26. Prima este cea pentru partea superioară a cablajului , iar cea de-a doua este pentru partea inferioară a cablajului.

Figură Previzualizare a traseelor cablajului imprimat

De asemenea am putut previzualiza structura circuitului cu ajutorul funcției de vizualizare 3D a programului Target 3001!.

Figură Previzualizare 3D a cablajului

Cel de-al treilea pas a fost imprimarea cablajului pe hârtie. Am folosit hârtie lucioasă ce permite transferul mai ușor al tonerului de pe imprimeu pe plăcuța de cablaj imprimat.

Figură Hârtia lucioasă imprimată

Pasul următor constă în pregătirea cablajului pentru transferul de toner . Este necesară îndepărtarea tuturor impurităților și degresarea plăcii astfel încât să se transfere o cantitate cât mai mare de toner pe plăcuța de cablaj imprimat.

Figură Plăcuța de cupru degresată și curățată

Dupa ce a fost pregătită pentru transfer, placa este acoperită cu hârtia imprimată și supusă unui agent termic puternic, în cazul de față fierul de călcat, pentru o durată de aproximativ 4 minute pe fiecare parte .

Figură Tratament termic

În urma tratamentului termic , am obținut următoarele rezultate. Cu ajutorul unui marker special am completat zonele în care transferul de toner nu s-a efectuat complet.

Figură Cablajul imprimat dupa transferul de toner și retușare

După finalizarea retușurilor, s-a introdus placa în clorură ferică pentru aproximativ 8-10 minute, pentru a îndepărta cuprul de pe suprafața neacoperită de toner.

Figură Cablajul imprimat după tratamentul cu clorură ferică

Cablajul imprimat final a fost obținut după ce a fost supus unui tratament de curățire și șmirgheluit foarte fin.

Figură Cablajul imprimat final, curățat și șlefuit

Asamblarea componentelor pe cablaj s-a realizat cu ajutorul unui letcon de 50W , fludor și colofoniu.

Figură Aspectul final al shield-ului de motoare

3.2.4 Modulul Bluetooth

Pentru transmiterea comenzii către Arduino am ales ca modalitate de transmisie conexiunea Bluetooth. Ca modul de recepție, conectorul Bluetooth Mate Silver este mai mult decât suficient , având o arie de acoperire de 10 metri . Modelul RN-42 folosește numai 26 µA în modul de repaus în timp ce poate fi detectat și disponibil pentru conectare.

Figură Modulul Bluetooth

Caracteristici:

Putere consumată mică : 25mA

Funcționează în medii afectate de Radio Frecvență cum ar fi : Wi-Fi, 802.11g, Zigbee etc

Conexiune sigură, cu criptare pe 128 de biți

Frecvență: 2.402 – 2.480 GHz

Tensiune de funcționare: 3.3V – 6V

Comunicații seriale: 1200 – 921Kbps, permițând și rate de biți non-standard

Temperatură de funcționare: -40o C ~ +70o C

Antenă integrată

Modulație pe 79 de canale la frecvențe de 1MHz, de tip FHSS/GFSK

Corectare a erorilor pentru livrarea garantată a pachetelor de date

Receptor radio de clasă 2, cu o rază a ariei de acoperire de până la 20 de metri, transmițător de 4dBm, și o sensibilitate de recepție de -80 dBm

configurare UART locală sau configurare over-the-air prin radio-frecvență

Figură Specificațiile tehnice ale modulului Bluetooth

3.2.5 Motoare

Dispozitivele de propulsie alese sunt motoarele MG-6-120. Acestea au arbore dublu, o tensiune nominală de 6V curent continuu, curent nominal <300mA, o viteză de rotație de până la 100 rpm și un cuplu de 1.0 kgf/cm.

Figură Motorul MG-16-120

3.2.6 Diode Schottky

Pentru protecția driverului, am inclus în PCB și diode Shottky, model SK16 . Acestea au mai multe avantaje față de o diodă normală. În primul rând, tensiunea de prag este foarte mică, permițând transferul unei tensiuni mai mari decât în cazul diodelor normale. În al doilea rând, viteza de comutație foarte mare, trecerea din regim de conducție în regim de blocare fiind instantanee. De asemenea, tensiunea de străpungere îi oferă un avantaj semnificativ, iar pierderile de putere sunt minime.

Figură 38 Specificațiile tehnice ale diodelor SK16

Capitolul 4 Realizarea aplicației software

4.1 Diagramă de execuție

4.2 Aplicația Software

#include "SoftwareSerial.h"

SoftwareSerial mySerial(4,2);

int MOTOR2_PIN1 = 3;

int MOTOR2_PIN2 = 5;

int MOTOR1_PIN1 = 6; //definire pini utilizați

int MOTOR1_PIN2 = 9;

void setup() {

pinMode(MOTOR1_PIN1, OUTPUT);

pinMode(MOTOR1_PIN2, OUTPUT);

pinMode(MOTOR2_PIN1, OUTPUT); //inițializare pini de control motoare

pinMode(MOTOR2_PIN2, OUTPUT);

initBluetooth(); //inițializare modul Bluetooth

}

void initBluetooth(){

Serial.begin(9600);

mySerial.begin(115200);

mySerial.print("$");

mySerial.print("$");

mySerial.print("$");

delay(100);

mySerial.println("U,9600,N"); //comandă setare BaudRate de funcționare a Bluetooth-ului la 9600(standard)

mySerial.begin(9600);

while (mySerial.available()) mySerial.read(); //comandă de curățare Buffer Bluetooth

}

int last=0;

String readvoice;

void loop()

{

while (mySerial.available()){ //Verifică dacă există date de citit

delay(10); //Delay de stabilitate

char c = mySerial.read(); //Citește următorul caracter de la Bluetooth

readvoice += c; //construire mesaj- "înainte", "înapoi", ”stânga", ”dreapta" și ”stop”

}

if(readvoice.length() >0) //verifică dacă s-a citit o comandă

{

Serial.println(readvoice);

if(readvoice == "înainte") //verifică tipul comenzii

inainte();

if(readvoice=="înapoi")

inapoi();

if(readvoice=="stânga")

stanga();

if(readvoice=="dreapta")

dreapta();

if(readvoice=="stop")

opreste();

}

readvoice="";

switch(last){ //după execuția comenzii, în caz de viraj, se revine la ultima comandă(înainte, înapoi sau stop)

case 0:

opreste();

break;

case 1:

inainte();

break;

case 2:

inapoi();

break;

}

}

void opreste() //funcția de oprire a motoarelor ce setează voltajul la 0

{

analogWrite(MOTOR1_PIN1,0);

analogWrite(MOTOR1_PIN2,0);

analogWrite(MOTOR2_PIN1,0);

analogWrite(MOTOR2_PIN2,0);

last=0;

}

void inainte() //funcția de înainte ce alimentează motoarele pentru a se deplasa înainte

{

analogWrite(MOTOR1_PIN1,0);

analogWrite(MOTOR1_PIN2,127);

analogWrite(MOTOR2_PIN1,127);

analogWrite(MOTOR2_PIN2,0);

last=1;

}

void inapoi() //funcția de înapoi ce alimentează motoarele pentru a se deplasa înapoi

{

analogWrite(MOTOR1_PIN1,127);

analogWrite(MOTOR1_PIN2,0);

analogWrite(MOTOR2_PIN1,0);

analogWrite(MOTOR2_PIN2,127);

last=2;

}

void stanga() //funcția de viraj la stânga ce alimentează motoarele pentru a executa un viraj la stânga

{

analogWrite(MOTOR1_PIN1,0);

analogWrite(MOTOR1_PIN2,127);

analogWrite(MOTOR2_PIN1,0);

analogWrite(MOTOR2_PIN2,127);

delay(4200);

}

void dreapta() //funcția de viraj la dreapta ce alimentează motoarele pentru a executa un viraj la dreapta

{

analogWrite(MOTOR2_PIN1,127);

analogWrite(MOTOR2_PIN2,0);

analogWrite(MOTOR1_PIN1,127);

analogWrite(MOTOR1_PIN2,0);

delay(4200);

}

Capitolul 5 . Concluzii și îmbunătățiri ulterioare

5.1 Concluzii

Vehiculul a fost conceput cu scopul de a facilita controlul acestuia prin intermediul comenzilor vocale. Acest lucru permite utilizatorului să îndeplinească alte operațiuni și de asemenea să îi comande robotului să execute alte comenzi, astfel încât utilizatorul să poată executa mai multe operații în timp ce comandă vehiculul, ușurându-i modul de execuție al operațiilor de tip preluare, prelucrare, analiză și transmitere de date.

Principalul avantaj al sistemului realizat este puterea mare de propulsie datorată celor 4 motoare, fiind posibilă comandarea individuală a motoarelor în mod paralel, două câte două. De asemenea comanda prin bluetooth îi permite mișcarea independentă, fără a necesita un cablu de transmitere a comenzilor, dar pe de altă parte este și un dezavantaj din cauza faptului că alimentarea se face de la șase baterii a câte 1.5 V, ceea ce necesită schimbarea sau încărcarea periodică a surselor de alimentare.

5.2 Îmbunătățiri ulterioare

Se pot înlocui cele două motoare frontale cu un servomotor și un angrenaj de direcție, ce va permite vehiculului să-și modifice direcția de deplasare într-un mod mai precis la unghiuri diferite de 90o , cum se întâmplă în configurația actuală.

Se poate adăuga un senzor de distanță/proximitate ce va permite vehiculului să detecteze eventuale obstacole și de asemenea poate fi programat să le evite.

Se poate pune alimentare de generație recentă bazată pe Litiu-ion, pentru a prelungi durata de funcționare a vehiculului.

Se poate înlocui comunicarea bluetooth cu o comunicare Wi-Fi pentru a permite distanțe mai mari de comandă, dar și posibilitatea stocării datelor pe un server.

Se poate adăuga o cameră, iar semnalul video să fie transmis către un server ce poate monitoriza locația în care se află vehiculul.

Similar Posts