Lab 3. Placa de Achiziţie Date Multiplexoare, Circuite de Eşantionare-memorare, Convertoare...

Post on 11-Nov-2015

259 views 0 download

description

Placa de achizitie

Transcript of Lab 3. Placa de Achiziţie Date Multiplexoare, Circuite de Eşantionare-memorare, Convertoare...

  • L3. SMAPD

    1

    Lucrarea 3. Placa de achiziie date: multiplexoare, circuite de eantionare-memorare, convertoare analog-numerice i numericanalogice

    Progresele nregistrate n domeniul senzorilor i al traductoarelor, al electronicii i al informaticii au contribuit la organizarea n mod raional i economic a numeroaselor msurri necesare astzi n industrie.

    Spre exemplu, controlul, supravegherea i comanda unei centrale termoelectrice necesit n mod normal mii de msurri. Aceast tendin explic dezvoltarea foarte rapid a instrumentaiei numerice de msurare. Numeroasele mrimi ce trebuie msurate sunt desfurate n spaii largi i foarte diferite ca natur (temperaturi, presiuni, turaii, eforturi etc.).

    Semnalele de msurare trebuie transmise la un centru de prelucrare i utilizare a informaiilor, aflate de asemenea la distan. Pentru a evita diafonia dintre canalele de transmisie, dar i din motive de economie, se utilizeaz multiplexorul, care cupleaz pe rnd canalele de msurare la linia de transmisie. El este comandat fie de o logic cablat, fie mai ales de un microprocesor sau microcalculator, dup un program adecvat.

    n funcie de cerinele sistemului de msurare, o parte din componentele lanurilor pot fi comune, de exemplu: amplificatorul, circuitul de eantionare i memorare etc.

    Utilizarea microprocesorului sau a calculatorului numeric presupune, obligatoriu, utilizarea

    unor convertoare analog-numerice (CAN) sau numeric-analogice (CAN) pentru trecerea de la

    mrimile analogice la semnale numerice i invers.

    Se obine astfel un sistem de msurare i achiziie de date a crui arhitectur poate fi diferit, n funcie de cerinele impuse de sistemul industrial de supravegheat i controlat i n funcie de componentele utilizate n sistemul de msurare.

    Figura 1. Structura unui lant numeric de masurare

    Arhitectura unui lan de msurare numeric este prezentata in figura 1. El conine o parte analogic, format din traductor i condiionerul semnalului analogic, o parte de conversie analog-numeric, format din circuitul de eantionare-memorare (EM) i convertorul analog-

  • L3. SMAPD

    2

    numeric (CAN), partea numeric propriu-zis, format din convertoarele de prelucrare numeric, microprocesor, afiaj numeric etc.

    Creterea complexitii sistemelor de msurare a condus la nlocuirea logicii cablate, ceea ce a permis creterea performanelor i scderea costurilor. Printre funciile caracteristice ncredinate microcalculatoarelor, se pot enumera: gestiunea dinamic a semnalelor provenind de la mai multe canale, dup un algoritm

    stabilit;

    memorarea informaiilor n scopul utilizrii lor ulterioare; supravegherea unor parametri i declanarea unor alarme ierarhizate sau a unor

    comenzi;

    trimiterea rezultatelor pe o reea telefonic sau informatic; extragerea unor semnale prin autocorelaie, intercorelaie, filtraje numerice; analiza n frecven a semnalelor prin transformata Fourier rapid (FFT); analize statistice: teste parametrice; domeniul de ncredere, extrapolri, sinteze; prezentarea grafic a rezultatelor.

    Aceste funcii pot fi realizate prin program sau utiliznd componente numerice integrate specializate.

    Multiplexorul (MUX) este o component electronic ce conine o baterie de comutatoare analogice cu ieirile legate mpreun, numrul de comutatoare determinnd numrul de canale de intrare. Comanda nchiderii i deschiderii comutatoarelor este efectuat printr-o intrare de selectare a canalului, care este o intrare logic, coninnd unul sau mai muli bii. Cu un bit, de exemplu, se pot comanda dou ci, cu n bii, 2n canale.

    MUX-urile curent ntlnite sunt cu 4, 8 sau 16 canale. Fiecare canal este comandat prin

    adresa sa, care este de fapt numrul canalului. Adresarea poate fi fcut fie secvenial, fie aleatoriu. n ultimul caz, rolul de programator l poate avea numai microprocesorul, care

    adreseaz direct fiecare canal, n timp ce, n modul secvenial, fiecare canal este adresat ntr-o ordine bine definit, unul dup altul.

    Prezena n calculatorul nsui a convertoarelor CAN i CNA simplific sarcinile de conectare i programare ale MUX i DEMUX. Semnalele de msurare obinute la senzori, condiionate corespunztor n tensiune cu nivel standard (2,5 V, 5 V), sunt aplicate multiplexorului analogic (MUX) care le comut pe rnd, conform programului, la intrarea circuitului de eantionare i memorare E&M i la convertorul analog-numeric (CAN), pentru a fi convertite numeric.

    Unitatea central (UC) prelucreaz numeric aceste eantioane, conform programului implementat n memoria de baz (HDD), unde sunt transferate i rezultatele finale. Pentru prelucrri numerice curente, este disponibil i o memorie de lucru (RAM) mai rapid. Pentru comenzi i controlul proceselor, este utilizat un DEMUX care dirijeaz informaiile spre utilizatorii digitali sau analogici (caz n care este necesar conversia numeric-analogic cu CAN).

    Pentru implementarea i modificarea programelor, este prevzut posibilitatea conectrii, permanente sau ocazionale, a unei tastaturi i a unui display. De asemenea, pot fi conectate,

  • L3. SMAPD

    3

    opional, o imprimant pentru tipriri de documente i un MODEM pentru transmisii la distan.

    Astfel de arhitecturi cu calculator de proces sunt curent utilizate n aplicaii industriale, la linii tehnologice sau de prelucrare, la centralele electrice etc. Atunci cnd sistemul de

    msurare este conceput i proiectat s monitorizeze un anumit proces, este implementat i realizat o dat cu aceasta i este optimizat n funcie de cerinele tehnice ale acestuia.

    In figura 2 este prezentata o structur posibil a unui sistem de msurare i achiziie de date tipic utilizrii microprocesoarelor (P). Se regsesc i aici convertoarele CAN i CNA, MUX, DEMUX, cu diferena c funciile corespunztoare sunt realizate n general de circuite specializate i nu de microprocesorul nsui. De subliniat c P este completat cu circuitele uzuale:

    I/O (Input / Output) interfa de intrare ieire; ROM - (Read Only Memory) memorie implementat cu program; RAM (Random Acces Memory) memorie de lucru i stocare intermediar; TIMER ceas baz de timp pentru derularea operaiilor.

    Figura 2. Sistem de achiziie de date cu microprocesor

    Tastatura, display-ul, respectiv imprimanta sunt fie prezente tot timpul, la cerere, fie numai la

    punerea n funciune, dup caz. Memoria extern i MODEM-ul nu figureaz dect dac este necesar. n majoritatea cazurilor, partea opional lipsete.

  • L3. SMAPD

    4

    APLICATIA 1.

    Sa se realizeze un sistem de masurare a temperaturii apei utilizand un senzor de

    temperatura digital in mediul Arduino.

    Figura 3. Schema circuitului de masurare a temperaturii apei ( -55 : 150 C)

    Codul programului "SenzTempAPA.ino"

    // Masurare Temperatura Apa cu senzorul digital de temperatura DS18B20

    // Librarii utile :

    // http://www.pjrc.com/teensy/td_libs_OneWire.html

    // sau

    // DallasTemperature library

    // http://milesburton.com/Dallas_Temperature_Control_Library

    #include

    OneWire ds(2); // este necesar un resistor de 4.7K intre pinul 2 si pinul 5V

    void setup(void) {

    Serial.begin(9600);

    }

    void loop(void) {

    byte i;

    byte present = 0;

    byte type_s;

    byte data[12];

    byte addr[8];

    float celsius;

    if ( !ds.search(addr)) {

    ds.reset_search();

    delay(250);

  • L3. SMAPD

    5

    return;

    }

    if (OneWire::crc8(addr, 7) != addr[7]) {

    return;

    }

    switch (addr[0]) {

    case 0x10:

    type_s = 1;

    break;

    case 0x28:

    type_s = 0;

    break;

    case 0x22:

    type_s = 0;

    break;

    default:

    return;

    }

    ds.reset();

    ds.select(addr);

    ds.write(0x44, 1);

    delay(1000);

    present = ds.reset();

    ds.select(addr);

    ds.write(0xBE);

    //Serial.print(" Data = ");

    //Serial.print(present, HEX);

    //Serial.print(" ");

    for ( i = 0; i < 9; i++) {

    data[i] = ds.read();

    //Serial.print(data[i], HEX);

    //Serial.print(" ");

    }

    int16_t raw = (data[1]

  • L3. SMAPD

    6

    celsius = (float)raw / 16.0;

    Serial.print(" Temperatura = ");

    Serial.print(celsius);

    Serial.println(" oC ");

    }

    Se adauga libraria de programe OneWire

    Se compileaza codul sursa

    Se selecteaza mediul de lucru

  • L3. SMAPD

    7

    Se selecteaza portul serial

    Se incarca programul

  • L3. SMAPD

    8

    Se selecteaza ecranul serial

    Rezultatul programului

  • L3. SMAPD

    9

    Se salveaza datele intr-un fisier extern

    Se traseaza graficul variatiei temperaturii in timp

  • L3. SMAPD

    10

    APLICATIA 2.

    Sa se realizeze un sistem de masurare a temperaturii apei in mediul Arduino (datele

    sunt afisate pe ecran si salvate in fisiere externe) .

    Codul programului "SenzTempAPA_SDCard.ino":

    // Masurare Temperatura Apa cu senzorul digital de temperatura DS18B20

    // Librarii utile :

    // http://www.pjrc.com/teensy/td_libs_OneWire.html sau

    // DallasTemperature library

    // http://milesburton.com/Dallas_Temperature_Control_Library

    /*

    SD card datalogger

    This example shows how to log data from the analog sensors

    to an SD card using the SD library.

    The circuit:

    * analog sensors on analog pins 2

    * SD card attached to SPI bus as follows:

    ** MOSI - pin 11

    ** MISO - pin 12

    ** CLK - pin 13

    ** CS - pin 10 Arduino UNO ( pin 54 Arduino MEGA)

    */

    #include

    #include

    const int chipSelect = 10;

  • L3. SMAPD

    11

    #include

    #include

    OneWire ds(2);

    #include

    #include // F Malpartida's NewLiquidCrystal library

    //Download: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

    #define I2C_ADDR 0x27 // Define I2C Address for the PCF8574T

    #define BACKLIGHT_PIN 3

    #define En_pin 2

    #define Rw_pin 1

    #define Rs_pin 0

    #define D4_pin 4

    #define D5_pin 5

    #define D6_pin 6

    #define D7_pin 7

    #define LED_OFF 1

    #define LED_ON 0

    LiquidCrystal_I2C

    lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

    void setup(void) {

    Serial.begin(9600);

    Serial.print("Initializare SD card...");

    pinMode(10, OUTPUT);

    if (!SD.begin(chipSelect)) {

    Serial.println("Eroare SD Card , sau nu este prezent");

    return;

    }

    Serial.println("SDCard initializat");

    lcd.begin (16,2); // initializare LCD

    lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);

    lcd.setBacklight(LED_ON);

    }

    void loop(void) {

    byte i;

    byte present = 0;

    byte type_s;

    byte data[12];

    byte addr[8];

    float celsius;

    if ( !ds.search(addr)) {

    ds.reset_search();

  • L3. SMAPD

    12

    delay(250);

    return;

    }

    if (OneWire::crc8(addr, 7) != addr[7]) {

    return;

    }

    switch (addr[0]) {

    case 0x10:

    type_s = 1;

    break;

    case 0x28:

    type_s = 0;

    break;

    case 0x22:

    type_s = 0;

    break;

    default:

    return;

    }

    ds.reset();

    ds.select(addr);

    ds.write(0x44, 1);

    delay(1000);

    present = ds.reset();

    ds.select(addr);

    ds.write(0xBE);

    for ( i = 0; i < 9; i++) {

    data[i] = ds.read();

    }

    int16_t raw = (data[1]

  • L3. SMAPD

    13

    lcd.backlight();

    lcd.setCursor(0, 0);

    lcd.print("Temp APA");

    lcd.setCursor(0, 1);

    lcd.print(celsius);

    lcd.print(" ");

    lcd.print(" oC");

    lcd.home();

    Serial.print(" Temperatura ");

    Serial.print(celsius);

    Serial.println(" oC ");

    File dataFile = SD.open("datalog.txt", FILE_WRITE);

    if (dataFile) {

    dataFile.print(" Temperatura ");

    dataFile.println(celsius);

    dataFile.close();

    }

    else {

    Serial.println("error opening datalog.txt");

    }

    }

    Rezultatul programului

  • L3. SMAPD

    14

  • L3. SMAPD

    15

    Figura 4. Schema de montaj a sistemului de masurare a temperaturii apei