Podržite http://amicus.ba malom donacijom

Nedjelja 21 Oktobar 2018

Ocjene članaka: 0 / 5

Zvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivna
 

Na slici ispod je spoj Arduino Uno, termistora i SD Card modula koji je zaseban modul sa SD slotom za korištenje SD kartica ili microSD kartice u SD adapteru.

Termistor termometar AREF SD kartica

Budući da je na slici iznad korišten zasebani SD card modul koji se spaja preko breadboard-a, posebnu pažnju treba obratiti na spajanje pojedinih pinova SD card modula. Naglašavam da se radi o SD card modulu, jer postoje i microSD slotovi koji dolaze zajedno sa LAN shield-om (mrežna kartica sa RJ45 konektorom). Takav shield se postavi direktno na Arduino zbog čega postoji vrlo mala vjerovatnoća greške pri spajanju.

SD modulNa slici lijevo je SD card module (pogled odozgo) na kome su označeni pinovi.

Za pristup podacima na SD kartici je, u sketch, potrebno uključiti biblioteke SPI.h i SD.h

U tabeli ispod je raspored spajanja pinova samostalnog SD card modula na Arduino Uno ploču.

SD card pin

Arduino pin

GND

GND

5V

5V

SDCS

pin4

MOSI

pin11

MISO

pin12

SCK

pin13

 

Ispod je kôd sketch-a koji, u svakom ciklusu, 5 puta uzastopno pročita analognu vrijednost Arduini pina 1 te na osnovu tih vrijednosti izračuna prosječnu analognu vrijednost i to predstavlja očitanu vrijednost u jednom ciklusu.

Na osnovu analogne vrijednosti napona računa se otpor termistora a nakon toga i vrijednost temperature po Steinhart-Hart metodu. Izmjerena/izračunata temperatura se prikazuje na Serial monitoru i upisuje u file temps.log na SD kartici (kopirajte kompletan kôd ispod u Arduino IDE prozor i upload-ujte ga na Arduino) :

/*
 * MJERENJE TEMPERATURE UZ POMOĆ TERMISTORA
 * I UPIS IZMJERENIH VRIJEDNOSTI NA SD KARTICU
 *
 * Autor: Samir Gutić
 * URL: http://amicus.ba
 * Datum: 16. III 2017.
 *
 * GND      GND
 * 5V       5V
 * SDCS pin 4
 * MOSI pin 11
 * MISO pin 12
 * SCK  pin 13
 *
 */

float floatSuma;
float floatProsjek;
float floatOtpor;
float floatTemperatura;

//Vrijeme refreširanja prikaza temperature
#define intOdgoda 3000

//Pin za analogno očitavanje
#define pinAnalogTerm  A1

//Vrijednost rednog otpornika u omima
#define redniOtpor 9900  

//Broj očitavanja za računanje prosječne vrijednosti
#define intBrCitanja 5

//Otpor na 20.6 stepeni C
#define intTermistorNa25 12080   

//Nominalna temperatura  
#define intNominalnaTemp 20.6  
 
//Beta koeficijent termistora (obično 3000-4000)
#define intBetaKoeficijent 4016.032

#include <SPI.h>
#include <SD.h>

//Deklaracija dokumenta
File sdDokument;

void setup()
{
  //Otvaranje serijske komunikacije i čekanje na otvaranje porta
  Serial.begin(9600);
  while (!Serial)
  {
    ; //Čekanje na konekciju na serijski port. Potrebno samo za native USB port.
  }

  //Prikaz informacija na serijski port
  Serial.println("Inicijalizacija SD kartice.");

  if (!SD.begin(4))
  {
    Serial.println("Inicijalizacija SD kartice nije uspjela!");
    return;
  }
  Serial.println("Izvrsena je inicijalizacija SD kartice.");

  //Spojiti AREF na 3.3V i koristiti za napajanje (manje smetnji nego na 5V)
  analogReference(EXTERNAL);
}

