Selamat malam sobat indoproteus, pada malam hari ini di penghujung tahun 2014, dan sekitar 20 menit lagi adalah detik detik pergantian tahun. Dan pada postingan kali ini saya ingin membagikan sedikit ilmu saya, yaitu Aplikasi pembacaan suhu ( Thermometer Digital )
ini, menggunakan sensor LM35 dan penampil LCD 16x2 yang akan di simulasikan pada Software Proteus.
Berikut ini adalah skema rangkaian tersebut
Menurut datasheet LM35, untuk kenaikan 1
derajat Celcius akan mengakibatkan perubahan 10mV terhadap output
tegangannya. Dimana saat suhu 0° Celcius sensor ini mempunyai tegangan
offset sebesar 0 V.
Disini saya akan melakukan pembacaan suhu
dalam satuan derajat Celcius dengan range pengukuran 0°-100° Celcius.
Sehingga tegangan output dari LM35 adalah 0-1V. Tegangan output tersebut sudah dapat
dibaca oleh mikrokontroler melalui ADC tanpa diperlukan sebuah penguat
tegangan. Aplikasi ini telah saya buat dalam bentuk real (sesungguhnya)
dan juga saya simulasikan menggunakan Proteus. Schematic LM35 yang
kemudian ditampilkan pada LCD dapat dilihat diatas.
Berikut ini adalah source code program dari Thermometer digital ini yang belum di compile.
/***************************************************************
Project : Sistem Akuisisi Data Suhu Berbasis ATMEGA16
Version : V0.1
Date : 16/12/2014
Author : Kelompok 4
University : Universitas Muhammadiyah Tangerang
****************************************************************
ANGGOTA KELOMPOK 4 : 1.) Muhamad Andi Prasetyo
2.) Niko Faturohman
3.) Egi Hernanda
4.) Fajar Gilang Ramadhan
5.) Yanwar Irvandi
****************************************************************
Video Simulasi : https://www.youtube.com/watch?v=zL5st0TCndo
****************************************************************
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency : 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
****************************************************************/
int SUHU;
char temp[8];
float suhu_celcius;
#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>
// Fungsi Alfanumerik Pada LCD Modul
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0x40
// Membaca hasil konversi AD
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay diperlukan untuk stabilisasi tegangan input ADC
delay_us(10);
// Mulai konversi AD
ADCSRA|=0x40;
// Tunggu konversi AD untuk menyelesaikan
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
// Inisialisasi Analog Comparator
ACSR=0x80;
SFIOR=0x00;
// Inisialisasi ADC
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// Inisialisasi LCD Modul
lcd_init(16);
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(1,0); // Set cursor pada 1,0
lcd_putsf("Akuisisi Data"); // Menampilkan Tulisan Akuisisi Data
lcd_gotoxy(0,1); // Set cursor pada 0,1
lcd_putsf("Suhu Dengan LM35"); // Menampilkan Tulisan Suhu Dengan LM35
delay_ms(700); // Delay selama 700 milli Detik
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(2,0); // Set cursor pada 2,0
lcd_putsf("Dan LCD 16x2"); // Menampilkan Tulisan Dan LCD 16x2
lcd_gotoxy(1,1); // Set cursor pada 1,1
lcd_putsf("Dengan ATmega16"); // Menampilkan Tulisan Dengan ATmega16
delay_ms(700); // Delay selama 700 milli Detik
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(3,0); // Set cursor pada 3,0
lcd_putsf("Kelompok 4"); // Menampilkan Tulisan Kelompok 4
lcd_gotoxy(1,1); // Set cursor pada 1,1
lcd_putsf("Teknik Elektro"); // Menampilkan Tulisan Teknik Elektro
delay_ms(700); // Delay 700 milli detik
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(3,0); // Set cursor pada 3,0
lcd_putsf("Universitas"); // Menampilkan Tulisan Universitas
lcd_gotoxy(3,1); // Set cursor pada 3,1
lcd_putsf("Muhammadiyah"); // Menampilkan Tulisan Muhammadiyah
delay_ms(700); // Delay 700 milli detik
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(6,0); // Set cursor pada 6,0
lcd_putsf("Kota"); // Menampilkan Tulisan Kota
lcd_gotoxy(4,1); // Set cursor pada 4,1
lcd_putsf("Tangerang"); // Menampilkan Tulisan Tangerang
delay_ms(1300); // Delay 1,3 detik
while (1)
{
lcd_clear( ); // Bersihkan layar LCD Display
SUHU = read_adc(0); // Baca ADC
suhu_celcius = (float)SUHU*500/1023; // Rumus mengubah ke derajat celcius
lcd_gotoxy(0,0); // Set cursor pada 0,0
lcd_putsf("Suhu Saat Ini:"); // Tampilkan Kata Suhu Saat Ini
ftoa(suhu_celcius,1,temp); // Float to array
lcd_gotoxy(0,1); // Set cursor pada 0,1
lcd_puts(temp);
lcd_gotoxy(5,1); // Set cursor pada 5,1
lcd_putchar(0xdf); // Menampilkan karakter derajat
lcd_putsf("C"); // Tampilkan Karakter C (celcius)
delay_ms(500); // Delay selama 500 milli second
}
}
Disini saya mengcompile program tersebut dengan menggunakan software CodevisionAVR, yaitu software untuk membuat file hex yang akan di eksekusi oleh IC Atmega 16.
Langsung saja bagi anda yang ingin mensimulasikan
Silahkan klik gambar download dibawah ini.
gan pengguna baterai nya berapa volt ya?
ReplyDeleteGan saya minta softcopy makalahnya dong
ReplyDeletelinknya mati bangsad
ReplyDeleteBang itu yang c1 .kapasitor apa namanya bang di proteus
ReplyDelete