Sesungguhnya setelah kesulitan itu ada kemudahan...(QS. Al Insyirah: 5)
The Implementation of FPGA Spartan-3 for Humidity Controller and Temperature Display for Miselum J. Tiram Incubator
Abstrak–
Dalam
penelitian ini telah dibuat system pengendali kelembaban dan penampil suhu
untuk inkubator Miselum J. Tiram.Kontroler
yang digunakan dalam alat ini yaitu FPGA dalam Spartan-3 development board
yang berbasis pada program VHDL. Alat ini memiliki 1 masukan 8 bit, 2 keluaran untuk logika
kelembaban dan 7 keluaran untuk display 7-Segment. Dari keluaran ini akan dihasilkan pengatur kelembaban seperti yang diinginkan dengan penampil suhu lingkungan inkubator.
Data
suhu
dan kelembaban diperoleh dari sensor HSM-20G, data ini
berupa data analog yang dikonversi ke digital menggunakan ADC 8 bit 0809. Keluaran
ADC merupakan masukan untuk FPGA. Keluaran FPGA akan menentukan aksi dari aktuator, sehingga dengan
bantuan driver mengaktifkan sprayer untuk mencapai kelembaban yang disesuaikan dengan kebutuhan jamur tiram.
Perancangan Sistem
Perancangan perangkat keras alat
ukur suhu dan pengendali kelembaban pada inkubator Miselum J.Tiram mengacu pada spesifikasi berikut :
1. Inkubator Jamur yang digunakan berupa
pemodelan berukuran 90cm ´ 40cm ´ 40cm yang berbahan dari kayu dengan pelapis tahan
air.
2. Menjaga
kelembaban di dalam inkubator pada set point 64%RH-89%RH yang disesuaikan
dengan kelembaban lingkungan Miselum
J.Tiram.
3. Pembacaan
suhu untuk range 20°C - 50°C.
4. Sensor suhu dan kelembaban menggunakan
sensor HSM-20G.
5. Menggunakan ADC 0809 untuk pengubah sinyal
analog menjadi digital untuk masukan FPGA.
6. Pengendali utama menggunakan FPGA dalam
Spartan-3 development board, yang dilengkapi dengan penampil seven segment.
7. Aktuator berupa sebuah sprayer dan sepasang fan.
Diagram blok sistem
ditunjukkan dalam Gambar 1. Dalam Gambar 1, bila kelembaban kurang dari 65%RH
maka sprayer akan aktif (ON) dan fan pengering tidak aktif (OFF),
kelembaban diantara 64%RH hingga 89%RH sprayer
dan kipas pengering OFF, kelembaban diatas 90%RH maka sprayer OFF, dan fan ON.
Keadaan suhu di dalam inkubator ditampilkan pada seven segment Xilinx Spartan-3
Gambar 1. Diagram
blok sistem
Gambar 2. Inkubator Jamur Tiram
Gambar 3. Rangkaian sensor HSM-20G
Gambar 4. Rangkaian ADC 0809
Implementasi FPGA
Berdasarkan Tabel
1 dan 2 dapatlah dibuat kode VHDL seperti ditunjukkan dalam Gambar 5.
library
IEEE;
use
IEEE.STD_LOGIC_1164.ALL;
use
IEEE.STD_LOGIC_ARITH.ALL;
use
IEEE.STD_LOGIC_UNSIGNED.ALL;
entity
batas_bawah is
Port ( input : in std_logic_vector(7 downto
0); --in integer range 0 to 255;
sel : in std_logic ;
sysCLK : in std_logic;
en0,en1,en2,en3 : out std_logic;
output : out std_logic_vector(6
downto 0);
bawahOK,atasOK : out std_logic);
end
batas_bawah;
architecture
Behavioral of batas_bawah is
signal
output_led3,output_led2 : std_logic_vector(6 downto 0);
signal
state,nextstate : integer range 0 to 1 := 1;
signal
new_CLK : std_logic;
signal
clkdiv : std_logic_vector(23 downto 0):="000000000000000000000000";
begin
process
(input,state,sel) begin
if
sel='0' then
if input<="00001011" then
bawahOK <= '1'; atasOK <= '0';
else
if input>="11110101" then
bawahOK <= '0'; atasOK <= '1';
else
bawahOK <= '0'; atasOK <= '0';
end if;
end if;
en3<='0';en2<='0';en1<='1';en0<='1';
output<="1111110";
else --sel='1'
case
state is
when 1 =>
en3<='0';en2<='1';en1<='1';en0<='1';
nextstate<=0;
output<=output_led3;
when 0 =>
en3<='1';en2<='0';en1<='1';en0<='1';
nextstate<=1;
output<=output_led2;
end
case;
end
if;
end
process;
output_led3
<= "1110001" when input < "00001010" --L
else "0010010" when input >=
"00001010" and input < "00111101" --2
else "0000110" when input >=
"00111101" and input < "01110000" --3
else "1001100" when input >=
"01110000" and input < "10100011" --4
else "0100100" when input =
"10100011"
--5
else "1001000";
--H
output_led2
<= "1110001" when input < "00001010" --L
else "0000001" when (input >=
"00001010" and input < "00001111") --0
or (input >=
"00111101" and input < "01000010")
or (input >=
"01110000" and input < "01110101")
or (input =
"10100011")
else "1001111" when (input >=
"00001111" and input < "00010100") --1
or (input >=
"01000010" and input < "01001111")
or (input >=
"01110101" and input < "01111010")
else "0010010" when (input >=
"00010100" and input < "00011001") --2
or (input >=
"01001111" and input < "01001100")
or (input >=
"01111010" and input < "10000000")
else "0000110" when (input >=
"00011001" and input < "00011110") --3
or (input >=
"01001100" and input < "01010001")
or (input >=
"10000000" and input < "10000101")
else "1001100" when (input >=
"00011110" and input < "00100011") --4
or (input >=
"01010001" and input < "01010111")
or (input >=
"10000101" and input < "10001010")
else "0100100" when (input >=
"00100011" and input < "00101000") --5
or (input >=
"01010111" and input < "01011100")
or (input >= "10001010"
and input < "10001111")
else "0100000" when (input >=
"00101000" and input < "00101110") --6
or (input >=
"01011100" and input < "01100001")
or (input >=
"10001111" and input < "10010100")
else "0001111" when (input >=
"00101110" and input < "00110011") --7
or (input >=
"01100001" and input < "01100110")
or (input >=
"10010100" and input < "10011001")
else "0000000" when (input >=
"00110011" and input < "00111000") --8
or (input >=
"01100110" and input < "01101011")
or (input >=
"10011001" and input < "10011110")
else "0000100" when (input >=
"00111000" and input < "00111101") --9
or (input >= "01101011" and input
< "01110000")
or (input >=
"10011110" and input < "10100011")
else "1001000";
--H
process
(new_CLK)
begin
if new_CLK='1' and new_CLK'event then
state<=nextstate;
end if;
end
process;
process
(sysCLK)
begin
if sysCLK='1' and sysCLK'event then
clkdiv<=clkdiv+1;
end if;
end
process;
new_CLK<=clkdiv(13);
end
Behavioral;
Gambar 5. VHDL code untuk penampil suhu dan pengatur
kelembaban pada incubator Miselum J Tiram.
Gambar 6. Device utilization summary
Gambar 7. Implementasi pada Spartan-3 Development Board. Sistem menunjukkan suhu 29oC. LED merah menunjukkan bahwa kelembaban rendah.
No comments:
Post a Comment