Micromotoarele de Curent

Cuprins

Capitolul 1. INTRODUCERE

Capitolul 2. MICROCONTROLLERE

2.1 Definiție

2.2 Aspecte de design integrat

2.3 Arhitectura unui microcontroller

2.4 Porturi de intrare/ieșire

2.5 Memorii

2.6 Sistemul de întreruperi

2.7 Limbaje de programare

2.8 Alte caracteristici ale microcontrollerelor

2.9 Tipuri de microcontrollere

2.10 Microcontrollerul Atmega328P-PU

Capitolul 3. REALIZAREA UNUI MODUL HARDWARE DIGITAL PENTRU UN SISTEM DE MONITORIZARE ȘI CONTROL A TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU UTILIZÂND MICROCONTROLLER ȘI CONVERTOR DIGITAL-ANALOG

3.1 Descriere generală a interfeței hardware digitale

3.2 Convertorul DAC MCP4922

3.3 Placa FTDI/USB

3.4 Regulator coborâtor de tensiune LM 7805

3.5 Oscilator cu cristal de cuarț cu frecvență de 16 MHz

3.6 Principiul de funcționare al modulului hardware digital

Capitolul 4. MODULUL HARDWARE ANALOGIC UTILIZAT PENTRU UN SISTEM DE MONITORIZARE ȘI CONTROL A TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU

4.1 Micromotoare de curent continuu

4.2 Funcționarea modulului hardware analogic

Capitolul 5. IMPLEMENTAREA CODULUI SURSĂ ÎN C STANDARD ȘI VISUAL BASIC PENTRU MONITORIZAREA ȘI CONTROLUL TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU

5.1 Descrierea codului sursă în limbajul C folosit pe microcontroller

5.2 Descrierea interfeței Visual Basic

Capitolul 6. CONCLUZII

Bibliografie

Acronime

Anexă

Capitolul 1. INTRODUCERE

Tema acestui proiect prezintă un sistem pentru monitorizarea și controlul turației la un micromotor de curent continuu, utilizând interfață hardware digitală și analogică și o interfață software în Visual Basic.

Micromotoarele de curent continuu dezvoltând diferite puteri și viteze, se regăsesc în numeroase aplicații și domenii, fiind utilizate la calculatoare, laptop-uri, mașini-unelte de mici dimensiuni (freză, bormașină, autofiletante), electrocasnice,aparatură medicală, jucării. Aceste micromotoare pot fi relativ ușor de controlat și sunt capabile să ofere performanțele necesare bunei funcționări a unei aplicații.

De cele mai multe ori, într-o aplicație care cuprinde și un micromotor de curent continuu și se dorește obținerea unei bune precizii,acuratețe a semnalelor de ieșire și protecție la eventualele perturbații, este necesară monitorizarea și controlul vitezei micromotorului sau a turației. Acest sistem permite și controlul turației micromotorului de curent continu prin varierea tensiunii de alimentare.

Reglarea turației unui micromotor de curent continuu poate fi realizată prin reglaje analogice sau numerice. Reglajul analogic presupune existența unui sistem de reglare în buclă închisă a turației micromotorului de curent continuu, care să cuprindă: semnalul de referință, regulatorul (PID), amplificator de putere, element de execuție, proces (micromotorul de curent continuu) și traductor (tahogenerator). Reglajul numeric are la bază un circuit electronic cu microcontroller și alte circuite digitale. [1]

Reglarea analogică a turației micromotorului implică calculul și acordarea regulatorului PID, printr-o anumită metodă, utilizând toolbox-ul Matlab.

Figura 1.1 Schema unui sistem de reglare în buclă închisă analogic

Reglajul analogic al turației micromotorului se poate efectua prin varierea tensiunii de alimentare, tehnica PWM (Pulse Width Modulation).

Acordarea regulatoarelor dintr-un sistem de reglare automată se poate face prin criteriul modulului, criteriul simetriei, criteriul Ziegler-Nichols. [2]

Avantajele unei reglări analogice a turației micromotorului de curent continuu sunt:

Control relativ simplu al turației prin nivel de tensiune sau impulsuri PWM;

Se lucrează cu constante mici de timp în cazul proceselor rapide;

Regulatorul PID oferă performanțe bune față de alte tipuri de regulatoare

Se realizează o reglare foarte precisă a turației;

Se poate face identificarea (determinarea modelului matematic al procesului) pe cale analitică sau experimentală a procesului utilizând toolboxul Matlab.

Dezavantajele unei reglări analogice a turației micromotorului de curent continuu sunt:

Sistemul poate oscila în cazul în care reglajul ales nu este potrivit;

Controlul turației se poate face într-un singur sens;

Necesită multe echipamente hardware.

Figura 1.2 Schema electrică de reglare analogică a turației unui micromotor de curent continuu

Reglajul numeric al turației unui micromotor de curent continuu se poate face folosind module hardware care au încorporat microcontroller (Pic, ATmega, Microchip), convertoare digital-analogice, alte circuite integrate și o interfață software adecvată (Simulink).

Avantajele utilizării reglajului numeric al turației unui micromotor de curent continuu:

Multe componente pe un modul și în mare parte sub formă de circuit integrat;

Dimensiuni mici ale componentelor;

Se pot modifica relatv ușor parametrii sistemului;

Se poate utiliza la un număr vast de aplicații;

Dezavantajele utilizării reglajului numeric al turației micromotorului de curent continuu:

Nu se poate realiza indentificarea procesului;

Costuri ridicate ale echipamentelor folosite;

Nu se poate calcula regulatorul doar cu ajutorul microcontrollerului

Monitorizarea unui sistem care conține un micromotor de curent continuu presupune analiza și observarea parametrilor de intrare și ieșire ai sistemului, și anume semnalele analogice și digitale de tensiune, care variază între anumite valori: 0-5V, -10/+10V si luând în considerare bitul de semn.

Pentru a putea converti semnalele analogice de 0-5V pe 10 biți în semnale digitale de -10/+10V pe 12 biți și bit de semn, s-a implementat o interfață hardware digitala echipată cu microcontroller Atmega328P-PU și convertor digital-anlog MCP4922.

Interfața software din Visual Basic permite monitorizarea/analiza modului și formatului în care sunt transmise și convertite semnalele de intrare/ieșire, de la interfața hardware analogică la cea digitală.

Capitolul 2. MICROCONTROLLERE

Definiție

Microcontrollerul (cu abrevierile aferente μC, uC sau MCU ) reprezintă un computer de dimensiuni reduse, și care are integrate în componența sa microprocesor, memorie, comparatoare, numaratoare și intrări/ieșiri periferice programabile. Ȋn acest circuit integrat se mai pot întalni diferite tipuri de memorii programabile cum ar fi: memorie NOR flash (memorie nevolatilă care poate fi ștearsă si reprogramată) , memorie ROM, PROM, EEPROM și memorie RAM. [3]

Microcontrollerul și-a găsit utilitatea de-a lungul timpului, în numeroase domenii de activitate și ramuri industriale. Sunt întalnite la aparaturile electrocasnice (cuptoare cu microunde, mașini de spălat,televizoare), aparatură medicală(defibrilatoare,ecograf), automobile(senzori auto- ABS,ESP,computer de bord), jucării, imprimante, scanere, mașini-unelte de putere și la alte sisteme emebeded. Această largă utilizare a microcontrollerului este datorată, în mare parte , dimensiunilor sale mici, costurilor reduse, creșterii fiabilității si a componentelor sale integrate într-un singur chip.

Microcontrollerul este capabil să execute seturi de instrucțiuni,cu o viteză foarte mare, sub forma unor programe, scrise într-un limbaj de programare cum ar fi C/C++. Programatorul are controlul asupra tuturor pinilor chipului, fiecare pin având o anumită functie, sau poate fi folosit ca intrare/ieșire,cu excepția pinilor de alimentare.

Unele microcontrollerele folosesc cuvinte pe 4 biți și au o frecvență specifică de operare de 4 kHz, pentru puteri mici, de ordinul mW sau μW. Acestea își mentin starea de funcționare în timp ce asteaptă apariția unui eveniment precum apăsarea unui buton sau o întrupere; consumul de putere este redus, de ordinul nW.

Există și tipuri de microcontrollere care au comportarea unui procesor de semnale digitale, și care duc la un consum mare de putere și o viteza mare de răspuns a semnalului de ceas (“clock”) [3].

Aspecte de design integrat

Ȋn ansamblu, microcontrollerul poate fi considerat ca un sistem care încorporeaza un microprocesor, memorii, linii de intrare/ ieșire, fiind astfel utilizat ca un sistem integrat. Aceasta a dus la soluționarea problemelor legate de controlul proceselor utilizând un singur circuit.

Ȋn zilele noastre, microcontrollerele sunt la randul lor încorporate în cadrul automobilelor, diferitelor mașini, telefoane și periferice pentru calculatoare. Sistemele integrate pot fi mai complexe, având sistem de operare,capacitate mare de stocare a datelor, software sofisticat sau mai simpliste,fără sistem de operare și cu memorie mică, în funcție de cerințele pe care trebuie să le îndeplinească.

Ca și intrări/ ieșiri ale acestor sisteme intregrate se consideră întrerupatoarele, relee, antene, LEDuri, displayuri de tip LCD, senzori de umiditate, temperatură, sunet, nivel, debit, lumină. Ȋn general, microcontrollerele nu dispun de tastatură, ecran sau orice alt dispozitiv de intrare/ ieșire care se întalneste la un calculator normal.

Figura 2.1 Microcontroller Intel

Arhitectura unui microcontroller

Microcontrollerul, ca și sistem integrat ,este capabil să execute, cu viteză mare, instrucțiunile programelor stocate în memoria acestuia. Arhitectura lui depinde, în mare măsură, de natura aplicației și a funcțiilor pentru care a fost proiectat.

Unele sisteme integrate pot să utilizeze mai multă memorie RAM,ROM, altele mai putină; pot avea mai multe porturi de intrare/ieșire cu diferite funcții integrate.

Figura 2.2 Arhitectura unui microcontroller

