-
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