void loop()
{
  //Očitavanje vrijednosti sa termistora
  floatSuma = 0;
  for (int i=0; i<intBrCitanja; i++)
  {
    floatSuma = floatSuma+analogRead(pinAnalogTerm);
    delay(10);
  }
   
  //Računanje prosječne vrijednosti u zadnjih intBrCitanja očitavanje
  floatProsjek = floatSuma/intBrCitanja;
 
  //Konverzija vrijednosti u otpor
  floatOtpor = redniOtpor*floatProsjek/(1023-floatProsjek);
 
  // Steinhart-Hart metod računanja
  floatTemperatura = floatOtpor / intTermistorNa25;          // (R/Ro)
  floatTemperatura = log(floatTemperatura);                  // ln(R/Ro)
  floatTemperatura = floatTemperatura/intBetaKoeficijent;    // 1/B * ln(R/Ro)
  floatTemperatura = floatTemperatura+1.0 / (intNominalnaTemp + 273.15); // + (1/To)
  floatTemperatura = 1.0 / floatTemperatura;                 // Invertovati vrijednost
  floatTemperatura = floatTemperatura-273.15;                // Konverzija u stepene C
 
  //Prikaz temperature
  Serial.print("Temperatura: ");
  Serial.print(floatTemperatura);
  Serial.println("°C");
  Serial.println("--------------------");

  //Upis temperature u file temps.log
  //Otvaranje dokumenta.
  //Dozvoljeno je imati samo jedan otvoren dokument
  //Prije otvaranja drugog dokumenta treba zatvoriti prethodno otvoreni
  sdDokument = SD.open("temps.log", FILE_WRITE);

  //Ako je otvaranje uspjelo, upisati podatke
  if (sdDokument)
  {
    //Prikaz informacija na serijski port
    Serial.println("Upis u temps.log");

    //Upis vrijednosti varijable floatTemperatura u file temps.log na SD kartici
    sdDokument.print(floatTemperatura);
    sdDokument.print(",");
     
    //Zatvoriti otvoreni file
    sdDokument.close();
  }
  else
  {
    //Ako nije uspjelo otvaranje file-a na SD kartici
    Serial.println("Greska pri otvaranju temps.log");
  }

  delay(intOdgoda);
}

Sketch iznad, u svakom ciklusu otvara file temps.log u modusu za upis, te u njega dopiše vrijednost varijable floatTemperatura i zatvori file. Varijabla floatTemperatura je vrijednost temperature izmjerena u trenutnom ciklusu.

Šema spoja elemenata kreirana u Fritzing programu je na slici ispod.

Termistor termometar AREF SD kartica - breadboard

Na šemi iznad su pinovi SD modula označeni svojim imenima (sa donje strane pločice modula).

Kao što se vidi sa šeme iznad, pin GND SD modula je povezan na Arduino GND, 5V pin SD modula je povezan na 5V Arduino pin, SDCS pin SD modula je povezan na Arduino pin4, MOSI modula SD modula j epovezan na Arduino pin11, MISO pin SD modula je povezan na Arduino pin12 i SCK pin SD modula je povezan na Arduino pin13.

Električna šema spoja je na sljedećoj slici.

Arduino termometar sa termistorom u  AREF spoju i upis na SD karticu - električna šema

AREF spoj, kao što se vidi sa šeme iznad, koristi napon od 3.3V umjesto 5V jer sadrži manje šuma. Taj napon je doveden i na AREF pin i služi kao referentni napon.

Šta je uopšte termistor?NTC PTC karakteristike

Termistor je otpornik čiji otpor se mijenja sa promjenom temperature. To znači da postoje otpornici čiji otpor opada sa porastom temperatute - NTC otpornici i oni čiji otpor raste sa porastom temperature - PTC otpornici.

Na slici desno su karakteristike promjene otpora oba tipa termistora. Sa karakteristika se jasno vidi da otpor nije linearno odvisan od temperature što znači da ni proračun temperature na osnovu promjene otopra nije linearan.

Međutim, budući da se mjerenje tempreture uglavnom vrši u nekom uskom opsegu, to se za taj opseg koristi linearna aproksimacija stvarne karakteristike. Budući da je, na manjem opsegu temperatura stvarna karakteristika prilično linearna, to je i nastala greška prihvatljiva.

U ovom primjeru je korišten NTC termistor, ali je princip potpuno isti i z aslučaj PTC termistora.

Izmjerene temperature je moguće pratiti u prozoru Serial Monitora. Ispod je prikaz Serial Monitora koji prikazuje kako funkcioniše mjerenje temperature pomoću termistora u AREF spoju.

Termistor termometar AREF SD kartica - serial monitor

Potrebne komponente:

1 x Arduino UNO

1 x Breadboard (mala)

1 x SD card module

1x NTC termistor 12.08KΩ na 25ºC

1x otpornik 10KΩ

1 x SD kartica (ili μSD kartica u adapteru formatirana u FAT file sistemu)

Žice za spajanje

Time je Arduino pretvoren u termometar koji izmjerene temperature loguje u file na SD kartici. Dodavanjem LCD display-a je moguće 'uživo' pratiti izmjerenu temperaturu. O tome u članku Termistor termometar i prikaz temperature na LCD display 16x2.

Dodaj komentar

Komentari odražavaju stavove svojih autora a NE stavove http://amicus.ba. Možete slobodno izraziti svoje mišljenje o članku koji komentarišete ili o komentarima drugih sve dok su vaš komentari u granicama uljudnosti. Uvredljivi, vulgarni, rasistički, nacionalistički i ostali opšte neprihvatljivi komentari će biti izbrisani! Ako imate neku sugestiju, prijedlog ili primjedbu ovo je dobro mjesto da je iznesete.

Svaki komentar će pregledati administrator.


Sigurnosni kod
Refreširaj

Amicus copyright 2018