WWW.USBINOV.COMPiranti USB untuk PC, Laptop dan Raspberry Pi.

Membuat Kontroler Suhu Dilengkapi Overheated Alarm dan Data Logger

tcwa_400Pada dua eksperimen sebelumnya: Membuat Data Logger Suhu dan Membuat Alarm Suhu Ruang Server, saya memberikan contoh sederhana untuk membaca data suhu, menyimpan data suhu dan membandingkan suhu terukur dengan suhu batas maksimum yang menyebabkan aktivasi buzzer jika suhu melebihi batas maksimum. Kedua eksperimen tersebut menggunakan modul USB-TC101 dan BASH Script. Mengapa BASH Script? Yang pertama agar kesan sederhananya muncul dan yang kedua karena semua linux pasti bisa menjalankan BASH Script. Hehehe…

Pada tulisan ini saya akan menyampaikan hasil eksperimen saya membuat kontroler suhu yang dilengkapi dengan alarm suhu dan data logger. Teknik pengontrolan suhu menggunakan teknik ON/OFF dengan HYSTERESIS. Skrip akan membaca data suhu, melakukan pengontrolan, melakukan pengecekan alarm dan melakukan logging. Foto di atas menunjukkan sistem kontrol suhu + alarm. Untuk memudahkan simulasi naik-turunnya suhu, sensor suhu saya tempelkan pada dinding lampu pijar 5W.

Pada eksperimen ini suhu target diset pada nilai 37.5 derajat Celcius dengan nilai hysteresis +/-0.5 dan batas suhu maksimal untuk alarm adalah 40 derajat Celcius. Pengaturan parameter kontrol seperti ini biasa diterapkan pada pengontrol suhu inkubator mesin penetas telur. Untuk aplikasi lain seperti pengering helm, pengering tembakau atau pasteurisasi, kita tinggal mengubah nilai dari parameter-parameter tersebut.

Nah, langsung saja, berikut adalah skrip BASH kontroler suhu dengan alarm dan data logger. Skrip saya usahakan sederhana dengan harapan skrip akan lebih mudah dipelajari, dipahami dan dikembangkan. Prinsip kerja sistem kontrol akan saya jelaskan bersamaan dengan penjelasan skrip.

Skrip Kontroler Suhu Dengan Alarm

# Skrip Temperature Controller With Alarm menggunakan modul USB-TC101
# Chandra MDE - Teknik Elektro Links
# raspi@teknikelektrolinks.com

#!/bin/bash

SV=37.5		#suhu target
HYS=0.5		#nilai hysteresis
AL=40.0		#suhu max --> alarm

> tcwa.log	#logfile

echo SUHU TARGET = $SV >> tcwa.log
echo HYSTERESIS  = $HYS >> tcwa.log
echo ALARM       = $AL >> tcwa.log
echo >> tcwa.log
echo TANGGAL, JAM, SUHU AKTUAL, STATUS HEATER, STATUS ALARM >> tcwa.log

while true
do
	datasuhu=$(sudo ./usbtc101c SUHU)
	IFS=' '
	set $datasuhu
	PV=$3

	echo SUHU AKTUAL = $PV, SUHU TARGET = $SV, HYSTERESIS = $HYS, ALARM = $AL

	#temperature controller
	cekon=$(echo "$SV - $PV >= $HYS" | bc)
	cekoff=$(echo "$PV - $SV >= $HYS" | bc)

	if [[ $cekon == 1 ]]
	then
		HEATER=ON
		sudo ./usbtc101c OUTPUT
	elif [[ $cekoff == 1 ]]
	then
		HEATER=OFF
		sudo ./usbtc101c output 
	fi

	#alarm
	alarmon=$(echo "$PV - $AL >= $HYS" | bc)
	alarmoff=$(echo "$AL - $PV >= $HYS" | bc)
	
	if [[ $alarmon == 1 ]]
	then
		ALARM="ON ---> OVERHEATED!"
		sudo ./usbtc101c ALARM
	elif [[ $alarmoff == 1 ]]
	then
		ALARM=OFF
		sudo ./usbtc101c alarm
	fi

	echo HEATER = $HEATER, ALARM = $ALARM
	echo

	#logging
	echo $(date +%F), $(date +%T), $PV, $HEATER, $ALARM >> tcwa.log
	
	sleep 1
done

Penjelasan Singkat Skrip

