Hitung Azimut dan Altitude Matahari Arduino

Posted on

Pendahuluan

Hitung Azimut dan Altitude Matahari Menggunakan Arduino – Sudut azimut dan elevasi merupakan dua konsep penting dalam ilmu matahari yang digunakan untuk menentukan posisi matahari di atas horizon.

Sudut azimut adalah sudut yang ditentukan dari arah utara horizon menuju matahari. Azimut matahari dapat digunakan untuk menentukan arah cahaya matahari yang masuk ke suatu ruangan atau bangunan.

Sudut Elevasi adalah ketinggian matahari di atas horizon. Elevasi dapat diukur dalam derajat, dimulai dari 0 derajat di horizon, dengan 90 derajat sebagai ketinggian maksimum di langit. Elevasi matahari dapat digunakan untuk menentukan intensitas cahaya matahari yang masuk ke suatu ruangan atau bangunan.

Kedua konsep ini sangat penting dalam desain arsitektur, khususnya dalam desain bangunan yang mengoptimalkan penggunaan cahaya matahari.

Dengan mengetahui sudut azimut dan elevasi matahari, arsitek dapat menentukan arah dan intensitas cahaya matahari yang masuk ke suatu ruangan, sehingga dapat mengoptimalkan pencahayaan alami dan menghemat biaya penerangan.

Selain itu, kedua konsep ini juga digunakan dalam bidang fotovoltaik dan penerangan jalan, untuk menentukan arah dan intensitas cahaya matahari yang diterima oleh panel surya atau lampu jalan.

Secara umum, kedua (azimute dan altitude) konsep ini sangat penting dalam menentukan posisi matahari dan memanfaatkan cahayanya untuk keperluan manusia. Sudut azimut dan elevasi matahari harus diperhitungkan dalam desain arsitektur, fotovoltaik, dan penerangan jalan untuk mengoptimalkan penggunaan cahaya matahari.

Kode Program

Untuk menghitung sudut azimut dan sudut altitude atau elevasi, kita membutuhkan parameter yaitu Latitude, Longitude, UTC Offset, Tanggal, Bulan, Hari, Jam, Menit dan Detik.

Disini kita membutuhkan sebuah library untuk mempermudah kita dalam melakukan perhitungan. Nama librarynya adalah SolarCalculator, silahkan download dengan klik tombol berikut:


Masukkan library ke Arduino IDE. Setelah itu, modif sedikit librarynya. Buka file SolarCalculator.cpp, cari baris:

double H = GMST + longitude - ra;

lalu ubah dengan:

double H = GMST - (latitude*1.795 ) - ra;

Lalu gunakan kode program berikut dan upload ke board arduino yang anda gunakan. Jika sudah diupload, buka serial monitor:


#include <SolarCalculator.h>
#include <TimeLib.h>

double latitude = 5.57157;
double longitude = 95.36569;
int utc_offset = 7;

int _year = 2023;
int _month = 1;
int _day = 11;

int _hour = 15;
int _minute = 0;
int _second = 0;

double az, el;

void setup() {
  Serial.begin(9600);

  // Set system time to compile time
  setTime(toUtc(compileTime()));

  // Set time manually (hr, min, sec, day, mo, yr)
  setTime(_hour, _minute, _second, _day, _month, _year);

  // Get current time
  time_t utc = now();

  calcHorizontalCoordinates(utc, latitude, longitude, az, el);

  Serial.println((String)"Azimuth            : " + (az) + " Derajat");
  Serial.println((String)"Elevation/Altitude : " + el + " Derajat");
  Serial.println();
}

void loop() {

}

// Code from JChristensen/Timezone Clock example
time_t compileTime()
{
  const uint8_t COMPILE_TIME_DELAY = 8;
  const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec";
  char chMon[4], *m;
  tmElements_t tm;

  strncpy(chMon, compDate, 3);
  chMon[3] = '\0';
  m = strstr(months, chMon);
  tm.Month = ((m - months) / 3 + 1);

  tm.Day = atoi(compDate + 4);
  tm.Year = atoi(compDate + 7) - 1970;
  tm.Hour = atoi(compTime);
  tm.Minute = atoi(compTime + 3);
  tm.Second = atoi(compTime + 6);
  time_t t = makeTime(tm);
  return t + COMPILE_TIME_DELAY;
}

time_t toUtc(time_t local)
{
  return local - utc_offset * 3600L;
}

Hasil

Jika sudah, maka anda akan melihat hasilnya seperti pada gambar dibawah ini. Kode program diatas, telah di samakan dengan website Sun Cal atau Sun Earth Tool.

Hitung Azimut dan Altitude Matahari Arduino

Itulah kode program yang dapat saya bagikan kepada anda. Semoga artikel Hitung Azimut dan Altitude Matahari menggunakan Arduino ini bermanfaat untuk anda.

Mungkin anda menyukai artikel ini :