Arhitectura unui microcontroller este destul de complexă și poate include următoarele componente:

Unitatea centrală de procesare (CPU), având un procesor variind între 4 și 64 biți și un oscillator intern util ceasului de sistem

O memorie de tip RAM volatilă, pentru a stoca date sub formă de regiștrii

Memorie de tip ROM/ PROM/ EEPROM/ FLASH, pentru a opera și programa cu parametrii stocați

Intrări/ Ieșiri- I/O de tip port paralel

Port I/O serial

Sistem de întreruperi

Temporizatoare și numaratoare programabile

Temporizator de tip watchdog

Convertoare analog-digitale (ADC)

Convertoare digital-analogice (DAC)

Comparator analogic

Bloc PWM (Pulse-Width-Modulation: semnal modulat în durată) [3]

Porturi de intrare/ieșire

Porturile de intrare / ieșire ale unui microcontroller reprezintă legătura dintre acesta și lumea exterioară, realizând comunicarea dintre acestea. Pentru a se realiza schimbul de date între microcontroller și mediul exterior, este necesară definirea unor protocoale de comunicație.

Porturile pot să fie de intrare, de ieșire sau de intrare-ieșire, și diferă ca număr, funcționalitate de la un tip de microcontroller la altul. Porturile conțin un anumit număr de pini; fiecare pin poate fi folosit ca intrare sau ieșire, dar nu în același timp. Porturile primesc nume sugestive precum PORTA, PORTB, PORTC etc. și le corespunde o anumită adresă dintr-un registru din spațiul de adrese al memoriei RAM.

Pinii microcontrollerului sunt bidirecționali,ceea ce înseamna că aceștia fie pot să citească seturi de valori de intrare, fie pot să trimită seturi de valori de ieșire. Programatorul are posibilitatea de a controla starea unui pin, și anume să fie pin de intrare sau pin de ieșire, prin setarea unui bit corespunzător în registrul de direcție al memoriei RAM. Pinii unui microcontroller pot să îndeplinească anumite funcții, operații, instrucțiuni, putând să aibă 2 sau 3 astfel de funcții. [3]

Memorii

La un microcontroller se întalnesc trei tipuri de memorii: memorie RAM, memorie ROM și memorie EEPROM. Fiecare tip de memorie îndeplinește anumite funcții și are diferite caracteristici.

Memoria RAM (Random Acces Memory) este o memorie volatilă care poate fi accesată aleator, la orice adresa a ei; conținutul acestei memorii se goleste în momentul apariției unei întreruperi de current. Este o componentă complexă, care cuprinde regiștrii de date si regiștrii de control.

Memoria ROM (Read Only Memory) este utilizată pentru a salva permanent datele stocate și programul ca altul. Porturile conțin un anumit număr de pini; fiecare pin poate fi folosit ca intrare sau ieșire, dar nu în același timp. Porturile primesc nume sugestive precum PORTA, PORTB, PORTC etc. și le corespunde o anumită adresă dintr-un registru din spațiul de adrese al memoriei RAM.

Pinii microcontrollerului sunt bidirecționali,ceea ce înseamna că aceștia fie pot să citească seturi de valori de intrare, fie pot să trimită seturi de valori de ieșire. Programatorul are posibilitatea de a controla starea unui pin, și anume să fie pin de intrare sau pin de ieșire, prin setarea unui bit corespunzător în registrul de direcție al memoriei RAM. Pinii unui microcontroller pot să îndeplinească anumite funcții, operații, instrucțiuni, putând să aibă 2 sau 3 astfel de funcții. [3]

Memorii

La un microcontroller se întalnesc trei tipuri de memorii: memorie RAM, memorie ROM și memorie EEPROM. Fiecare tip de memorie îndeplinește anumite funcții și are diferite caracteristici.

Memoria RAM (Random Acces Memory) este o memorie volatilă care poate fi accesată aleator, la orice adresa a ei; conținutul acestei memorii se goleste în momentul apariției unei întreruperi de current. Este o componentă complexă, care cuprinde regiștrii de date si regiștrii de control.

Memoria ROM (Read Only Memory) este utilizată pentru a salva permanent datele stocate și programul care se execută.

Memoria EEPROM (Electrically Erasable Programmable Read Only Memory) este un tip de memorie nevolatilă, al carei conținut de date nu se pierde la apariția unei întreruperi de curent. Datele stocate în această memorie pot fi șterse și rescrise (prin procedee electrice) de un anumit număr de ori, existând mai multe astfel de cicluri de rescriere/ ștergere. [3], [4]

Sistemul de întreruperi

Întreruperile, asa cum sugerează denumirea, întrerup buna funcționare a unui program pentru a realiza altceva. Acestea apar datorită unor evenimente care au loc în cadrul sistemului integrat pe care microcontrollerul îl controleaza. Evenimente de această natură pot fi considerate urmatoarele: apăsarea unui buton, schimbarea stării unui pin din”1” in “0” (din high in low), supraîncarcarea timerului sau a număratorului microcontrollerului.

În cazul microcontrollerelor, întreruperile pot fi generate de anumite componente periferice: timere, convertorul analog-digital (ADC), convertorul digital-analog (DAC), interfața serială, comparatorul analog, controllerul de memorie EEPROM. Când aceste evenimente apar, intervine sistemul de întreruperi, care va semnala procesorului să suspende instrucțiunile curente pe care le execută și să ruleze o rutină de tratare a întreruperii (ISR). Rutina de tratare a întreruperii va efectua o serie de operații,care au la bază sursa întreruperii, cu scopul de a reveni la secvența de instrucțiuni initială,pe care procesorul o execută înaintea apariției întreruperii. [4]

Limbaje de programare

Microcontrollerul este alcătuit din două părți principale: partea hardware, care include microprocesorul, memoriile, porturile de intrare/ ieșire și partea software,care presupune existența unui mediu și limbaj de programare, cu scopul de a permite executarea unor programe, operații, instrucțiuni.

Scrierea unui program care să permită funcționarea microcontrollerului conform unor cerințe, se realizează într-un editor, în care se introduc și se salvează linii de comandă. Inițial, microcontrollerele erau programate prin intermediul limbajului mașină sau cod mașină, un limbaj greoi și nepractic.

Apoi, s-a trecut la folosirea limbajului de asamblare (Assembler), care este mai rapid și mai compact, iar programatorul are posibilitatea înțelegerii arhitecturii microcontrollerului și controlul asupra execuției programului și a resurselor. Totuși, și programul scris în limbaj de asamblare poate fi greu de înteles, incorect scris, lent și de dimensiuni mari.

Apariția limbajelor de programare de nivel înalt, cum ar fi C, C++, Basic, Forth, a contribuit la utilizarea acestora pentru a programa microcontrollere. Limbajele de nivel înalt prezintă robustețe, flexibilitate și permit accesul direct la resursele sistemului de calcul.

Chiar dacă programul este scris într-un limbaj de nivel inalt, este nevoie de prezența unui compilator, care va transforma instrucțiunile în cod mașină. Compilatoarele pot avea unele restricții dar și îmbunătățiri, care să suporte caracteristicile microcontrollerului. Totodată, pe lângă compilator, se mai folosește interpreterul.

Interpreterul are rolul de a citi, analiza și executa instrucțiunile din programul scis, pas cu pas. De exemplu, un program scris în C, va fi tradus, în funcție de cerințe, în cod mașină sau limbaj de asamblare. Va rezulta un cod mașină/ cod în asamblare de dimensiuni mari, care va fi executat de microcontroller. Compilatorul și interpreterul oferă viteză mare de execuție a codului și simplitate în ceea ce privește înțelegerea programului.[4]

Alte caracteristici ale microcontrollerelor

Microcontrollerele au în componeța lor un bloc care realizează transferul serial și asincron de date dintre calculator și microcontroller, numit USART ( Universal Synchronus and Asynchronus serial Receiver and Transmitter). USART este un dispozitiv de comunicație serial, flexibil, cu consum mic de putere de la CPU, care are în componența sa: generator de ceas (Clock Generator), transmițător (Transmitter), receptor (Receiver), regiștrii de control (Control Registers), regiștrii de shiftare (Shift Registers).

Interfața SPI (Serial Peripheral Interface) se regasește la microcontrollere și asigură transferul serial și sincron de date, cu viteză mare, între microcontroller și dispozitivele periferice ale calculatorului. [5]

Sistemele embeded de tip microcontroller lucrează, cel mai adesea, cu senzori (temperatură, lumină, accelerație, sunet etc.) care citesc și prelucreaza datele furnizate de aceștia. Datele sunt reprezentate sub forma unor semnale analogice, care necesită convertirea în semnale digitale, pentru a putea fi interpretate de procesor. Astfel, în componența microcontrollerelor se regăsesc convertoarele ADC (analog- to- digital converter). Convertorul analog-digital realizează conversia unui semnal de intrare analogic de o anumită valoare, într-un semnal de ieșire digital de o alta valoare, prin aproximări succesive. De asemenea, microcontrollerele mai pot fi dotate cu convertoare digital-analogice (DAC), care convertesc semnalele digitale în semnale analogice sau tensiuni, curenți.

O altă îmbunătățire a microcontrollerelor este prezența blocului generator de semnal PWM (Pulse Width Modulation). Semnalul de tip PWM reprezintă o succesiune de impulsuri modulate în lățime și căruia îi corespunde un factor de umplere. Astfel, timpul în care semnalul de comandă are valoarea 1 logic (ton) sau 0 logic (toff), crește sau scade.

Când factorul de umplere este de 100 % , ton este maxim iar toff este zero. Pentru un factor de umplere de 50 % ton este egal cu toff, iar daca factorul de umplere este de 0 % , ton este zero și toff este maxim. Prin intermediul blocului PWM pot fi controlate motoare, circuite electronice de putere, se poate realiza conversia semnalelor analogice de intrare în semnale digitale de ieșire.

Figura 2.3 Variații ale factorului de umplere la un semnal PWM

Tipuri de microcontrollere