Pada bagian awal skrip didefinisikan variabel SV (Setting Value), HYS (Hysteresis) dan AL (Alarm) dan diciptakan file untuk logging bernama tcwa.log. File ini kemudian diisi dengan nilai-nilai parameter dan header data log yang terdiri dari Tanggal, Jam, Suhu Aktual, Status Heater dan Status Alarm.

SV=37.5		#suhu target
HYS=0.5		#nilai hysteresis
AL=40.0		#suhu max --> alarm

> tcwa.log	#logfile

echo SUHU TARGET = $SV >> tcwa.log
echo HYSTERESIS  = $HYS >> tcwa.log
echo ALARM       = $AL >> tcwa.log
echo >> tcwa.log
echo TANGGAL, JAM, SUHU AKTUAL, STATUS HEATER, STATUS ALARM >> tcwa.log

Selanjutnya skrip melakukan pembacaan suhu dan melakukan parsing untuk mendapatkan data nilai Suhu Aktual atau Present Value (PV) dan menampilkannya di layar console.

datasuhu=$(sudo ./usbtc101c SUHU)
IFS=' '
set $datasuhu
PV=$3
echo SUHU AKTUAL = $PV, SUHU TARGET = $SV, HYSTERESIS = $HYS, ALARM = $AL

usbtc101c adalah program Command-Line Interface untuk mengakses modul USB-TC101. Program ini merupakan bawaan modul yang memiliki versi Windows, Linux dan Linux ARM.

Setelah menampilkan data parameter dan status kontroler, skrip melakukan pengontrolan suhu menggunakan teknik kontrol ON-OFF dengan HYSTERESIS. Berbeda dengan eksperimen alarm suhu pada tulisan sebelumnya, pada skrip ini saya menggunakan bantuan paket program bc untuk melakukan proses aritmatika logika.

#temperature controller
cekon=$(echo "$SV - $PV >= $HYS" | bc)
cekoff=$(echo "$PV - $SV >= $HYS" | bc)

if [[ $cekon == 1 ]]
then
   HEATER=ON
   sudo ./usbtc101c OUTPUT
elif [[ $cekoff == 1 ]]
then
   HEATER=OFF
   sudo ./usbtc101c output 
fi

Paket program bc belum terinstalasi pada paket linux Raspbian, jadi kita perlu melakukan instalasi terlebih dahulu. Caranya mudah saja – aktifkan koneksi internet, buka terminal dan ketikkan perintah:

$sudo apt-get install bc

Setelah program bc terinstalasi, kita bisa uji instalasinya dengan memanggil program bc dan melakukan beberapa perhitungan aritmatika.

Prinsip Kerja Kontrol dan Alarm

Skrip melakukan pengontrolan suhu dan aktivasi alarm dengan menerapkan beberapa aturan sebagai berikut:

  1. Jika Suhu Target atau Setting Value (SV) ditambah dengan nilai Hysteresis belum tercapai, maka skrip akan menyalakan lampu pemanas.
  2. Jika Suhu Aktual telah melebihi Suhu Target ditambah dengan nilai Hysteresis, maka skrip akan mematikan lampu pemanas.
  3. Alarm akan diaktifkan jika Suhu Aktual melebihi batas maksimum yang telah ditentukan yakni 40 ditambah dengan nilai Hysteresis.
  4. Alarm akan dimatikan jika Suhu Aktual turun dibawah batas maksimum suhu dengan dikurangi dengan Hysteresis.

tcwa_on_400.jpg

Data logging dilakukan dengan menuliskan data Tanggal, Jam, Suhu Aktual, Status Heater dan Status Alarm ke dalam file tcwa.log. Proses pengontrolan suhu, pengecekan alarm suhu dan data logging dilakukan secara terus-menerus dalam perulangan tanpa syarat dengan interval tunda 1 detik.

#logging
echo $(date +%F), $(date +%T), $PV, $HEATER, $ALARM >> tcwa.log
sleep 1

Gambar berikut ini adalah screenshot console ketika skrip dijalankan.

tcwa_console

Dan berikut adalah penggalan data logging yang dihasilkan selama proses pengontrolan.

SUHU TARGET = 37.5
HYSTERESIS = 0.5
ALARM = 40.0

