Monday, May 23, 2016

ARDUINO THERMOMETER

Setelah di bahas tentang pengertian arduino sekarang mulailah membuat sebuah project ya itu arduino thermometer atau alat pengukur suhu yang bisa di aplikasikan dengan perangkat lain ataupun memodifikasi nya untuk komponen yang di perlukan adalah :

1. Board arduino (uno R3, Mini, dll)
2. I2c LCD adapter
3. Thermistor
4. Resistor 10K

karena project ini menggunakan LCD I2C maka akan di butuhkan library dari perangkat LCD tersebut , untuk library nya bisa mencari di google, sekarang kita mulai pembuatan source code nya

// membuat thermometer

// pin untuk termistor
#define THERMISTORPIN A0
// resistance at 25 degrees C
#define THERMISTORNOMINAL 11420
// temp. for nominal resistance (25 C)
#define TEMPERATURENOMINAL 25
// how many samples to take and average, more takes longer
// but is more 'smooth'
#define NUMSAMPLES 5
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3900
// the value of the 'other' resistor
#define SERIESRESISTOR 10000

// then define the LCD
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x3F // <<- Add your address here.
#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

int samples[NUMSAMPLES];

void setup(void) {
  lcd.begin (16, 2); // <<-- change for your LCD size if needed
  //LCD Backlight ON
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.home (); // go home on LCD
  lcd.print("Your temperature:");
}

void loop(void) {
  uint8_t i;
  float average;

  // take N samples in a row, with a slight delay
  for (i = 0; i < NUMSAMPLES; i++) {
    samples[i] = analogRead(THERMISTORPIN);
    delay(10);
  }

  // average all the samples out
  average = 0;
  for (i = 0; i < NUMSAMPLES; i++) {
    average += samples[i];
  }
  average /= NUMSAMPLES;

 
  // convert the value to resistance
  average = 1023 / average - 1;
  average = SERIESRESISTOR / average;

  float steinhart;
  steinhart = average / THERMISTORNOMINAL;     // (R/Ro)
  steinhart = log(steinhart);                  // ln(R/Ro)
  steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                 // Invert
  steinhart -= 273.15;                         // convert to C
  lcd.setCursor (0,1); // go to start of 2nd line
  lcd.print(steinhart);
  lcd.print(" Celsius  ");
 
  delay(1000);
}


setelah selesain menyalin kode di atas coba di compile dengan sofware arduino apakah terdapat eror, apabila terdapat eror coba analisa di mana letak eror tersebut , setelah di pastikan tidak terdapat eror maka kita lanjutkan konfigurasi wiring nya seperti berikut

setelah memasang konfigurasi wiring seperti di atas maka dilanjutkan mendownload source code yang telah di compile ke arduino , untuk konfigurasi LCD telah terdefinisi pada source code ( LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); ) maka untuk wiring LCD di sambungkan ke pin D4, D5, D6, D7 setelah semua wiring terpasang dengan benar maka saat nya di coba , apabila berhasil maka akan menunjukan suhu pada LCD tersebut.