De-a lungul timpului, o dată cu evoluția tehnologiei, și microcontrollerele s-au dezvoltat,crescând numărul mărcilor, producătorilor și a aplicațiilor în care sunt utilizate. Cele mai raspândite arhitecturi sunt pe 8 și 16 biți, iar mai jos sunt enumerate câteva familii importante de microcontrollere:

Atmel AVR (8 biti), AVR32 (32 biti), AT91SAM (32 biti)

Intel 8048 (Intel MC S-48)

Intel 8051 (Intel MC S_51)

Microchip Technology PIC (8 biti PIC16, PIC18, 16 biti dsPIC33, 32 biti PIC32)

Frescale 68HC11 (8 biti), 68HC05 (8 biti)

Texas Instruments TI MSP430 (16 biti), TI MSP430 (32 biti)

Renesas Electronics RL78 (16 biti MCU), RX (32 biti MCU), V850 (32 biti MCU)

Toshiba TLCS-870 (8 biti), TLCS-870 (16 biti)

Microcontrollerul Atmega328P-PU

Pentru a realiza comunicarea dintre interfața hardware cu microcontroller și interfața software Visual Basic, s-a dezvoltat un program scris în limbajul ANSII C pentru primirea și interpretarea comenzilor Basic de către microcontroller.

Microcontrollerul utilizat este Atmega328P-PU pe 8 biti si cu 28 de pini de intrare/ieșire, luând in considerare:

Costurile reduse

Consumul mic de putere

Construcția simplă

Suportul software bogat (numeroase librării bine dezvoltate și structurate)

Figura 2.4 Microcontroller ATmega328P-PU

Figura 2.5 Configurația pinilor microcontrollerului ATmega328P-PU

Conform Figura 1.5 se observă că microcontrollerul ATmega328P-PU are în structura sa 28 de pini dintre care : 14 sunt digitali, 6 pini analogici, 2 pini pentru GND (masa) , 2 pini pentru alimentare VCC, unul de Reset, unul pentru referință analogică- AREF, 2 pini destinați oscilatorului cu cuarț- XTAL1 și XTAL2.

Între pinii digitali ai microcontrollerului se regăsesc pinii RXD și TXD pentru realizarea comunicatiei seriale sincrone de la microcontrollerul Atmega328P-PU la calculator; această comunicare se face prin intermediul chipului FTDI/USB. [4]

Capitolul 3. REALIZAREA UNUI MODUL HARDWARE DIGITAL PENTRU UN SISTEM DE MONITORIZARE ȘI CONTROL A TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU UTILIZÂND MICROCONTROLLER ȘI CONVERTOR DIGITAL-ANALOG

Descriere generală a interfeței hardware digitale

În cadrul acestui capitol este descrisă detaliat interfața hardware utilizată pentru monitorizarea și controlul turației micromotoarelor de curent continuu. Astfel, pe acest modul se regăsesc urmatoarele componente, conform figurii 2.1:

Microcontroller Atmega328P-PU cu arhitectură pe 8 biți

Convertor DAC pe 12 biti MCP4922

Cipul FTDI/USB

Regulator coborâtor de tensiune LM7805

Oscilator cu cristal de cuarț de 16 MHz

Condensatori de 10 μF, 22 pF, 0.1 μF

Rezistențe de 2 kΩ, 4.7 kΩ

Buton de reset cu revenire

Leduri de reset și power-on

Socluri de intrare, respectiv de ieșire

Alimentare externă

Figura 3.1 Modul cu microcontroller

Convertorul DAC MCP4922

Convertorul digital-analog MCP4922 este un dispozitiv care face parte din familia de produse Microchip MCP4902/MCP4912/MCP4922. Acest convertor DAC MCP4922 are o rezoluție de 12 biți , două canale de ieșire, tensiune de referință externă Vref și o frecvență de lucru de 16 MHz.

Spre deosebire de celelalte tipuri de convertoare din familia sa, MCP4922 prezintă acuratețe și precizie ridicată a semnalului obținut la ieșire, consum mic de putere și zgomot redus în raport cu performanțele.

Figura 3.2 Convertor DAC MCP4922

Convertorul MCP4922 are o structura pe 14 pini, între care se regăsesc: VDD- tensiunea de alimentare, VREFA și VREFB- tensiuni de referință externe, CS- chip select input, SCK- serial clock input, SDI-serial data input, NC- no connection, LDAC- synchronization input, SHDN hardware shutdown input, VOUTB și VOUTA- DAC output, VSS- ground reference point. [6]

Figura 3.3 Configurația pinilor la convertorul MCP4922

Comunicarea cu acest convertor digital-analogic se face prin intermediul unei interfețe seriale simple și respectând protocoalele de comunicație SPI (Serial Peripheral Interface). În cadrul unei conexiuni SPI se regăsesc două tipuri de dispozitive, și anume: unul master (microcontroller) și unul slave (dispozitive periferice). [6] Microcontrollerul și convertorul DAC pot realiza transferuri de date folosind una dintre următoarele linii de comunicație:

MISO(Master In Slave Out)- slave trimite date la master

MOSI(Master Out Slave In)- master trimite date la slave

SCK(Serial Clock)- se generează impulsuri de tact care sincronizează transmisia datelor generate de master

SS(Slave Select)- pin existent la toate dispozitivele de tip slave

Microcontrollerul Atmega328P-PU va transfera date la convertorul MCP4922 folosind interfața SPI. Datele și comenzile sunt transmise la DAC prin pinul SDI și sunt sincronizate cu un anumit impuls de tact generat de pinul SCK.

Pentru ca microcontrollerul să comunice cu convertorul digital-analog, este necesar ca pinul CS să fie în starea „low“; când este în starea „high“ nu se realizează transferul de date. Comanda de scriere se face pe 16 biți, dintre care primii patru sunt biți de configurare, iar restul de 12 biți sunt biți de date.

După ce ieșirile DACOUTA și DACOUTB sunt sincronizate cu pinul LDAC, acesta va trece în starea „low“, iar datele din regiștrii de intrare sunt transferate în regiștrii de ieșire ai convertorului DAC. [5]

În general convertoarele DAC MCP4922 pot fi utilizate în aplicații precum: calibrarea unor senzori (de temperatură, lumină, umiditate), instrumente portabile cu alimentare pe baterii, controlul turației motoarelor.

Placa FTDI/USB

Comunicarea dintre calculator și microcontrollerul Atmega328P-PU se realizează cu ajutorul plăcuței FTDI/USB. Acesta funcționeză la tensiuni de alimentare de 3.3V sau de 5V și are în componența sa un chip FTDI și un port USB. Chipul FTDI este un circuit integrat folosit la transmiterea sincronă a datelor în cadrul dispozitivelor electronice cu microcontroller.

Pentru ca microcontrollerul Atmega328P-PU să comunice cu chipul FTDI, este necesar ca pinii RX și TX ai microcontrollerului să fie conectați la pinii RX și TX ai chipului FTDI. Astefel, se conectează pinul TX al chipului FTDI la pinul RX (pin 2) al microcontrollerului, iar apoi se conectează pinul RX al chipului FTDI la pinul TX (pin 3) al microcontrollerului. Portul USB

este utilizat pentru transmiterea datelor de la modulul cu microcontroller Atmega328P-PU, prin intermediul placii FTDI/USB, la calculator. [7]

Figura 3.4 Placa FTDI/USB

Regulator coborâtor de tensiune LM 7805

Regulatoarele coborâtoare de tensiune se mai numesc convertoare coborâtoare de tensiune („step-down”/ „buck”) și sunt circuite electronice destinate să furnizeze la ieșire o tensiune constantă și de valoare mai mică decât tensiunea de alimentare. Aceste regulatoare de tensiune pot avea în componența lor tiristoare, tranzistoare bipolare, tranzistoare MOSFET, condensatoare, bobine, rezistențe. [8]

Figura 3.5 Regulator coborâtor de tensiune LM7805

Regulatorul coborâtor de tensiune presupune ca tensiunea nestabilizată de la intrarea circuitului să fie micșorata pentru a obține la ieșire o tensiune continuă stabilizată. În circuitul regulatorului step-down se regăsesc bobine și condensatoare care au rolul unui filtru- netezesc și stabilizeză semnalele de tensiune și curent. Un astfel de circuit este prezent în figura de mai jos:

Figura 3.6 Schema electrică a unui convertor coborâtor de tensiune

În acest circuit electric avem următoarele elemente: baterie, întrerupător static, diodă, bobină, condensator și rezistență de sarcină. Principiul de funcționare este următorul: când întrerupătorul este pe poziția închis, bateria debitează curent ce trece prin bobină și ajunge la sarcină, iar dioda este blocată ; când întrerupătorul este pe poziția deschis, energia înmagazinată în bobină este descărcată prin diodă.

Regulatoarele coborâtoare de tensiune sunt utilizate pentru controlul puterii și vitezei motoarelor de curent continuu, la acționări cu reglare automată, la mașini și unelte electrice (mașini de spălat, mașini de găurit, electrocasnice), la electrovehicule (electrostivuitoare).

Oscilator cu cristal de cuarț cu frecvență de 16 MHz

Oscilatoarele sunt generatoare de semnale electrice care au o frecvență proprie și nu necesită semnal de intrare. În componența diferitelor dispozitive electrice și electronice apar oscilatoare cu circuite de tip RC și LC. La aceste oscilatoare un aspect important este acela de menține o frecvență constantă la ieșire, în condițiile în care apar variații de tensiune, de sarcină sau de temperatură.

Pentru a obține un nivel de stabilitate cât mai ridicat al frecvenței în cadrul circuitelor cu microcontroller, oscilatoarele cu circuite de tip RC sau LC sunt înlocuite de oscilatoare cu cristal de cuarț. Cristalul de cuarț,tăiat după o anumită formă și dimensiune, și poziționat între două suprafețe metalice, este un material cu proprietăți piezoelectrice, și anume: dacă se aplică o tensiune electrică acestuia, el ăși va modifica dimensiunile, iar dacă se aplică forțe mecanice cristalului, vor apărea sarcini electrice de un anumit tip pe suprafețele metalice. Efectul piezoelectric produce în circuit vibrații sau oscilații, cu o frecvență caracteristică a cristalului de cuarț. [7]