TANGGAL, JAM, SUHU AKTUAL, STATUS HEATER, STATUS ALARM
2014-11-30, 13:58:31, 43.0, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:33, 43.4, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:34, 43.1, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:36, 42.8, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:38, 42.5, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:39, 42.1, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:41, 41.7, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:43, 41.5, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:44, 41.1, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:46, 40.7, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:48, 40.4, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:49, 40.0, OFF, ON ---> OVERHEATED!
2014-11-30, 13:58:51, 39.5, OFF, OFF
2014-11-30, 13:58:53, 39.1, OFF, OFF
2014-11-30, 13:58:54, 38.6, OFF, OFF
2014-11-30, 13:58:56, 38.2, OFF, OFF
2014-11-30, 13:58:58, 38.0, OFF, OFF
2014-11-30, 13:58:59, 37.6, OFF, OFF
2014-11-30, 13:59:01, 37.3, OFF, OFF
2014-11-30, 13:59:02, 36.9, ON, OFF
2014-11-30, 13:59:04, 36.9, ON, OFF
2014-11-30, 13:59:06, 37.2, ON, OFF
2014-11-30, 13:59:07, 37.5, ON, OFF
2014-11-30, 13:59:09, 37.8, ON, OFF
2014-11-30, 13:59:10, 38.4, OFF, OFF
2014-11-30, 13:59:12, 38.5, OFF, OFF
2014-11-30, 13:59:14, 38.4, OFF, OFF
2014-11-30, 13:59:15, 38.3, OFF, OFF
2014-11-30, 13:59:17, 38.1, OFF, OFF
2014-11-30, 13:59:19, 37.9, OFF, OFF
2014-11-30, 13:59:20, 37.6, OFF, OFF
2014-11-30, 13:59:22, 37.3, OFF, OFF
2014-11-30, 13:59:23, 37.1, OFF, OFF
2014-11-30, 13:59:25, 36.9, ON, OFF
2014-11-30, 13:59:27, 36.8, ON, OFF
2014-11-30, 13:59:28, 37.0, ON, OFF
2014-11-30, 13:59:30, 37.5, ON, OFF
2014-11-30, 13:59:32, 38.0, OFF, OFF
2014-11-30, 13:59:33, 38.2, OFF, OFF
2014-11-30, 13:59:35, 38.1, OFF, OFF
2014-11-30, 13:59:37, 38.0, OFF, OFF
2014-11-30, 13:59:38, 37.8, OFF, OFF
2014-11-30, 13:59:40, 37.7, OFF, OFF
2014-11-30, 13:59:41, 37.5, OFF, OFF
2014-11-30, 13:59:43, 37.2, OFF, OFF
2014-11-30, 13:59:44, 36.9, ON, OFF
2014-11-30, 13:59:46, 36.9, ON, OFF
2014-11-30, 13:59:48, 37.2, ON, OFF
2014-11-30, 13:59:49, 37.5, ON, OFF
2014-11-30, 13:59:51, 38.1, OFF, OFF
2014-11-30, 13:59:53, 38.2, OFF, OFF
2014-11-30, 13:59:54, 38.1, OFF, OFF
2014-11-30, 13:59:56, 38.0, OFF, OFF
2014-11-30, 13:59:57, 37.7, OFF, OFF
2014-11-30, 13:59:59, 37.6, OFF, OFF
2014-11-30, 14:00:01, 37.3, OFF, OFF
2014-11-30, 14:00:02, 37.0, ON, OFF
2014-11-30, 14:00:04, 37.1, ON, OFF
2014-11-30, 14:00:05, 37.4, ON, OFF
2014-11-30, 14:00:07, 37.8, ON, OFF
2014-11-30, 14:00:09, 38.1, OFF, OFF
2014-11-30, 14:00:10, 38.4, OFF, OFF
2014-11-30, 14:00:12, 38.2, OFF, OFF
2014-11-30, 14:00:13, 38.1, OFF, OFF

Data dalam file tcwa.log dapat diolah lebih lanjut menggunakan program spreadsheet. Kita juga bisa menampilkan grafik perubahan suhu menggunakan program gnuplot atau Python dengan modul Matplotlib.

Nah, demikianlah hasil eksperimen saya membuat kontroler suhu sederhana yang dilengkapi dengan fitur alarm dan data logging menggunakan modul USB-TC101 dengan skrip BASH.

Terima kasih sudah membaca dan semoga bermanfaat.

Selamat berkarya.

One Comment

Add a Comment

Your email address will not be published. Required fields are marked *