Figura 3.7 a) Simbol cristal de cuarț b) Schema echivalentă

Conform figurii 2.7 a) , cristalul de cuarț aflat între cele două suprafețe metalice are, intr-un montaj electric, comportament asemănător circuitului echivalent prezentat în figura 2.7 b). Astfel, elementele din schema echivalentă au următoarele semnificații:

Cp- capacitatea dintre electrozi;

L- echivalentul masei cristalului de cuarț;

Cs- echivalentul electric al elasticității;

R- echivalentul electric al pierderilor prin frecare.

Figura 3.8 Oscilator cu cristal de cuarț cu frecvență de 16 MHz

Oscilatoarele cu cristal de cuarț lucrează la frecvențe fixe cuprinse în domeniul 100kHz și 40 MHz. Acest tip de oscilatoare oferă stabilitate frecvenței într-un circuit electronic cu microcontroller, la transmisiile și recepțiile radio și se regăsesc în calculatoare, generatoare de semnal și osciloscoape.

Principiul de funcționare al modulului hardware digital

Prin intermediul unor comenzi software (C/ Basic), microcontrollerul Atmega328P-PU va prelua/ citi unul sau două semnale anlogice convertite pe 10 biți și le va trasmite, prin interfața SPI, spre un circuit DAC MCP4922 de 12 biți rezoluție pentru a fi convertite; convertorul DAC va pune la dispoziție semnale convertite pe 12 biți cu ajutorul a două porturi de ieșire.

De asemenea, utilizatorul poate seta (prin comenzi software specifice) o valoare particulară pe 12 biți (sau două valori) spre a fi preluată de microcontrollerul ATmega și trimisă circuitului DAC pentru a fi pusă la dispoziție pe porturile de ieșire ale acestuia.

Asociat cu semnalul de intrare/ieșire se mai regăsește câte un semnal digital corespunzător fiecărui semnal de intrare/ieșire, care are următoarea semnificație:

Valoarea „low“ (0 logic) presupune ca semnalul de intrare/ieșire primit să fie pozitiv și programul scris în limbajul C va procesa corespunzător acest bit de semn (semnal digital de tip „low/high“);

Valoarea „high“ (1 logic) presupune ca semnalul de intrare/ieșire primit să fie negativ și programul scris în limbajul C va procesa corespunzător acest bit de semn (semnal digital de tip „high/low“).

Capitolul 4. MODULUL HARDWARE ANALOGIC UTILIZAT PENTRU UN SISTEM DE MONITORIZARE ȘI CONTROL A TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU

Micromotoare de curent continuu

Ansamblul format din cele două module hardware analogic și digital și interfața software în Visual Basic, poate fi utilizat pentru monitorizarea și controlu turației micromotoarelor de curent continuu.

Aceste tipuri de motoare de curent continuu sunt destinate aplicațiilor de mică putere (sub 10 W și până la 24 V tensiune de alimentare) cum ar fii: acționări pentru mașini-unelte de mici dimensiuni, la calculatoare, instalații de comandă și reglare automată, montaje didactice. [9]

Figura 4.1 Intefața hardware analogică

Micromotorul de curent continuu este format din: două armături (stator și rotor, cu un întrefier de lărgime 1-3 mm) , sistem de perii și portperii, scuturi și lagare/ rulmenți, cutia de borne.

Statorul este partea fixata a motorului și care produce fluxul magnetic inductor. Acesta cuprinde carcasa pe care sunt așezați polii de excitație și polii auxiliari, care se fixează , bobinele polare (se montează pe poli).

Rotorul este partea mobilă a motorului numită indus, alcătuită din tole cu crestături la exterior, egale și uniform repartizate. Cuprinde colector, bobinajul indus și ventilator.

Colectorul, situat pe arborele mașinii, este realizat din lamele de cupru, dispuse radial și izolate între ele. Ventilatorul asigură răcirea motorului de curent continuu.

Portperiile sunt casetele metalice în interiorul cărora se găsesc periile colectoare. Periile freacă pe colector, realizând contactul electric între bobinajul indus și cutia de borne.

Scuturile și lagărele permit montarea rotorului în interiorul statorului. Când nu sunt prezente lagărele în construcția motorului, se găsesc rulmenți situați pe capetele axului.

Cutia de borne este montată pe carcasă și conține în interior placa de borne.

În funcție de modul cum sunt conectate cele două înfășurări, cea statorică și cea rotorică, micromotoarele de curent continuu pot avea următoarele tipuri de sisteme excitație : excitație separată, excitație derivație, excitație serie și excitație mixtă. [10]

Micromotoarele de curent continuu pot fi pornite direct, prin conectarea la sursa de alimentare. Frânarea micromotoarelor de curent continuu presupune ca motorul să primească putere mecanică de la arbore și putere electrică de la rețea, transformându-le în căldură și dezvoltând un cuplu de frânare.

Reglarea turației la micromotoarele de curent continuu se poate face prin 3 metode:

Prin reglarea curentului rotoric: se reglează curentul rotoric printr-un reostat serie;

Prin variația tensiunii de alimentare: este necesară o sursă proprie de alimentare a motorului, de tensiune reglabilă;

Prin reglarea fluxului de excitație Φ: se înseriază un reostat cu înfășurarea de excitație. [11]

Avantajele utilizării micromotoarelor de curent continuu:

Cuplu mare de pornire;

Control ușor al vitezei;

Oprirea, pornirea și inversarea sensului de rotație se realizează într-un timp relativ scurt.

Dezavantajele utilizării micromotoarelor de curent continuu:

Costuri ridicate, construcție complicată.

Funcționarea modulului hardware analogic

Modulul hardware analogic care poate fi utilizat pentru monitorizarea și reglarea turației unui micromotor de curent continuu, este structurat în două părți , fiecare având un anumit rol:

Una care primește la intrare două semnale în gama 0- 5V și Sign, iar la ieșire va scoate un semnal în gama -10/+10V. Sign este un semnal digital la care : „0 logic”=0V și „1 logic”=5V;

Una care primește la intrare două semnale în gama -10/+10V si va scoate la ieșire un semnal în gama 0- 5V și Sign.

Astfel, prima interfață hardware are la intrare semnale analogice cu valoarea între 0-5V și Sign, iar la ieșire va scoate semnale de -10 /+10V.

În figura 4.3 este prezentată o schemă electrică cu trei amplificatoare operaționale. Primul amplificator A1 are factorul de amplificare 2, iar celelalte două amplificatoare A2 și A3 au rolul de a schimba semnul semnalului primit la intrare în funcție de semnalul Sign.

Atunci când la intrare avem un semnal analogic între 0-5V, acesta trece prin amplificatorul A1 cu factor de amplificare 2, rezultând un semnal de ieșire u1 între 0-10 V; semnalul de ieșire u2 de la amplificatorul A2, va avea semnul schimbat în -10/0V, iar semnalul de ieșire uo de la amplificatorul A3 va scoate ,în funcție de Sign, 0/10V.

Figura 4.2 Schema electrică a interfeței hardware analogice

Figura 4.3 Schema electrică cu amplificatoare și semnal Sign

În următoarea figură (figura 4.4) sunt exemplificate restul transformărilor asupra semnalelor de intrare, prin intermediul amplificatoarelor și tranzistoarelor. Primul amplificator IC1 este cu reacție negativă, semnalul de intrare fiind aplicat la borna neinversoare. Amplificarea acestuia este de forma A=1 + R3/R2, unde R3 este aleasă egală cu R2, deci A=2. De aici rezultă că pentru un semnal de intrare de 0-5V, va scoate la ieșire un semnal de 0-10V.

În continuare avem amplificatorul IC2 cu filtru de ajustare a tensiunii de ieșire la valoarea dorită. IC2 are o amplificare de 2 și va ține cont de semnalul Sign, scoțând la ieșire un semnal cu bit de semn. [12]

Este prezent în figură un tranzistor bipolar Q1 de tip npn.[14] Când tranzistorul este alimentat în bază cu o tensiune negativă, va fi blocat, iar Sign=0 (0V). Când Sign=1 (5V), valorile rezistențelor R5 și R6 sunt alese în așa fel încât în baza tranzistorului Q1 să intre curent, trecând din starea blocat în starea saturat.

Tranzistorul Q1 conduce, iar semnalul de la colector trece la masă și amplificatorul IC2 nu va mai avea semnal la intrare, deci la ieșire va scoate 0V.

Amplificatorul IC3 cu configurația din figura 4.4 este un sumator, și anume adună semnalele de la intrare de pe ramurile a) și b) ale circuitului. Vor apărea două cazuri:

Dacă Sign=0, tranzistorul Q1 este blocat. Pe ramura a) apare tensiunea de la ieșirea amplificatorului IC1 de 10V, iar pe ramura b) apare tensiunea de la ieșirea amplificatorului IC2 de -20V. Suma acestor ramuri este -10V, deci la ieșirea amplificatorului IC3 vor fi -10V.

Dacă Sign=1, tranzistorul Q1 este saturat (intră în starea de conducție). Pe ramura a) este tensiunea de la ieșirea amplificatorului IC1 de 10V, iar pe ramura b) sunt 0V deoarece IC2 nu primește niciun semnal la intrare, acesta fiind pus la masă prin intermediul tranzistorului. Amplificatorul IC3 va avea la intrare 10V și 0V, deci la ieșire va scoate 10V.

Figura 4.4 Schema electrică cu amplificatoare și tranzistoare

Cea de-a doua interfață hardware analogică folosește ca și schemă de principiu figura 4.5, care cuprinde două amplificatoare operaționale A1 și A2, și un comparator A3 de 0. La intrarea acestui circuit avem ui= -10/+10V, care intră în amplificatorul A1 cu câștig de 0.5, la a cărui ieșire vom avea -5/ +5V. Același semnal ui va intra și într-un comparator de zero.[13]

Prin urmare:

Când la intrarea acestuia sunt -10V, la ieșirea amplificatorului A1 vom avea -5V, iar la ieșirea comparatorului sunt 0V (Sign=0) ; contactul K va fi în poziția deschis, semnalul trece prin amplificatorul A2 și semnul este inversat. Adică uo=5V.

Când la intrarea comparatorului A3 avem 10V, la ieșirea amplificatorului A1 vom avea 5V, iar comparatorul va avea la ieșire 5V (Sign=1). Contactul K se va închide și la ieșirea circuitului vom avea uo= -5V.

Figura 4.5 Schema de principiu pentru a doua interfață hardware

Schema electrică a acestei interfețe prezentate în figura 4.6 este asemănătoare cu a celeilalte interfețe din figura 4.4, dar cu unele modificări : nu există tranzistor dar apar diode .

Când la intrarea circuitului avem -10V, amplificatorul operational IC4 are pe intrarea inversoare -10V și va scoate la ieșire 15V care vor fi aplicați la intrarea neinversoare a amplificatorului IC5.

Amplificatorul IC5 mai are pe intrarea inversoare -10V, deci va scoate la ieșire o tensiune de 5V. Amplificatorul IC6 are la intrarea inversoare -10V și scoate la ieșire o tensiune de 15V. Dioda D3 conduce și pe rezistența R12 a divizorului de tensiune format din rezistențele R11 și R12 apare o tensiune de 5V, Sign fiind 1 . [13]

Dacă la intrarea circuitului avem o tensiune de 10V, amplificatorul operațional va scoate la ieșire -15V, care se vor aplica pe intrarea inversoare a amplificatorului IC5. Acest amplificator primește la intrarea neinversoare 10V și va da la ieșire o tensiune de 5V.

La intrarea inversoare a amplificatorului IC6 sunt 10V, iar la ieșire acesta va da o tensiune negativă de -15V. Dioda D3 este blocată și la ieșire pe rezistența R12 vor fi 0V, Sign fiind 0.

Figura 4.6 Schema electrică pentru a doua interfață hardware

Capitolul 5. IMPLEMENTAREA CODULUI SURSĂ ÎN C STANDARD ȘI VISUAL BASIC PENTRU MONITORIZAREA ȘI CONTROLUL TURAȚIEI MICROMOTORULUI DE CURENT CONTINUU

Descrierea codului sursă în limbajul C folosit pe microcontroller

În prezentul capitol sunt descrise cele două aplicații software, una dezvoltată în limbajul C standard, iar cealaltă dezvoltată în limbajul VB.NET 2012, ce permit realizarea unui sistem de monitorizare, control și testare pentru sisteme cu micromotoare.

Aplicația software dezvoltată în limbajul C standard este destinată spre a fi rulată de microcontroller-ul ATMEGA 328P, iar aplicația VB.NET are rolul de a comunica cu microcontroller-ul prin trimiterea către acesta de comenzi specifice pentru a fi executate, și astfel o serie de task-uri / procese au loc în sistemul hardware / software prezentat în această lucrare.

În cele ce urmează voi descrie aplicația dezvoltată în limbajul C rezidentă în microcontroller. Această aplicație va realiza citirea unor semnale analogice de intrare (pe două porturi analogice alese) și convertite cu o rezoluție de 10 biți.

Semnalele vor reconvertite în semnale digitale de 12 biți rezoluție în vederea transmiterii acestora către circuitul DAC MCP 4922. Astfel, la ieșirea celor două porturi ale DAC-ului se vor putea măsura și folosi aceste semnale noi.

Semnalele manipulate sunt în domeniul 0 – 5 V. Aplicația primește comenzi specifice de la interfața de nivel înalt VB.NET sau echivalent (s-a mai folosit pentru teste și interfața Serial Monitor ale platformei de dezvoltare Arduino IDE), comenzi codificare ASCII de lungimi reduse (maxim 28 bytes lungime) ce transmit informații precum: tipul task-ului de executat (ID-ul job-ului), valorile ce vor fi trimise către cele două porturi ale circuitului DAC, bitul de semn pentru fiecare port de intrare și ieșire, constanta de timp ce va fi folosită în operațiile de citire / scriere semnale electrice analogice / digitale.

Aplicația are rolul de a trimite un semnal analogic de valoare cuprinsă între 0 și 5 V cu un bit de semn atașat (un semnal digital de valoare HIGH sau LOW) spre o interfață analogică ce va converti acest semnal într-o valoare cuprinsă între -10 și +10 V cu bitul de semn specific. Ultimul interval de tensiuni este des folosit / întâlnit în domeniul alimentării / controlului micromotoarelor de curent continuu.

Figura 5.12 Includerea unor librării specifice și definirea unor constante (echivalențe) pentru gestionarea eficientă a aplicației de pe microcontroller

În Figura 5.12 este prezentată o serie de definiri de constante și includeri de biblioteci de funcții specifice. Astfel, pinii digitali 5 și 6 sunt folosiți pentru citirea bit-ului de semn primit la cele două analogice de intrare (A0 și A1). Valorile citite pot fi 0 sau 1. Porturile digitale 7 și 8 sunt folosite pentru trimiterea / scrierea bitului de semn specific ce va fi asociat cu cele două porturi de ieșire ale circuitului DAC MCP 4922. Pinul digital 10 este folosit de comunicația SPI dintre microcontroller și DAC. Pinul 10 reprezintă pinul de SLAVE SELECT (SS).

Figura 5.13 Prezentarea variabilelor de tip INTEGER folosite în aplicația scrisă în limbajul standard C rezidentă în microcontroller

Figura 5.14 Prezentarea variabilelor de tip CHAR și BOOLEAN folosite in aplicația scrisă in limbajul standard C rezidentă în microcontroller

În Figura 5.13 și Figura 5.14 sunt prezentate restul variabilelor folosite în aplicația C. Astfel că, toate variabilele de tip CHAR reprezintă șiruri de caractere folosite în operațiile de codificare / decodificare comenzi ASCII, folosite între aplicația VB.NET și aplicația C.

Variabilele INT, “_CONTOR_1…”, “_CONTOR_2…”, pînă la al șaselea contor similar, sunt folosite în toate operațiile cu șirurile de caractere pe post de indexi de numărare.

Restul variabilelor INT sunt folosite pentru citirea valorilor de intrare de pe porturile analogice, pentru trimiterea de noi valori spre porturile DAC-ului, pentru baza de timp între operații și pentru bitul de semn asociat fiecărui port.

Variabilele BOOLEAN sunt folosite ca și elemente / mecanisme de control ale operațiilor de citire / decoficare / scriere valori semnale în buclele repetitive de tip WHILE pentru toate tipurile de comenzi. Aceste tipuri de comenzi vor fi detaliate în cele ce urmează. [16]

În Figura 5.15 este prezentatăă funcția Void Setup(), în care se fac o serie de inițializări o singură dată, datorită specificului acestei funcții fundamentale. Codul sursă din interiorul acestei funcții se execute o singură dată la pornirea sau reboot-ul microcontroller-ului ATMEGA 328P.

Fig. 5.15 Funcția VOID SETUP() reprezintă funcția ce se execută o singură dată la pornirea / rebootul sistemului cu microcontroller; aici se fac o serie de inițializări de tip ONE-TIME

Aici se setează (Fig. 5.15) parametri portului serial, a comunicației SPI și câteva setări pentru circuitul DAC. De asemenea, se seteaza caracteristica porturilor folosite, INPUT sau OUTPUT. Se face și o resetare cu zero a buffer-ului principal de recepție comandă de la aplicația VB.NET.

Fig. 5.16 Funcție folosită pentru calcularea gradului de ocupare a memorie RAM a microcontroller-ului

Fig. 5.17 Funcția VOID LOOP() și prima parte a codului sursă ce citește și memorează comenzile ASCII primite de la PC

În Fig. 5.16 este prezentată o funcție folosită pentru calculul memoriei RAM disponibile în microcontroller în anumite momente de timp.

În Fig. 5.17 este prezentat începutul funcței LOOP(), ce se execută la infinit (sau pînă la o condiție de stop a acesteia). În primă fază se resetează un contor folosit pentru bufferul de intrare BUFFER_RECEPTIE_DATE, dar și acest din urmă șir de caractere (se reseteaza cu zero folosind instrucțiunea MEMSET). Buffer-ul amintit aici este într-o buclă pentru citirea datelor primite pe interfața serială.

Funcția Serial.Available() verifică dacă sunt date existente in bufferul serial din librăria serial, iar Serial.Read() citește efectiv fiecare byte in parte din acest buffer. Apoi, se procedează la afișarea acestor bytes de date în interfața SERIAL MONITOR a aplicației VB.NET sau ARDUINO IDE. [17]

Figura 5.18 Prezentarea buclei de cod sursă C ce permite extragerea cîmpului de date TIME_DELAY din buffer-ul de intrare

În Figura 5.18 se prezintă codul sursă aferent comenzii #A0#,TIME_DELAY , comandă ce va citi o valoare de la portul de intrare analogic A0, o va converti din 10 in 12 biți rezoluție, și o va trimite spre ieșirea 1 a circuitului DAC. La fel se v proceda și cu bitul de semn aferent acestor două porturi.

Prima dată se va trimite HEADER-ul comenzii (#A0#), urmat de separatorul virgulă (,), apoi de contanta de timp TIME_DELAY folosită pentru temporizarea operațiilor, iar la final se va trimite și separatorul punct (.).

O buclă WHILE va fi executată pînă la întîlnirea separatorului punct. Valoarea convertită a contantei de timp este preluată de variabila TIME_DELAY.

În Figura 5.19, pagina următoare, este prezentată bucla WHILE unde se citește valoarea portului de intrare A0 și bitul de semn corespunzător (atasat unui pin digital) și conversia acestui semnal analogic în semnal digital pe 12 biți spre a fi trimis portului 1 al DAC-ului (de asemenea cu bitul de semn corespunzător). [17] ,[18]

Se va afișa în interfața serială atît valoarea pe 10 biți, cît și valoarea proporțională pe 12 biți cu bitul de semn corespunzător. Portul 2 al DAC-ului nu va fi folosit și, astfel va fi setat pe 0 volți.

Figura 5.19 Citirea semnalului analogic (A0) și conversia acestuia pe 12 biți spre a fi procesat de circuitul DAC; de asemenea biții de semn sunt citiți și dați mai departe spre ieșire

Fig. 5.1.1 Recepționarea comenzii de STOP (END) pentru task-ul current și pe urmă se procedează la resetarea tuturor bufferelor temporare si a variabilelor folosite

În Figura 5.19 și 5.1.1 sunt prezentate metodele de a termina taskul curent. Prin introducerea comenzii END se va termina taskul curent (adică: #A0#,time_delay.).

Dacă se introduce orice altă combinație de comenzi, in timp ce taskul curent rulează, utilizatorul va fi avertizat să introducă mai intâi comanda END și pe urmă să introducă o nouă comandă.

Figura 5.1.2 Prezentarea cazului când se introduce o comandă diferită de END pentru incetare taskului current, iar programul va fi insista să se introduce mai intâi comanda END și pe urma o altă comandă nouă

Figura 5.1.3 Prezentarea cazului / comenzii 2 (#A1#,time_delay.) în care se citește portul A1 cu bitul de semn aferent și aceste valori se transmit spre portul 2 al DAC-ului cu conversile de rigoare (doar în cazul semnalui analogic se realizează conversia din 10 biți în 12 biți)

În Figura 5.1.3 se prezintă comanda 2 trimisă de la aplicația VB.NET spre microcontroller. În acest caz, un semnal analogic de intrare (cuprins tot in intervalul 0-5 V) va fi citit, convertit în 10 biți , apoi în 12 biți și în final trimis spre portul 2 al DAC-ului cu bitul de semn corespunzător. Aceste semnale de ieșire vor fi preluate de interfața analogică și vor fo convertite în valori cuprinse in intervalul -10 și +10 V.

Structura codului sursă C este similară cu cea precedent, doar cu mici modificări / ajustări pentru porturile A1 și DAC PORT 2. Temporizarea operațiilor este furnizată în milisecunde și poate avea maxim 5 cifre. In Figura 5.1.4 se realizează conversia semnalelor și trimiterea lor spre ieșirea DAC-ului (portul 1 al DAC-ului), dar și spre interfața serială pentru afișarea lor.

Figura 5.1.4 Bucla WHILE ce permite citirea și trimiterea semnalelor spre ieșirea DAC-ului atît timp până la introducerea comenzii END, cu temporizarea de rigoare; în interfața serială se vor putea monitoriza aceste valori citite și transmise spre DAC și de acolo spre interfața analogică

Figura 5.1.5 Fragment din comanda 3 (#A01#,time_delay.) în care se citesc simultan ambele porturi analogice de intrare cu biții de semn corespunzători și se trimit spre ambele porturi ale DAC-ului (convertite pe 12 biți și cu temporizarea de rigoare)

În Figura 5.1.5 se prezintă codul sursă pentru procesarea comenzii 3, care are forma: #A01#,TIME_DELAY. Procedura este foarte asemănătoare cu cele procedente cu privire la manipularea șirurilor de caractere, iar în Figura 5.1.6 se prezintă chiar procesarea propriu-zisă a celor două semnale de intrare. După converia de rigoare sunt trimise spre DAC impreună cu biții de semn (asociați pinilor digitali corespunzători).

Figura 5.1.6 Bucla WHILE ce permite citirea și trimiterea semnalelor analogice / digitale spre ieșirea DAC-ului atît timp până la introducerea comenzii END, cu temporizarea de rigoare; în interfața serială se vor putea monitoriza aceste valori citite și transmise spre DAC și de acolo spre interfața analogică (2 porturi AI și 2 porturi AO)

În Figura 5.1.7 este prezentat mecanismul software de tipărire / trimitere spre interfața serială a valorilor semnalelor analogice convertite și cu biții de semn corespunzători. Bucla WHILE din Figura 5.1.6 și 5.1.7 se va executa cu o anumită temporizare dată de utilizator și pînă la introducerea comenzii END.

Figura. 5.1.7 Trimiterea spre interfața serială a semnalelor de pe porturile A0 și A1, a semnalelor de pe porturile 1 și 2 ale DAc-ului și a biților de semn corespunzători pentru comanda #A01#,time_delay.

În Figura 5.1.8 se prezintă o comandă cu numărul 4, ce presupune trimiterea unei valori de către utilizator pentru portul 1 de ieșire al DAC-ului. Comanda are următoarea formă: #DAC1#,BIT_SEMN_1,VAL_DAC_PORT_1,TIME_DELAY.

De asemenea, utilizatorul trimite și valoarea bitului de semn, dar și constanta de timp. Pentru fiecare bucățică din command există câte un șir de caractere dedicat.

Figura 5.1.8 Comanda prin care userul intervine in mod direct asupra procesului și introduce el o serie de valori pentru portul de ieșire numărul 1 al DAC-ului

Figura 5.1.9 Fragment din comanda #DAC1# în care se realizează operațiunea de extragere a bitului de semn asociat portului A1 și care va fi trimis spre ieșire la portul digital aferent asociat cu portul 1 al DAC-ului

Fig. 5.1.10 Fragment de cod sursă ce reprezintă metoda de extragere a valorii analogice (12 biți) ce va fi trimisă spre portul 1 al DAC-ului, cu bitul de semm corespunzător

În figura 5.1.9 și 5.1.10 se prezintă codurile sursă pentru extragerea bitului de semn și valorii analogice a portului 1 al DAC-ului. Aceasta reprezintă o modalitate de control particulară prin introducerea unor noi valori DAC-ului.

Practic, un micromotor poate fi ușor modificat în turație prin introducerea de noi valori porturilor DAC-ului. În Figura 5.1.11 se poate observa modalitatea de extragere a constantei de timp folosită ca și temporizare a proceselor în microcontroller.

Figura 5.1.11 Extragerea TIME_DELAY din bufferul de intrare pentru comanda #DAC1#… și afișarea rezultatului în interfața Serial Monitor al aplicației VB.NET sau ARDUINO IDE

Figura 5.1.12 Rularea comenzii “#A0#,1000.” din interfața Serial Monitor al platformei de dezvoltare Arduino IDE (folosită pentru programarea microcontrollerului)

În Figura 5.1.12 se poate observa răspunsul microcontrollerului la primirea comenzii “#A0#,1000.”. Se observă valoarea analogică pe 10 biți, apoi valoarea pe 12 biți, și respectiv, bitul de semn. Temporizarea citirilor și operațiilor se realizeaza la 1000 ms.

Figura 5.1.13 Răspunsul microcontrollerului la primirea comenzii #A1#,500. , s-a ales o temporizare a procesului de 500 ms, iar bitul de semn este + (0 logic)

În Figura 5.1.13 se prezintă, îm mod oarecum similar, răspunsul microcontrollerului la primirea comenzii “#A1#,500.”. Valoarea portului A1 (pe 10 biti) este ușor variabilă, iar valoarea convertită pentru portul DAC 2 este și ea ușor variabilă. Intervalul de timp între operații este de 500 ms, iar bitul de semn este +.

Figura 5.1.14 și 5.1.15 sunt oarecum similare și prezintă răspunsul microcontrollerului la diferite comenzi, altele decât cele prezentate mai sus. Astfel, în Figura 5.1.14 este prezentată execuția comenzii #A01#… cu temporizare la 300 ms, iar în Figura 5.1.15 este prezentat un fragment din răspunsul microcontrollerului la primirea comenzii #DAC1#…, în care toți parametri sunt ușor de identificat.

Figura 5.1.14 Fragment din răspunsul microcontrollerului la primirea comenzii #A01#… în care s-a ales o temporizare la operații de 300 ms, iar biții de semn sunt + în ambele cazuri

În figura 5.1.15 este reprezentat un fragment din răspunsul microcontrollerului la primirea comenzii #DAC1#… in care s-a ales o temporizare a operațiilor de 400 ms, o valoare a portului DAC 1 = 3072 (4,2 V), iar bitul de semn este – (1 logic).

Figura 5.1.15 Fragment din răspunsul microcontrollerului la primirea comenzii #DAC1#… în care s-a ales o temporizare a operațiilor de 400 ms, o valoare a portului DAC 1 = 3072 (4,2 V), iar bitul de semn este – (1 logic)

Figura 5.1.16 Fragment din răspunsul microcontrollerului la primirea unei comenzi nerecunoscute și se lansează mesajul “Tastați END pentru oprirea task-ului curent”

Descrierea interfeței Visual Basic

Visual Basic este un limbaj de programare cu o sintaxă relativ simplă, asemănătoare cu cea din Java sau C# și nu este case-sensitive. Programele se creează în Console Aplication, le sunt atribuite nume și vor avea un anumit format:

Figura 5.21 Exemplu de cod VB

Codul va apărea între cele două funcții Sub Main() și End Sub, iar la sfârșitul unei linii de cod nu se pune niciun semn (de exemplu „ ; “ în C#), spre deosebire de alte limbaje. Deasemenea Visual Basic nu permite comentarea blocurilor, ci doar a liniilor, folosind apostroful la începutul liniei. [19]

Visual Basic dispune de o interfață grafică destul de bogată cuprinsă în meniul Toolbox: inserare imagini, text, tabele, butoane etc.

Figura 5.22 Visual Basic Toolbox

În Visual Basic apar următoarele tipuri de variabile: integer, floating point, boolean, double și char, care se declară cu următoarea sintaxă:

Figura 5.23 Declararea variabilelor în VB

Mediul de programare Visual Basic lucrează cu șiruri, vectori, operatori matematici și cu principalele bucle: if then, if else, for, while, do until, select case. În orice program VB pot aparea probleme sau erori care împiedică buna funcționare a acestuia, sub forma unor excepții. Există posibilitatea de a trata aceste excepții utilizând blocul „try catch“. [20]

Figura 5.24 Sintaxa blocului „try catch“

Visual Basic permite deasemenea crearea de clase ce conțin metode, evenimente, variabile ce trebuie inițializate și funcții. Clasele sunt definite prin cuvântul cheie „class“; metodele pot fi de tip „private“ sau „public“. [19]

Figura 5.25 Sintaxa creării unei clase

În Figura 5.26 este prezentat răspunsul microcontrollerului la primirea diferitor comenzi, fiind folosită o interfață realizată în limbajul Visual Basic.NET 2012, ce permite cu multă ușurință, trimiterea de comenzi și recepționarea de mesaje de la microcontroller.

Această unealtă devine utilă în monitorizarea și controlul sistemelor cu micromotoare, deoarece asigură comunicația ușoară și rapidă cu un sistem cu microcontroller, capabil de procesări de semnale electrice.

Figura. 5.26 Fragment din răspunsul microcontroller-ului la primirea comenzii #A0#…, aici se folosește aplicația VB.NET pentru trimiterea de comenzi către MCU și recepționarea răspunsurilor acestuia

Figura 5.27 Surprinderea momentului când o comandă este terminată / anulată prin trimiterea comenzii END de stop task către MCU

Figura 5.28 Surprinderea momentului când cea mai complexă comandă se primește și se execută, fiind vorba despre comanda #DAC12#… (header, bit_semn1, val_dac1, bit_semn2, val_dac2, time_delay.), ce transmite valori noi ambelor porturi ale DAC-ului

În Fig. 5.26 este surprins momentul întreruperii execuției unei comenzi, iar în Fig. 5.27 este prezentată rularea comenzii #DAC12#…, fiind o comandă complexă ce necesită mai multe operații în aplicația C din microcontroller.

În cele ce urmează voi face o prezentare a codului sursă al aplicației VB.NET 2012. Această aplicație, așa cum am mai spus mai sus, reprezintă o interfață simplă de trimitere de comenzi pe port serial și recepționarea răspunsului microcontroller-ului după recepționarea și execuția comenzii / sarcinii cerute.

În Fig. 5.28 este prezentat codul sursă al butonului OPEN COM PORT responsabil de deschiderea conexiunii seriale cu sistemul cu microcontroller.

Fig. 5.28 Funcția din spatele butonului OPEN COM PORT ce realizează deschiderea conexiunii seriale cu sistemul cu microcontroller ATMEGA 328P; de asemenea se face apelul unei funcții ce setează toți parametri necesari portului serial (ComPortSettings())

Fig. 5.29 Fragment din funcția ComPortSettings() în care se selectează / convertesc niște valori predefinite (ca și DEFAULT) în ComboBox-urile aferente din interfața GUI (Graphical User Interface); sunt prelucrate câmpurile PORT_NAME, BAUD_RATE, DATA_BITS, STOP_BITS

Se poate observa tot în Fig. 5.28 cum fiecare informație selectată din ComboBox de către utilizator este apoi preluată / încărcată de program pentru a realiza deschiderea conexiunii seriale dorite.

În Fig. 5.29 (pagina anterioară), Fig. 5.30, Fig. 5.31 și Fig. 5.32 sunt prezentate modurile în care sunt preluați și manipulați diferiți parametri esențiali ai conexiunii seriale, cum ar fi: ComPort, BaudRate, StopBits, ParityBits, HardwareHandshake, DataBits și Encoding.

Valorile acestor parametri au fost predefinite astfel încât utilizatorului să îi vină ușor să-i selecteze și să nu piardă prea mult timp cu aceste operații. Valorile acestor parametri sunt standardizate și consacrate și nu voi insista prea mult asupra acestora.

Fig. 5.30 Fragment din funcția ComPortSettings() în care se selectează / procesează parametrul PARITY_BITS al conexiunii seriale, informațiile predefinite fiind extrase din căsuța ComboBox specifică acestui câmp de date

Fig. 5.31 Fragment din funcția ComPortSettings() în care se selectează / procesează parametrul HARDWARE_HANDSHAKE al conexiunii seriale cu microcontrollerul; informațiile necesare sunt selectate de user și încărcate din ComboBox-ul specific spre a fi procesate în interior

În Fig. 5.33 se prezintă un fragment din funcția ComPortSettings() în care se verifică dacă nu cumva portul COM în cauză este deja deschis, iar dacă nu este atunci va fi deschis; în cazul în care portul COM este deja deschis se va afișa un mesaj de avertizare în acest sens, astfel încât utilizatorul va știi mereu care este statusul portului COM.

Fig. 5.32 Fragment din funcția ComPortSettings() în care se selectează / procesează parametrul ENCODING, iar în cazul de față transmisia de date seriale se realizează folosind standardul ASCII (acest standard va fi selectat de user in fereastra de configurare a portului serial)

Fig. 5.33 Fragment din funcția ComPortSettings() în care se verifică dacă nu cumva portul COM în cauză este deja deschis, iar dacă nu este atunci va fi deschis; în cazul în care portul COM este deja deschis se va afișa un mesaj de avertizare în acest sens

Fig. 5.34 Această funcție gestionează evenimentul de recepție date pe portul serial, acest eveniment având în spate un fir de execuție separat (THREAD) ce monitorizează fruxul de date ce urmează să le primească în buffer aplicația

Fig. 5.35 Prezentarea funcției SetText(…) apelată în funcția din Fig. 5.34 și responsabilă de citirea bufferului de intrare al portului serial, iar aceste date vor fi afișate in fereastra OUTPUT MONITOR (RichTextBox Control) fie în ASCII, fie în HEX

În Fig. 5.34 și Fig. 5.35 sunt prezentate funcțiile care gestionează evenimentul de recepție date pe portul serial, acest eveniment având în spate un fir de execuție separat (THREAD) ce monitorizează fruxul de date ce urmează să le primească în buffer serial aplicația.

Din bufferul serial, funcția prezentată în Fig. 5.35 citește toate informațiile și le trimite spre afișare (ASCII sau HEX) în fereastra OUTPUT MONITOR, care nu este altceva decât un control de tip RichTextBox.

Astfel utilizatorul poate vizualiza orice informație primită de la microcontroller în timp real.

Fig. 5.36 Prezentarea funcției de AutoScroll a ferestrei OUTPUT MONITOR cu mutarea cursorului la finalul / capătul textului recepționat, care funcționează tot pe baza unui eveniment de tip TEXT_CHANGED EVENT

Fig. 5.37 Prezentarea codului sursă din spatele butonului CLOSE COM PORT în care se verifică dacă portul este deschis sau închis, iar dacă este deschis atunci se va inchide, altfel se va afișa un mesaj cum că portul trebuie deschis

În Fig. 5.36 este prezentată o funcție ce permite AutoScroll eficient în fereastra de OUTPUT și practic la fiecare mesaj recepționat de la microcontroller, cursorul întotdeauna va fi poziționat pe ultima linie de date recepționată.

În Fig. 5.37 este prezentat codul sursă responsabil cu închiderea conexiunii seriale cu sistemul cu microcontroller prin apăsarea butonului în cauză. De asemenea, se face o verificare dacă nu cumva portul este deja închis, sau deschis.

În acest fel utilizatorul știe mereu care este statusul portului COM curent.

Fig. 5.38 Prezentarea codului sursă din spatele butonului SEND COMMAND TO MCU, care va trimite către microcontroller un șir de caractere ASCII spre a fi decodificate și apoi taskul respectiv să fie executat

Fig. 5.39 În momentul în care aplicația se încarcă (interfața GUI este pornită / activă) o serie de inițializări au loc; toate controalele de tip ComboBox sunt preîncărcate cu o serie de valori predefinite spre a fi ulterior selectate de utilizator pentru deschiderea conexiunii seriale

În Fig. 5.38 este prezentat codul sursă responsabil pentru trimiterea unei comenzi către microcontroller. Comenzile sunt de tip șir de caractere.

Comenzile au următoarea structură:

HEADER, SEPARATOR, TIME_DELAY, SEPARATOR_END (Ex: #A0#,1000.);

HEADER, SEPARATOR, BIT_SEMN, SEPARATOR, VAL_PORT, SEPARATOR, TIME_DELAY, SEPARATOR_END (Ex: #DAC1#,0,2500,1000.);

HEADER, SEPARATOR, BIT_SEMN_1, SEPARATOR, VAL_PORT_1, SEPARATOR, BIT_SEMN_2, SEPARATOR, VAL_PORT_2, SEPARATOR, TIME_DELAY, SEPARATOR_END (Ex: #DAC12#,0,2500,1,3500,1000.);

În Fig. 5.39 este prezentată secvența de cod sursă care se execută la încărcarea / rularea aplicației, fiind guvernată de un eveniment de tip FORM_LOAD_EVENT. Practic când acest eveniment are loc, o serie de preinițializări se petrec în ComboBox-urile aferente gestionării comunicației seriale.

Fig. 5.40 Continuare din Fig. 5.39 în care o serie de date predefinite sunt preîncărcate în ComboBox-uri spre a fi apoi selectate de utilizator

În Fig. 5.40 este prezentată o continuare a codului sursă prezentat în figura anterioară. Fiecare ComboBox este populat cu anumite valori / parametri, astfel încât utilizatorul să selecteze parametrul dorit pentru configurarea optimă a comunicației seriale cu sistemul cu microcontroller.

Capitolul 6. CONCLUZII

Această lucrare a avut ca și scop prezentarea unui sistem de monitorizare și control a turației unui micromotor de curent continuu, folosind interfață hardware- analogică și digitală, și interfață software în mediul Visual Basic.

Implementarea interfeței hardware digitale, ale cărei componente cheie sunt microcontrollerul Atmega328P-PU și convertorul digital-analog MCP4922 pe 12 biți, facilitează recepționarea semnalelor analogice pe 10 biți, din domeniul 0-5V și -10/+10V ,de la modulul hardware corespunzător și convertirea lor în semnale digitale cu bit de semn pe 12 biți, în aceleași domenii de valori de tensiune. Apoi, aceste valori ale semnalelor digitale pot fi monitorizate, fie pe un canal sau pe ambele canale de ieșire ale convertorului DAC, prin intermediul intefeței din Visual Basic.

Mediul de programare Visual Basic oferă aplicației posibilitatea realizării unei interfețe grafice sugestive și simple, având la bază un cod sursă într-un limbaj de programare de nivel înalt, prin intermediul căreia să se poate monitoriza si controla turația unui micromotor de curent continuu.

Realizarea unui astfel de sistem de monitorizare și control al turației unui micromotor de curent continuu, constituie o soluție viabilă, nu foarte costisitoare și care poate fi dezvoltată și pentru sisteme mai avansate, de dimensiuni mai mari și cu mai mulți parametrii .

Datorită caracteristicilor de funcționare ale microcontrollerului și convertorului digital-analog și ale interfețelor hardware și software aferente acestora, acest sistem de monitorizare și control poate fi utilizat și pentru aplicații care implică acționări cu alte tipuri de micromotoare (de exemplu motoare pas cu pas), microcontrollere și diferiți senzori (de temperatură, umiditate, lumină) care necesită calibrare.

Faptul că aceste module realizează transferuri de date rapide prin intermediul unei interfețe seriale, oferă posibilitatea extinderii aplicației în mai multe module, putând fi utilizată la nivel industrial, ca sistem complex și performant de monitorizare și control.

Bibliografie

[1] Dumitrache I., „Tehnica reglării automate”, Editura Didactică și Pedagogică, 1980

[2] Băieșu Alina Simona, „Tehnica reglării automate”, Matrixrom, 2012

[3] Atmel 8-bit Microcontroller with 4/8/16/32KBytes In-System Programmable Flash http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf

[4] Microcontroller tutorial made for begginer

https://www.newbiehack.com/MicrocontrollerTutorial.aspx

[5] Serial Peripheral Interface

https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi

[6.] MCP4922 12 bit DAC with SPI Interface

http://ww1.microchip.com/downloads/en/DeviceDoc/21897a.pdf

[7] Connect the FTDI board

http://www.instructables.com/id/BaW-Bot-Part-1-Build-an-Arduino-on-a-Board/step5/Connect-the-FTDI-board/

[8] FTDI Basic Breakout

https://www.sparkfun.com/products/9716

[9] Viorel Ioan Adrian, Iancu Vasile, „Masini si actionari electrice”, Litografia IPC-N, 1990

[10] Boțan N. V., Papadache Ilie, „Acționări și automatizări”, Editura Didactică și Pedagogică, 1979

[11] Petre Ivona Camelia, „Elemente de mecanisme și organe de mașini”, Bibliotheca, 2006

[12] Cupcea N., „Utilizarea amplificatoarelor operaționale”, Albastră, 2006

[13] Popescu Viorel, „Electronică de putere”, Editura de Vest, 2005

[14] Voicu M., „Introducere în Automatică”, Editura POLIROM, 2002

[15] Park J., Mackay S., „(Park J., 2003), „Data Acquisition for Instrumentation and Control Systems”, Elsevier, 2003.

[16] C tutorial

http://www.cprogramming.com/tutorial/c-tutorial.html

[17] Programming the microprocessor in C

https://engineering.purdue.edu/ece362/Labs/PDF/Programming_in_C_Tutorial.pdf

[18] Van Sickle Ted, „Programming Microcontrollers in C”,  Llh Technology Pub, 1994

[19] Jamsa Kris, „Visual Basic.NET. Sfaturi și Tehnici”, ALL, 2006

[20] Visual Basic Tutorial

http://www.tutorialspoint.com/listtutorials/visual-basic/vb.net/1

Acronime

DAC- Digital to analog converter

ADC- Analog to digital converter

MCU- Microcontroller

PWM- Pulse Width Modulation

SPI- Serial Peripheral Interface

USART- Universal Synchronus and Asynchronus serial Receiver and Transmitter

FTDI- Future Technology Devices International

I/O- Input/Output

PID-Regulator Proporțional Integrator Derivator

TG- Tahogenerator

MOSFET- Metal-Oxid-Semiconductor Field Effect Transistor

EEPROM – Electrically Erasable Programmable Read Only Memory

PROM- Programmable Read-Only Memory

VB- Visual Basic

Anexă

Bibliografie

[1] Dumitrache I., „Tehnica reglării automate”, Editura Didactică și Pedagogică, 1980

[2] Băieșu Alina Simona, „Tehnica reglării automate”, Matrixrom, 2012

[3] Atmel 8-bit Microcontroller with 4/8/16/32KBytes In-System Programmable Flash http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf

[4] Microcontroller tutorial made for begginer

https://www.newbiehack.com/MicrocontrollerTutorial.aspx

[5] Serial Peripheral Interface

https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi

[6.] MCP4922 12 bit DAC with SPI Interface

http://ww1.microchip.com/downloads/en/DeviceDoc/21897a.pdf

[7] Connect the FTDI board

http://www.instructables.com/id/BaW-Bot-Part-1-Build-an-Arduino-on-a-Board/step5/Connect-the-FTDI-board/

[8] FTDI Basic Breakout

https://www.sparkfun.com/products/9716

[9] Viorel Ioan Adrian, Iancu Vasile, „Masini si actionari electrice”, Litografia IPC-N, 1990

[10] Boțan N. V., Papadache Ilie, „Acționări și automatizări”, Editura Didactică și Pedagogică, 1979

[11] Petre Ivona Camelia, „Elemente de mecanisme și organe de mașini”, Bibliotheca, 2006

[12] Cupcea N., „Utilizarea amplificatoarelor operaționale”, Albastră, 2006

[13] Popescu Viorel, „Electronică de putere”, Editura de Vest, 2005

[14] Voicu M., „Introducere în Automatică”, Editura POLIROM, 2002

[15] Park J., Mackay S., „(Park J., 2003), „Data Acquisition for Instrumentation and Control Systems”, Elsevier, 2003.

[16] C tutorial

http://www.cprogramming.com/tutorial/c-tutorial.html

[17] Programming the microprocessor in C

https://engineering.purdue.edu/ece362/Labs/PDF/Programming_in_C_Tutorial.pdf

[18] Van Sickle Ted, „Programming Microcontrollers in C”,  Llh Technology Pub, 1994

[19] Jamsa Kris, „Visual Basic.NET. Sfaturi și Tehnici”, ALL, 2006

[20] Visual Basic Tutorial

http://www.tutorialspoint.com/listtutorials/visual-basic/vb.net/1

Similar Posts

  • Arie Naturală Protejată Rosci0229 Siriu

    CUPRINS INTRODUCERE SECȚIUNEA 1 – Analiza critică a stadiului de cunoaștere și integrarea cunoașterii Capitolul 1: Conceptul de management participativ al ariilor naturale protejate Conservarea biodiversității și ariile naturale protejate Conceptele de guvernare și administrare/management Managementul participativ Definirea și identificarea factorilor interesați dintr-o arie naturală protejată Instrumente participative Capitolul 2: Categoriile de arii naturale protajate…

  • Separatorul Centrifugal de Lapte

    CAPITOLUL 1 GENERALITĂȚI 1.1 Noțiuni introductive din industria laptelui Consumatorii din țara noastră, în ultimii 20 de ani, și-au manifestat interesul pentru o alimentație sănătoasă, devenind principalul factor de influența asupra noilor tendințe apărute pe piața de alimente. Obiectivul principal rămâne îmbunătățirea sănătății oamenilor, printr-o mai bună calitate a alimentelor și un control mai bun…

  • Proiectarea Unei Sonde de Foraj Marin pe Structura Lebada

    CUPRINS INTRODUCERE 1. GEOLOGIA STRUCTURII 1.3. CONSIDERAȚII LITO-STRATIGRAFICE ȘI STRUCTURALE 1.4. AGENȚI CONTAMINANȚI PENTRU FLUIDUL DE FORAJ 1.5. GRADIENȚII DE PRESIUNE, FISURARE ȘI TEMPERATURĂ ȘI COMANDA GEOLOGO-TEHNICĂ 1.6. DIFICULTĂȚI DE FORAJ 2. ACȚIUNEA MEDIULUI MARIN 2.1. ACȚIUNEA VALURILOR 2.2. ACȚIUNEA VÂNTURILOR 2.3. ACȚIUNEA CURENȚILOR MARINI 3. DESCRIEREA PLATFORMEI DE FORAJ 4. PROGRAMUL DE CONSTRUCȚIE AL…

  • Proiectarea Unui Racitor de Ulei

    CUPRINS Date de proiectare………………………………………………………………………………3 Principalele simboluri utilizate…………………………………………………………………4 Introducere………………………………………………………………………………………5 Capitolul I : Necesitatea răcirii lagărelor………………………………………………..6 Răcirea cu lichid…………………………………………………………………………7 Capitolul II : Schimbătoare de căldură…………………………………………………9 2.1. Probleme generale……………………………………………………………………….9 2.2. Clasificarea schimbătoarelor de căldură……………………………………………….9 2.3. Proprietățile agenților termici………………………………………………………….12 2.4. Tipul schimbătorului de căldură proiectat…………………………………………….13 2.5. Țevi speciale pentru îmbunătățirea transferului termic………………………………19 2.6. Uzura și deteriorarea țevilor în exploatare……………………………………………23…

  • Intretinerea Si Repararea Masinilor Electrice

    TEMA: TEHNOLOGIA ÎNTREȚINERII ȘI REPARĂRII MAȘINILOR ELECTRICE ARGUMENT Funcționarea sigură și continuă a utilajelor electromecanice are o importanță deosebită in realizarea procesului de reparare. Asigurarea unui mers fără deranjamente si avarii este strâns legată de realizarea unei exploatări cât mai raționale a utilajelor , în vederea detectării la timp a oricăror defecte și luarea de…

  • Automatizarea Unei Statii de Pompare din Statia de Epurare

    CUPRINS TERMINOLOGIE ABREVIERI UTILIZATE ÎN LUCRARE INTRODUCERE În ultimii 30 de ani problematica protecției mediului a devenit o componentă esențială a strategiei dezvoltării, precum și un criteriu important în opțiunile majorității consumatorilor. Până acum, elementele ce țin de protecția mediului au fost tratate la nivel tehnologic și managerial. Stabilirea originii și a caracteristicilor calitative ale…